@orderly.network/hooks 2.0.0-alpha.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts","../src/useQuery.ts","../src/utils/fetcher.ts","../src/useConfig.ts","../src/orderlyContext.ts","../src/useLazyQuery.ts","../src/useMutation.ts","../src/useAccountInstance.ts","../src/usePrivateQuery.ts","../src/middleware/signatureMiddleware.ts","../src/useAccount.ts","../src/usePrivateInfiniteQuery.ts","../src/useBoolean.ts","../src/usePreloadData.ts","../src/useEventEmitter.ts","../src/useSessionStorage.ts","../src/utils/json.ts","../src/useLocalStorage.ts","../src/index.ts","../src/useWS.ts","../src/useKeyStore.ts","../src/useSimpleDI.ts","../src/statusProvider.tsx","../src/useWsStatus.ts","../src/configProvider.tsx","../src/dataProvider.tsx","../src/orderly/usePrivateDataObserver.ts","../src/utils/swr.ts","../src/services/orderMerge/baseMergeHandler.ts","../src/utils/ws.ts","../src/services/orderMerge/algoOrderMergeHandler.ts","../src/services/orderMerge/regularOrderMergeHandler.ts","../src/dev/proxyConfigStore.ts","../src/walletConnectorContext.tsx","../src/orderly/useOrderbookStream.ts","../src/orderly/useTickerStream.ts","../src/orderly/useMarkPrice.ts","../src/orderly/useIndexPrice.ts","../src/orderly/useOpenInterest.ts","../src/unuse/useFetures.ts","../src/orderly/useSymbolsInfo.ts","../src/utils/createGetter.ts","../src/orderly/orderbook.service.ts","../src/orderly/useOrderEntry.ts","../src/utils/orderEntryHelper.ts","../src/orderly/useCollateral.ts","../src/orderly/usePositionStream/usePositionStream.ts","../src/orderly/useFundingRates.ts","../src/orderly/useMarkPricesStream.ts","../src/utils/parseHolding.ts","../src/orderly/useMarketsStream.ts","../src/orderly/usePositionStream/utils.ts","../src/orderly/useHoldingStream.ts","../src/orderly/useMaxQty.ts","../src/orderly/useOrderStream/useOrderStream.ts","../src/services/orderCreator/factory.ts","../src/services/orderCreator/baseCreator.ts","../src/utils/createOrder.ts","../src/services/orderCreator/marketOrderCreator.ts","../src/services/orderCreator/limitOrderCreator.ts","../src/services/orderCreator/stopLimitOrderCreator.ts","../src/services/orderCreator/generalCreator.ts","../src/services/orderCreator/stopMarketOrderCreator.ts","../src/services/orderCreator/postOnlyCreator.ts","../src/services/orderCreator/fokCreator.ts","../src/services/orderCreator/iocCreator.ts","../src/services/orderCreator/tpslOrderCreator.ts","../src/services/orderCreator/baseAlgoCreator.ts","../src/services/orderCreator/tpslPositionOrderCreator.ts","../src/orderly/useAccountInfo.ts","../src/orderly/useMarkets.ts","../src/orderly/useMarketList.ts","../src/orderly/useLeverage.ts","../src/orderly/useFundingRate.ts","../src/orderly/useMarketTradeStream.ts","../src/orderly/useMarginRatio.ts","../src/orderly/useChains.ts","../src/orderly/useChain.ts","../src/orderly/useWithdraw.ts","../src/orderly/useDeposit.ts","../src/orderly/useWalletSubscription.ts","../src/orderly/useSettleSubscription.ts","../src/orderly/useSymbolPriceRange.ts","../src/orderly/useTakeProfitAndStopLoss/index.ts","../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts","../src/orderly/useTakeProfitAndStopLoss/utils.ts","../src/orderly/useSymbolLeverage.ts","../src/orderly/statistics/useAssetHistory.ts","../src/orderly/statistics/useStatisticsDaily.ts","../src/orderly/statistics/useFundingFeeHistory.ts","../src/orderly/statistics/useDistributionHistory.ts","../src/orderly/useMaintenanceStatus.ts","../src/useMediaQuery.ts","../src/usePoster.ts","../src/services/painter/basePaint.ts","../src/services/painter/backgroundPaint.ts","../src/services/painter/dataPaint.ts","../src/services/painter/qrPaint.ts","../src/services/painter/painter.ts","../src/services/painter/layout.config.ts","../src/utils/index.ts","../src/referral/useCommission.ts","../src/referral/swr.ts","../src/referral/useDistribution.ts","../src/referral/useRefereeHistory.ts","../src/referral/useDaily.ts","../src/referral/format.ts","../src/referral/useReferralRebateSummary.ts","../src/referral/useRefereeInfo.ts","../src/referral/useRefereeRebateSummary.ts","../src/referral/useCheckReferralCode.ts","../src/referral/useGetReferralCode.ts","../src/referral/useReferralInfo.tsx","../src/trading-rewards/useEpochInfo.ts","../src/trading-rewards/types.ts","../src/trading-rewards/useAllBrokers.ts","../src/trading-rewards/useCurEpochEstimate.ts","../src/trading-rewards/useAccountRewardHistory.ts","../src/trading-rewards/useGetClaimed.ts","../src/trading-rewards/abis/orderTokenAbi.json","../src/trading-rewards/abis/proxyLedgerAbi.json","../src/trading-rewards/abis/OmnichainLedgerV1ABI.json","../src/trading-rewards/useGetEnv.ts","../src/trading-rewards/abis/contrast.ts","../src/trading-rewards/utils.ts","../src/trading-rewards/useWalletRewardsHistory.ts","../src/apiKeys/useApiKeyManager.ts"],"names":["options","useSWRMutation","useContext","account","fetcher","data","useSWR","SimpleDI","getTimestamp","get","AccountStatusEnum","useCallback","useState","useEffect","useConstant","default","Account","getGlobalObject","createContext","useRef","WsNetworkStatus","useMemo","mutate","lensIndex","over","i","jsx","useSWRSubscription","sortedData","Decimal","SDKError","symbol","depth","OrderSide","OrderType","getPrecisionByNumber","pick","AlgoOrderRootType","OrderStatus","order","totalCollateral","totalValue","totalUnrealizedROI","pathOr","zero","usdc","positions","includes","orders","positionsPath","orderUntil","maxPrice","minPrice","scropePrice","TriggerPriceType","AlgoOrderType","oldOrder","errors","symbolOrOrder","MarketsType","tabs","favorites","type","markets","get8hFunding","get24hChange","est_funding_rate","prop","networkId","chainsInfoMap","isTestnet","ARBITRUM_MAINNET_CHAINID","ARBITRUM_TESTNET_CHAINID","useDebouncedCallback","balance","allowance","quantity","omit","AssetHistoryStatusEnum","startDate","endDate","brokerName","unstable_serialize","query","ref","generateKeyFun","path","max","min","TWType","ENVType","DistributionId"],"mappings":"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","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\"] = \"2.0.0-alpha.2\";\n};\n\nexport default \"2.0.0-alpha.2\";\n","import useSWR, { SWRResponse } from \"swr\";\nimport { fetcher, useQueryOptions } from \"./utils/fetcher\";\nimport { useConfig } from \"./useConfig\";\n\n/**\n * useQuery\n * @description for public api\n * @param query\n * @param options\n */\nexport const useQuery = <T>(\n query: Parameters<typeof useSWR>[\"0\"],\n options?: useQueryOptions<T>\n): SWRResponse<T> => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n const { formatter, ...swrOptions } = options || {};\n\n if (typeof apiBaseUrl === \"undefined\") {\n throw new Error(\"please add OrderlyConfigProvider to your app\");\n }\n\n // @ts-ignore\n return useSWR<T>(\n query,\n (url, init) =>\n fetcher(url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`, init, {\n formatter,\n }),\n swrOptions\n );\n};\n","import { get } from \"@orderly.network/net\";\nimport { type SWRConfiguration } from \"swr\";\n\nexport const fetcher = (\n url: string,\n init: RequestInit = {},\n queryOptions: useQueryOptions<any>\n) => get(url, init, queryOptions?.formatter);\n\nexport type useQueryOptions<T> = SWRConfiguration & {\n formatter?: (data: any) => T;\n};\n","import { useContext } from \"react\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { ConfigStore, type ConfigKey } from \"@orderly.network/core\";\n\nexport function useConfig(): ConfigStore;\nexport function useConfig<T = string>(key: ConfigKey, defaultValue?: T): T;\n\nexport function useConfig(key?: ConfigKey, defaultValue?: any) {\n const { configStore } = useContext(OrderlyContext);\n\n if (typeof key !== \"undefined\") {\n if (typeof defaultValue !== \"undefined\") {\n return configStore.getOr(key, defaultValue) as any;\n }\n return configStore.get(key);\n }\n\n return configStore;\n}\n","import { createContext } from \"react\";\n\nimport {\n type ConfigStore,\n type OrderlyKeyStore,\n type getWalletAdapterFunc,\n WalletAdapter,\n} from \"@orderly.network/core\";\n\nimport { Chain, NetworkId } from \"@orderly.network/types\";\nimport { Chains } from \"./orderly/useChains\";\n\nexport type filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\nexport type chainFilterFunc = (config: ConfigStore) => filteredChains;\n\nexport type chainFilter = filteredChains | chainFilterFunc;\n\nexport interface OrderlyConfigContextState {\n fetcher?: (url: string, init: RequestInit) => Promise<any>;\n\n configStore: ConfigStore;\n keyStore: OrderlyKeyStore;\n getWalletAdapter: getWalletAdapterFunc;\n walletAdapters: WalletAdapter[];\n\n networkId: NetworkId;\n\n /**\n * @hidden\n */\n onlyTestnet?: boolean;\n // extraApis:ExtraAPIs\n filteredChains?: filteredChains | null;\n customChains?: Chains<undefined, undefined>;\n}\n\nexport const OrderlyContext = createContext<OrderlyConfigContextState>({\n // configStore: new MemoryConfigStore(),\n} as OrderlyConfigContextState);\n\nexport const OrderlyProvider = OrderlyContext.Provider;\n","import useSWR from \"swr\";\nimport { fetcher } from \"./utils/fetcher\";\nimport useSWRMutation, {\n type SWRMutationConfiguration,\n SWRMutationResponse,\n} from \"swr/mutation\";\nimport { useConfig } from \"./useConfig\";\n\n/**\n * useQuery\n * @description for public api\n * @param query\n * @param options\n */\nexport const useLazyQuery = <T, R = any>(\n query: Parameters<typeof useSWR>[\"0\"],\n options?: SWRMutationConfiguration<any, any> & {\n formatter?: (data: any) => R;\n init?: RequestInit;\n }\n): SWRMutationResponse => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n const { formatter, init, ...swrOptions } = options || {};\n // check the query is public api\n // if (typeof query === \"string\" && !query.startsWith(\"/v1/public\")) {\n // throw new Error(\"useQuery is only for public api\");\n // }\n\n if (typeof apiBaseUrl === \"undefined\") {\n throw new Error(\"please add OrderlyConfigProvider to your app\");\n }\n\n // @ts-ignore\n return useSWRMutation(\n query,\n (url: string, options: any) => {\n url = url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`;\n if (options?.arg) {\n // const searchParams = new URLSearchParams(init.arg);\n // url = `${url}?${encodeURIComponent(searchParams.toString())}`;\n const queryString = Object.entries(options.arg)\n .map(\n ([key, value]) => `${key}=${encodeURIComponent(value as string)}`\n )\n .join(\"&\");\n url = `${url}?${queryString}`;\n }\n return fetcher(url, init, {\n formatter,\n });\n },\n swrOptions\n );\n};\n","import useSWRMutation, {\n TriggerWithOptionsArgs,\n type SWRMutationConfiguration,\n TriggerWithoutArgs,\n} from \"swr/mutation\";\nimport { mutate } from \"@orderly.network/net\";\nimport {\n type MessageFactor,\n type SignedMessagePayload,\n} from \"@orderly.network/core\";\nimport { useAccountInstance } from \"./useAccountInstance\";\nimport { useConfig } from \"./useConfig\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\ntype HTTP_METHOD = \"POST\" | \"PUT\" | \"DELETE\" | \"GET\";\n\nconst fetcher = (\n url: string,\n options: {\n arg: {\n data?: any;\n params?: any;\n method: HTTP_METHOD;\n signature: SignedMessagePayload;\n };\n }\n) => {\n const init: RequestInit = {\n method: options.arg.method,\n headers: {\n ...options.arg.signature,\n },\n };\n\n if (options.arg.data) {\n init.body = JSON.stringify(options.arg.data);\n }\n\n if (\n typeof options.arg.params === \"object\" &&\n Object.keys(options.arg.params).length\n ) {\n let search = new URLSearchParams(options.arg.params);\n url = `${url}?${search.toString()}`;\n }\n\n return mutate(url, init);\n};\n\n/**\n * This hook is used to execute API requests for data mutation, such as POST, DELETE, PUT, etc.\n */\nexport const useMutation = <T, E>(\n /**\n * The URL to send the request to. If the URL does not start with \"http\",\n * it will be prefixed with the API base URL.\n */\n url: string,\n /**\n * The HTTP method to use for the request. Defaults to \"POST\".\n */\n method: HTTP_METHOD = \"POST\",\n /**\n * The configuration object for the mutation.\n * @see [useSWRMutation](https://swr.vercel.app/docs/mutation#api)\n *\n * @link https://swr.vercel.app/docs/mutation#api\n */\n options?: SWRMutationConfiguration<T, E>\n) => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n\n let fullUrl = url;\n if (!url.startsWith(\"http\")) {\n fullUrl = `${apiBaseUrl}${url}`;\n }\n\n const account = useAccountInstance();\n\n const { trigger, data, error, reset, isMutating } = useSWRMutation(\n fullUrl,\n // method === \"POST\" ? fetcher : deleteFetcher,\n fetcher,\n options\n );\n\n const mutation = async (\n /**\n * The data to send with the request.\n */\n data: Record<string, any> | null,\n /**\n * The query parameters to send with the request.\n */\n params?: Record<string, any>,\n options?: SWRMutationConfiguration<T, E>\n ): Promise<any> => {\n let newUrl = url;\n if (typeof params === \"object\" && Object.keys(params).length) {\n let search = new URLSearchParams(params);\n newUrl = `${url}?${search.toString()}`;\n }\n\n const payload: MessageFactor = {\n method,\n url: newUrl,\n data,\n };\n\n const signer = account.signer;\n const signature = await signer.sign(payload, getTimestamp());\n\n return trigger(\n {\n data,\n params,\n method,\n signature: {\n ...signature,\n \"orderly-account-id\": account.accountId,\n },\n },\n options\n );\n };\n\n return [\n mutation,\n {\n data,\n error,\n reset,\n isMutating,\n },\n ] as const;\n};\n","import useConstant from \"use-constant\";\nimport { Account, SimpleDI } from \"@orderly.network/core\";\nimport { useContext } from \"react\";\nimport { OrderlyContext } from \"./orderlyContext\";\n\nexport const useAccountInstance = (): Account => {\n const { configStore, keyStore, getWalletAdapter, walletAdapters } =\n useContext(OrderlyContext);\n\n if (!configStore)\n throw new Error(\"configStore is not defined, please use OrderlyProvider\");\n\n if (!keyStore) {\n throw new Error(\n \"keyStore is not defined, please use OrderlyProvider and provide keyStore\"\n );\n }\n\n const account = useConstant(() => {\n let account = SimpleDI.get<Account>(\"account\");\n\n if (!account) {\n account = new Account(\n configStore,\n keyStore,\n // getWalletAdapter,\n walletAdapters\n );\n\n SimpleDI.registerByName(\"account\", account);\n }\n return account;\n });\n\n return account;\n};\n","import useSWR, { SWRResponse } from \"swr\";\nimport { signatureMiddleware } from \"./middleware/signatureMiddleware\";\nimport { fetcher, useQueryOptions } from \"./utils/fetcher\";\nimport { useAccount } from \"./useAccount\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\n/**\n * usePrivateQuery\n * @description for private api\n * @param query\n * @param options\n */\nexport const usePrivateQuery = <T>(\n query: string,\n options?: useQueryOptions<T>\n): SWRResponse<T> => {\n const { formatter, ...swrOptions } = options || {};\n const account = useAccount();\n const middleware = Array.isArray(options?.use) ? options?.use ?? [] : [];\n\n // @ts-ignore\n return useSWR<T>(\n () =>\n account.state.status >= AccountStatusEnum.EnableTrading\n ? [query, account.state.accountId]\n : null,\n (url: string, init: RequestInit) => {\n return fetcher(url, init, { formatter });\n },\n {\n ...swrOptions,\n use: [signatureMiddleware, ...middleware],\n onError: (err) => {},\n }\n );\n};\n","import { SWRHook, Middleware } from \"swr\";\nimport { SimpleDI, Account, MessageFactor } from \"@orderly.network/core\";\nimport { useConfig } from \"../useConfig\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const signatureMiddleware: Middleware = (useSWRNext: SWRHook) => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n return (key, fetcher, config) => {\n try {\n const extendedFetcher = async (args: any) => {\n let url = Array.isArray(args) ? args[0] : args;\n\n let account = SimpleDI.get<Account>(\"account\");\n let fullUrl = `${apiBaseUrl}${url}`;\n\n const signer = account.signer;\n\n const payload: MessageFactor = {\n method: \"GET\",\n url,\n };\n\n const signature = await signer.sign(payload, getTimestamp());\n\n // @ts-ignore\n return fetcher(fullUrl, {\n headers: {\n ...signature,\n \"orderly-account-id\": account.accountId,\n },\n });\n };\n return useSWRNext(key, extendedFetcher, config);\n } catch (e) {\n console.error(\"signature error:\", e);\n throw e;\n }\n };\n};\n","import { useCallback, useContext, useEffect, useState } from \"react\";\nimport { AccountState } from \"@orderly.network/core\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { useAccountInstance } from \"./useAccountInstance\";\n\nexport const useAccount = () => {\n const {\n configStore,\n keyStore,\n // onWalletConnect,\n // onWalletDisconnect,\n // onSetChain,\n } = useContext(OrderlyContext);\n\n if (!configStore)\n throw new Error(\"configStore is not defined, please use OrderlyProvider\");\n\n if (!keyStore) {\n throw new Error(\n \"keyStore is not defined, please use OrderlyProvider and provide keyStore\"\n );\n }\n\n const account = useAccountInstance();\n\n const [state, setState] = useState<AccountState>(account.stateValue);\n\n const statusChangeHandler = (nextState: AccountState) => {\n //\n setState(() => nextState);\n };\n\n useEffect(() => {\n account.on(\"change:status\", statusChangeHandler);\n\n return () => {\n account.off(\"change:status\", statusChangeHandler);\n };\n }, []);\n\n const createOrderlyKey = useCallback(\n async (remember: boolean) => {\n return account.createOrderlyKey(remember ? 365 : 30);\n },\n [account]\n );\n\n const createAccount = useCallback(async () => {\n return account.createAccount();\n }, [account]);\n\n return {\n account,\n state,\n // info: {},\n // login,\n createOrderlyKey,\n createAccount,\n // disconnect,\n // connect,\n // setChain,\n // settlement,\n };\n};\n","import useSWRInfinite, {\n type SWRInfiniteKeyLoader,\n type SWRInfiniteConfiguration,\n} from \"swr/infinite\";\nimport { signatureMiddleware } from \"./middleware/signatureMiddleware\";\nimport { get } from \"@orderly.network/net\";\nimport { useAccount } from \"./useAccount\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport const usePrivateInfiniteQuery = <T>(\n getKey: SWRInfiniteKeyLoader,\n options?: SWRInfiniteConfiguration & {\n formatter?: (data: any) => any;\n }\n) => {\n const { formatter, ...restOptions } = options || {};\n const account = useAccount();\n\n const middleware = Array.isArray(restOptions?.use)\n ? restOptions?.use ?? []\n : [];\n\n const result = useSWRInfinite<T>(\n (pageIndex: number, previousPageData) => {\n const queryKey = getKey(pageIndex, previousPageData);\n if (account.state.status < AccountStatusEnum.EnableTrading || !queryKey) {\n return null;\n }\n return [queryKey, account.state.accountId];\n },\n (url: string, init: RequestInit) => {\n return restOptions.fetcher?.(url, init) || get(url, init, formatter);\n },\n {\n ...restOptions,\n use: [signatureMiddleware, ...middleware],\n }\n );\n\n return result;\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useBoolean = (\n initialValue = false\n): [\n boolean,\n {\n setTrue: () => void;\n setFalse: () => void;\n toggle: () => void;\n }\n] => {\n const [value, setValue] = useState(initialValue);\n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, { setTrue, setFalse, toggle }];\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useConfig, useQuery, useSWR } from \".\";\nimport { request } from \"@orderly.network/net/src/fetch\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nexport const usePreLoadData = () => {\n const [timestampOffsetInitialized, setTimestampOffsetInitialized] =\n useState(false);\n const { error: tokenError, data: tokenData } = useQuery(\n \"https://api-evm.orderly.org/v1/public/token\",\n {\n revalidateOnFocus: false,\n }\n );\n\n /// get service timestamp\n /// get local timestamp\n /// calculate delta offset = SD - LD\n /// save to getGlobalObject.__ORDERLY_timestamp_offset\n\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n\n const { data: systemInfo } = useSWR(\n \"/v1/public/system_info\",\n async (url: any, init: any) => {\n const data = await fetch(\n url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`,\n init\n );\n return await data.json();\n },\n {\n errorRetryCount: 3,\n errorRetryInterval: 500,\n }\n );\n\n useEffect(() => {\n if (timestampOffsetInitialized) return;\n if (typeof systemInfo !== \"undefined\") {\n const sd = systemInfo.timestamp;\n const ld = Date.now();\n // @ts-ignore\n const diff = sd - ld;\n if (isNaN(diff)) {\n return;\n }\n (getGlobalObject() as any).__ORDERLY_timestamp_offset = diff;\n setTimestampOffsetInitialized(true);\n }\n }, [systemInfo, timestampOffsetInitialized]);\n\n const isDone = useMemo(() => {\n return !!tokenData && timestampOffsetInitialized;\n }, [timestampOffsetInitialized, tokenData]);\n\n return {\n error: tokenError,\n done: isDone,\n };\n};\n","import useConstant from \"use-constant\";\nimport { EventEmitter, SimpleDI } from \"@orderly.network/core\";\n\nexport const useEventEmitter = () => {\n return useConstant(() => {\n let ee = SimpleDI.get<EventEmitter>(\"EE\");\n\n if (!ee) {\n ee = new EventEmitter();\n\n SimpleDI.registerByName(\"EE\", ee);\n }\n return ee;\n });\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener?.(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n\n return [storedValue, setValue];\n}\n","export function parseJSON<T>(value: string | null): T | undefined {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n","// https://usehooks-ts.com/react-hook/use-local-storage\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [any, (value: T) => void] {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: React.Dispatch<T> = useCallback(\n (value: T) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n console.warn(\n `Tried setting localStorage key “${key}” even though environment is not a client`\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(newValue));\n // dispath event\n window.dispatchEvent(new Event(\"storage\"));\n\n // Save state\n setStoredValue(() => newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n // window.dispatchEvent(new Event('local-storage'))\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [storedValue]\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n // const handleStorageChange = useCallback(\n // (event: StorageEvent | CustomEvent) => {\n // if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n // return\n // }\n // setStoredValue(readValue())\n // },\n // [key, readValue],\n // )\n\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n };\n\n window?.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window?.removeEventListener?.(\"storage\", handleStorageChange);\n };\n }, [key]);\n\n return [storedValue, setValue];\n}\n","// import \"./utils/dev\";\n\nexport { default as version } from \"./version\";\n\nexport { useQuery } from \"./useQuery\";\nexport { useLazyQuery } from \"./useLazyQuery\";\nexport { useMutation } from \"./useMutation\";\nexport { usePrivateQuery } from \"./usePrivateQuery\";\nexport { usePrivateInfiniteQuery } from \"./usePrivateInfiniteQuery\";\nexport { useBoolean } from \"./useBoolean\";\n\nexport { useAccount } from \"./useAccount\";\nexport { useAccountInstance } from \"./useAccountInstance\";\n\nexport { usePreLoadData } from \"./usePreloadData\";\n\nexport { useEventEmitter } from \"./useEventEmitter\";\n\nexport { useSessionStorage } from \"./useSessionStorage\";\nexport { useLocalStorage } from \"./useLocalStorage\";\n\nexport { parseJSON } from \"./utils/json\";\n\nexport { default as useConstant } from \"use-constant\";\nexport { useWS } from \"./useWS\";\nexport { useConfig } from \"./useConfig\";\nexport { useKeyStore } from \"./useKeyStore\";\nexport { useSimpleDI } from \"./useSimpleDI\";\n\nexport * from \"./orderlyContext\";\nexport * from \"./statusProvider\";\nexport { useWsStatus, WsNetworkStatus } from \"./useWsStatus\";\nexport type { ConfigProviderProps } from \"./configProvider\";\nexport { OrderlyConfigProvider } from \"./configProvider\";\n\nexport {\n WalletConnectorContext,\n type ConnectedChain,\n useWalletConnector,\n type WalletState,\n} from \"./walletConnectorContext\";\n\nexport * from \"./orderly/orderlyHooks\";\n\nimport useSWR, {\n type SWRConfiguration,\n SWRConfig,\n useSWRConfig,\n unstable_serialize,\n} from \"swr\";\n\nexport {\n useSWR,\n SWRConfig,\n useSWRConfig,\n type SWRConfiguration,\n unstable_serialize,\n};\n\nexport * from \"use-debounce\";\n\nexport { useMediaQuery } from \"./useMediaQuery\";\n\nexport { usePoster } from \"./usePoster\";\nexport { DefaultLayoutConfig } from \"./services/painter/layout.config\";\nexport type {\n PosterLayoutConfig,\n DrawOptions,\n} from \"./services/painter/basePaint\";\n\nexport * from \"./orderly/orderlyHooks\";\n\nexport { cleanStringStyle } from \"./utils/orderEntryHelper\";\nexport { checkNotional } from \"./utils/createOrder\";\n\nexport * as utils from \"./utils\";\n\nexport type { WalletAdapter } from \"@orderly.network/core\";\n\nexport * from \"./referral\";\n\nexport * from \"./trading-rewards\";\n\nexport * from \"./apiKeys\";\n","import { useContext, useRef } from \"react\";\nimport { Account, AccountState, SimpleDI } from \"@orderly.network/core\";\nimport { WS } from \"@orderly.network/net\";\nimport useConstant from \"use-constant\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { getGlobalObject, getTimestamp } from \"@orderly.network/utils\";\n\nconst WS_NAME = \"nativeWebsocketClient\";\n\nexport const useWS = () => {\n const { configStore } = useContext(OrderlyContext);\n // const prevAccountState = useRef<AccountState | null>(null);\n\n const ws = useConstant(() => {\n let websocketClient = SimpleDI.get<WS>(WS_NAME);\n const account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!websocketClient) {\n websocketClient = new WS({\n networkId: configStore.get(\"networkId\"),\n publicUrl: configStore.get(\"publicWsUrl\"),\n privateUrl: configStore.get(\"privateWsUrl\"),\n onSigntureRequest: async (accountId: string) => {\n const signer = account.signer;\n const timestamp = getTimestamp();\n const result = await signer.signText(timestamp.toString());\n\n return { ...result, timestamp };\n },\n });\n\n // if user login, open the private websocket\n if (\n account.stateValue.status === AccountStatusEnum.EnableTrading &&\n account.stateValue.accountId\n ) {\n websocketClient.openPrivate(account.stateValue.accountId);\n }\n\n // open the pirvate websocket when user login\n account.on(\"change:status\", (nextState: AccountState) => {\n if (\n nextState.status === AccountStatusEnum.EnableTrading &&\n nextState.accountId\n ) {\n websocketClient.openPrivate(nextState.accountId);\n } else {\n websocketClient.closePrivate(1000, \"switch account\");\n }\n\n // prevAccountState.current = nextState;\n });\n\n if (typeof window !== \"undefined\") {\n (getGlobalObject() as any)[\"__Orderly_WS\"] = websocketClient;\n }\n\n SimpleDI.registerByName(WS_NAME, websocketClient);\n }\n\n return websocketClient;\n });\n\n // auto open private when user login;\n\n return ws;\n};\n","import { useContext } from \"react\";\n\nimport { OrderlyContext } from \"./orderlyContext\";\n\nexport const useKeyStore = () => {\n const ctx = useContext(OrderlyContext);\n\n return ctx.keyStore;\n};\n","import { SimpleDI } from \"@orderly.network/core\";\n\nexport const useSimpleDI = <T>() => {\n return {\n get: SimpleDI.get<T>,\n // getOr: SimpleDI.getOr<T>(name, SimpleDI.get<T>(name)),\n register: SimpleDI.register,\n };\n};\n","import { PropsWithChildren, createContext } from \"react\";\nimport { useWsStatus, type WsNetworkStatus } from \"./useWsStatus\";\n\nexport interface StatusContextState {\n ws?: WsNetworkStatus;\n}\n\nexport const StatusContext = createContext({} as StatusContextState);\n\nexport const StatusProvider: React.FC<PropsWithChildren> = (props) => {\n const wsStatus = useWsStatus();\n\n return (\n <StatusContext.Provider value={{ ws: wsStatus }}>\n {props.children}\n </StatusContext.Provider>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useWS } from \"./useWS\";\n\nexport enum WsNetworkStatus {\n Connected = \"connected\",\n Unstable = \"unstable\",\n Disconnected = \"disconnected\",\n}\n\nexport function useWsStatus() {\n const ws = useWS();\n const [wsStatus, setWsStatus] = useState<WsNetworkStatus>(\n ws.client.public.readyState\n ? WsNetworkStatus.Connected\n : WsNetworkStatus.Disconnected\n );\n\n const connectCount = useRef(0);\n\n useEffect(() => {\n ws.on(\"status:change\", (status: any) => {\n console.log(\"status:change\", status);\n\n const { type, isPrivate } = status;\n if (!isPrivate) {\n switch (type) {\n case \"open\":\n connectCount.current = 0;\n setWsStatus(WsNetworkStatus.Connected);\n break;\n case \"close\":\n connectCount.current = 0;\n setWsStatus(WsNetworkStatus.Disconnected);\n break;\n case \"reconnecting\":\n connectCount.current++;\n if (connectCount.current >= 3) {\n setWsStatus(WsNetworkStatus.Unstable);\n }\n break;\n }\n }\n });\n return () => ws.off(\"websocket:status\", () => {});\n }, []);\n\n return wsStatus;\n}\n","import type { PropsWithChildren } from \"react\";\nimport React, { useLayoutEffect, useMemo } from \"react\";\nimport { OrderlyProvider } from \"./orderlyContext\";\nimport {\n ConfigStore,\n // MemoryConfigStore,\n DefaultConfigStore,\n OrderlyKeyStore,\n getWalletAdapterFunc,\n WalletAdapterOptions,\n LocalStorageStore,\n EtherAdapter,\n SimpleDI,\n Account,\n IContract,\n WalletAdapter,\n} from \"@orderly.network/core\";\n\nimport useConstant from \"use-constant\";\nimport { Chain, NetworkId } from \"@orderly.network/types\";\n// import { usePreLoadData } from \"./usePreloadData\";\nimport { DataCenterProvider } from \"./dataProvider\";\nimport { StatusProvider } from \"./statusProvider\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { ProxyConfigStore } from \"./dev/proxyConfigStore\";\nimport type { Chains } from \"./orderly/useChains\";\nimport { DefaultEVMAdapterWalletAdapter } from \"@orderly.network/default-evm-adapter\";\nimport { DefaultSolanaWalletAdapter } from \"@orderly.network/default-solana-adapter\";\nimport { EthersProvider } from \"@orderly.network/web3-provider-ethers\";\n// import { useParamsCheck } from \"./useParamsCheck\";\n\ntype RequireOnlyOne<T, U extends keyof T = keyof T> = Omit<T, U> &\n {\n [K in U]-?: Required<Pick<T, K>> & Partial<Record<Exclude<U, K>, never>>;\n }[U];\n\ntype RequireAtLeastOne<T, R extends keyof T = keyof T> = Omit<T, R> &\n {\n [K in R]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<R, K>>>;\n }[R];\n\ntype filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\ntype filterChainsFunc = (config: ConfigStore) => filteredChains;\n\nexport interface ConfigProviderProps {\n configStore?: ConfigStore;\n keyStore?: OrderlyKeyStore;\n contracts?: IContract;\n getWalletAdapter?: getWalletAdapterFunc;\n walletAdapters: WalletAdapter[];\n brokerId: string;\n brokerName: string;\n networkId: NetworkId;\n\n chainFilter?: filteredChains | filterChainsFunc;\n customChains?: Chains<undefined, undefined>;\n}\n\nexport const OrderlyConfigProvider = (\n props: PropsWithChildren<\n RequireAtLeastOne<ConfigProviderProps, \"brokerId\" | \"configStore\">\n >\n) => {\n const [account, setAccount] = React.useState<Account | null>(null);\n const {\n configStore,\n keyStore,\n getWalletAdapter,\n walletAdapters,\n brokerId,\n brokerName,\n networkId,\n contracts,\n chainFilter,\n customChains,\n } = props;\n\n if (!brokerId && typeof configStore === \"undefined\") {\n console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n }\n\n // if (typeof walletAdapters === \"undefined\") {\n // console.error(\n // \"[OrderlyConfigProvider]: walletAdapters is required, please provide at least one wallet adapter, \" +\n // \"you can install the `@orderly.network/default-evm-adapter` or `@orderly.network/default-solana-adapter` package\"\n // );\n // }\n\n if (typeof configStore !== \"undefined\" && !configStore.get(\"brokerId\")) {\n // console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n throw new SDKError(\n \"if configStore is provided, brokerId is required in configStore\"\n );\n }\n\n if (\n typeof brokerId !== \"undefined\" &&\n typeof configStore !== \"undefined\" &&\n brokerId !== configStore.get(\"brokerId\")\n ) {\n throw new SDKError(\n \"If you have provided a custom `configStore` and the `brokerId` is set in the `configStore`, please remove the `brokerId` prop.\"\n );\n }\n\n const innerConfigStore = useConstant<ConfigStore>(() => {\n return new ProxyConfigStore(\n configStore || new DefaultConfigStore({ brokerId, brokerName, networkId })\n );\n });\n\n const innerKeyStore = useConstant<OrderlyKeyStore>(() => {\n return keyStore || new LocalStorageStore(networkId);\n });\n\n const innerGetWalletAdapter = useConstant<getWalletAdapterFunc>(() => {\n return (\n getWalletAdapter ||\n ((options: WalletAdapterOptions) => new EtherAdapter(options))\n );\n });\n\n const innerWalletAdapters = useConstant<WalletAdapter[]>(() => {\n return (\n walletAdapters || [\n new DefaultEVMAdapterWalletAdapter(new EthersProvider()),\n new DefaultSolanaWalletAdapter(),\n ]\n );\n });\n\n // check params, if has mismatch, throw warning message to console\n // useParamsCheck({ brokerId: innerConfigStore.get(\"brokerId\") });\n\n useLayoutEffect(() => {\n let account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!account) {\n account = new Account(\n innerConfigStore,\n innerKeyStore,\n // innerGetWalletAdapter,\n innerWalletAdapters,\n {\n contracts,\n }\n );\n\n SimpleDI.registerByName(Account.instanceName, account);\n }\n\n setAccount(account);\n }, []);\n\n const filteredChains = useMemo(() => {\n if (typeof chainFilter === \"function\") {\n return chainFilter(innerConfigStore);\n }\n\n return chainFilter;\n }, [props.chainFilter, innerConfigStore]);\n\n if (!account) {\n return null;\n }\n\n return (\n <OrderlyProvider\n value={{\n configStore: innerConfigStore,\n keyStore: innerKeyStore,\n getWalletAdapter: innerGetWalletAdapter,\n networkId: networkId,\n filteredChains: filteredChains,\n walletAdapters: innerWalletAdapters,\n // apiBaseUrl,\n customChains,\n }}\n >\n <StatusProvider>\n <DataCenterProvider>{props.children}</DataCenterProvider>\n </StatusProvider>\n </OrderlyProvider>\n );\n};\n","import { PropsWithChildren, createContext, useContext, useRef } from \"react\";\nimport { usePrivateDataObserver } from \"./orderly/usePrivateDataObserver\";\nimport { usePreLoadData } from \"./usePreloadData\";\n\nexport type getKeyFunction = (index: number, prevData: any) => string | null;\n\ninterface DataCenterContextState {\n // orders\n // positions\n // balances\n //\n regesterKeyHandler: (key: string, handler: getKeyFunction) => void;\n unregisterKeyHandler: (key: string) => void;\n}\n\nexport const DataCenterContext = createContext<DataCenterContextState>(\n {} as any\n);\n\nexport const useDataCenterContext = () => useContext(DataCenterContext);\n\nexport const DataCenterProvider = ({ children }: PropsWithChildren) => {\n /**\n * preload the required data for the app\n * hidden view while the required data is not ready\n */\n const { error, done } = usePreLoadData();\n\n const getKeyHandlerMapRef = useRef<Map<string, getKeyFunction>>(new Map());\n\n usePrivateDataObserver({\n getKeysMap(type) {\n return getKeyHandlerMapRef.current;\n },\n });\n\n if (error) {\n return <div>Data load failed</div>;\n }\n\n if (!done) return null;\n\n return (\n <DataCenterContext.Provider\n value={{\n regesterKeyHandler: (key, fun) => {\n getKeyHandlerMapRef.current.set(key, fun);\n },\n unregisterKeyHandler: (key) => {\n getKeyHandlerMapRef.current.delete(key);\n },\n }}\n >\n {children}\n </DataCenterContext.Provider>\n );\n};\n","import { useEffect } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const [subOrder, setSubOrder] = useLocalStorage(\n \"orderly_subscribe_order\",\n true\n );\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n const newPostions = {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const itemIndex = nextPostions.findIndex(\n (item) => item.symbol === row.symbol\n );\n\n // const item = nextPostions.find(\n // (item) => item.symbol === row.symbol\n // );\n\n if (itemIndex >= 0) {\n const itemArr = nextPostions.splice(itemIndex, 1);\n\n const item = itemArr[0];\n\n return object2underscore(item);\n }\n\n return row;\n }),\n };\n\n if (nextPostions.length > 0) {\n newPostions.rows = [\n ...newPostions.rows,\n ...nextPostions.map((item) => {\n return object2underscore(item);\n }),\n ];\n }\n\n return newPostions;\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n};\n","import { API } from \"@orderly.network/types\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { is, lensIndex, over, startsWith } from \"ramda\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { RegularOrderMergeHandler } from \"../services/orderMerge/regularOrderMergeHandler\";\n\n// import { useSWRConfig, unstable_serialize } from \"swr\";\n\nexport const generateKeyFun =\n (args: {\n status?: string;\n symbol?: string;\n side?: string;\n size?: number;\n page?: number;\n dateRange?: {\n from?: Date;\n to?: Date;\n };\n }) =>\n (pageIndex: number, previousPageData: any): string | null => {\n // reached the end\n if (previousPageData && !previousPageData.rows?.length) return null;\n\n const { status, symbol, side, size = 100, page, dateRange } = args;\n\n const search = new URLSearchParams([\n [\"size\", size.toString()],\n [\"page\", `${pageIndex + 1}`],\n [\"source_type\", \"ALL\"],\n ]);\n\n if (dateRange) {\n if (dateRange.from) {\n search.set(\"start_t\", `${dateRange.from.getTime()}`);\n }\n \n if (dateRange.to) {\n search.set(\"end_t\", `${dateRange.to.getTime()}`);\n }\n }\n\n if (page) {\n search.set(\"page\", `${page}`);\n }\n\n if (status) {\n search.set(`status`, status);\n }\n\n if (symbol) {\n search.set(`symbol`, symbol);\n }\n\n if (side) {\n search.set(`side`, side);\n }\n\n return `/v1/orders?${search.toString()}`;\n };\n\nexport const updateOrdersHandler = (\n key: string,\n updatedOrder: WSMessage.Order,\n // isAlgoOrder:boolean,\n orders?: API.OrderResponse[]\n) => {\n if (!orders) {\n return;\n }\n const handler = new RegularOrderMergeHandler(updatedOrder);\n\n return handler.merge(key, updatedOrder, orders);\n\n // console.log(key);\n // const isAlgoOrder = \"algoOrderId\" in updatedOrder;\n\n // // if (isAlgoOrder) {\n // // mergeHandler = new AlgoOrderMergeHandler();\n // // } else {\n // // mergeHandler = new RegularOrderMergeHandler();\n // // }\n\n // const underscoreOrder = object2underscore(updatedOrder);\n\n // let formattedOrder: API.Order & API.AlgoOrder = {\n // ...underscoreOrder,\n // updated_time: updatedOrder.timestamp,\n // type: updatedOrder.type?.replace(\"_ORDER\", \"\"),\n // //@ts-ignore\n // // visible_quantity: updatedOrder.visibleQuantity || updatedOrder.visible,\n // };\n\n // if (typeof formattedOrder.visible_quantity === \"undefined\") {\n // // check visible field;\n // // @ts-ignore\n // formattedOrder.visible_quantity = updatedOrder.visible;\n // }\n\n // // console.log(formattedOrder, updatedOrder);\n\n // const hasCreateTime = \"created_time\" in formattedOrder;\n // if (!hasCreateTime) {\n // formattedOrder[\"created_time\"] = updatedOrder.timestamp;\n // }\n\n // if (isAlgoOrder) {\n // if (typeof updatedOrder.triggerTradePrice !== \"undefined\") {\n // formattedOrder.trigger_price = updatedOrder.triggerTradePrice;\n // }\n\n // if (formattedOrder.type === \"MARKET\") {\n // const { price, ...newObj } = formattedOrder;\n // // @ts-ignore\n // formattedOrder = newObj;\n // }\n // } else {\n // // formattedOrder.created_time = updatedOrder.timestamp;\n // }\n\n // // const index = lensIndex(0);\n // const orderId =\n // (updatedOrder as WSMessage.Order).orderId ||\n // (updatedOrder as WSMessage.AlgoOrder).algoOrderId;\n\n // const isExisting = orderIsExisting(orders, orderId);\n\n // const status =\n // (updatedOrder as WSMessage.Order).status ||\n // (updatedOrder as WSMessage.AlgoOrder).rootAlgoStatus;\n\n // switch (status) {\n // case \"NEW\": {\n // // chceck if the order is already in the list\n // if (\n // isExisting ||\n // key.startsWith(\"orders:CANCELLED\") ||\n // key.startsWith(\"orders:FILLED\") ||\n // key.startsWith(\"orders:REJECTED\")\n // ) {\n // return orders;\n // }\n // return insertOrders(orders, formattedOrder);\n // }\n\n // case \"CANCELLED\": {\n // if (\n // key.startsWith(\"orders:FILLED\") ||\n // key.startsWith(\"orders:REJECTED\")\n // ) {\n // return orders;\n // }\n // if (key.startsWith(\"orders:NEW\") || key.startsWith(\"orders:INCOMPLETE\")) {\n // return removeOrderIfExisting(orders, orderId);\n // }\n\n // if (key.startsWith(\"orders:CANCELLED\")) {\n // return insertOrders(orders, formattedOrder);\n // }\n\n // return updateOrders(orders, formattedOrder);\n // }\n\n // case \"REPLACED\":\n // return updateOrders(orders, formattedOrder);\n\n // case \"FILLED\": {\n // if (isExisting) {\n // // for new list, remove the order if it exists\n // if (\n // key.startsWith(\"orders:INCOMPLETE\") ||\n // key.startsWith(\"orders:NEW\")\n // ) {\n // // if fullfilled, remove from the list\n // if (updatedOrder.totalExecutedQuantity === updatedOrder.quantity) {\n // return removeOrderIfExisting(orders, orderId);\n // }\n\n // // update\n // return updateOrders(orders, formattedOrder);\n // }\n // } else {\n // // for filled list, insert the order if it doesn't exist\n\n // if (\n // key.startsWith(\"orders:CANCELLED\") ||\n // key.startsWith(\"orders:INCOMPLETE\") ||\n // key.startsWith(\"orders:NEW\")\n // ) {\n // return orders;\n // }\n // // if filled/history list:\n // return insertOrders(orders, formattedOrder);\n // }\n // }\n\n // default:\n // return orders;\n // }\n};\n\nexport function updateAlgoOrdersHandler(\n key: string,\n message: WSMessage.AlgoOrder[],\n orders: API.OrderResponse[]\n) {\n if (!orders) {\n return;\n }\n\n const mergeHandler = new AlgoOrderMergeHandler(message);\n\n const result = mergeHandler.merge(key, message, orders);\n\n return result;\n}\n\nfunction updateOrders(\n orders: API.OrderResponse[],\n formattedOrder: API.Order & API.AlgoOrder\n) {\n return orders.map((item) => {\n return {\n // ...item,\n meta: item.meta,\n rows: item.rows.map((order: API.Order | API.AlgoOrder) => {\n const isAlgoOrder = \"algo_order_id\" in order;\n\n if (\n isAlgoOrder &&\n formattedOrder?.algo_order_id === order?.algo_order_id\n ) {\n return { ...order, ...formattedOrder };\n }\n\n if (!isAlgoOrder && formattedOrder?.order_id === order?.order_id) {\n return { ...order, ...formattedOrder };\n }\n\n return order;\n }),\n };\n });\n}\n\nfunction insertOrders(\n orders: API.OrderResponse[],\n formattedOrder: API.Order & API.AlgoOrder\n) {\n const index = lensIndex(0);\n return over(\n index,\n (item: any) => ({\n meta: {\n ...item.meta,\n total: item.meta.total + 1,\n },\n rows: [formattedOrder, ...item.rows],\n }),\n orders\n );\n}\n\nfunction removeOrderIfExisting(\n orders: API.OrderResponse[],\n orderId: number\n): API.OrderResponse[] {\n const isExisting = orderIsExisting(orders, orderId);\n if (!isExisting) return orders;\n return orders.map((item) => {\n return {\n meta: { ...item.meta, total: item.meta.total - 1 },\n rows: item.rows.filter((order: API.Order | API.AlgoOrder) => {\n const isAlgoOrder = \"algo_order_id\" in order;\n return isAlgoOrder\n ? (order as API.AlgoOrder).algo_order_id !== orderId\n : (order as API.Order).order_id !== orderId;\n }),\n };\n });\n}\n\nfunction findOrderIndex(\n orders: API.OrderResponse[],\n orderId: number\n): number[] | undefined {\n let index: number = 0;\n let index2: number | undefined;\n\n for (let idx = 0; idx < orders.length; idx++) {\n index = idx;\n const item = orders[idx];\n\n for (let idx2 = 0; idx2 < item.rows.length; idx2++) {\n const element = item.rows[idx2];\n if (\n (element as API.AlgoOrder).algo_order_id === orderId ||\n (element as API.Order).order_id === orderId\n ) {\n index2 = idx2;\n\n break;\n }\n }\n }\n\n if (typeof index2 === \"undefined\") {\n return;\n }\n\n return [index, index2];\n}\n\nfunction orderIsExisting(orders: API.OrderResponse[], orderId: number) {\n const index = findOrderIndex(orders, orderId);\n return Array.isArray(index);\n}\n\nexport function getPositionBySymbol(symbol: string) {\n // const config = useSWRConfig();\n // console.log(config);\n}\n","import { WSMessage, API } from \"@orderly.network/types\";\nimport { IOrderMergeHandler } from \"./interface\";\nimport { lensIndex, over } from \"ramda\";\n\nexport abstract class BaseMergeHandler<\n T extends WSMessage.AlgoOrder[] | WSMessage.Order,\n D extends API.AlgoOrder | API.Order\n> implements IOrderMergeHandler<T, D>\n{\n data: D;\n constructor(private message: T) {\n this.data = this.formatOrder(message);\n }\n abstract get status(): string;\n abstract get orderId(): number;\n abstract pre(message: T, prevData?: API.OrderResponse[]): D;\n abstract isFullFilled(): boolean;\n\n /**\n * format the order data;\n */\n formatOrder(message: T): D {\n const data = this.pre(message);\n\n if (!data.created_time) {\n data.created_time = (data as any).timestamp;\n }\n\n if (data.type && data.type.endsWith(\"_ORDER\")) {\n data.type = data.type.replace(\"_ORDER\", \"\");\n }\n\n return data;\n }\n\n merge(\n key: string,\n message: T,\n prevData: API.OrderResponse[]\n ): API.OrderResponse[] {\n switch (this.status) {\n case \"NEW\": {\n if (\n key.startsWith(\"orders:CANCELLED\") ||\n key.startsWith(\"orders:FILLED\") ||\n key.startsWith(\"orders:REJECTED\")\n ) {\n return prevData;\n }\n return this.insetOrUpdate(prevData);\n }\n case \"CANCELLED\": {\n if (\n key.startsWith(\"orders:FILLED\") ||\n key.startsWith(\"orders:REJECTED\")\n ) {\n return prevData;\n }\n if (\n key.startsWith(\"orders:NEW\") ||\n key.startsWith(\"orders:INCOMPLETE\")\n ) {\n return this.remove(prevData);\n }\n\n if (key.startsWith(\"orders:CANCELLED\")) {\n return this.insert(prevData);\n }\n\n return this.update(prevData);\n }\n\n case \"REPLACED\":\n return this.update(prevData);\n\n case \"FILLED\": {\n if (this.orderIsExisting(prevData)) {\n // for new list, remove the order if it exists\n if (\n key.startsWith(\"orders:INCOMPLETE\") ||\n key.startsWith(\"orders:NEW\")\n ) {\n // if fullfilled, remove from the list\n if (this.isFullFilled()) {\n return this.remove(prevData);\n }\n\n // update\n return this.update(prevData);\n }\n } else {\n // for filled list, insert the order if it doesn't exist\n\n if (\n key.startsWith(\"orders:CANCELLED\") ||\n key.startsWith(\"orders:INCOMPLETE\") ||\n key.startsWith(\"orders:NEW\")\n ) {\n return prevData;\n }\n // if filled/history list:\n return this.insert(prevData);\n }\n }\n\n default:\n return prevData || [];\n }\n }\n\n insert(orders?: API.OrderResponse[] | undefined): API.OrderResponse[] {\n const index = lensIndex<API.OrderResponse>(0);\n return over(\n //@ts-ignore\n index,\n (item: any) => ({\n meta: {\n ...item.meta,\n total: item.meta.total + 1,\n },\n rows: [this.data, ...item.rows],\n }),\n orders\n ) as API.OrderResponse[];\n }\n\n insetOrUpdate(orders: API.OrderResponse[]): API.OrderResponse[] {\n if (this.orderIsExisting(orders)) {\n return this.update(orders);\n }\n return this.insert(orders);\n }\n\n update(prevData: API.OrderResponse[]): API.OrderResponse[] {\n const idx = this.findOrderIndex(prevData);\n if (!Array.isArray(idx)) {\n return prevData || [];\n }\n\n const [index, index2] = idx;\n\n return prevData.map((item, i) => {\n return {\n meta: { ...item.meta },\n rows: item.rows.map((order, j) => {\n if (index === i && index2 === j) {\n return { ...order, ...this.data };\n }\n return order;\n }),\n };\n });\n }\n\n remove(prevData: API.OrderResponse[]): API.OrderResponse[] {\n const idx = this.findOrderIndex(prevData);\n if (!Array.isArray(idx)) {\n return prevData;\n }\n\n const [index, index2] = idx;\n\n return prevData.map((item, i) => {\n return {\n meta: { ...item.meta, total: item.meta.total - 1 },\n rows:\n index === i ? item.rows.filter((_, i) => i !== index2) : item.rows,\n };\n });\n }\n\n findOrderIndex(orders: API.OrderResponse[]): number[] | undefined {\n let index: number = 0;\n let index2: number | undefined;\n\n for (; index < orders.length; index++) {\n // index = idx;\n const item = orders[index];\n\n for (let idx2 = 0; idx2 < item.rows.length; idx2++) {\n const element = item.rows[idx2];\n if (\n (element as API.AlgoOrder).algo_order_id === this.orderId ||\n (element as API.Order).order_id === this.orderId\n ) {\n index2 = idx2;\n\n break;\n }\n }\n if (typeof index2 !== \"undefined\") {\n break;\n }\n }\n\n if (typeof index2 === \"undefined\") {\n return;\n }\n\n return [index, index2];\n }\n\n orderIsExisting(orders: API.OrderResponse[]): boolean {\n const index = this.findOrderIndex(orders);\n return Array.isArray(index);\n }\n}\n","import { camelCaseToUnderscoreCase } from \"@orderly.network/utils\";\n\nexport function object2underscore(obj: any) {\n return Object.keys(obj).reduce((acc, key) => {\n acc[camelCaseToUnderscoreCase(key)] = obj[key];\n return acc;\n }, {} as any);\n}\n","import { API, WSMessage } from \"@orderly.network/types\";\nimport { BaseMergeHandler } from \"./baseMergeHandler\";\nimport { object2underscore } from \"../../utils/ws\";\n\nexport class AlgoOrderMergeHandler extends BaseMergeHandler<\n WSMessage.AlgoOrder[],\n API.AlgoOrder\n> {\n get orderId(): number {\n return this.data.algo_order_id;\n }\n\n get status(): string {\n return this.data.root_algo_status;\n }\n\n // merge(\n // key: string,\n // message: WSMessage.AlgoOrder[],\n // prevData: API.OrderResponse[]\n // ): API.OrderResponse[] | undefined {\n // switch (this.status) {\n // case \"TRIGGER\": {\n // }\n // default:\n // return super.merge(key, message, prevData);\n // }\n // }\n\n pre(\n message: WSMessage.AlgoOrder[],\n prevData?: API.OrderResponse[]\n ): API.AlgoOrder {\n return AlgoOrderMergeHandler.groupOrders(message);\n }\n\n isFullFilled(): boolean {\n if (\n \"total_executed_quantity\" in this.data &&\n this.data.total_executed_quantity !== 0\n ) {\n return this.data.total_executed_quantity === this.data.quantity;\n } else if (\n \"total_executed_quantity\" in (this.data as API.AlgoOrder).child_orders[0]\n ) {\n return (\n (this.data as API.AlgoOrder).child_orders[0].total_executed_quantity ===\n (this.data as API.AlgoOrder).child_orders[0].quantity\n );\n }\n\n return false;\n }\n\n static groupOrders(orders: WSMessage.AlgoOrder[]): API.AlgoOrder {\n const rootOrderIndex = orders.findIndex(\n (order) =>\n order.parentAlgoOrderId === 0 &&\n order.algoOrderId === order.rootAlgoOrderId\n );\n if (rootOrderIndex === -1) {\n throw new Error(\"Root order not found\");\n }\n\n const rootOrder_ = object2underscore(\n orders[rootOrderIndex]\n ) as unknown as API.AlgoOrder;\n\n rootOrder_.child_orders = orders\n .filter((_, index) => index !== rootOrderIndex)\n .map((order) => {\n return object2underscore(order) as unknown as API.AlgoOrder;\n });\n\n return rootOrder_;\n }\n}\n","import { API, WSMessage } from \"@orderly.network/types\";\nimport { BaseMergeHandler } from \"./baseMergeHandler\";\nimport { object2underscore } from \"../../utils/ws\";\n\nexport class RegularOrderMergeHandler extends BaseMergeHandler<\n WSMessage.Order,\n API.Order\n> {\n get orderId(): number {\n return this.data.order_id;\n }\n get status(): string {\n return this.data.status;\n }\n pre(\n message: WSMessage.Order,\n prevData?: API.OrderResponse[] | undefined\n ): API.Order {\n return object2underscore(message) as unknown as API.Order;\n }\n isFullFilled(): boolean {\n return (\n \"total_executed_quantity\" in this.data &&\n this.data.total_executed_quantity === this.data.quantity\n );\n }\n}\n","import { ConfigKey, ConfigStore } from \"@orderly.network/core\";\nimport { windowGuard } from \"@orderly.network/utils\";\n\nexport class ProxyConfigStore implements ConfigStore {\n private _proxyConfigStore?: ConfigStore;\n\n constructor(private readonly _originConfigStore: ConfigStore) {\n windowGuard(() => {\n this._proxyConfigStore =\n (window as any).__ORDERLY_CONFIG_STORE__ || _originConfigStore;\n });\n }\n\n get<T>(key: ConfigKey): T {\n const value = this._proxyConfigStore?.get(key);\n if (typeof value === \"undefined\") {\n return this._originConfigStore.get(key);\n }\n return value as T;\n }\n\n getOr<T>(key: ConfigKey, defaultValue: T): T {\n return (this._proxyConfigStore ?? this._originConfigStore).getOr(\n key,\n defaultValue\n );\n }\n\n set<T>(key: ConfigKey, value: T): void {\n (this._proxyConfigStore ?? this._originConfigStore).set(key, value);\n }\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getFromOrigin<T>(key: ConfigKey): T {\n return this._originConfigStore.get(key);\n }\n\n getOrFromOrigin<T>(key: ConfigKey, defaultValue: T): T {\n return this._originConfigStore.getOr(key, defaultValue);\n }\n\n setToOrigin<T>(key: ConfigKey, value: T): void {\n this._originConfigStore.set(key, value);\n }\n\n clearOrigin(): void {\n this._originConfigStore.clear();\n }\n}\n","import { ChainNamespace } from \"@orderly.network/types\";\nimport type { EIP1193Provider } from \"@web3-onboard/common\";\nimport { createContext, useContext } from \"react\";\n\nexport type ConnectedChain = {\n id: number | string;\n namespace: ChainNamespace;\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: (options?: any) => 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","import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\nimport {useTickerStream} from \"./useTickerStream\";\nimport {useMarkPrice} from \"./useMarkPrice\";\nimport {useWS} from \"../useWS\";\nimport {useEventEmitter} from \"../useEventEmitter\";\nimport {useSymbolsInfo} from \"./useSymbolsInfo\";\nimport {Decimal, removeTrailingZeros} from \"@orderly.network/utils\";\nimport {max, min} from \"ramda\";\nimport {SDKError} from \"@orderly.network/types\";\nimport orderbooksService from './orderbook.service';\n\nexport type OrderBookItem = number[];\n\nexport type OrderbookData = {\n asks: OrderBookItem[];\n bids: OrderBookItem[];\n};\n\nconst paddingFn = (len: number) =>\n Array(len).fill([Number.NaN, Number.NaN, Number.NaN, Number.NaN] as OrderBookItem);\n\nconst asksSortFn = (a: OrderBookItem, b: OrderBookItem) => a[0] - b[0];\n\nconst bidsSortFn = (a: OrderBookItem, b: OrderBookItem) => b[0] - a[0];\n\n// const commonSortFn = (a: OrderBookItem, b: OrderBookItem) => b[0] - a[0];\n\nconst reduceItems = (\n depth: number | undefined,\n level: number,\n data: OrderBookItem[],\n asks = false\n) => {\n if (!Array.isArray(data) || data.length === 0) {\n return [];\n }\n let newData = [...data];\n const result: OrderBookItem[] = [];\n\n //\n\n if (typeof depth !== \"undefined\") {\n const prices = new Map<number, number[]>();\n for (let i = 0; i < data.length; i++) {\n const [price, quantity] = data[i];\n if (isNaN(price) || isNaN(quantity)) continue;\n let priceKey;\n\n if (asks) {\n priceKey = new Decimal(Math.ceil(price / depth)).mul(depth).toNumber();\n } else {\n priceKey = new Decimal(Math.floor(price / depth)).mul(depth).toNumber();\n }\n\n if (depth < 1 && depth > 0 && priceKey.toString().indexOf(\".\") !== -1) {\n const priceStr = price.toString();\n const index = priceStr.indexOf(\".\");\n const decimal = priceStr.slice(index + 1);\n const decimalDepth = removeTrailingZeros(depth).toString().slice(2).length;\n const decimalStr = decimal.slice(0, min(decimal.length, decimalDepth));\n priceKey = new Decimal(\n priceStr.slice(0, index) + \".\" + decimalStr\n ).toNumber();\n }\n\n // console.log(`reduce items price: ${price}, priceKey: ${priceKey}, depth: ${depth}, resetPriceKey: ${price.toString === priceKey.toString}`);\n // console.log(`ask: ${asks} reduce items price: ${priceKey}`);\n\n if (prices.has(priceKey)) {\n const item = prices.get(priceKey)!;\n const itemPrice = new Decimal(item[1]).add(quantity).toNumber();\n\n // prices.push([price, quantity]);\n prices.set(priceKey, [priceKey, itemPrice]);\n } else {\n prices.set(priceKey, [priceKey, quantity]);\n }\n }\n\n newData = Array.from(prices.values());\n }\n\n for (let i = 0; i < newData.length; i++) {\n const [price, quantity] = newData[i];\n if (isNaN(price) || isNaN(quantity)) continue;\n\n const newQuantity = new Decimal(quantity)\n .add(result.length > 0 ? result[result.length - 1][2] : 0)\n .toNumber();\n\n const newAmount = new Decimal(quantity * price)\n .add(result.length > 0 ? result[result.length - 1][3] : 0)\n .toNumber();\n\n result.push([price, quantity, newQuantity, newAmount]);\n // if the total is greater than the level, break\n // TODO:\n // if (i + 1 >= level) {\n // break;\n // }\n }\n\n return result;\n};\n\n/**\n * @name reduceOrderbook\n * @param depth\n * @param level\n * @param data\n */\nexport const reduceOrderbook = (\n depth: number | undefined,\n level: number,\n padding: boolean,\n data: OrderbookData,\n): OrderbookData => {\n let asks = reduceItems(depth, level, data.asks, true);\n\n let bids = reduceItems(depth, level, data.bids);\n\n /// not empty and asks.price <= bids.price\n if (asks.length !== 0 && bids.length !== 0 && asks[0][0] <= bids[0][0]) {\n if (asks.length === 1) {\n const [price, qty, newQuantity, newAmount] = asks[0];\n asks.shift();\n asks.push([price + (depth === undefined ? 0 : depth), qty, newQuantity, newAmount]);\n } else {\n const [bidPrice] = bids[0];\n while (asks.length > 0) {\n const [askPrice, askQty, newQuantity, newAmount] = asks[0];\n\n\n if (askPrice <= bidPrice) {\n // console.log(\"xxxxxxxxxxx reset ask list begin\", [...asks], { ...asks[0] });\n asks.shift();\n let logStr = \"\";\n for (let index = 0; index < asks.length; index++) {\n if (index === 0) {\n const quantity = asks[index][1] + askQty;\n asks[index][1] = quantity;\n asks[index][2] = quantity;\n // asks[index][3] += newAmount;\n // FIXME: fix this code later\n asks[index][3] = Math.ceil(quantity) * asks[index][0];\n } else {\n // asks[index][3] += newAmount;\n // FIXME: fix this code later\n asks[index][3] = asks[index][0] * asks[index][1] + asks[index - 1][3];\n }\n logStr += `index: ${index} ${asks[index]}\\n`;\n }\n // console.log(\"xxxxxxxxxxx reset ask list end\", logStr);\n } else {\n break;\n }\n }\n }\n }\n\n asks = asks.reverse();\n\n if (padding) {\n asks =\n asks.length < level ? paddingFn(level - asks.length).concat(asks) : asks;\n bids =\n bids.length < level ? bids.concat(paddingFn(level - bids.length)) : bids;\n }\n\n return {\n asks: asks,\n bids: bids,\n };\n};\n\nconst mergeItems = (data: OrderBookItem[], update: OrderBookItem[]) => {\n // let index = -1;\n if (data.length === 0) return update;\n\n data = data.filter(([price]) => !isNaN(price));\n\n while (update.length > 0) {\n const item = update.shift();\n //\n if (item) {\n const [price, quantity] = item;\n\n const index = data.findIndex(([p], index) => p === price);\n //\n if (index === -1) {\n if (quantity === 0) continue;\n data.push(item);\n } else {\n if (quantity === 0) {\n data.splice(index, 1);\n } else {\n data[index] = item;\n }\n }\n }\n }\n\n return data;\n};\n\nexport const mergeOrderbook = (data: OrderbookData, update: OrderbookData) => {\n let asks = [...data.asks];\n let bids = [...data.bids];\n\n asks = mergeItems(asks, update.asks).sort(asksSortFn);\n bids = mergeItems(bids, update.bids).sort(bidsSortFn);\n\n return {\n asks: asks,\n bids: bids,\n };\n};\n\n/**\n * Configuration for the Order Book\n */\nexport type OrderbookOptions = {\n /** Indicates the number of data entries to return for ask/bid, default is 10 */\n level?: number;\n /** Whether to fill in when the actual data entries are less than the level. If filled, it will add [nan, nan, nan, nan]. Default is true */\n padding?: boolean;\n};\n\nconst INIT_DATA = {asks: [], bids: []};\n\n/**\n * @name useOrderbookStream\n * @description React hook that returns the current orderbook for a given market\n */\nexport const useOrderbookStream = (\n symbol: string,\n initial: OrderbookData = INIT_DATA,\n options?: OrderbookOptions\n) => {\n if (!symbol) {\n throw new SDKError(\"useOrderbookStream requires a symbol\");\n }\n\n const level = options?.level ?? 10;\n const padding = options?.padding ?? true;\n\n const [requestData, setRequestData] = useState<OrderbookData | null>(null);\n const [data, setData] = useState<OrderbookData>(initial);\n const [isLoading, setIsLoading] = useState(true);\n // const [level, setLevel] = useState(() => options?.level ?? 10);\n\n const config = useSymbolsInfo()[symbol];\n\n const [depth, setDepth] = useState<number | undefined>();\n\n // markPrice, lastPrice\n const prevMiddlePrice = useRef<number>(0);\n\n const depths = useMemo(() => {\n const tick = config(\"quote_tick\");\n if (typeof tick === 'undefined') return [];\n\n try {\n const base = new Decimal(tick);\n return [base.toNumber(), base.mul(10).toNumber(), base.mul(100).toNumber(), base.mul(1000).toNumber()];\n } catch (e) {\n\n }\n return [tick];\n }, [config(\"quote_tick\")]);\n\n useEffect(() => {\n setDepth(config(\"quote_tick\"));\n }, [config(\"quote_tick\")]);\n\n const ws = useWS();\n\n const ticker = useTickerStream(symbol);\n\n const eventEmitter = useEventEmitter();\n\n // const orderbookRequest =\n\n useEffect(() => {\n let needRequestFullOrderbook= true;\n setIsLoading(true);\n let orderBookUpdateSub: any;\n let fullOrderBookUpdateSub: any;\n orderBookUpdateSub = ws.subscribe(\n {\n event: \"subscribe\",\n topic: `${symbol}@orderbookupdate`,\n },\n {\n formatter: (message) => message,\n onMessage: (message: any) => {\n const {data: wsData, ts} = message;\n const {asks, bids, prevTs} = wsData;\n orderbooksService.updateOrderbook(symbol, {asks, bids, ts, prevTs}, () => needRequestFullOrderbook = true);\n\n\n const data = orderbooksService.getRawOrderbook(symbol);\n setData({bids: data.bids, asks: data.asks});\n\n }\n }\n )\n\n if ( needRequestFullOrderbook) {\n setIsLoading(true);\n\n fullOrderBookUpdateSub = ws.onceSubscribe(\n {\n event: \"request\",\n id: `${symbol}@orderbook`,\n params: {\n type: \"orderbook\",\n symbol: symbol,\n },\n },\n {\n formatter: (message) => message,\n onMessage: (message: any) => {\n const {symbol, asks, bids, ts} = message.data;\n orderbooksService.setFullOrderbook(symbol, {asks, bids, ts})\n const data = orderbooksService.getRawOrderbook(symbol);\n setData({bids: data.bids, asks: data.asks});\n\n setIsLoading(false);\n },\n }\n )\n needRequestFullOrderbook= false;\n }\n\n return () => {\n // unsubscribe\n orderBookUpdateSub?.();\n fullOrderBookUpdateSub?.();\n orderbooksService.resetOrderBook(symbol);\n setData(INIT_DATA);\n }\n\n }, [symbol]);\n\n // const {data:markPrices} = useMarkPricesStream();\n\n const {data: markPrice} = useMarkPrice(symbol);\n\n\n const onItemClick = useCallback((item: OrderBookItem) => {\n eventEmitter.emit(\"orderbook:item:click\", item);\n }, []);\n\n const onDepthChange = useCallback((depth: number) => {\n //\n setDepth(() => depth);\n }, []);\n\n\n const reducedData = reduceOrderbook(depth, level, padding, {\n asks: [...data.asks],\n bids: [...data.bids],\n });\n\n // emit the asks0 and bids0\n useEffect(() => {\n const updateData = [\n reducedData.asks?.[reducedData.asks.length - 1]?.[0],\n reducedData.bids?.[0]?.[0]\n ];\n eventEmitter.emit(\"orderbook:update\", updateData);\n }, [reducedData.asks?.[reducedData.asks.length - 1]?.[0], reducedData.bids?.[0]?.[0]]);\n\n const middlePrice = useMemo(() => {\n let asksFrist = 0,\n bidsFirst = 0;\n\n if (data.asks.length > 0) {\n asksFrist = reducedData.asks?.[reducedData.asks.length - 1]?.[0];\n }\n\n if (data.bids.length > 0) {\n bidsFirst = data.bids[0][0];\n }\n\n if (isNaN(asksFrist) || isNaN(bidsFirst) || !ticker) return 0;\n\n\n return [asksFrist, bidsFirst, ticker[\"24h_close\"]].sort()[1];\n }, [ticker?.[\"24h_close\"], data]);\n\n useEffect(() => {\n prevMiddlePrice.current = middlePrice;\n }, [middlePrice]);\n\n return [\n {\n asks: reducedData.asks.slice(-level),\n bids: reducedData.bids.slice(0, level),\n markPrice: markPrice,\n middlePrice: [prevMiddlePrice.current, middlePrice],\n },\n {onDepthChange, depth, allDepths: depths, isLoading, onItemClick},\n ];\n};\n\nexport type useOrderbookStreamReturn = ReturnType<typeof useOrderbookStream>;\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useWS } from \"../useWS\";\nimport { useMarkPrice } from \"./useMarkPrice\";\nimport { useIndexPrice } from \"./useIndexPrice\";\nimport { useOpenInterest } from \"./useOpenInterest\";\nimport { useFetures } from \"../unuse/useFetures\";\n\nexport const useTickerStream = (symbol: string) => {\n if (!symbol) {\n throw new Error(\"useFuturesForSymbol requires a symbol\");\n }\n const { data: info } = useQuery<API.MarketInfo>(\n `/v1/public/futures/${symbol}`,\n {\n revalidateOnFocus: false,\n }\n );\n\n const [ticker, setTicker] = useState<any>();\n\n const ws = useWS();\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n `${symbol}@ticker`,\n {\n onMessage: (message: any) => {\n if (message.symbol !== symbol) return;\n\n setTicker(message);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n // onError: (error: any) => {\n //\n // },\n }\n );\n\n return () => {\n setTicker(undefined);\n unsubscribe?.();\n };\n }, [symbol]);\n\n const { data: markPrice } = useMarkPrice(symbol);\n const { data: indexPrice } = useIndexPrice(symbol);\n const { data: openInterest } = useOpenInterest(symbol);\n const { data: futures } = useFetures();\n\n const value = useMemo(() => {\n //\n if (!info) return null;\n if (!ticker || ticker.symbol !== symbol) return info;\n\n const futureIndex = futures?.findIndex(\n (item: any) => item.symbol === symbol\n );\n let _oi = openInterest;\n if (!_oi && futureIndex !== -1 && futures) {\n // @ts-ignore\n _oi = futures[futureIndex].open_interest;\n }\n\n const config: any = {\n ...info,\n mark_price: markPrice,\n index_price: indexPrice,\n open_interest: _oi,\n };\n\n if (ticker.open !== undefined) {\n config[\"24h_open\"] = ticker.open;\n }\n\n if (ticker.close !== undefined) {\n config[\"24h_close\"] = ticker.close;\n }\n\n if (ticker.high !== undefined) {\n config[\"24h_high\"] = ticker.high;\n }\n\n if (ticker.low !== undefined) {\n config[\"24h_low\"] = ticker.low;\n }\n\n if (ticker.volume !== undefined) {\n config[\"24h_volumn\"] = ticker.volume;\n config[\"24h_volume\"] = ticker.volume;\n }\n\n if (ticker.close !== undefined && ticker.open !== undefined) {\n config[\"change\"] = new Decimal(ticker.close)\n .minus(ticker.open)\n .div(ticker.open)\n .toNumber();\n\n config[\"24h_change\"] = new Decimal(ticker.close).minus(ticker.open);\n }\n return config;\n }, [info, symbol, ticker, futures, openInterest]);\n\n return value as API.MarketInfo & { change?: Decimal; \"24h_change\"?: Decimal };\n};\n","import { useEffect, useState } from \"react\";\nimport { useWS } from \"../useWS\";\n// import useSWRSubscription from \"swr/subscription\";\n\nexport const useMarkPrice = (symbol: string) => {\n const ws = useWS();\n const [price, setPrice] = useState(0);\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(`${symbol}@markprice`, {\n onMessage: (message: any) => {\n setPrice(message.price);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [symbol]);\n\n // return useSWRSubscription(`${symbol}@markprice`, (key, { next }) => {\n // const unsubscribe = ws.subscribe(`${symbol}@markprice`, {\n // onMessage: (message: any) => {\n // next(null, message.price);\n // },\n // });\n\n // return () => {\n // // console.log(\"_____________________ unsubscribe _________ \", symbol);\n // unsubscribe?.();\n // };\n // });\n\n return { data: price };\n};\n","import { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useIndexPrice = (symbol: string) => {\n // WARNING: force change perp to spot, because there is no perp now\n symbol = symbol.replace(\"PERP\", \"SPOT\");\n const ws = useWS();\n return useSWRSubscription(`${symbol}@indexprice`, (key, { next }) => {\n const unsubscribe = ws.subscribe(`${symbol}@indexprice`, {\n onMessage: (message: any) => {\n next(null, message.price);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n });\n};\n","import { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useOpenInterest = (symbol: string) => {\n const ws = useWS();\n return useSWRSubscription(`${symbol}@openinterest`, (key, { next }) => {\n const unsubscribe = ws.subscribe(`${symbol}@openinterest`, {\n onMessage: (message: any) => {\n next(null, message.openInterest);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n });\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useQuery } from \"../useQuery\";\n\nimport { useWS } from \"../useWS\";\n\ninterface MarketInfo {}\n\n// api: /public/futures\nexport const useFetures = () => {\n const { data, isLoading, error } = useQuery<MarketInfo[]>(\n `/v1/public/futures`,\n {\n revalidateOnFocus: false,\n }\n );\n\n const [sortedData, setSortedData] = useState(data);\n\n const ws = useWS();\n\n useEffect(() => {\n // const sub = ws\n // .observe<WSMessage.Ticker>(`tickers`)\n // .subscribe((value: any) => {\n //\n // // setData(value);\n // });\n // return () => {\n // sub.unsubscribe();\n // };\n }, []);\n\n useEffect(() => {\n if (data) {\n const sortedData = data.sort((a, b) => {\n return 0;\n });\n setSortedData(sortedData);\n }\n }, [data]);\n\n const sortBy = useCallback((key: string) => {}, [data]);\n\n const filterBy = useCallback((key: string) => {}, [data]);\n\n return {\n data: sortedData,\n sortBy,\n filterBy,\n isLoading,\n error,\n };\n};\n","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { type API } from \"@orderly.network/types\";\nimport { createGetter } from \"../utils/createGetter\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\n\nexport type SymbolInfo = ReturnType<typeof useSymbolsInfo>;\n\nexport const useSymbolsInfo = () => {\n const { data } = useQuery<Record<string, API.SymbolExt>>(`/v1/public/info`, {\n focusThrottleInterval: 1000 * 60 * 60 * 24,\n dedupingInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n formatter(data: { rows: API.Symbol[] }) {\n if (!data?.rows || !data?.rows?.length) {\n return {};\n }\n const obj = Object.create(null);\n\n for (let index = 0; index < data.rows.length; index++) {\n const item = data.rows[index];\n const arr = item.symbol.split(\"_\");\n const base_dp = getPrecisionByNumber(item.base_tick);\n const quote_dp = getPrecisionByNumber(item.quote_tick);\n obj[item.symbol] = {\n ...item,\n base_dp,\n quote_dp,\n base: arr[1],\n quote: arr[2],\n type: arr[0],\n name: `${arr[1]}-${arr[0]}`,\n };\n }\n\n return obj;\n },\n });\n\n return useMemo(() => createGetter<API.SymbolExt, string>(data), [data]);\n};\n","import { API } from \"@orderly.network/types\";\nimport { isNil } from \"ramda\";\n\ntype objectDepth = 1 | 2;\ntype propertyType<D, K, F> = D extends 1 ? K : F;\n\n// {\n// // [P in K]: (key: P, defaultValue?: T[P]) => T[K][P];\n// [P in K]: (key: P, defaultValue?: T[P]) => T[K][P];\n// }\n\n// type KeyOf<T> = keyof T;\nexport type ValueOf<T> = T[keyof T];\n\n// export function createGetter<T extends Record<string, any>, K extends keyof T>(\nexport function createGetter<\n T extends any,\n K extends string = string,\n Key = keyof T\n>(\n data: Record<string, T> | null | undefined,\n depth: objectDepth = 2\n): (typeof depth extends 1\n ? { [P in K]: (defaultValue?: any) => any }\n : { [P in K]: (key?: Key, defaultValue?: ValueOf<T>) => any }) & {\n isNil: boolean;\n} {\n const getValue = (value: any, defaultValue?: any) => {\n if (defaultValue === undefined) {\n return value;\n }\n\n return value ?? defaultValue;\n };\n\n return new Proxy(data || {}, {\n get(\n target: any,\n property: propertyType<typeof depth, keyof T, any>,\n receiver\n ): any {\n if (property === \"isNil\") {\n return isNil(data);\n }\n if (depth === 1) {\n return (defaultValue: any) => {\n if (!target) return defaultValue;\n return getValue(target[property], defaultValue);\n };\n }\n return (key?: Key, defaultValue?: any) => {\n if (key) {\n return getValue((target as any)[property]?.[key], defaultValue);\n } else {\n return target[property];\n }\n };\n },\n });\n}\n","export interface RawOrderBook {\n asks: [number, number][];\n bids: [number, number][];\n ts: number;\n}\n\nexport interface RawOrderBookUpdate {\n asks: [number, number][];\n bids: [number, number][];\n prevTs: number;\n ts: number;\n}\n\nexport const defaultRawOrderBook: RawOrderBook = {\n asks: [],\n bids: [],\n ts: 0,\n};\n\nclass OrderbookService{\n private static instance: OrderbookService;\n private bufferedOrderBookUpdates: { [symbol: string]: RawOrderBookUpdate[] } = {};\n private rawOrderBook: { [symbol: string]: RawOrderBook } = {};\n\n constructor() {\n }\n\n static getInstance() {\n if (!this.instance) {\n this.instance = new OrderbookService();\n }\n return this.instance;\n }\n\n private sortBufferedOrderBookUpdates(symbol: string){\n this.bufferedOrderBookUpdates[symbol]?.sort((a, b) => a.ts - b.ts);\n }\n\n private applyUpdateToRawOrderBook(symbol: string, update: RawOrderBookUpdate) {\n const rawOrderBook = this.rawOrderBook[symbol];\n\n if (!rawOrderBook || rawOrderBook.ts > update.prevTs) {\n return;\n }\n\n const askMap = new Map<number, number>();\n const bidMap = new Map<number, number>();\n\n rawOrderBook.asks.forEach((ask) => askMap.set(ask[0], ask[1]));\n rawOrderBook.bids.forEach((bid) => bidMap.set(bid[0], bid[1]));\n\n update.asks.forEach((ask) => (ask[1] === 0 ? askMap.delete(ask[0]) : askMap.set(ask[0], ask[1])));\n update.bids.forEach((bid) => (bid[1] === 0 ? bidMap.delete(bid[0]) : bidMap.set(bid[0], bid[1])));\n\n rawOrderBook.asks = Array.from(askMap.entries()).sort((a, b) => a[0] - b[0]);\n rawOrderBook.bids = Array.from(bidMap.entries()).sort((a, b) => b[0] - a[0]);\n\n rawOrderBook.ts = update.ts;\n }\n private applyBufferedUpdatesToRawOrderBooks(symbol: string) {\n this.bufferedOrderBookUpdates[symbol]?.forEach((update) => this.applyUpdateToRawOrderBook(symbol, update));\n }\n\n private deleteBufferedOrderBookUpdates(symbol: string) {\n delete this.bufferedOrderBookUpdates[symbol];\n }\n\n private commitOrderBook(symbol: string) {\n const rawOrderBook = this.rawOrderBook[symbol];\n if (!rawOrderBook) {\n return;\n }\n\n // const orderbook = this.prepareOrderBookStore(rawOrderBook);\n // if (orderbook.firstAskPrice <= orderbook.firstBidPrice) {\n // console.error(SERVICE_PREFIX, 'Orderbook crossing error', { crossedAsks: orderbook.asks, crossedBids: orderbook.bids });\n //\n // this.rawOrderBook[symbol] = {\n // ...defaultRawOrderBook,\n // ts: -1, // must be -1 because it needs to cause Orderbook version error in public websocket\n // };\n // } else {\n // orderBookStore.update(symbol, orderbook);\n // depthChartService.commitDepthChart(symbol);\n // }\n }\n\n\n\n private pushUpdateToBuffer(symbol: string, update: RawOrderBookUpdate) {\n if (this.bufferedOrderBookUpdates[symbol] === undefined) {\n this.bufferedOrderBookUpdates[symbol] = [];\n }\n\n const buffer = this.bufferedOrderBookUpdates[symbol];\n if (buffer.length > 0) {\n const lastUpdate = buffer[buffer.length - 1];\n\n if (lastUpdate.ts !== update.prevTs) {\n this.bufferedOrderBookUpdates[symbol] = [];\n }\n }\n\n this.bufferedOrderBookUpdates[symbol].push(update);\n }\n private isValidFullOrderBook(symbol: string, currentTs: number) {\n if ((this.bufferedOrderBookUpdates[symbol]?.length ?? 0) !== 0) {\n const earliestUpdates = this.bufferedOrderBookUpdates[symbol][0];\n\n // Incoming full orderbook is invalid if the timestamp is less than all of our buffered diff orderbook updates.\n return earliestUpdates.prevTs <= currentTs;\n }\n return true;\n }\n\n setFullOrderbook(symbol: string, rawOrderbook: RawOrderBook){\n const {ts} = rawOrderbook;\n this.rawOrderBook[symbol] = rawOrderbook;\n this.sortBufferedOrderBookUpdates(symbol);\n if (this.isValidFullOrderBook(symbol, ts)) {\n this.applyBufferedUpdatesToRawOrderBooks(symbol);\n }\n\n\n\n };\n\n updateOrderbook(symbol: string, update: RawOrderBookUpdate, callback: () => void) {\n const {asks, bids, prevTs, ts} = update;\n const rawOrderBook = this.rawOrderBook[symbol];\n if (!rawOrderBook) {\n return;\n }\n const currentTs = rawOrderBook.ts;\n if (currentTs === 0) {\n this.pushUpdateToBuffer(symbol, { asks, bids, prevTs, ts });\n return;\n }\n if (prevTs !== currentTs) {\n\n this.pushUpdateToBuffer(symbol, {asks, bids, prevTs, ts})\n if (callback) {\n callback();\n }\n return;\n }\n\n this.applyUpdateToRawOrderBook(symbol, update);\n this.deleteBufferedOrderBookUpdates(symbol);\n }\n\n getRawOrderbook(symbol: string) {\n return this.rawOrderBook[symbol];\n }\n\n public resetOrderBook(symbol: string) {\n this.rawOrderBook[symbol] = defaultRawOrderBook;\n }\n\n\n\n\n}\n\nconst orderBookService = OrderbookService.getInstance();\n\nexport default orderBookService;","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { \n API,\n OrderEntity,\n OrderSide,\n OrderType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { Decimal, getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { useMutation } from \"../useMutation\";\nimport { compose, head, includes, omit, pick } from \"ramda\";\nimport {\n baseInputHandle,\n getCalculateHandler,\n orderEntityFormatHandle,\n} from \"../utils/orderEntryHelper\";\nimport { useCollateral } from \"./useCollateral\";\nimport { useMaxQty } from \"./useMaxQty\";\n// import { availableOrderTypes } from \"../utils/createOrder\";\nimport { useMarkPrice } from \"./useMarkPrice\";\nimport { order as orderUtils } from \"@orderly.network/perp\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { OrderFactory } from \"../services/orderCreator/factory\";\n// import { VerifyResult } from \"../utils/createOrder\";\n\nexport type UseOrderEntryOptions = {\n commify?: boolean;\n // Whether to observe the orderbook, if it is a limit order, the orderbook will automatically calculate the est. liq. price when it is updated.\n watchOrderbook?: boolean;\n validate?: (\n data: OrderEntity\n ) => { [P in keyof OrderEntity]?: string } | null | undefined;\n};\n\nexport type UseOrderEntryMetaState = {\n errors:\n | { [P in keyof OrderEntity]?: { type: string; message: string } }\n | null\n | undefined;\n dirty: { [P in keyof OrderEntity]?: boolean } | null | undefined;\n submitted: boolean;\n};\n\nexport type UseOrderEntryReturn = {\n // Maximum open position\n maxQty: number;\n freeCollateral: number;\n markPrice: number;\n estLiqPrice?: number | null;\n estLeverage?: number | null;\n //@Deprecated\n onSubmit: (order: OrderEntity) => Promise<any>;\n submit: () => Promise<OrderEntity>;\n // order: data,\n submitting: boolean;\n formattedOrder: Partial<OrderEntity>;\n helper: {\n calculate: (\n values: Partial<OrderEntity>,\n field: keyof OrderEntity,\n value: any\n ) => Partial<OrderEntity>;\n validator: (values: Partial<OrderEntity>) => any;\n // clearErrors: () => void;\n // setValues: (values: Partial<OrderEntity>) => void;\n };\n // formState: any;\n metaState: UseOrderEntryMetaState;\n symbolConfig: API.SymbolExt;\n};\n\nexport type OrderParams = Required<\n Pick<OrderEntity, \"side\" | \"order_type\" | \"symbol\">\n> &\n Partial<Omit<OrderEntity, \"side\" | \"symbol\" | \"order_type\">>;\n\n/**\n * Create Order\n * @example\n * ```tsx\n * import { useOrderEntry } from \"@orderly.network/hooks\";\n * import {OrderSide, OrderType} from '@orderly.network/types';\n *\n * const { formattedOrder, onSubmit, helper } = useOrderEntry({\n * symbol: \"PERP_ETH_USDC\",\n * side: OrderSide.BUY,\n * order_type: OrderType.LIMIT,\n * order_price: 10000,\n * order_quantity: 1,\n * },{\n * // **Note:** it's required\n * watchOrderbook: true,\n * });\n * ```\n */\nexport function useOrderEntry(\n order: OrderParams,\n options?: UseOrderEntryOptions\n): UseOrderEntryReturn;\n/**\n * @deprecated\n */\nexport function useOrderEntry(\n symbol: string,\n side: OrderSide,\n reduceOnly: boolean\n): UseOrderEntryReturn;\nexport function useOrderEntry(\n symbolOrOrder: string | OrderParams,\n sideOrOptions?: OrderSide | UseOrderEntryOptions,\n reduceOnly?: boolean,\n options?: UseOrderEntryOptions\n): UseOrderEntryReturn {\n // if symbolOrOrder is string, then it's deprecated\n let isNewVersion = false;\n if (typeof symbolOrOrder === \"object\") {\n isNewVersion = true;\n\n if (!symbolOrOrder.symbol) {\n throw new SDKError(\"symbol is required\");\n }\n\n if (!symbolOrOrder.side) {\n throw new SDKError(\"Order side is required\");\n }\n\n if (!symbolOrOrder.order_type) {\n throw new SDKError(\"order_type is required\");\n }\n }\n\n const prevOrderData = useRef<Partial<OrderEntity> | null>(null);\n // Cache data from the last calculate\n const orderDataCache = useRef<Partial<OrderEntity> | null>(null);\n //\n const notSupportData = useRef<Partial<OrderEntity>>({});\n\n const [errors, setErrors] = useState<any>(null);\n\n const ee = useEventEmitter();\n\n const fieldDirty = useRef<{ [K in keyof OrderEntity]?: boolean }>({});\n const submitted = useRef<boolean>(false);\n const askAndBid = useRef<number[]>([]); // 0: ask0, 1: bid0\n\n const onOrderbookUpdate = useDebouncedCallback((data: number[]) => {\n askAndBid.current = data;\n }, 200);\n\n const { freeCollateral, totalCollateral, positions, accountInfo } =\n useCollateral();\n\n const symbolInfo = useSymbolsInfo();\n // const tokenInfo = useTokenInfo();\n\n const symbol = useMemo(() => {\n if (typeof symbolOrOrder === \"string\") {\n return symbolOrOrder;\n }\n return symbolOrOrder.symbol!;\n }, [symbolOrOrder]);\n\n const optionsValue = useMemo(() => {\n if (typeof sideOrOptions === \"object\") {\n return sideOrOptions;\n }\n\n return options;\n }, [sideOrOptions]);\n\n const isReduceOnly = useMemo<boolean>(() => {\n if (typeof reduceOnly === \"boolean\") {\n return reduceOnly;\n }\n\n if (typeof symbolOrOrder === \"object\") {\n return !!symbolOrOrder.reduce_only;\n }\n\n return false;\n }, [symbolOrOrder, reduceOnly]);\n\n const sideValue = useMemo(() => {\n if (typeof symbolOrOrder === \"object\") {\n return symbolOrOrder.side;\n }\n\n // if (typeof sideOrOptions === \"string\") {\n return sideOrOptions as OrderSide;\n // }\n }, [symbolOrOrder, sideOrOptions]);\n\n const baseDP = useMemo(\n () => getPrecisionByNumber(symbolInfo[symbol](\"base_tick\", 0)),\n [symbolInfo]\n );\n const quoteDP = useMemo(() => {\n return getPrecisionByNumber(symbolInfo[symbol](\"quote_tick\", 0));\n }, [symbolInfo]);\n\n const baseIMR = useMemo(\n () => symbolInfo[symbol](\"base_imr\", 0),\n [symbolInfo]\n );\n const baseMMR = useMemo(\n () => symbolInfo[symbol](\"base_mmr\", 0),\n [symbolInfo]\n );\n\n const { data: markPrice } = useMarkPrice(symbol);\n // const markPrice = 1;\n\n const diffOrderEntry = (\n prev: Partial<OrderParams>,\n current: Partial<OrderParams>\n ): { key: keyof OrderParams; value: any; preValue: any } | null => {\n if (!prev) return null;\n let key, value, preValue;\n const keys = Object.keys(current) as (keyof OrderParams)[];\n\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n\n let preveValue = prev[k];\n let currentValue = current[k];\n\n if (\n typeof preveValue === \"undefined\" &&\n typeof currentValue === \"undefined\"\n )\n continue;\n\n // if (k === \"order_quantity\") {\n // preveValue = Number(preveValue);\n // currentValue = Number(currentValue);\n // }\n\n if (preveValue !== currentValue) {\n key = k;\n value = currentValue;\n preValue = preveValue;\n break;\n }\n }\n\n if (!key) return null;\n\n return { key, value, preValue };\n };\n\n const maxQty = useMaxQty(symbol, sideValue, isReduceOnly);\n\n const parseString2Number = (\n order: OrderParams & Record<string, any>,\n key: keyof OrderParams,\n dp?: number,\n ) => {\n if (typeof order[key] !== \"string\") return;\n // fix: delete the comma then remove the forward one of the string\n // first find the difference between current value and previous value\n\n if (order[key] && (order[key] as string).startsWith(\".\")) {\n (order[key] as string) = `0${order[key]}`;\n }\n\n // order[`${key}_origin`] = order[key];\n (order[key] as string) = (order[key] as string).replace(/,/g, \"\");\n\n // format input by decimal precision\n if (dp && (order[key] as string).length > 0) {\n const hasPoint = `${order[key]}`.includes(\".\");\n const endOfPoint = `${order[key]}`.endsWith(\".\");\n const decimalPart = `${order[key]}`.split(\".\");\n if (hasPoint && !endOfPoint) {\n (order[key] as string) = `${decimalPart[0]}.${decimalPart[1].slice(0,quoteDP)}`;\n }\n }\n };\n\n // just for performance optimization\n const needParse = useMemo(() => {\n if (typeof symbolOrOrder === \"string\") {\n return null;\n }\n return pick([\n \"order_price\",\n \"side\",\n \"order_quantity\",\n \"visible_quantity\",\n \"order_type\",\n \"order_type_ext\",\n \"symbol\",\n \"total\",\n \"reduce_only\",\n \"trigger_price\",\n ])(\n //@ts-ignore\n symbolOrOrder\n );\n }, [symbolOrOrder]);\n\n const parsedData = useMemo<OrderParams | null>(() => {\n if (typeof symbolOrOrder === \"string\") {\n return null;\n }\n // clean comma\n\n if (typeof symbolOrOrder.order_quantity === \"string\") {\n parseString2Number(symbolOrOrder, \"order_quantity\");\n } else if (typeof symbolOrOrder.order_quantity === \"number\") {\n symbolOrOrder.order_quantity = new Decimal(symbolOrOrder.order_quantity)\n .toDecimalPlaces(baseDP)\n .toString();\n }\n\n if (typeof symbolOrOrder.order_price === \"string\") {\n parseString2Number(symbolOrOrder, \"order_price\", quoteDP);\n }\n\n if (typeof symbolOrOrder.total === \"string\") {\n parseString2Number(symbolOrOrder, \"total\", quoteDP);\n }\n\n if (typeof symbolOrOrder.trigger_price === \"string\") {\n parseString2Number(symbolOrOrder, \"trigger_price\", quoteDP);\n }\n\n // if (typeof symbolOrOrder.trigger_price === \"string\") {\n // symbolOrOrder.trigger_price = symbolOrOrder.trigger_price.replace(\n // /,/g,\n // \"\"\n // );\n // }\n\n return symbolOrOrder;\n }, [\n needParse?.order_price,\n needParse?.order_quantity,\n needParse?.total,\n needParse?.trigger_price,\n needParse?.order_type,\n needParse?.order_type_ext,\n needParse?.symbol,\n needParse?.reduce_only,\n needParse?.side,\n needParse?.visible_quantity,\n quoteDP,\n baseDP,\n ]);\n\n const isAlgoOrder =\n parsedData?.order_type === OrderType.STOP_LIMIT ||\n parsedData?.order_type === OrderType.STOP_MARKET ||\n parsedData?.order_type === OrderType.CLOSE_POSITION;\n\n const [doCreateOrder, { isMutating }] = useMutation<OrderEntity, any>(\n isAlgoOrder ? \"/v1/algo/order\" : \"/v1/order\"\n );\n\n // const maxQty = 3;\n\n const createOrder = (values: Partial<OrderEntity>): Promise<OrderEntity> => {\n if (!values.symbol) {\n throw new SDKError(\"symbol is error\");\n }\n\n if (!values.side) {\n throw new SDKError(\"side is error\");\n }\n\n if (!values || typeof values.order_type === \"undefined\") {\n throw new SDKError(\"order_type is error\");\n }\n\n const orderCreator = OrderFactory.create(\n // @ts-ignore\n values.order_type_ext ? values.order_type_ext : values.order_type\n );\n\n if (!orderCreator) {\n return Promise.reject(new SDKError(\"orderCreator is null\"));\n }\n\n \n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(values, {\n symbol: symbolInfo[symbol](),\n // token: tokenInfo[symbol](),\n maxQty,\n markPrice: markPrice,\n })\n .then((errors: any) => {\n submitted.current = true;\n\n if (\n errors.order_price ||\n errors.order_quantity ||\n errors.trigger_price ||\n errors.total\n ) {\n setErrors(errors);\n reject(\n errors.order_price?.message || errors.order_quantity?.message\n );\n // throw new SDKError(\n // errors.order_price?.message ||\n // errors.order_quantity?.message ||\n // \"order validation error\"\n // );\n } else {\n const data = orderCreator.create(values as OrderEntity, {\n symbol: symbolInfo[symbol](),\n maxQty,\n markPrice: markPrice,\n });\n\n // console.log(\"------------------\", values, data);\n\n return doCreateOrder(\n omit([\"order_type_ext\"], {\n // ...values,\n // ...omit([\"order_price\"], values),\n ...data,\n })\n ).then((res) => {\n // resolve(res);\n if (res.success) {\n // TODO: remove when the WS service is fixed\n\n // if (Array.isArray(res.data.rows)) {\n // ee.emit(\"algoOrder:cache\", {\n // ...res.data.rows[0],\n // trigger_price: data.trigger_price,\n // });\n // }\n\n resolve(res.data);\n } else {\n reject(res);\n }\n }, reject);\n }\n });\n });\n };\n\n /**\n * submit form,validate values\n * @param values\n * @returns\n */\n const onSubmit = (values: OrderEntity) => {\n if (typeof reduceOnly === \"boolean\" && reduceOnly && !values.reduce_only) {\n return Promise.reject(\n new SDKError(\n \"The reduceOny parameter of hook does not match your order data\"\n )\n );\n }\n return createOrder({\n ...values,\n symbol,\n });\n };\n\n const submit = useCallback(() => {\n if (!parsedData) {\n throw new SDKError(\"Function is not supported, please use onSubmit()\");\n }\n return createOrder(parsedData);\n }, [parsedData]);\n\n const calculate = useCallback(\n (\n values: Partial<OrderEntity>,\n field: keyof OrderEntity,\n value: any\n ): Partial<OrderEntity> => {\n const fieldHandler = getCalculateHandler(field);\n const newValues = compose(\n head,\n orderEntityFormatHandle(baseDP, quoteDP),\n fieldHandler,\n baseInputHandle\n )([values, field, value, markPrice, { baseDP, quoteDP }]);\n\n return newValues as Partial<OrderEntity>;\n },\n [markPrice]\n );\n\n // const estLiqPrice = useMemo(() => {}, []);\n\n const validator = (values: any) => {\n // @ts-ignore\n const creator = OrderFactory.create(values.order_type);\n\n return creator?.validate(values, {\n symbol: symbolInfo[symbol](),\n // token: tokenInfo[symbol](),\n maxQty,\n markPrice: markPrice,\n });\n };\n\n const formattedOrder = useMemo<Partial<OrderEntity>>(() => {\n if (!parsedData) {\n return notSupportData.current;\n }\n // prevOrderData.current = symbolOrOrder;\n\n if (!prevOrderData.current) {\n // prevOrderData.current = {\n // ...symbolOrOrder,\n // total: \"\",\n // };\n\n prevOrderData.current = parsedData;\n orderDataCache.current = {\n ...parsedData,\n total: \"\",\n };\n\n return orderDataCache.current as Partial<OrderEntity>;\n }\n\n // diff order entry\n const item = diffOrderEntry(prevOrderData.current, parsedData);\n\n // console.log(prevOrderData.current, symbolOrOrder, item);\n // console.log(item);\n\n if (!item) {\n return orderDataCache.current as Partial<OrderEntity>;\n }\n\n // set field dirty\n if (typeof parsedData.order_price !== \"undefined\") {\n fieldDirty.current.order_price = true;\n }\n if (typeof parsedData.order_quantity !== \"undefined\") {\n fieldDirty.current.order_quantity = true;\n }\n\n const values = calculate(parsedData, item.key, item.value);\n\n values.isStopOrder = values.order_type?.startsWith(\"STOP\") || false;\n\n values.total = values.total || \"\";\n\n prevOrderData.current = parsedData;\n orderDataCache.current = values;\n\n return values;\n }, [parsedData, markPrice]);\n\n /// validator order info\n useEffect(() => {\n if (!markPrice || symbolInfo.isNil) return;\n // validate order data;\n validator(formattedOrder)\n ?.then((err) => {\n setErrors(err);\n })\n .catch((err) => {});\n }, [\n formattedOrder.broker_id,\n formattedOrder.order_quantity,\n formattedOrder.total,\n formattedOrder.trigger_price,\n formattedOrder.order_type,\n markPrice,\n ]);\n\n //====== update orderbook ask0/bid0 ======\n useEffect(() => {\n if (isNewVersion) {\n if (!optionsValue?.watchOrderbook) {\n throw new SDKError(\n \"In order to calculate the estimated liquidation price, the `options.watchOrderbook` parameter must be set to true.\"\n );\n }\n } else {\n if (!optionsValue?.watchOrderbook) {\n return;\n }\n }\n\n ee.on(\"orderbook:update\", onOrderbookUpdate);\n\n return () => {\n ee.off(\"orderbook:update\", onOrderbookUpdate);\n };\n }, [optionsValue?.watchOrderbook]);\n\n useEffect(() => {\n askAndBid.current = [];\n }, [parsedData?.symbol]);\n\n //====== end ======\n\n const getPriceAndQty = (\n symbolOrOrder: OrderEntity\n ): { quantity: number; price: number } | null => {\n let quantity = Number(symbolOrOrder.order_quantity);\n const orderPrice = Number(symbolOrOrder.order_price);\n\n if (isNaN(quantity) || quantity <= 0) {\n return null;\n }\n\n if (!!options?.watchOrderbook && askAndBid.current.length === 0) {\n throw new SDKError(\n \"Please check if you are using the `useOrderbookStream` hook or if the orderBook has data.\"\n );\n }\n\n if (\n (symbolOrOrder.order_type === OrderType.LIMIT ||\n symbolOrOrder.order_type === OrderType.STOP_LIMIT) &&\n isNaN(orderPrice)\n )\n return null;\n\n /**\n * price\n * if order_type = market order,\n order side = long, then order_price_i = ask0\n order side = short, then order_price_i = bid0\n if order_type = limit order\n order side = long\n limit_price >= ask0, then order_price_i = ask0\n limit_price < ask0, then order_price_i = limit_price\n order side = short\n limit_price <= bid0, then order_price_i = bid0\n limit_price > ask0, then order_price_i = ask0\n */\n let price: number | undefined;\n\n if (\n symbolOrOrder.order_type === OrderType.MARKET ||\n symbolOrOrder.order_type === OrderType.STOP_MARKET\n ) {\n if (symbolOrOrder.side === OrderSide.BUY) {\n price = askAndBid.current[0];\n } else {\n price = askAndBid.current[1];\n }\n } else {\n // LIMIT order\n if (symbolOrOrder.side === OrderSide.BUY) {\n if (orderPrice >= askAndBid.current[0]) {\n price = askAndBid.current[0];\n } else {\n price = orderPrice;\n }\n } else {\n if (orderPrice <= askAndBid.current[1]) {\n price = askAndBid.current[1];\n } else {\n price = orderPrice;\n }\n }\n }\n\n if (symbolOrOrder.side === OrderSide.SELL) {\n quantity = -quantity;\n }\n\n return { price, quantity };\n };\n\n const estLiqPrice = useMemo(() => {\n if (!accountInfo || !parsedData || !markPrice) return null;\n\n const result = getPriceAndQty(formattedOrder as OrderEntity);\n if (result === null) return null;\n const { price, quantity } = result;\n if (!price || !quantity) return null;\n\n const orderFee = orderUtils.orderFee({\n qty: quantity,\n price,\n futuresTakeFeeRate: Number(accountInfo[\"futures_taker_fee_rate\"]) / 10000,\n });\n\n const liqPrice = orderUtils.estLiqPrice({\n markPrice,\n baseIMR,\n baseMMR,\n totalCollateral,\n positions,\n IMR_Factor: accountInfo[\"imr_factor\"][symbol],\n orderFee,\n newOrder: {\n qty: quantity,\n price,\n symbol: parsedData.symbol!,\n },\n });\n\n // console.log(\"********\", liqPrice, markPrice, totalCollateral, result);\n\n if (liqPrice <= 0) return null;\n\n return liqPrice;\n }, [\n markPrice,\n baseIMR,\n baseMMR,\n totalCollateral,\n formattedOrder?.order_price,\n formattedOrder?.order_quantity,\n formattedOrder?.total,\n formattedOrder?.trigger_price,\n accountInfo,\n ]);\n\n const estLeverage = useMemo(() => {\n if (!accountInfo || !parsedData) return null;\n const result = getPriceAndQty(formattedOrder as OrderEntity);\n if (result === null || !result.price || !result.quantity) return null;\n\n const leverage = orderUtils.estLeverage({\n totalCollateral,\n positions,\n newOrder: {\n symbol: parsedData.symbol,\n qty: result.quantity,\n price: result.price,\n },\n });\n\n return leverage;\n }, [\n baseIMR,\n baseMMR,\n totalCollateral,\n positions,\n formattedOrder?.order_price,\n formattedOrder?.order_quantity,\n formattedOrder?.total,\n formattedOrder?.trigger_price,\n ]);\n\n return {\n maxQty,\n freeCollateral,\n markPrice,\n onSubmit,\n submit,\n submitting: isMutating,\n formattedOrder,\n // errors,\n estLiqPrice,\n estLeverage,\n helper: {\n calculate,\n validator,\n // clearErrors,\n },\n metaState: {\n dirty: fieldDirty.current,\n submitted: submitted.current,\n errors,\n },\n symbolConfig: symbolInfo[symbol](),\n };\n}\n","import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type OrderEntityKey = keyof OrderEntity & string;\n\n// index 3: markPrice\ntype orderEntryInputs = [\n Partial<OrderEntity>,\n // to update field\n keyof OrderEntity,\n any,\n number,\n {\n baseDP: number;\n quoteDP: number;\n }\n];\n\ntype orderEntryInputHandle = (inputs: orderEntryInputs) => orderEntryInputs;\n\nconst needNumberOnlyFields: (keyof OrderEntity)[] = [\n \"order_quantity\",\n \"order_price\",\n \"trigger_price\",\n \"total\",\n];\n\n/// only save number\nexport const cleanStringStyle = (str: string | number): string => {\n if (typeof str !== \"string\") {\n str = `${str}`;\n }\n str = str.replace(/,/g, \"\");\n // clear extra character expect number and .\n str = str\n .replace(/[^\\d.]/g, \"\")\n .replace(\".\", \"$#$\")\n .replace(/\\./g, \"\")\n .replace(\"$#$\", \".\");\n\n return str;\n};\n\nexport function baseInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n let [values, input, value, markPrice, config] = inputs;\n\n needNumberOnlyFields.forEach((field) => {\n if (typeof values[field] !== \"undefined\") {\n // @ts-ignore\n values[field] = cleanStringStyle(values[field] as string);\n }\n });\n\n if (needNumberOnlyFields.includes(input)) {\n value = cleanStringStyle(value);\n }\n\n return [\n {\n ...values,\n [input]: value,\n },\n input,\n value,\n markPrice,\n config,\n ];\n\n // return [values, input, value, markPrice];\n}\n\nexport function orderTypeHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === OrderType.LIMIT || value === OrderType.STOP_LIMIT) {\n if (values.order_price === \"\") {\n values.total = \"\";\n }\n }\n\n return [values, input, value, markPrice, config];\n}\n\n/**\n * digital precision processing\n * @param inputs\n * @returns\n */\nexport function orderEntityFormatHandle(baseTick: number, quoteTick: number) {\n return function (inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n // TODO: formatting only deals with the thousandths and so on\n // if (!!values.order_quantity) {\n //\n // const d = new Decimal(values.order_quantity);\n // const dp = d.dp();\n // if (dp > quoteTick) {\n // values.order_quantity = d.toDecimalPlaces(baseTick).toNumber();\n // }\n // }\n\n // if (!!values.order_price && values.order_type === OrderType.LIMIT) {\n // const sd = new Decimal(values.order_price).sd(false);\n // if (sd > quoteTick) {\n // values.order_price = new Decimal(values.order_price).toFixed(quoteTick);\n // }\n // }\n\n // if (!!values.total) {\n // const sd = new Decimal(values.total).sd(false);\n // if (sd > quoteTick) {\n // values.total = new Decimal(values.total).toFixed(quoteTick);\n // }\n // }\n\n return [values, input, value, markPrice, config];\n };\n}\n\n/**\n * price input handle\n * @param inputs\n * @returns\n */\nfunction priceInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n // when entering the price, total also needs to be linked\n const price = new Decimal(value);\n const priceDP = price.dp();\n\n if (priceDP > config.quoteDP) {\n values.order_price = price.toDecimalPlaces(config.quoteDP).toString();\n }\n\n price.toDecimalPlaces(Math.min(priceDP, config.quoteDP));\n\n if (!values.order_quantity && !values.total) {\n return [values, input, value, markPrice, config];\n }\n\n const newValue = {\n ...values,\n };\n\n if (values.order_quantity) {\n // total = price.mul(values.order_quantity);\n newValue.total = price.mul(values.order_quantity).todp(2).toString();\n } else if (values.total) {\n // total = new Decimal(values.total);\n newValue.order_quantity = new Decimal(values.total)\n .div(price)\n .todp(config.baseDP)\n .toString();\n }\n\n // const quantityDP = total.dp();\n return [\n // {\n // ...values,\n // total: total.todp(2).toString(),\n // },\n newValue,\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * quantity input handle\n * @param inputs\n * @returns\n */\nfunction quantityInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n let quantity = new Decimal(value);\n const quantityDP = quantity.dp();\n\n // check the length for precision and recalculate\n if (quantityDP > config.baseDP) {\n quantity = quantity.toDecimalPlaces(config.baseDP);\n values.order_quantity = quantity.toNumber();\n }\n\n // if(values.order_type === OrderType.MARKET) {\n\n // }\n\n if (\n values.order_type === OrderType.MARKET ||\n values.order_type === OrderType.STOP_MARKET\n ) {\n const price = markPrice;\n values.total = quantity.mul(price).todp(2).toString();\n }\n\n if (\n values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT\n ) {\n if (values.order_price) {\n const price = Number(values.order_price);\n const total = quantity.mul(price);\n values.total = total.todp(config.quoteDP).toString();\n } else {\n values.total = \"\";\n }\n }\n\n // const totalDP = total.dp();\n // total.todp(Math.min(config.quoteDP, totalDP));\n\n return [\n {\n ...values,\n // total: total.todp(2).toNumber(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * total input handle\n * @param inputs\n * @returns\n */\nfunction totalInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n if (value === \"\") {\n return [{ ...values, order_quantity: \"\" }, input, value, markPrice, config];\n }\n\n let price = markPrice;\n\n if (\n (values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT) &&\n !!values.order_price\n ) {\n price = Number(values.order_price);\n }\n let total = new Decimal(value);\n const totalDP = total.dp();\n\n if (totalDP > config.quoteDP) {\n total = total.toDecimalPlaces(config.quoteDP);\n values.total = total.toString();\n }\n\n const quantity = total.div(price);\n\n return [\n {\n ...values,\n order_quantity: quantity\n .toDecimalPlaces(Math.min(config.baseDP, quantity.dp()))\n .toString(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * other input handle\n * @param inputs\n * @returns\n */\nfunction otherInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n return inputs;\n}\n\nexport const getCalculateHandler = (\n fieldName: string\n): orderEntryInputHandle => {\n switch (fieldName) {\n case \"order_type\":\n return orderTypeHandle;\n case \"order_quantity\": {\n return quantityInputHandle;\n }\n case \"order_price\": {\n return priceInputHandle;\n }\n case \"total\": {\n return totalInputHandle;\n }\n default:\n return otherInputHandle;\n }\n};\n\n//** format number */\nexport function formatNumber(\n qty?: string | number,\n dp?: number | string\n): string | undefined {\n if (typeof qty === \"undefined\") return qty;\n if (typeof dp === \"undefined\") return `${qty}`;\n\n // console.log(\"qty\", qty, \"dp\", dp);\n \n const _qty = `${qty}`.replace(/,/g, \"\");\n \n \n try {\n const _dp = new Decimal(dp);\n const _qtyDecimal = new Decimal(_qty);\n \n if (_dp.lessThan(1)) {\n if (`${_qty}`.endsWith(\".\")) return `${_qty}`;\n \n const numStr = dp.toString();\n const decimalIndex = numStr.indexOf(\".\");\n const digitsAfterDecimal =\n decimalIndex === -1 ? 0 : numStr.length - decimalIndex - 1;\n\n const result = _qtyDecimal\n .toDecimalPlaces(digitsAfterDecimal, Decimal.ROUND_DOWN)\n .toString();\n\n return result;\n }\n\n if (_qtyDecimal.lessThan(_dp)) {\n return _qty;\n }\n\n return _qtyDecimal\n .dividedBy(_dp)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .mul(dp)\n .toString();\n } catch (e) { \n return undefined;\n }\n}\n","import { useMemo } from \"react\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport {\n pathOr_unsettledPnLPathOr,\n usePositionStream,\n} from \"./usePositionStream/usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { account } from \"@orderly.network/perp\";\nimport { type API } from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { zero } from \"@orderly.network/utils\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useHoldingStream } from \"./useHoldingStream\";\n\nexport type CollateralOutputs = {\n totalCollateral: number;\n freeCollateral: number;\n totalValue: number;\n availableBalance: number;\n unsettledPnL: number;\n\n positions: API.Position[];\n accountInfo?: API.AccountInfo;\n};\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\nconst totalCollateralPath = pathOr(0, [0, \"totalCollateral\"]);\n\nexport const useCollateral = (\n options: {\n /** decimal precision */\n dp: number;\n } = { dp: 6 }\n): CollateralOutputs => {\n const { dp } = options;\n const positions = usePositionStream(undefined, {\n includedPendingOrder: true,\n });\n\n // console.log(\"positions\", positions);\n\n // const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const { usdc } = useHoldingStream();\n\n // const filterAlgoOrders =\n // orders?.filter((item) => item.algo_order_id === undefined) ?? [];\n\n // const { data: holding } = usePrivateQuery<API.Holding[]>(\n // \"/v1/client/holding\",\n // {\n // formatter: (data) => {\n // return data.holding;\n // },\n // }\n // );\n\n const [totalCollateral, totalValue] = useMemo(() => {\n return [\n pathOr(zero, [0, \"totalCollateral\"], positions),\n pathOr(zero, [0, \"totalValue\"], positions),\n ];\n }, [positions, markPrices]);\n\n const totalInitialMarginWithOrders = useMemo(() => {\n if (!accountInfo || !symbolInfo || !markPrices) {\n return 0;\n }\n\n return account.totalInitialMarginWithQty({\n positions: positionsPath(positions),\n markPrices,\n IMR_Factors: accountInfo.imr_factor,\n maxLeverage: accountInfo.max_leverage,\n symbolInfo,\n });\n }, [\n positions,\n // filterAlgoOrders,\n markPrices,\n accountInfo,\n symbolInfo,\n ]);\n\n const freeCollateral = useMemo(() => {\n return account.freeCollateral({\n totalCollateral,\n totalInitialMarginWithOrders,\n });\n }, [totalCollateral, totalInitialMarginWithOrders]);\n\n const availableBalance = useMemo(() => {\n return account.availableBalance({\n USDCHolding: usdc?.holding ?? 0,\n unsettlementPnL: pathOr_unsettledPnLPathOr(positions),\n });\n }, [usdc?.holding, pathOr_unsettledPnLPathOr(positions)]);\n\n return {\n totalCollateral: totalCollateral.toDecimalPlaces(dp).toNumber(),\n freeCollateral: freeCollateral.toDecimalPlaces(dp).toNumber(),\n totalValue: totalValue.toDecimalPlaces(dp).toNumber(),\n availableBalance,\n unsettledPnL: pathOr_unsettledPnLPathOr(positions),\n\n accountInfo,\n\n // @hidden\n positions: positionsPath(positions),\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { type SWRConfiguration } from \"swr\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport {\n type API,\n OrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { pathOr, propOr } from \"ramda\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport {\n findPositionTPSLFromOrders,\n findTPSLFromOrder,\n findTPSLFromOrders,\n} from \"./utils\";\n\ntype PriceMode = \"markPrice\" | \"lastPrice\";\n\nexport interface PositionReturn {\n data: any[];\n loading: boolean;\n close: (\n order: Pick<OrderEntity, \"order_type\" | \"order_price\" | \"side\">\n ) => void;\n}\n\nexport const usePositionStream = (\n /**\n * If symbol is passed, only the position of that symbol will be returned.\n */\n symbol?: string,\n options?: SWRConfiguration & {\n calcMode?: PriceMode;\n /**\n * If true, the pending order will be included in the result.\n */\n includedPendingOrder?: boolean;\n }\n) => {\n const symbolInfo = useSymbolsInfo();\n\n const { includedPendingOrder = false } = options || {};\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const { data: holding } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const fundingRates = useFundingRates();\n\n const {\n data,\n error,\n isLoading,\n isValidating,\n mutate: refreshPositions,\n } = usePrivateQuery<API.PositionInfo>(`/v1/positions`, {\n // revalidateOnFocus: false,\n // revalidateOnReconnect: false,\n // dedupingInterval: 200,\n // keepPreviousData: false,\n // revalidateIfStale: true,\n ...options,\n\n formatter: (data) => data,\n onError: (err) => {},\n });\n\n const { data: markPrices } = useMarkPricesStream();\n\n // get TP/SL orders;\n\n const [tpslOrders] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n // console.log(\"---------------\");\n\n const [priceMode, setPriceMode] = useState(options?.calcMode || \"markPrice\");\n\n useEffect(() => {\n if (options?.calcMode && priceMode !== options?.calcMode) {\n setPriceMode(options?.calcMode);\n }\n }, [options?.calcMode]);\n\n const { data: tickers } = useMarketsStream();\n\n const tickerPrices = useMemo(() => {\n const data: Record<string, number> = Object.create(null);\n tickers?.forEach((item) => {\n // @ts-ignore\n data[item.symbol] = item[\"24h_close\"];\n });\n return data;\n }, [tickers]);\n\n const formatedPositions = useMemo<[API.PositionExt[], any] | null>(() => {\n if (!data?.rows || symbolInfo.isNil || !accountInfo) return null;\n\n const filteredData =\n typeof symbol === \"undefined\" || symbol === \"\"\n ? data.rows\n : data.rows.filter((item) => {\n return item.symbol === symbol;\n });\n\n let unrealPnL_total = zero,\n notional_total = zero,\n unsettlementPnL_total = zero;\n\n const formatted = filteredData.map((item: API.Position) => {\n // const price = (markPrices as any)[item.symbol] ?? item.mark_price;\n const unRealizedPrice = propOr(\n item.mark_price,\n item.symbol,\n priceMode === \"markPrice\" ? markPrices : tickerPrices\n ) as unknown as number;\n\n const price = propOr(\n item.mark_price,\n item.symbol,\n markPrices\n ) as unknown as number;\n\n const info = symbolInfo[item.symbol];\n //\n\n const notional = positions.notional(item.position_qty, price);\n\n const unrealPnl = positions.unrealizedPnL({\n qty: item.position_qty,\n openPrice: item?.average_open_price,\n markPrice: unRealizedPrice,\n });\n\n const imr = account.IMR({\n maxLeverage: accountInfo.max_leverage,\n baseIMR: info(\"base_imr\"),\n IMR_Factor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: notional,\n ordersNotional: 0,\n IMR_factor_power: 4 / 5,\n });\n\n const unrealPnlROI = positions.unrealizedPnLROI({\n positionQty: item.position_qty,\n openPrice: item.average_open_price,\n IMR: imr,\n unrealizedPnL: unrealPnl,\n });\n\n const unsettlementPnL = positions.unsettlementPnL({\n positionQty: item.position_qty,\n markPrice: price,\n costPosition: item.cost_position,\n sumUnitaryFunding: fundingRates[item.symbol]?.(\n \"sum_unitary_funding\",\n 0\n ),\n lastSumUnitaryFunding: item.last_sum_unitary_funding,\n });\n\n unrealPnL_total = unrealPnL_total.add(unrealPnl);\n notional_total = notional_total.add(notional);\n unsettlementPnL_total = unsettlementPnL_total.add(unsettlementPnL);\n\n return {\n ...item,\n mark_price: price,\n mm: 0,\n notional,\n unsettlement_pnl: unsettlementPnL,\n unrealized_pnl: unrealPnl,\n unrealized_pnl_ROI: unrealPnlROI,\n symbolInfo: info\n };\n });\n\n return [\n formatted,\n {\n unrealPnL: unrealPnL_total.toNumber(),\n notional: notional_total.toNumber(),\n unsettledPnL: unsettlementPnL_total.toNumber(),\n },\n ];\n }, [\n data?.rows,\n symbolInfo,\n accountInfo,\n markPrices,\n priceMode,\n tickerPrices,\n symbol,\n holding,\n ]);\n\n // const showSymbol = useCallback((symbol: string) => {\n // setVisibleSymbol(symbol);\n // }, []);\n\n const [totalCollateral, totalValue, totalUnrealizedROI] = useMemo<\n [Decimal, Decimal, number]\n >(() => {\n if (!holding || !markPrices) {\n return [zero, zero, 0];\n }\n const unsettlemnedPnL = pathOr(0, [1, \"unsettledPnL\"])(formatedPositions);\n const unrealizedPnL = pathOr(0, [1, \"unrealPnL\"])(formatedPositions);\n\n const [USDC_holding, nonUSDC] = parseHolding(holding, markPrices);\n\n const totalCollateral = account.totalCollateral({\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n unsettlementPnL: unsettlemnedPnL,\n });\n\n const totalValue = account.totalValue({\n totalUnsettlementPnL: unsettlemnedPnL,\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n });\n\n const totalUnrealizedROI = account.totalUnrealizedROI({\n totalUnrealizedPnL: unrealizedPnL,\n totalValue: totalValue.toNumber(),\n });\n\n return [totalCollateral, totalValue, totalUnrealizedROI];\n }, [holding, formatedPositions, markPrices]);\n\n const positionsRows = useMemo<API.PositionTPSLExt[] | null>(() => {\n if (!formatedPositions) return null;\n\n if (!symbolInfo || !accountInfo) return formatedPositions[0];\n\n const total = totalCollateral.toNumber();\n\n let rows = formatedPositions[0];\n\n if (!includedPendingOrder) {\n rows = rows.filter((item) => item.position_qty !== 0);\n } else {\n rows = rows.filter(\n (item) =>\n item.position_qty !== 0 ||\n item.pending_long_qty !== 0 ||\n item.pending_short_qty !== 0\n );\n }\n // .filter((item) => item.position_qty !== 0)\n rows = rows.map((item) => {\n const info = symbolInfo?.[item.symbol];\n\n const related_order = Array.isArray(tpslOrders)\n ? findPositionTPSLFromOrders(tpslOrders, item.symbol)\n : undefined;\n\n const tp_sl_pricer = !!related_order\n ? findTPSLFromOrder(related_order)\n : undefined;\n\n const MMR = positions.MMR({\n baseMMR: info(\"base_mmr\"),\n baseIMR: info(\"base_imr\"),\n IMRFactor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: item.notional,\n IMR_factor_power: 4 / 5,\n });\n\n return {\n ...item,\n mm: positions.maintenanceMargin({\n positionQty: item.position_qty,\n markPrice: item.mark_price,\n MMR,\n }),\n tp_trigger_price: tp_sl_pricer?.tp_trigger_price,\n sl_trigger_price: tp_sl_pricer?.sl_trigger_price,\n\n mmr: MMR,\n\n // has_position_tp_sl:\n // !tp_sl_pricer?.sl_trigger_price && !tp_sl_pricer?.tp_trigger_price,\n algo_order: related_order,\n };\n });\n\n // calculate est_liq_price\n rows = rows.map((item) => {\n const est_liq_price = positions.liqPrice({\n markPrice: item.mark_price,\n totalCollateral: total,\n positionQty: item.position_qty,\n positions: rows,\n MMR: item.mmr,\n });\n return {\n ...item,\n est_liq_price,\n };\n });\n\n return rows;\n }, [formatedPositions, symbolInfo, accountInfo, totalCollateral, tpslOrders]);\n\n const positionInfoGetter = createGetter<\n Omit<API.PositionInfo, \"rows\">,\n keyof Omit<API.PositionInfo, \"rows\">\n >(data as any, 1);\n\n return [\n {\n rows: positionsRows,\n aggregated: {\n ...(formatedPositions?.[1] ?? {}),\n unrealPnlROI: totalUnrealizedROI,\n },\n totalCollateral,\n totalValue,\n totalUnrealizedROI,\n },\n positionInfoGetter,\n {\n /**\n * @deprecated use `isLoading` instead\n */\n loading: isLoading,\n isLoading,\n isValidating,\n // showSymbol,\n error,\n // loadMore: () => {},\n refresh: refreshPositions,\n },\n ] as const;\n};\n\nexport const pathOr_unsettledPnLPathOr = pathOr(0, [\n 0,\n \"aggregated\",\n \"unsettledPnL\",\n]);\n","import { useQuery } from \"../useQuery\";\nimport { type API } from \"@orderly.network/types\";\nimport { createGetter } from \"../utils/createGetter\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useFundingRates = () => {\n const { data } = useQuery<{ [key: string]: API.FundingRate }>(\n `/v1/public/funding_rates`,\n {\n focusThrottleInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n formatter(data: { rows: API.FundingRate[] }) {\n if (!data?.rows || !data?.rows?.length) {\n return {};\n }\n const obj = Object.create(null);\n\n for (let index = 0; index < data.rows.length; index++) {\n const item = data.rows[index];\n obj[item.symbol] = {\n ...item,\n est_funding_rate: getEstFundingRate(item),\n };\n }\n\n return obj;\n },\n }\n );\n\n return createGetter<API.FundingRate>(data);\n};\n\nfunction getEstFundingRate(data: API.FundingRate) {\n if (!data) return;\n\n const { next_funding_time, est_funding_rate } = data;\n\n if (getTimestamp() > next_funding_time) {\n return null;\n }\n\n return est_funding_rate;\n}\n","import useSWRSubscription, { SWRSubscriptionOptions } from \"swr/subscription\";\nimport { useWS } from \"../useWS\";\n\nexport const useMarkPricesStream = () => {\n const ws = useWS();\n return useSWRSubscription<Record<string, number>>(\n \"markPrices\",\n (\n key: string,\n { next }: SWRSubscriptionOptions<Record<string, number>, any>\n ) => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n \"markprices\",\n {\n onMessage: (message: any) => {\n const data: Record<string, number> = Object.create(null);\n\n for (let index = 0; index < message.length; index++) {\n const element = message[index];\n data[element.symbol] = element.price;\n }\n\n next(null, data);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n onError: (error: any) => {},\n }\n );\n\n return () => {\n unsubscribe?.();\n };\n }\n );\n};\n","import { API } from \"@orderly.network/types\";\n\ntype NonUSDCHolding = {\n holding: number;\n markPrice: number;\n // margin replacement rate, default 0\n discount: number;\n};\n\nexport const parseHolding = (\n holding: API.Holding[],\n markPrices: Record<string, number>\n): [number, NonUSDCHolding[]] => {\n // if (!holding || !markPrices) {\n // return [zero, zero];\n // }\n const nonUSDC: NonUSDCHolding[] = [];\n\n let USDC_holding = 0;\n\n holding.forEach((item) => {\n if (item.token === \"USDC\") {\n USDC_holding = item.holding;\n } else {\n nonUSDC.push({\n holding: item.holding,\n markPrice: markPrices[item.token] ?? 0,\n // markPrice: 0,\n discount: 0,\n });\n }\n });\n\n return [USDC_holding, nonUSDC];\n};\n","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useConfig } from \"../useConfig\";\n\nexport const useMarketsStream = () => {\n // get listing of all markets from /public/info\n const ws = useWS();\n // const brokerId = useConfig(\"brokerId\");\n const { data: futures } = useQuery<WSMessage.Ticker[]>(`/v1/public/futures`, {\n revalidateOnFocus: false,\n });\n\n // const topic = brokerId ? `${brokerId}$tickers` : \"tickers\";\n const topic = \"tickers\";\n\n const { data: tickers } = useSWRSubscription(\"tickers\", (_, { next }) => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n topic,\n {\n onMessage: (message: any) => {\n // window.debugPrint(message);\n next(null, message);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n // onError: (error: any) => {\n //\n // },\n }\n );\n\n return () => {\n unsubscribe?.();\n };\n });\n\n const value = useMemo(() => {\n if (!futures) return null;\n if (!tickers) return futures;\n\n return futures.map((item) => {\n const ticker = tickers.find(\n (t: WSMessage.Ticker) => t.symbol === item.symbol\n );\n if (ticker) {\n const data = {\n ...item,\n [\"24h_close\"]: ticker.close,\n [\"24h_open\"]: ticker.open,\n /**\n * @deprecated\n * spelling mistake, use 24h_volume to instead, will be remove next version\n */\n [\"24h_volumn\"]: ticker.volume,\n [\"24h_volume\"]: ticker.volume,\n [\"24h_amount\"]: ticker.amount,\n change: 0,\n };\n\n if (ticker.close !== undefined && ticker.open !== undefined) {\n data[\"change\"] = new Decimal(ticker.close)\n .minus(ticker.open)\n .div(ticker.open)\n .toNumber();\n }\n\n return data;\n }\n return item;\n });\n }, [futures, tickers]);\n\n return { data: value };\n};\n","import {\n API,\n AlgoOrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\n\nexport const findTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): Partial<AlgoOrderEntity> | undefined => {\n const order = findPositionTPSLFromOrders(orders, symbol);\n\n // console.log(\"!!!!!\", order);\n\n if (!order) return;\n return findTPSLFromOrder(order);\n};\n\nexport const findTPSLFromOrder = (\n order: API.AlgoOrder\n): {\n tp_trigger_price?: number;\n sl_trigger_price?: number;\n} => {\n let tp_trigger_price;\n\n let sl_trigger_price;\n\n const tpOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.TAKE_PROFIT\n );\n const slOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.STOP_LOSS\n );\n\n if (tpOrder) {\n tp_trigger_price = tpOrder.trigger_price;\n // take_profit_qty = tpOrder.quantity ;\n }\n if (slOrder) {\n sl_trigger_price = slOrder.trigger_price;\n // stop_loss_qty = slOrder.quantity;\n }\n\n return {\n tp_trigger_price,\n sl_trigger_price,\n };\n};\n\nexport const findPositionTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): API.AlgoOrder | undefined => {\n return orders?.find((order) => {\n // console.log(order.symbol, symbol, order.algo_type);\n return (\n order.symbol === symbol &&\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL &&\n (order.root_algo_status === OrderStatus.NEW ||\n order.root_algo_status === OrderStatus.REPLACED ||\n order.root_algo_status === OrderStatus.PARTIAL_FILLED)\n );\n });\n\n // return order;\n};\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { useMemo } from \"react\";\nimport { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useHoldingStream = () => {\n const ws = useWS();\n\n const { data, isLoading, mutate } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const usdc = useMemo(() => {\n const usdc = data?.find((item) => item.token === \"USDC\");\n return usdc;\n }, [data]);\n\n useSWRSubscription(\"holding\", (_, { next }) => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"balance\",\n event: \"subscribe\",\n topic: \"balance\",\n ts: getTimestamp(),\n },\n {\n onMessage: (data: any) => {\n const holding = data?.balances ?? ({} as Record<string, any>);\n\n if (holding) {\n mutate((prevData) => {\n return prevData?.map((item) => {\n const token = holding[item.token];\n return {\n ...item,\n frozen: token.frozen,\n holding: token.holding,\n };\n });\n });\n\n next(holding);\n }\n },\n }\n );\n\n return () => unsubscribe();\n });\n\n return {\n data,\n usdc,\n isLoading,\n };\n};\n","import { useEffect, useMemo } from \"react\";\nimport { type API, OrderSide, OrderStatus } from \"@orderly.network/types\";\n\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\n\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { account } from \"@orderly.network/perp\";\nimport { useCollateral } from \"./useCollateral\";\n\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { useOrderStream } from \"./useOrderStream/useOrderStream\";\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\n\n/**\n * @param symbol\n * @param side\n * @param reduceOnly\n * @returns the maximum quantity available for trading in USD\n */\nexport const useMaxQty = (\n symbol: string,\n side: OrderSide,\n reduceOnly: boolean = false\n) => {\n const positionsData = usePositionStream();\n\n // const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { totalCollateral } = useCollateral();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const maxQty = useMemo(() => {\n if (!symbol) return 0;\n\n const positions = positionsPath(positionsData);\n\n const positionQty = account.getQtyFromPositions(positions, symbol);\n\n if (reduceOnly) {\n if (positionQty > 0) {\n if (side === OrderSide.BUY) {\n return 0;\n } else {\n return Math.abs(positionQty);\n }\n }\n\n if (positionQty < 0) {\n if (side === OrderSide.BUY) {\n return Math.abs(positionQty);\n } else {\n return 0;\n }\n }\n\n return 0;\n }\n\n if (!markPrices || !markPrices[symbol] || !orders || !accountInfo) return 0;\n\n const getSymbolInfo = symbolInfo[symbol];\n\n const filterAlgoOrders = orders.filter(\n (item) => item.algo_order_id === undefined\n );\n\n // current symbol buy order quantity\n const buyOrdersQty = account.getQtyFromOrdersBySide(\n filterAlgoOrders,\n symbol,\n OrderSide.BUY\n );\n // current symbol sell order quantity\n const sellOrdersQty = account.getQtyFromOrdersBySide(\n filterAlgoOrders,\n symbol,\n OrderSide.SELL\n );\n\n const otherPositions = positions.filter(\n (item: API.Position) => item.symbol !== symbol\n );\n\n const otherOrders = filterAlgoOrders.filter(\n (item: API.Order) => item.symbol !== symbol\n );\n\n const otherIMs = account.otherIMs({\n orders: otherOrders,\n positions: otherPositions,\n symbolInfo,\n markPrices,\n IMR_Factors: accountInfo.imr_factor,\n maxLeverage: accountInfo.max_leverage,\n });\n\n return account.maxQty(side, {\n markPrice: markPrices[symbol],\n symbol,\n baseMaxQty: getSymbolInfo(\"base_max\"),\n totalCollateral,\n maxLeverage: accountInfo.max_leverage,\n takerFeeRate: accountInfo.futures_taker_fee_rate,\n baseIMR: getSymbolInfo(\"base_imr\"),\n otherIMs,\n positionQty,\n buyOrdersQty,\n sellOrdersQty,\n IMR_Factor: accountInfo.imr_factor[symbol],\n });\n }, [\n orders,\n positionsData,\n markPrices,\n accountInfo,\n symbolInfo,\n symbol,\n side,\n totalCollateral,\n reduceOnly,\n ]);\n\n // debugPrint({\n // maxQty,\n // totalCollateral,\n // side,\n // // reduceOnly,\n // orders: orders?.map((o) => o.quantity),\n // // positionsData,\n // // markPrices,\n // // accountInfo,\n // // symbolInfo,\n // // symbol,\n // });\n // console.log(\"maxQty\", maxQty);\n\n return Math.max(maxQty, 0) as number;\n};\n","import { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n OrderSide,\n OrderEntity,\n OrderStatus,\n API,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useMutation } from \"../../useMutation\";\nimport version from \"../../version\";\nimport { useDataCenterContext } from \"../../dataProvider\";\nimport { generateKeyFun } from \"../../utils/swr\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\n\ntype CreateOrderType = \"normalOrder\" | \"algoOrder\";\n\ntype CombineOrderType = AlgoOrderRootType | \"ALL\";\n\nexport const useOrderStream = (\n /**\n * Orders query params\n */\n params: {\n symbol?: string;\n status?: OrderStatus;\n page?: number;\n size?: number;\n side?: OrderSide;\n /**\n * Include the order type\n * @default [\"ALL\"]\n */\n includes?: CombineOrderType[];\n /**\n * Exclude the order type\n * @default []\n */\n excludes?: CombineOrderType[];\n dateRange?: {\n from?: Date;\n to?: Date;\n }\n },\n options?: {\n /**\n * Keep the state update alive\n */\n keeplive?: boolean;\n /**\n * Stop the state update when the component unmount\n */\n stopOnUnmount?: boolean;\n }\n) => {\n const {\n status,\n symbol,\n side,\n size = 100,\n page,\n dateRange,\n includes = [\"ALL\"],\n excludes = [],\n } = params;\n\n const { data: markPrices = {} } = useMarkPricesStream();\n\n const { regesterKeyHandler, unregisterKeyHandler } = useDataCenterContext();\n const [\n doCancelOrder,\n { error: cancelOrderError, isMutating: cancelMutating },\n ] = useMutation(\"/v1/order\", \"DELETE\");\n\n const [doCancelAllOrders] = useMutation(\"/v1/orders\", \"DELETE\");\n\n const [\n doUpdateOrder,\n { error: updateOrderError, isMutating: updateMutating },\n ] = useMutation(\"/v1/order\", \"PUT\");\n\n const [\n doCanceAlgolOrder,\n { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [doCancelAllAlgoOrders] = useMutation(\"/v1/algo/orders\", \"DELETE\");\n\n const [\n doUpdateAlgoOrder,\n { error: updateAlgoOrderError, isMutating: updateAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n useEffect(() => {\n const formatKey = (value?: string) => (value ? `:${value}` : \"\");\n const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(\n side\n )}`;\n regesterKeyHandler?.(\n key,\n generateKeyFun({ status, symbol, side, size, page, dateRange })\n );\n\n return () => {\n if (!options?.stopOnUnmount) return;\n\n unregisterKeyHandler(key);\n };\n }, [status, symbol, side, options?.keeplive, page, dateRange]);\n\n const ordersResponse = usePrivateInfiniteQuery(\n generateKeyFun({ status, symbol, side, size, page, dateRange }),\n {\n initialSize: 1,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const flattenOrders = useMemo(() => {\n if (!ordersResponse.data) {\n return null;\n }\n let orders = ordersResponse.data?.map((item: any) => item.rows)?.flat();\n\n // return ordersResponse.data?.map((item) => item.rows)?.flat();\n\n if (includes.includes(\"ALL\") && excludes.length === 0) {\n return orders;\n }\n\n if (includes.includes(\"ALL\") && excludes.length > 0) {\n return orders?.filter((item) => !excludes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length === 0) {\n return orders?.filter((item) => includes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length > 0) {\n return orders?.filter(\n (item) =>\n includes.includes(item.algo_type) &&\n !excludes.includes(item.algo_type)\n );\n }\n\n return orders;\n }, [ordersResponse.data, includes, excludes]);\n\n // console.log(ordersResponse.data);\n\n const orders = useMemo(() => {\n if (!flattenOrders) {\n return null;\n }\n\n if (status !== OrderStatus.NEW && status !== OrderStatus.INCOMPLETE) {\n return flattenOrders;\n }\n return flattenOrders.map((item) => {\n const order = {\n ...item,\n mark_price: (markPrices as any)[item.symbol] ?? 0,\n };\n\n ///TODO: remove this when BE provides the correct data\n // console.log(\"------------->>>>>>>>\", order);\n if (\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL ||\n order.algo_type === AlgoOrderRootType.TP_SL\n ) {\n order.quantity = order.child_orders[0].quantity;\n }\n ///-----------------todo end----------------\n\n return order;\n });\n }, [flattenOrders, markPrices, status]);\n\n const total = useMemo(() => {\n return orders?.length || 0;\n // return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [orders?.length]);\n\n const cancelAlgoOrdersByTypes = (types: AlgoOrderRootType[]) => {\n if (!types) {\n throw new SDKError(\"types is required\");\n }\n\n if (!Array.isArray(types)) {\n throw new SDKError(\"types should be an array\");\n }\n\n // TODO: order type check\n\n return Promise.all(\n types.map((type) => {\n return doCancelAllAlgoOrders(null, { algo_type: type });\n })\n );\n };\n\n /**\n * cancel all orders\n */\n const cancelAllOrders = useCallback(() => {\n return Promise.all([\n doCancelAllOrders(null),\n doCancelAllAlgoOrders(null, { algo_type: \"STOP\" }),\n ]);\n }, [ordersResponse.data]);\n\n const cancelAllTPSLOrders = useCallback(() => {\n return cancelAlgoOrdersByTypes([\n AlgoOrderRootType.POSITIONAL_TP_SL,\n AlgoOrderRootType.TP_SL,\n ]);\n }, [ordersResponse.data]);\n\n const _updateOrder = useCallback(\n (orderId: string, order: OrderEntity, type: CreateOrderType) => {\n switch (type) {\n case \"algoOrder\":\n return doUpdateAlgoOrder({\n order_id: orderId,\n price: order[\"order_price\"],\n quantity: order[\"order_quantity\"],\n trigger_price: order[\"trigger_price\"],\n });\n default:\n return doUpdateOrder({ ...order, order_id: orderId });\n }\n },\n []\n );\n\n /**\n * update order\n */\n const updateOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"normalOrder\");\n }, []);\n\n /**\n * update algo order\n */\n const updateAlgoOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"algoOrder\");\n }, []);\n\n const _cancelOrder = useCallback(\n (orderId: number, type: CreateOrderType, symbol?: string) => {\n switch (type) {\n case \"algoOrder\":\n return doCanceAlgolOrder(null, {\n // @ts-ignore\n order_id: orderId,\n symbol,\n source: `SDK${version}`,\n }).then((res: any) => {\n if (res.success) {\n ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n default:\n return doCancelOrder(null, {\n order_id: orderId,\n symbol,\n source: `SDK_${version}`,\n }).then((res: any) => {\n if (res.success) {\n // return ordersResponse.mutate().then(() => {\n // return res;\n // });\n //Optimistic Updates\n // ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n }\n },\n []\n );\n /**\n * calcel order\n */\n const cancelOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"normalOrder\", symbol);\n }, []);\n\n /**\n * calcel algo order\n */\n const cancelAlgoOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"algoOrder\", symbol);\n }, []);\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n // const cancelTPSLOrder = useCallback((orderId:number, symbol:string)=>{\n // return\n // });\n\n const cancelTPSLChildOrder = useCallback(\n (orderId: number, rootAlgoOrderId: number): Promise<any> => {\n return doUpdateAlgoOrder({\n order_id: rootAlgoOrderId,\n child_orders: [\n {\n order_id: orderId,\n is_activated: false,\n },\n ],\n });\n },\n []\n );\n\n const updateTPSLOrder = useCallback(\n (\n /**\n * the root algo order id\n */\n orderId: number,\n childOrders: API.AlgoOrder[\"child_orders\"]\n ) => {\n if (!Array.isArray(childOrders)) {\n throw new SDKError(\"children orders is required\");\n }\n return doUpdateAlgoOrder({\n order_id: orderId,\n child_orders: childOrders,\n });\n },\n []\n );\n\n const meta = useMemo(() => {\n // @ts-ignore\n return ordersResponse.data?.[0]?.meta;\n }, [ordersResponse.data?.[0]]);\n\n return [\n orders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n cancelAllOrders,\n cancelAllTPSLOrders,\n cancelAlgoOrdersByTypes,\n updateOrder,\n cancelOrder,\n updateAlgoOrder,\n cancelAlgoOrder,\n cancelTPSLChildOrder,\n updateTPSLOrder,\n meta,\n errors: {\n cancelOrder: cancelOrderError,\n updateOrder: updateOrderError,\n cancelAlgoOrder: cancelAlgoOrderError,\n updateAlgoOrder: updateAlgoOrderError,\n },\n submitting: {\n cancelOrder: cancelMutating,\n updateOrder: updateMutating,\n cancelAlgoOrder: cancelAlgoMutating,\n updateAlglOrder: updateAlgoMutating,\n },\n },\n ] as const;\n};\n","import { OrderType } from \"@orderly.network/types\";\nimport { MarketOrderCreator } from \"./marketOrderCreator\";\nimport { LimitOrderCreator } from \"./limitOrderCreator\";\nimport { StopLimitOrderCreator } from \"./stopLimitOrderCreator\";\nimport { OrderCreator } from \"./interface\";\nimport { GeneralOrderCreator } from \"./generalCreator\";\nimport { StopMarketOrderCreator } from \"./stopMarketOrderCreator\";\nimport { PostOnlyOrderCreator } from \"./postOnlyCreator\";\nimport { FOKOrderCreator } from \"./fokCreator\";\nimport { IOCOrderCreator } from \"./iocCreator\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\n\nimport { TPSLOrderCreator } from \"./tpslOrderCreator\";\nimport { TPSLPositionOrderCreator } from \"./tpslPositionOrderCreator\";\n\nexport class OrderFactory {\n static create(type: OrderType | AlgoOrderRootType): OrderCreator<any> {\n switch (type) {\n case OrderType.LIMIT:\n return new LimitOrderCreator();\n case OrderType.MARKET:\n return new MarketOrderCreator();\n // case OrderType.ASK:\n // return new AskOrderCreator();\n // case OrderType.BID:\n // return new BidOrderCreator();\n case OrderType.IOC:\n return new IOCOrderCreator();\n case OrderType.FOK:\n return new FOKOrderCreator();\n case OrderType.POST_ONLY:\n return new PostOnlyOrderCreator();\n\n case OrderType.STOP_LIMIT:\n return new StopLimitOrderCreator();\n case OrderType.STOP_MARKET:\n return new StopMarketOrderCreator();\n\n // algo order\n case AlgoOrderRootType.TP_SL:\n return new TPSLOrderCreator();\n case AlgoOrderRootType.POSITIONAL_TP_SL:\n return new TPSLPositionOrderCreator();\n\n default:\n return new GeneralOrderCreator();\n }\n }\n}\n","import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport {\n OrderCreator,\n OrderFormEntity,\n ValuesDepConfig,\n VerifyResult,\n} from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { checkNotional } from \"../../utils/createOrder\";\n\nexport abstract class BaseOrderCreator<T> implements OrderCreator<T> {\n abstract create(values: T, config?: ValuesDepConfig): T;\n\n abstract validate(values: T, config: ValuesDepConfig): Promise<VerifyResult>;\n\n baseOrder(data: OrderEntity): OrderEntity {\n const order: Pick<\n OrderEntity,\n | \"symbol\"\n | \"order_type\"\n | \"side\"\n | \"reduce_only\"\n | \"order_quantity\"\n | \"total\"\n | \"visible_quantity\"\n > = {\n symbol: data.symbol!,\n order_type:\n data.order_type === OrderType.LIMIT\n ? !!data.order_type_ext\n ? data.order_type_ext\n : data.order_type\n : data.order_type,\n side: data.side,\n reduce_only: data.reduce_only!,\n order_quantity: data.order_quantity!,\n total: data.total,\n };\n\n if (data.visible_quantity === 0) {\n order.visible_quantity = data.visible_quantity;\n }\n\n return order as OrderEntity;\n }\n\n baseValidate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n const errors: {\n [P in keyof OrderEntity]?: { type: string; message: string };\n } = {};\n\n const { maxQty, symbol, markPrice } = configs;\n\n // @ts-ignore\n let { order_quantity, total, order_price, reduce_only, order_type } =\n values;\n\n const { min_notional } = symbol;\n\n if (!order_quantity) {\n // calculate order_quantity from total\n if (total && order_price) {\n const { quote_dp } = configs.symbol;\n const totalNumber = new Decimal(total);\n const qty = totalNumber.dividedBy(order_price).toFixed(quote_dp);\n order_quantity = qty;\n }\n }\n\n if (!order_quantity) {\n errors.order_quantity = {\n type: \"required\",\n message: \"quantity is required\",\n };\n } else {\n // need to use MaxQty+base_max, base_min to compare\n const { base_min, quote_dp, base_dp } = configs.symbol;\n const qty = new Decimal(order_quantity);\n if (qty.lt(base_min)) {\n errors.order_quantity = {\n type: \"min\",\n message: `quantity must be greater than ${new Decimal(base_min).todp(\n base_dp\n )}`,\n };\n // errors.order_quantity = `quantity must be greater than ${base_min}`;\n } else if (qty.gt(maxQty)) {\n errors.order_quantity = {\n type: \"max\",\n message: `quantity must be less than ${new Decimal(maxQty).todp(\n base_dp\n )}`,\n };\n }\n }\n\n // remove total validation\n // if (!!total) {\n // const { quote_max, quote_min, quote_dp } = configs.symbol;\n // const totalNumber = new Decimal(total);\n // if (totalNumber.lt(quote_min)) {\n // errors.total = {\n // type: \"min\",\n // message: `Quantity must be at least ${new Decimal(quote_min).todp(\n // quote_dp\n // )}`,\n // };\n // } else if (totalNumber.gt(quote_max)) {\n // errors.total = {\n // type: \"max\",\n // message: `Quantity should be less or equal than ${new Decimal(\n // quote_max\n // ).todp(quote_dp)}`,\n // };\n // }\n // }\n\n const price = `${order_type}`.includes(\"MARKET\") ? markPrice : order_price;\n const notionalHintStr = checkNotional(price, order_quantity, min_notional);\n\n if (notionalHintStr !== undefined && reduce_only !== true) {\n errors.total = {\n type: \"min\",\n message: notionalHintStr,\n };\n }\n\n return Promise.resolve(errors);\n }\n\n totalToQuantity(\n order: {\n order_quantity?: number | string;\n total?: string | number;\n order_price?: string | number;\n },\n config: ValuesDepConfig\n ): OrderEntity {\n // if order_quantity is not set but total is set, calculate order_quantity from total\n if (!order.order_quantity && order.total && order.order_price) {\n const { base_dp } = config.symbol;\n const totalNumber = new Decimal(order.total);\n const qty = totalNumber.div(order.order_price).toDecimalPlaces(base_dp);\n order.order_quantity = qty.toNumber();\n\n delete order.total;\n }\n\n return order as OrderEntity;\n }\n}\n","import { Decimal } from \"@orderly.network/utils\";\n\nexport function checkNotional(\n price?: string | number,\n qty?: string | number,\n minNotional?: number\n): string | undefined {\n if (price !== undefined && qty !== undefined && minNotional !== undefined) {\n try {\n const calcNotional = new Decimal(price).mul(new Decimal(qty)).toNumber();\n const notional = Number.parseFloat(`${minNotional}`);\n\n const str =\n calcNotional < notional\n ? `The order value should be greater or equal to ${minNotional} USDC`\n : undefined;\n return str;\n } catch (e) {\n return undefined;\n }\n }\n\n return undefined;\n}\n","import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nexport class MarketOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(values: OrderEntity) {\n const data = this.baseOrder(values);\n\n delete data[\"order_price\"];\n delete data[\"total\"];\n delete data[\"trigger_price\"];\n delete data[\"isStopOrder\"];\n\n return {\n ...data,\n };\n }\n validate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, configs);\n }\n}\n","import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { order as orderUntil } from \"@orderly.network/perp\";\nimport { pick } from \"ramda\";\n\nconst { maxPrice, minPrice, scropePrice } = orderUntil;\n\nexport class LimitOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(values: OrderEntity, config?: ValuesDepConfig): OrderEntity {\n const order = {\n ...this.baseOrder(values),\n order_price: values.order_price,\n };\n\n this.totalToQuantity(order, config!);\n\n // console.log(\"create\", order);\n\n return pick(\n [\n \"symbol\",\n \"order_price\",\n \"order_quantity\",\n \"visible_quantity\",\n \"reduce_only\",\n \"side\",\n \"order_type\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, side } = values;\n\n if (!order_price) {\n errors.order_price = {\n type: \"required\",\n message: \"price is required\",\n };\n } else {\n const price = new Decimal(order_price);\n const { symbol } = config;\n const { price_range, price_scope, quote_max, quote_min } = symbol;\n const maxPriceNumber = maxPrice(config.markPrice, price_range);\n const minPriceNumber = minPrice(config.markPrice, price_range);\n const scropePriceNumbere = scropePrice(\n config.markPrice,\n price_scope,\n side\n );\n\n const priceRange =\n side === \"BUY\"\n ? {\n min: scropePriceNumbere,\n max: maxPriceNumber,\n }\n : {\n min: minPriceNumber,\n max: scropePriceNumbere,\n };\n\n /// if side is 'buy', only check max price,\n /// if side is 'sell', only check min price,\n if (price.gt(quote_max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${quote_max}`,\n };\n } else {\n if (price.gt(priceRange?.max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${new Decimal(\n priceRange.max\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n\n if (price.lt(quote_min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${quote_min}`,\n };\n } else {\n if (price.lt(priceRange?.min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${new Decimal(\n priceRange.min\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n }\n\n return errors;\n });\n }\n}\n","import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { order as orderUntil } from \"@orderly.network/perp\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { pick } from \"ramda\";\n\nconst { maxPrice, minPrice, scropePrice } = orderUntil;\n\nexport class StopLimitOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n },\n config?: ValuesDepConfig\n ): AlgoOrderEntity<AlgoOrderRootType.STOP> {\n this.totalToQuantity(values, config!);\n\n const order: AlgoOrderEntity<AlgoOrderRootType.STOP> = {\n ...this.baseOrder(values as unknown as OrderEntity),\n\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.LIMIT,\n quantity: values[\"order_quantity\"]!,\n price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n const { symbol } = config;\n const { price_range, price_scope, quote_max, quote_min } = symbol;\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n if (!order_price) {\n errors.order_price = {\n type: \"required\",\n message: \"Price is required\",\n };\n }\n\n // validate trigger price\n if (trigger_price > quote_max) {\n errors.trigger_price = {\n type: \"max\",\n message: `Trigger price must be less than ${quote_max}`,\n };\n } else if (trigger_price < quote_min) {\n errors.trigger_price = {\n type: \"min\",\n message: `Trigger price must be greater than ${quote_min}`,\n };\n } else {\n if (trigger_price && order_price) {\n const price = new Decimal(order_price);\n\n const maxPriceNumber = maxPrice(trigger_price, price_range);\n const minPriceNumber = minPrice(trigger_price, price_range);\n const scropePriceNumbere = scropePrice(\n trigger_price,\n price_scope,\n side\n );\n\n const priceRange =\n side === \"BUY\"\n ? {\n min: scropePriceNumbere,\n max: maxPriceNumber,\n }\n : {\n min: minPriceNumber,\n max: scropePriceNumbere,\n };\n\n /// if side is 'buy', only check max price,\n /// if side is 'sell', only check min price,\n if (price.gt(quote_max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${quote_max}`,\n };\n } else {\n if (price.gt(priceRange?.max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${new Decimal(\n priceRange.max\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n\n if (price.lt(quote_min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${quote_min}`,\n };\n } else {\n if (price.lt(priceRange?.min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${new Decimal(\n priceRange.min\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n }\n }\n\n return errors;\n });\n }\n}\n","import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nexport class GeneralOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(data: OrderEntity): OrderEntity {\n return {\n ...this.baseOrder(data),\n order_price: data.order_price,\n order_quantity: data.order_quantity,\n };\n }\n validate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n return super.baseValidate(values, configs);\n }\n}\n","import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n OrderType,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nimport { pick } from \"ramda\";\nimport { BaseOrderCreator } from \"./baseCreator\";\n\nexport class StopMarketOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n }\n ) {\n const order = {\n ...this.baseOrder(values as unknown as OrderEntity),\n // order_price: values.order_price,\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.MARKET,\n quantity: values[\"order_quantity\"]!,\n // price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n // \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n const { symbol } = config;\n const { quote_max, quote_min } = symbol;\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n // validate trigger price\n if (trigger_price > quote_max) {\n errors.trigger_price = {\n type: \"max\",\n message: `Trigger price must be less than ${quote_max}`,\n };\n } else if (trigger_price < quote_min) {\n errors.trigger_price = {\n type: \"min\",\n message: `Trigger price must be greater than ${quote_min}`,\n };\n }\n\n return errors;\n });\n }\n}\n","import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class PostOnlyOrderCreator extends LimitOrderCreator {}\n","import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class FOKOrderCreator extends LimitOrderCreator {}\n","import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class IOCOrderCreator extends LimitOrderCreator {}\n","import { AlgoOrderEntity, OrderType, API } from \"@orderly.network/types\";\nimport { TriggerPriceType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: tp_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: sl_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n reduce_only: true,\n quantity: values.quantity,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: AlgoOrderUpdateEntity[] = [];\n\n const needUpdateQty = values.quantity !== oldValue.quantity;\n\n data.child_orders.forEach((order) => {\n // find the old order\n let _order = Object.create(null);\n\n if (needUpdateQty) {\n _order[\"quantity\"] = data.quantity;\n }\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n _order[\"is_activated\"] = false;\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n // _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n _order[\"trigger_price\"] = order.trigger_price as number;\n }\n\n if (Object.keys(_order).length > 0) {\n _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n newData.push(_order);\n }\n }\n });\n\n if (needUpdateQty && newData.length < 2) {\n // if quantity is changed, need to update all child orders\n const missingOrders = oldValue.child_orders.filter(\n (order) => order.algo_order_id !== newData[0].order_id\n );\n\n if (missingOrders.length) {\n newData.push({\n quantity: Number(data.quantity),\n order_id: missingOrders[0].algo_order_id,\n });\n }\n }\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n","import { AlgoOrderEntity, OrderSide } from \"@orderly.network/types\";\nimport {\n OrderCreator,\n OrderFormEntity,\n ValuesDepConfig,\n VerifyResult,\n} from \"./interface\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\n\nexport type AlgoOrderUpdateEntity = {\n trigger_price?: number;\n order_id: number;\n quantity?: number;\n is_activated?: boolean;\n};\n\nexport abstract class BaseAlgoOrderCreator<\n T extends AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n> implements OrderCreator<T>\n{\n abstract create(values: T, config: ValuesDepConfig): T;\n\n /**\n * base validate\n */\n validate(\n values: Partial<T>,\n config: ValuesDepConfig\n ): Promise<{\n [P in keyof T]?: {\n type: string;\n message: string;\n };\n }> {\n const result = Object.create(null);\n return Promise.resolve().then(() => {\n const { tp_trigger_price, sl_trigger_price, side } = values;\n\n const qty = Number(values.quantity);\n const maxQty = config.maxQty;\n if (!isNaN(qty) && qty > maxQty) {\n result.quantity = {\n message: `Quantity must be less than ${config.maxQty}`,\n };\n }\n\n if (Number(tp_trigger_price) < 0) {\n result.tp_trigger_price = {\n message: `TP Price must be greater than 0`,\n };\n }\n\n if (Number(sl_trigger_price) < 0) {\n result.sl_trigger_price = {\n message: `SL Price must be greater than 0`,\n };\n }\n\n // there need use position side to validate\n // so if order's side is buy, then position's side is sell\n if (side === OrderSide.BUY) {\n if (\n !!sl_trigger_price &&\n Number(sl_trigger_price) >= config.markPrice\n ) {\n result.sl_trigger_price = {\n message: `SL price must be less than ${config.markPrice}`,\n };\n }\n\n if (\n !!tp_trigger_price &&\n Number(tp_trigger_price) <= config.markPrice\n ) {\n result.tp_trigger_price = {\n message: `TP price must be greater than ${config.markPrice}`,\n };\n }\n }\n\n if (side === OrderSide.SELL) {\n if (\n !!sl_trigger_price &&\n Number(sl_trigger_price) <= config.markPrice\n ) {\n result.sl_trigger_price = {\n message: `SL price must be greater than ${config.markPrice}`,\n };\n }\n\n if (\n !!tp_trigger_price &&\n Number(tp_trigger_price) >= config.markPrice\n ) {\n result.tp_trigger_price = {\n message: `TP price must be less than ${config.markPrice}`,\n };\n }\n }\n\n return Object.keys(result).length > 0 ? result : null;\n });\n }\n}\n","import {\n AlgoOrderEntity,\n AlgoOrderType,\n OrderType,\n TriggerPriceType,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { API } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLPositionOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.CLOSE_POSITION,\n trigger_price: tp_trigger_price,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.CLOSE_POSITION,\n trigger_price: sl_trigger_price,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.POSITIONAL_TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n // reduce_only: true,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,\n /**\n * The old value of the order\n */\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: {\n trigger_price?: number;\n order_id: number;\n is_activated?: boolean;\n }[] = [];\n data.child_orders.forEach((order) => {\n // find the old order\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n newData.push({\n is_activated: false,\n order_id: Number(oldOrder.algo_order_id),\n });\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n newData.push({\n trigger_price: order.trigger_price as number,\n order_id: Number(oldOrder.algo_order_id),\n });\n }\n }\n });\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\n\nexport const useAccountInfo = () => {\n return usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n};\n","import { useContext, useMemo, useState } from \"react\";\nimport { useMarketsStream } from \"./useMarketsStream\";\nimport { OrderlyContext } from \"../orderlyContext\";\nimport { API } from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { useFundingRates } from \"./useFundingRates\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport enum MarketsType {\n FAVORITES,\n RECENT,\n ALL,\n}\n\nexport interface FavoriteTab {\n name: string;\n id: number;\n}\n\nexport interface Favorite {\n name: string;\n tabs: FavoriteTab[];\n}\n\nexport interface Recent {\n name: string;\n}\n\nexport interface TabSort {\n sortKey: string;\n sortOrder: string;\n}\n\nexport type MarketStoreKey =\n | \"recent\"\n | \"favorites\"\n | \"favoriteTabs\"\n | \"lastSelectedFavoriteTab\"\n | \"tabSort\";\n\n/*\n{\n markets: {\n recent: [\n { \"name\": `${symbol.name}` },\n { \"name\": `${symbol.name}` },\n ],\n favorites: [\n { \"name\": `${symbol.name}`, \"tabs\": [{ \"name\": \"Popular\", \"id\": 1 }] },\n ],\n favoriteTabs: [\n { \"name\": \"Popular\", \"id\": 1 },\n ],\n \"lastSelectFavoriteTab\": { \"name\": \"Popular\", \"id\": 1 },\n \"tabSort\": { \"all\": { \"sortKey\": \"24h_amount\", \"sortOrder\": \"desc\" }} \n }\n}\n*/\n\nconst DefaultTab = { name: \"Popular\", id: 1 };\nconst marketsKey = \"markets\";\n\nexport const useMarkets = (type: MarketsType) => {\n const { configStore } = useContext(OrderlyContext);\n\n const symbolsInfo = useSymbolsInfo();\n const fundingRates = useFundingRates();\n const { data: futures } = useMarketsStream();\n\n const updateStore = (key: MarketStoreKey, data: any) => {\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n [key]: data,\n });\n };\n\n const getStore = <T>(key: MarketStoreKey, defaultValue: T) => {\n return (configStore.get(marketsKey)[key as any] as T) || defaultValue;\n };\n\n if (!configStore.get(marketsKey)) {\n const jsonStr = localStorage.getItem(marketsKey);\n if (jsonStr) {\n configStore.set(marketsKey, JSON.parse(jsonStr));\n } else {\n configStore.set(marketsKey, {\n recent: [],\n favorites: [\n { name: \"PERP_ETH_USDC\", tabs: [{ ...DefaultTab }] },\n { name: \"PERP_BTC_USDC\", tabs: [{ ...DefaultTab }] },\n ],\n favoriteTabs: [{ ...DefaultTab }],\n lastSelectedFavoriteTab: { ...DefaultTab },\n });\n }\n }\n\n const getFavoriteTabs = useMemo(() => {\n return getStore(\"favoriteTabs\", [{ ...DefaultTab }]);\n }, []);\n\n const getFavorites = useMemo(() => {\n const curData = getStore<Favorite[]>(\"favorites\", []);\n const tabs = getFavoriteTabs;\n const result = [] as Favorite[];\n for (let index = 0; index < curData.length; index++) {\n const favData = curData[index];\n var favTabs = favData.tabs.filter(\n (tab) => tabs.findIndex((item) => tab.id === item.id) !== -1\n );\n if (favTabs.length > 0) {\n result.push({ ...favData, tabs: favTabs });\n }\n }\n updateStore(\"favorites\", result);\n\n return result;\n }, [configStore]);\n\n const [favoriteTabs, setFavoriteTabs] = useState(getFavoriteTabs);\n const [favorites, setFavorites] = useState(getFavorites);\n\n const [recent, setRecent] = useState(\n getStore<Recent[]>(\"recent\", []).filter((e) => e)\n );\n const [tabSort, setTabSort] = useState(\n getStore<Record<string, TabSort>>(\"tabSort\", {})\n );\n\n const updateFavoriteTabs = (\n tab: FavoriteTab | FavoriteTab[],\n operator?: {\n add?: boolean;\n update?: boolean;\n delete?: boolean;\n }\n ) => {\n const saveTabs = (tabs: FavoriteTab[]) => {\n setFavoriteTabs(tabs);\n updateStore(\"favoriteTabs\", tabs);\n };\n\n if (Array.isArray(tab)) {\n saveTabs(tab);\n return;\n }\n\n var tabs = [...favoriteTabs];\n const index = tabs.findIndex((item) => item.id === tab.id);\n if (operator?.add) {\n tabs.push(tab);\n } else if (operator?.update) {\n if (index !== -1) {\n tabs[index] = tab;\n }\n } else if (operator?.delete) {\n if (index !== -1) {\n tabs.splice(index, 1);\n }\n }\n saveTabs(tabs);\n };\n\n const updateFavorites = (favorites: Favorite[]) => {\n updateStore(\"favorites\", favorites);\n setFavorites(favorites);\n };\n\n const addToHistory = (symbol: API.MarketInfoExt) => {\n const curData = [...recent];\n const index = curData.findIndex((item) => item.name == symbol.symbol);\n if (index !== -1) {\n curData.splice(index, 1);\n }\n curData.unshift({ name: symbol.symbol });\n updateStore(\"recent\", curData);\n setRecent(curData);\n };\n\n const updateSymbolFavoriteState = (\n symbol: API.MarketInfoExt,\n tab: FavoriteTab | FavoriteTab[],\n remove: boolean = false\n ) => {\n const curData = [...favorites];\n const index = curData.findIndex((item) => item.name == symbol.symbol);\n\n if (index === -1) {\n // can not find\n if (Array.isArray(tab)) {\n if (tab.length > 0) {\n curData.unshift({ name: symbol.symbol, tabs: tab });\n }\n } else {\n if (!remove) {\n // insert\n curData.unshift({ name: symbol.symbol, tabs: [tab] });\n }\n }\n } else {\n const favorite = curData[index];\n if (Array.isArray(tab)) {\n if (tab.length === 0) {\n // remove\n curData.splice(index, 1);\n } else {\n // overrides\n curData[index] = { ...favorite, tabs: tab };\n }\n } else {\n if (remove) {\n const tabs = favorite.tabs.filter((item) => item.id != tab.id);\n if (tabs.length === 0) {\n // del favorite\n curData.splice(index, 1);\n } else {\n curData[index] = { ...favorite, tabs };\n }\n } else {\n // insert\n const tabs = favorite.tabs;\n tabs.push(tab);\n curData[index] = { ...favorite, tabs };\n }\n }\n }\n\n updateStore(\"favorites\", curData);\n setFavorites(() => curData);\n };\n\n const marketsList = useMemo(() => {\n const list = futures?.map((item: any) => {\n const { open_interest = 0, index_price = 0 } = item;\n\n const info = symbolsInfo[item.symbol];\n const rate = fundingRates[item.symbol];\n const est_funding_rate = rate(\"est_funding_rate\");\n const funding_period = info(\"funding_period\");\n const change =\n item.change === undefined\n ? get24hChange(item[\"24h_close\"], item[\"24h_open\"])\n : item.change;\n\n return {\n ...item,\n change,\n \"8h_funding\": get8hFunding(est_funding_rate, funding_period),\n quote_dp: info(\"quote_dp\"),\n created_time: info(\"created_time\"),\n openInterest: new Decimal(open_interest || 0)\n .mul(index_price || 0)\n .toNumber(),\n };\n });\n return list || [];\n }, [symbolsInfo, futures, fundingRates]);\n\n const getData = (type: MarketsType) => {\n // get data\n const localData =\n type === MarketsType.FAVORITES ? [...favorites] : [...recent];\n // filter\n const keys = localData.map((item) => item.name);\n const filter =\n type == MarketsType.ALL\n ? marketsList\n : marketsList?.filter((item) => keys.includes(item.symbol));\n\n const favoritesData = [...favorites];\n const favoriteKeys = favoritesData.map((item) => item.name);\n if (filter) {\n for (let index = 0; index < filter.length; index++) {\n const element = filter[index];\n const isFavorite =\n type == MarketsType.FAVORITES\n ? true\n : favoriteKeys.includes(element.symbol);\n\n const fIndex = favoritesData.findIndex(\n (item) => item.name === element.symbol\n );\n const tabs = fIndex === -1 ? [] : favoritesData[fIndex].tabs;\n\n let imr = undefined;\n if (symbolsInfo) {\n imr = symbolsInfo?.[element.symbol](\"base_imr\");\n }\n\n filter[index] = {\n ...filter[index],\n isFavorite,\n tabs,\n leverage: imr ? 1 / imr : undefined,\n };\n }\n }\n\n return filter;\n };\n\n const pinToTop = (symbol: API.MarketInfoExt) => {\n const index = favorites.findIndex((item) => item.name === symbol.symbol);\n if (index !== -1) {\n const element = favorites[index];\n const list = [...favorites];\n list.splice(index, 1);\n list.unshift(element);\n updateStore(\"favorites\", list);\n setFavorites(list);\n }\n };\n\n const getLastSelFavTab = () => {\n return getStore<FavoriteTab>(\"lastSelectedFavoriteTab\", { ...DefaultTab });\n };\n\n const updateSelectedFavoriteTab = (tab: FavoriteTab) => {\n updateStore(\"lastSelectedFavoriteTab\", tab);\n };\n\n const updateTabsSortState = (\n tabId: string,\n sortKey: string,\n sortOrder: \"desc\" | \"asc\"\n ) => {\n const map = getStore<Record<string, TabSort>>(\"tabSort\", {});\n\n map[tabId] = {\n sortKey,\n sortOrder,\n };\n\n updateStore(\"tabSort\", map);\n setTabSort(map);\n };\n\n const markets = getData(type);\n\n return [\n markets || [],\n {\n favoriteTabs,\n favorites,\n recent,\n tabSort,\n addToHistory,\n updateFavorites,\n updateFavoriteTabs,\n updateSymbolFavoriteState,\n pinToTop,\n getLastSelFavTab,\n updateSelectedFavoriteTab,\n updateTabsSortState,\n },\n ] as const;\n};\n\nfunction get8hFunding(est_funding_rate: number, funding_period: number) {\n let funding8h = 0;\n\n if (est_funding_rate === undefined || est_funding_rate === null) {\n return null;\n }\n\n if (funding_period) {\n funding8h = new Decimal(est_funding_rate || 0)\n .mul(funding_period)\n .div(8)\n .toNumber();\n }\n\n return funding8h;\n}\n\nfunction get24hChange(close: number, open: number) {\n if (close !== undefined && open !== undefined) {\n if (open === 0) {\n return 0;\n }\n return new Decimal(close).minus(open).div(open).toNumber();\n }\n}\n","import { useContext, useEffect, useState } from \"react\";\nimport { useMarketsStream } from \"./useMarketsStream\";\nimport { OrderlyContext } from \"../orderlyContext\";\nimport { API, WSMessage } from \"@orderly.network/types\";\nimport { SymbolInfo, useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport enum MarketsType {\n FAVORITES,\n RECENT,\n ALL,\n}\n\nexport interface FavoriteTab {\n name: string;\n id: number;\n}\n\nexport interface Favorite {\n name: string;\n tabs: FavoriteTab[];\n}\n\nexport interface Recent {\n name: string;\n}\n\nexport type TabSort = Record<\n string,\n {\n sortKey: string;\n sortOrder: string;\n }\n>;\n\n/*\nexample data:\n{\n markets: {\n recent: [\n { \"name\": `${symbol.name}` },\n { \"name\": `${symbol.name}` },\n ],\n favorites: [\n { \"name\": `${symbol.name}`, \"tabs\": [{ \"name\": \"Popular\", \"id\": 1 }] },\n ],\n favoriteTabs: [\n { \"name\": \"Popular\", \"id\": 1 },\n ],\n \"lastSelectFavoriteTab\": { \"name\": \"Popular\", \"id\": 1 },\n \"tabSort\": { \"all\": { \"sortKey\": \"24h_amount\", \"sortOrder\": \"desc\" }} \n }\n}\n*/\nexport type MarketsData = {\n favoriteTabs?: FavoriteTab[];\n favorites?: Favorite[];\n recent?: Recent[];\n selectedFavoriteTab?: FavoriteTab;\n tabSort?: TabSort;\n};\n\nexport type MarketsKey = keyof MarketsData;\n\nexport type MarketsItem = {\n symbol: string;\n index_price: number;\n mark_price: number;\n sum_unitary_funding: number;\n est_funding_rate: number;\n last_funding_rate: number;\n next_funding_time: number;\n open_interest: number;\n \"24h_open\": number;\n \"24h_close\": number;\n \"24h_high\": number;\n \"24h_low\": number;\n \"24h_volume\": number;\n \"24h_amount\": number;\n \"24h_volumn\": number;\n change: number;\n \"8h_funding\": number;\n quote_dp: number;\n created_time: number;\n openInterest: number;\n isFavorite: boolean;\n leverage?: number;\n};\n\nexport const MarketsStorageKey = \"markets\";\nexport const DefaultFavoriteTab = { name: \"Popular\", id: 1 };\n\nexport const useMarketList = (type: MarketsType) => {\n const { configStore } = useContext(OrderlyContext);\n\n const { data: futures } = useMarketsStream();\n const symbolsInfo = useSymbolsInfo();\n\n const getStore = () => {\n const store = configStore.get(MarketsStorageKey) as MarketsData;\n return store || getDefaultStoreData();\n };\n\n const getStoreByKey = <Key extends MarketsKey>(\n key: Key,\n defaultValue: MarketsData[Key]\n ) => {\n const store = getStore();\n return (store[key] || defaultValue)!;\n };\n\n const updateStore = (data: MarketsData) => {\n configStore.set(MarketsStorageKey, {\n ...getStore(),\n ...data,\n });\n };\n\n const getFavoriteTabs = () => {\n return getStoreByKey(\"favoriteTabs\", [{ ...DefaultFavoriteTab }]);\n };\n\n const getSelectedFavoriteTab = () => {\n return getStoreByKey(\"selectedFavoriteTab\", { ...DefaultFavoriteTab });\n };\n\n const getFavorites = () => {\n const favs = getStoreByKey(\"favorites\", []);\n const tabs = getFavoriteTabs();\n return filterInvalidTabs(favs, tabs);\n };\n\n const getRecent = () => {\n return getStoreByKey(\"recent\", []);\n };\n\n const getTabSort = () => {\n return getStoreByKey(\"tabSort\", {});\n };\n\n const [markets, setMarkets] = useState<MarketsItem[]>([]);\n\n const [favoriteTabs, setFavoriteTabs] = useState(getFavoriteTabs);\n const [selectedFavoriteTab, setSelectedFavoriteTab] = useState(\n getSelectedFavoriteTab\n );\n const [favorites, setFavorites] = useState(getFavorites);\n const [recent, setRecent] = useState(getRecent);\n\n const [tabSort, setTabSort] = useState(getTabSort);\n\n const updateFavoriteTabs = (\n tab: FavoriteTab | FavoriteTab[],\n operator?: {\n add?: boolean;\n update?: boolean;\n delete?: boolean;\n }\n ) => {\n const tabs = updateTabs(favoriteTabs, tab, operator);\n setFavoriteTabs(tabs);\n };\n\n const updateSymbolFavoriteState = (\n symbol: API.MarketInfoExt,\n tab: FavoriteTab | FavoriteTab[],\n remove: boolean = false\n ) => {\n const list = updateSymbolFavorite({ favorites, symbol, tab, remove });\n setFavorites(list);\n };\n\n const addToHistory = (symbol: API.MarketInfoExt) => {\n const list = addToTop(recent, symbol);\n setRecent(list);\n };\n\n const pinToTop = (symbol: API.MarketInfoExt) => {\n const newList = moveToTop(favorites, symbol);\n if (newList) {\n setFavorites(newList);\n }\n };\n\n const updateTabsSortState = (\n tabId: string,\n sortKey: string,\n sortOrder: \"desc\" | \"asc\"\n ) => {\n const map = getStoreByKey(\"tabSort\", {});\n\n map[tabId] = {\n sortKey,\n sortOrder,\n };\n\n setTabSort(map);\n };\n\n useEffect(() => {\n updateStore({\n favoriteTabs,\n favorites,\n recent,\n tabSort,\n selectedFavoriteTab,\n });\n }, [favoriteTabs, favorites, recent, tabSort, selectedFavoriteTab]);\n\n useEffect(() => {\n const markets = addFieldToMarkets(futures, symbolsInfo);\n const filterList = filterMarkets({ markets, favorites, recent, type });\n setMarkets(filterList);\n }, [futures, symbolsInfo, favorites, recent, type]);\n\n return [\n markets,\n {\n favoriteTabs,\n favorites,\n recent,\n tabSort,\n selectedFavoriteTab,\n updateFavorites: setFavorites,\n updateFavoriteTabs,\n updateSymbolFavoriteState,\n pinToTop,\n addToHistory,\n updateSelectedFavoriteTab: setSelectedFavoriteTab,\n updateTabsSortState,\n },\n ] as const;\n};\n\nconst addFieldToMarkets = (\n futures: WSMessage.Ticker[] | null,\n symbolsInfo: SymbolInfo\n) => {\n return (futures || [])?.map((item: any) => {\n const info = symbolsInfo[item.symbol];\n\n return {\n ...item,\n quote_dp: info(\"quote_dp\"),\n created_time: info(\"created_time\"),\n leverage: getLeverage(info(\"base_imr\")),\n openInterest: getOpenInterest(item.open_interest, item.index_price),\n \"8h_funding\": get8hFunding(item.est_funding_rate, info(\"funding_period\")),\n change: get24hChange({\n change: item.change,\n close: item[\"24h_close\"],\n open: item[\"24h_open\"],\n }),\n } as MarketsItem;\n });\n};\n\nconst filterMarkets = (params: {\n markets: MarketsItem[];\n favorites: Favorite[];\n recent: Recent[];\n type: MarketsType;\n}) => {\n const { markets, favorites, recent, type } = params;\n let curData: MarketsItem[] = [];\n if (type === MarketsType.ALL) {\n curData = markets;\n } else {\n const storageData = type === MarketsType.FAVORITES ? favorites : recent;\n\n const keys = storageData.map((item) => item.name);\n\n curData = markets?.filter((item) => keys.includes(item.symbol));\n }\n\n const favoriteKeys = favorites.map((item) => item.name);\n\n return curData?.map((item) => ({\n ...item,\n isFavorite:\n type == MarketsType.FAVORITES ? true : favoriteKeys.includes(item.symbol),\n }));\n};\n\nfunction get8hFunding(est_funding_rate: number, funding_period: number) {\n let funding8h = 0;\n\n if (est_funding_rate === undefined || est_funding_rate === null) {\n return null;\n }\n\n if (funding_period) {\n funding8h = new Decimal(est_funding_rate || 0)\n .mul(funding_period)\n .div(8)\n .toNumber();\n }\n\n return funding8h;\n}\n\nfunction get24hChange(params: { change: number; close: number; open: number }) {\n const { change, close, open } = params;\n\n if (change !== undefined) {\n return change;\n }\n\n if (close !== undefined && open !== undefined) {\n if (open === 0) {\n return 0;\n }\n return new Decimal(close).minus(open).div(open).toNumber();\n }\n}\n\nfunction getLeverage(base_imr: number) {\n return base_imr ? 1 / base_imr : undefined;\n}\n\nfunction getOpenInterest(open_interest?: number, index_price?: number) {\n return new Decimal(open_interest || 0).mul(index_price || 0).toNumber();\n}\n\nfunction getDefaultStoreData() {\n return {\n recent: [],\n favorites: [\n { name: \"PERP_ETH_USDC\", tabs: [{ ...DefaultFavoriteTab }] },\n { name: \"PERP_BTC_USDC\", tabs: [{ ...DefaultFavoriteTab }] },\n ],\n favoriteTabs: [{ ...DefaultFavoriteTab }],\n lastSelectedFavoriteTab: { ...DefaultFavoriteTab },\n tabSort: {},\n } as MarketsData;\n}\n\nfunction filterInvalidTabs(favorites: Favorite[], tabs: FavoriteTab[]) {\n return favorites\n .map((favorite) => {\n return {\n ...favorite,\n tabs: favorite.tabs.filter(\n (tab) => !!tabs.find((item) => item.id === tab.id)\n ),\n };\n })\n .filter((item) => !!item.tabs.length);\n}\n\nexport function updateTabs(\n favoriteTabs: FavoriteTab[],\n tab: FavoriteTab | FavoriteTab[],\n operator?: {\n add?: boolean;\n update?: boolean;\n delete?: boolean;\n }\n) {\n if (Array.isArray(tab)) {\n return tab;\n }\n\n const tabs = [...favoriteTabs];\n const index = tabs.findIndex((item) => item.id === tab.id);\n\n if (operator?.add) {\n tabs.push(tab);\n } else if (operator?.update && index !== -1) {\n tabs[index] = tab;\n } else if (operator?.delete && index !== -1) {\n tabs.splice(index, 1);\n }\n\n return tabs;\n}\n\nfunction addToTop(recent: Recent[], symbol: API.MarketInfoExt) {\n const list = [...recent];\n const index = list.findIndex((item) => item.name == symbol.symbol);\n if (index !== -1) {\n list.splice(index, 1);\n }\n list.unshift({ name: symbol.symbol });\n return list;\n}\n\nfunction moveToTop(favorites: Favorite[], symbol: API.MarketInfoExt) {\n const index = favorites.findIndex((item) => item.name === symbol.symbol);\n if (index !== -1) {\n const item = favorites[index];\n const list = [...favorites];\n list.splice(index, 1);\n list.unshift(item);\n return list;\n }\n}\n\n/**\n * if tab is arrary, the remove params is not work\n * if tab is empty array, will be delete, otherwise will be override\n */\nfunction updateSymbolFavorite(params: {\n favorites: Favorite[];\n tab: FavoriteTab | FavoriteTab[];\n symbol: API.MarketInfoExt;\n remove: boolean;\n}) {\n const { favorites, symbol, tab, remove = false } = params;\n\n const list = [...favorites];\n const index = list.findIndex((item) => item.name == symbol.symbol);\n\n const tabs = Array.isArray(tab) ? tab : [tab];\n\n // can not find\n if (index === -1) {\n if (tabs.length && !remove) {\n // insert\n list.unshift({ name: symbol.symbol, tabs });\n }\n } else {\n const favorite = list[index];\n if (Array.isArray(tab)) {\n if (!tab.length) {\n // remove\n list.splice(index, 1);\n } else {\n // update\n list[index] = { ...favorite, tabs: tab };\n }\n } else {\n if (remove) {\n const tabs = favorite.tabs.filter((item) => item.id != tab.id);\n if (!tabs.length) {\n // remove\n list.splice(index, 1);\n } else {\n // update\n list[index] = { ...favorite, tabs };\n }\n } else {\n // insert\n list[index] = { ...favorite, tabs: [...favorite.tabs, tab] };\n }\n }\n }\n\n return list;\n}\n","import { useCallback } from \"react\";\nimport { useMutation } from \"../useMutation\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { prop } from \"ramda\";\nimport { useQuery } from \"../useQuery\";\n\nexport const useLeverage = (): any => {\n const { data, mutate } = usePrivateQuery(\"/v1/client/info\");\n const [update, { isMutating }] = useMutation(\"/v1/client/leverage\");\n\n const { data: config } = useQuery(\"/v1/public/config\", {\n revalidateOnFocus: false,\n });\n\n const updateLeverage = useCallback((data: { leverage: number }) => {\n return update(data).then((res: any) => {\n if (res.success) {\n return mutate();\n } else {\n throw new Error(res.message);\n }\n // return res\n });\n }, []);\n\n return [\n prop(\"max_leverage\", data as any),\n {\n update: updateLeverage,\n isMutating,\n // config: [1, 2, 3, 4, 5, 10, 15, 20],\n config: config\n ? (config as any)?.available_futures_leverage\n ?.split(\",\")\n .map((item: string) => parseInt(item))\n : [],\n },\n ];\n};\n","import { API } from \"@orderly.network/types\";\nimport { useQuery } from \"../useQuery\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { getTimestamp, timeConvertString } from \"@orderly.network/utils\";\n\nexport const useFundingRate = (symbol: string) => {\n if (!symbol) {\n throw new Error(\"useFuturesForSymbol requires a symbol\");\n }\n\n const [countDown, setCountDown] = useState(\"00:00:00\");\n\n const { data } = useQuery<API.FundingRate>(\n `/v1/public/funding_rate/${symbol}`,\n {\n fallbackData: {\n est_funding_rate: 0,\n next_funing_time: 0,\n },\n }\n );\n\n useEffect(() => {\n if (!data) return;\n const { next_funding_time } = data;\n if (!next_funding_time || next_funding_time <= 0) {\n return;\n }\n const timer = setInterval(() => {\n const diff = new Date(next_funding_time).getTime() - getTimestamp();\n const result = timeConvertString(diff);\n if (result.length === 3) {\n setCountDown(\n `${result[0].toString().padStart(2, \"0\")}:${result[1]\n .toString()\n .padStart(2, \"0\")}:${result[2].toString().padStart(2, \"0\")}`\n );\n }\n }, 1000);\n return () => {\n clearInterval(timer);\n };\n }, [data]);\n\n const est_funding_rate = useMemo(() => {\n if (!data) return;\n\n const { next_funding_time, est_funding_rate = 0 } = data;\n\n if (getTimestamp() > next_funding_time) {\n return null;\n }\n\n return (Number(est_funding_rate) * 100).toFixed(4);\n }, [data]);\n\n return {\n ...data,\n est_funding_rate,\n countDown,\n };\n};\n","import { API } from \"@orderly.network/types\";\nimport { useWS } from \"../useWS\";\nimport { useEffect, useState } from \"react\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport interface MarketTradeStreamOptions {\n limit?: number;\n}\n\nexport const useMarketTradeStream = (\n symbol: string,\n options: MarketTradeStreamOptions = {}\n) => {\n if (!symbol) {\n throw new Error(\"useTradeStream: symbol is required\");\n }\n\n const [trades, setTrades] = useState<API.Trade[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const { limit = 50 } = options;\n\n const ws = useWS();\n\n useEffect(() => {\n setIsLoading(true);\n setTrades(() => []);\n ws.onceSubscribe(\n {\n id: `${symbol}@trade`,\n event: \"request\",\n params: {\n type: \"trade\",\n symbol: symbol,\n limit,\n },\n },\n {\n onMessage: (data: any) => {\n setIsLoading(false);\n setTrades(() => data);\n },\n }\n );\n }, [symbol]);\n\n useEffect(() => {\n const unsubscript = ws.subscribe(\n {\n id: `${symbol}@trade`,\n event: \"subscribe\",\n topic: `${symbol}@trade`,\n ts: getTimestamp(),\n },\n {\n onMessage: (data: any) => {\n setTrades((prev) => {\n const arr = [{ ...data, ts: getTimestamp() }, ...prev];\n if (arr.length > limit) {\n arr.pop();\n }\n return arr;\n });\n },\n }\n );\n\n return () => {\n unsubscript?.();\n };\n }, [symbol]);\n\n return { data: trades, isLoading };\n};\n","import { useMemo } from \"react\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useCollateral } from \"./useCollateral\";\nimport { zero } from \"@orderly.network/utils\";\n\nexport type MarginRatioReturn = {\n // Margin Ratio\n marginRatio: number;\n // Current Leverage\n currentLeverage: number;\n // account margin ratio, if user has no position, return null\n mmr: number | null;\n};\n\nexport const useMarginRatio = (): MarginRatioReturn => {\n const [{ rows, aggregated }] = usePositionStream();\n const { data: markPrices } = useMarkPricesStream();\n\n const { totalCollateral } = useCollateral();\n const marginRatio = useMemo(() => {\n if (!rows || !markPrices || !totalCollateral || rows.length === 0) {\n return 0;\n }\n\n const ratio = account.totalMarginRatio({\n totalCollateral: totalCollateral,\n markPrices: markPrices,\n positions: rows ?? [],\n });\n return ratio;\n }, [rows, markPrices, totalCollateral]);\n\n const currentLeverage = useMemo(() => {\n return account.currentLeverage(marginRatio);\n }, [marginRatio]);\n\n // MMR\n const mmr = useMemo<number | null>(() => {\n if (!rows || rows.length <= 0) return null;\n let positionsMM = zero;\n // const positionsNotional = positions.totalNotional(rows);\n\n for (let index = 0; index < rows.length; index++) {\n const item = rows[index];\n positionsMM = positionsMM.add(item.mm);\n }\n\n return account.MMR({\n positionsMMR: positionsMM.toNumber(),\n positionsNotional: aggregated.notional,\n });\n }, [rows, aggregated]);\n\n return { marginRatio, currentLeverage, mmr };\n};\n","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 isTestnet?: boolean;\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 // Whether to force the use of data returned by the API, ignoring the customChains.\n forceAPI?: boolean;\n} & SWRConfiguration;\n\nexport type UseChainsReturnObject = {\n findByChainId: (chainId: number, field?: string) => Chain | undefined;\n checkChainSupport: (\n chainId: number | string,\n networkId: NetworkId\n ) => boolean;\n error: any;\n};\n\nexport function useChains(\n networkId?: undefined,\n options?: undefined\n): [Chains<undefined, undefined>, UseChainsReturnObject];\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): [any, any] {\n const { pick: pickField, ...swrOptions } = options;\n const {\n filteredChains: allowedChains,\n configStore,\n customChains,\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: tokenChainsRes, 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 const needFetchFromAPI = options.forceAPI || !customChains;\n\n // only prod env return mainnet chains info\n const { data: chainInfos, error: chainInfoErr } = useQuery(\n needFetchFromAPI\n ? `https://api-evm.orderly.org/v1/public/chain_info${\n brokerId !== \"orderly\" ? `?broker_id=${brokerId}` : \"\"\n }`\n : null,\n { ...commonSwrOpts }\n );\n\n const chains = useMemo(() => {\n const tokenChains = fillChainsInfo(tokenChainsRes, filterFun.current);\n\n let testnetArr = needFetchFromAPI\n ? ([...TestnetChains] as API.Chain[])\n : customChains?.testnet;\n\n tokenChains?.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 mainnetArr = filterAndUpdateChains(\n tokenChains,\n chainInfos,\n filterFun.current\n );\n\n mainnetArr = needFetchFromAPI ? mainnetArr : customChains?.mainnet;\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 = 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 }, [\n networkId,\n tokenChainsRes,\n chainInfos,\n customChains,\n pickField,\n allowedChains,\n ]);\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 const checkChainSupport = useCallback(\n (chainId: number | string, networkId: NetworkId) => {\n const _chains = Array.isArray(chains) ? chains : chains[networkId];\n return _checkChainSupport(chainId, _chains);\n },\n [chains]\n );\n\n return [\n chains,\n {\n findByChainId,\n checkChainSupport,\n error: tokenError,\n },\n ];\n}\n\nfunction _checkChainSupport(chainId: number | string, chains: API.Chain[]) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\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/** filter chains and update network_infos by chain_info api (v1/public/chain_info) */\nexport function filterAndUpdateChains(\n chains: API.Chain[],\n chainInfos: any,\n filter?: (chain: any) => boolean\n) {\n const filterChains: API.Chain[] = [];\n\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 if (networkInfo) {\n filterChains.push(_chain);\n }\n });\n\n return filterChains;\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","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { API, chainsInfoMap } from \"@orderly.network/types\";\n\nexport const useChain = (token: string) => {\n const { data, isLoading } = useQuery<API.Chain[]>(\"/v1/public/token\");\n\n const chains = useMemo(() => {\n if (!data) return null;\n\n let item = data.find((chain) => chain.token === token);\n\n if (item) {\n item.chain_details = item.chain_details.map((d) => {\n const chain = chainsInfoMap.get(Number(d.chain_id));\n return {\n ...d,\n chain_name: chain?.chainName ?? \"--\",\n };\n });\n }\n\n return item || null;\n }, [data, token]);\n\n return { chains, isLoading };\n};\n","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","import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\nimport {useAccount} from \"../useAccount\";\nimport {\n AccountStatusEnum,\n API,\n ARBITRUM_MAINNET_CHAINID,\n ARBITRUM_TESTNET_CHAINID,\n DEPOSIT_FEE_RATE,\n isNativeTokenChecker, MaxUint256,\n ChainNamespace,\n NetworkId,\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 console.log('-- chain', chain, options );\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(\n account.assetsManager.getBalanceByAddress(token.address, {\n decimals: token?.decimals,\n })\n );\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 (inputs: {\n address?: string;\n vaultAddress?: string;\n decimals?: number;\n }) => {\n const { address, vaultAddress, decimals } = inputs;\n const key = `${address}-${vaultAddress}`;\n console.log('--- get allowance', 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 decimals,\n });\n\n setAllowance(() => allowance);\n // setAllowanceRevalidating(false);\n return allowance;\n };\n\n const getAllowanceByDefaultAddress = async (inputs: {\n address?: string;\n decimals?: number;\n }) => {\n const { address, decimals } = inputs;\n if (prevAddress.current === address) return;\n\n if (!address || isNativeTokenChecker(address)) return;\n\n prevAddress.current = address;\n\n console.log('-- ttttt agetAllowanceByDefaultAddress', address)\n const allowance = await account.assetsManager.getAllowance({\n address,\n decimals,\n });\n setAllowance(() => allowance);\n };\n\n const queryBalance = useDebouncedCallback(\n (address?: string, decimals?: number) => {\n fetchBalance(address, decimals).finally(() => {\n setBalanceRevalidating(false);\n });\n },\n 100\n );\n\n const queryAllowance = useDebouncedCallback(\n (inputs: {\n address?: string;\n vaultAddress?: string;\n decimals?: number;\n }) => {\n getAllowance(inputs);\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 const params = {\n address: options?.address,\n decimals: options?.decimals,\n };\n\n if (account.walletAdapter?.chainNamespace === ChainNamespace.solana) {\n setAllowance(account.walletAdapter.formatUnits(MaxUint256));\n return;\n }\n console.log('-- dst chainid', dst.chainId, options?.srcChainId, dst, options)\n if (dst.chainId !== options?.srcChainId) {\n queryAllowance(params);\n } else {\n if (dst.symbol !== options?.srcToken) {\n queryAllowance(params);\n } else {\n getAllowanceByDefaultAddress(params);\n }\n }\n }, [\n state.status,\n options?.address,\n options?.srcChainId,\n options?.srcToken,\n options?.decimals,\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({\n address: options.address,\n amount,\n })\n .then((result: any) => {\n return account.walletAdapter\n ?.pollTransactionReceiptWithBackoff(result.hash)\n .then((receipt) => {\n if (receipt.status === 1) {\n account.assetsManager\n .getAllowance({ address: 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 console.log('-- start deposit')\n return account.assetsManager\n .deposit(quantity, depositFee)\n .then((res: any) => {\n account.assetsManager\n .getAllowance({ address: 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 || Number(quantity) === 0) {\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","import useSWRSubscription from \"swr/subscription\";\nimport { useWS } from \"../useWS\";\n\nexport const useWalletSubscription = (options?: {\n onMessage?: (data: any) => void;\n}) => {\n const ws = useWS();\n\n return useSWRSubscription(\"wallet\", (_, { next }) => {\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 options?.onMessage?.(data);\n next(null, data);\n },\n }\n );\n\n return () => unsubscribe();\n });\n};\n","import useSWRSubscription from \"swr/subscription\";\nimport { useWS } from \"../useWS\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useSettleSubscription = (options?: {\n onMessage?: (data: any) => void;\n}) => {\n const ws = useWS();\n\n return useSWRSubscription(\"settle\", (_, { next }) => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"settle\",\n event: \"subscribe\",\n topic: \"settle\",\n ts: getTimestamp(),\n },\n {\n onMessage: (data: any) => {\n //\n options?.onMessage?.(data);\n next(data);\n },\n }\n );\n\n return () => unsubscribe();\n });\n};\n","import { Decimal } from \"@orderly.network/utils\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useEffect, useMemo, useState } from \"react\";\n\n// Define the PriceRange type to represent a range of prices\nexport type PriceRange = {\n min: number,\n max: number,\n};\n\n/**\n * Get the price range for the specified symbol with an optional price\n *\n * @param symbol - The symbol to get the price range for\n * @param price - Optional parameter to set the price\n * @returns PriceRange | undefined - Returns the PriceRange representing the price range or undefined\n */\nexport const useSymbolPriceRange = (symbol: string, side: \"BUY\" | \"SELL\", price?: number): PriceRange | undefined => {\n const config = useSymbolsInfo();\n const priceRange = config?.[symbol](\"price_range\");\n const priceScrope = config?.[symbol](\"price_scope\");\n const { data: prices } = useMarkPricesStream();\n const markPrice = price || prices?.[symbol];\n\n /// max mark_price_i * (1+price_range)\n /// min mark_price_i * (1-price_range)\n\n const range = useMemo(() => {\n if (config === undefined || markPrice === undefined) {\n return undefined;\n }\n\n if (priceRange === undefined || Number.isNaN(markPrice)) {\n return undefined;\n }\n\n if (side === \"BUY\") {\n return {\n max: new Decimal(markPrice).mul((1 + priceRange)).toNumber(),\n min: new Decimal(markPrice).mul((1 - priceScrope)).toNumber(),\n };\n }\n\n return {\n max: new Decimal(markPrice).mul((1 + priceScrope)).toNumber(),\n min: new Decimal(markPrice).mul((1 - priceRange)).toNumber(),\n };\n }, [symbol, side, priceRange, markPrice]);\n\n return range;\n}","import { API, SDKError } from \"@orderly.network/types\";\nimport { useTaskProfitAndStopLossInternal } from \"./useTPSL\";\n\nexport const useTPSLOrder = (\n /**\n * Position that needs to set take profit and stop loss\n */\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n /**\n * You can set the default value for the take profit and stop loss order,\n * it is usually used when editing order\n */\n defaultOrder?: API.AlgoOrder;\n }\n): ReturnType<typeof useTaskProfitAndStopLossInternal> => {\n if (!position) {\n throw new SDKError(\"Position is required\");\n }\n\n if (!position.symbol) {\n throw new SDKError(\"Symbol is required\");\n }\n\n if (typeof position.average_open_price === \"undefined\") {\n throw new SDKError(\"Average open price is required\");\n }\n\n if (typeof position.position_qty === \"undefined\") {\n throw new SDKError(\"Position quantity is required\");\n }\n\n // const { data: markPrice } = useMarkPrice(position.symbol);\n\n const result = useTaskProfitAndStopLossInternal(position, options);\n\n return result;\n};\n\nexport type { ComputedAlgoOrder } from \"./useTPSL\";\n","import { useEffect, useState } from \"react\";\n\nimport {\n API,\n AlgoOrderEntity,\n OrderSide,\n SDKError,\n} from \"@orderly.network/types\";\nimport { UpdateOrderKey, calculateHelper } from \"./utils\";\nimport { useMutation } from \"../../useMutation\";\nimport { OrderFactory } from \"../../services/orderCreator/factory\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { TPSLPositionOrderCreator } from \"../../services/orderCreator/tpslPositionOrderCreator\";\nimport { findTPSLFromOrder } from \"../usePositionStream/utils\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPrice } from \"../useMarkPrice\";\nimport { omit } from \"ramda\";\n\nexport type ComputedAlgoOrder = Partial<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL> & {\n /**\n * Computed take profit\n */\n tp_pnl: number;\n tp_offset: number;\n tp_offset_percentage: number;\n\n /**\n * Computed stop loss\n */\n sl_pnl: number;\n sl_offset: number;\n sl_offset_percentage: number;\n }\n>;\n\nexport type ValidateError = {\n [P in keyof ComputedAlgoOrder]?: {\n type: string;\n message: string;\n };\n};\n\n/**\n * @hidden\n */\nexport const useTaskProfitAndStopLossInternal = (\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n defaultOrder?: API.AlgoOrder;\n }\n): [\n /**\n * return the computed & formatted order\n */\n ComputedAlgoOrder,\n {\n /**\n * Update the take profit and stop loss order, this will merge the new data with the old one\n */\n setValue: (key: string, value: number | string) => void;\n setValues: (values: Partial<ComputedAlgoOrder>) => void;\n // getOrderEntity: () => AlgoOrderEntity<AlgoOrderRootType.TP_SL|AlgoOrderRootType.POSITIONAL_TP_SL>;\n /**\n * Submit the TP/SL order\n */\n submit: () => Promise<void>;\n // /**\n // * Create the take profit and stop loss order, auto-detect the order type\n // */\n // create: () => Promise<void>;\n // update: (orderId: number) => Promise<any>;\n errors: ValidateError | null;\n /**\n *\n */\n validate: () => Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n >;\n isCreateMutating: boolean;\n }\n] => {\n const [order, setOrder] = useState<\n ComputedAlgoOrder & {\n ignoreValidate?: boolean;\n }\n >({\n algo_order_id: options?.defaultOrder?.algo_order_id,\n symbol: position.symbol as string,\n side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,\n quantity:\n options?.defaultOrder?.quantity || Math.abs(position.position_qty),\n algo_type: options?.defaultOrder?.algo_type as AlgoOrderRootType,\n });\n\n const symbolInfo = useSymbolsInfo()[position.symbol!]();\n const { data: markPrice } = useMarkPrice(order.symbol!);\n\n const [doCreateOrder, { isMutating: isCreateMutating }] =\n useMutation(\"/v1/algo/order\");\n const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [errors, setErrors] = useState<ValidateError | null>(null);\n\n useEffect(() => {\n if (!options?.defaultOrder) return;\n const trigger_prices = findTPSLFromOrder(options.defaultOrder!);\n if (trigger_prices.tp_trigger_price) {\n setOrderValue(\"tp_trigger_price\", trigger_prices.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n if (trigger_prices.sl_trigger_price) {\n setOrderValue(\"sl_trigger_price\", trigger_prices.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n }, []);\n\n const _setOrderValue = (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n // console.log(\"[updateOrder:]\", key, value);\n\n setOrder((prev) => {\n const side = position.position_qty! > 0 ? OrderSide.BUY : OrderSide.SELL;\n\n if (key === \"sl_pnl\") {\n value = value ? `-${value}` : \"\";\n }\n\n const newValue = calculateHelper(\n key,\n {\n key,\n value,\n entryPrice: position.average_open_price!,\n qty:\n side === OrderSide.BUY\n ? Number(prev.quantity)!\n : -Number(prev.quantity)!,\n orderSide: side,\n },\n {\n symbol: symbolInfo,\n }\n );\n\n return {\n ...prev,\n ...newValue,\n ignoreValidate: options?.ignoreValidate,\n };\n });\n };\n\n const setOrderValue = async (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n // console.log(\"-------->>>>>\", key, value);\n if (key === \"quantity\") {\n setOrder((prev) => ({ ...prev, quantity: value }));\n\n if (typeof order.sl_trigger_price !== \"undefined\") {\n _setOrderValue(\"sl_trigger_price\", order.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n if (typeof order.tp_trigger_price !== \"undefined\") {\n _setOrderValue(\"tp_trigger_price\", order.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n return;\n }\n\n _setOrderValue(key, value, options);\n };\n\n /**\n * calculate value config\n */\n const valueConfig = {\n symbol: symbolInfo,\n maxQty: Math.abs(position.position_qty),\n markPrice,\n };\n\n // auto validate when order changed\n useEffect(() => {\n requestAnimationFrame(() => {\n if (order.ignoreValidate) return;\n const orderCreator = getOrderCreator();\n orderCreator\n .validate(order as AlgoOrderEntity, valueConfig)\n .then((errors) => {\n setErrors(errors);\n });\n });\n }, [order, valueConfig.markPrice, order.quantity]);\n\n const setValues = (values: Partial<ComputedAlgoOrder>) => {\n const keys = Object.keys(values);\n keys.forEach((key) => {\n setOrderValue(\n key as UpdateOrderKey,\n values[key as keyof ComputedAlgoOrder] as number | string\n );\n });\n };\n\n const validate = (): Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n > => {\n const orderCreator = getOrderCreator();\n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n .then((errors) => {\n console.log(\"errors::\", errors);\n\n if (errors) {\n setErrors(errors);\n return reject(errors);\n }\n\n resolve(\n orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n );\n });\n });\n };\n\n // useEffect(() => {\n // // setError(validate());\n // }, [order]);\n\n const compare = (): boolean => {\n const quantityNum = Number(order.quantity);\n if (isNaN(quantityNum)) return false;\n return quantityNum === Math.abs(Number(position.position_qty));\n };\n\n const getOrderCreator = () => {\n // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL\n // else use qty to determine the order type\n if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {\n return OrderFactory.create(AlgoOrderRootType.TP_SL);\n }\n return OrderFactory.create(\n compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL\n );\n };\n\n const submit = async () => {\n const defaultOrder = options?.defaultOrder;\n const orderId = defaultOrder?.algo_order_id;\n const algoType = defaultOrder?.algo_type;\n\n // if algo_order_id is not existed, create new order\n if (!orderId) {\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = POSITION_TP_SL\n if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n // if order.qty = position.qty, update order\n if (compare()) {\n return updateOrder(orderId!);\n }\n // if order.qty != position.qty, create new tp/sl order\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = TP_SL, delete order and create new order\n\n return updateOrder(orderId!);\n };\n\n const createOrder = () => {\n const orderCreator = getOrderCreator();\n\n const orderBody = orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n );\n\n if (orderBody.child_orders.length === 0) {\n throw new SDKError(\"No child orders\");\n }\n\n // filter the order that is not activated\n orderBody.child_orders = orderBody.child_orders.filter(\n (order: API.AlgoOrderExt) => order.is_activated\n );\n\n return doCreateOrder(orderBody);\n };\n\n const deleteOrder = (orderId: number, symbol: string): Promise<any> => {\n return doDeleteOrder(null, {\n order_id: orderId,\n symbol,\n });\n };\n\n const updateOrder = (orderId: number): Promise<any> => {\n const orderCreator = getOrderCreator() as TPSLPositionOrderCreator;\n\n const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(\n // @ts-ignore\n order,\n options?.defaultOrder,\n valueConfig\n );\n\n if (updatedOrderEntity.child_orders.length === 0) {\n return Promise.resolve(\"Not any order needs to update\");\n }\n\n const needDelete =\n orderEntity.child_orders.filter(\n (order) =>\n typeof order.is_activated === \"boolean\" && !order.is_activated\n ).length === orderEntity.child_orders.length;\n\n if (needDelete) {\n return deleteOrder(orderId, order.symbol!);\n }\n\n return doUpdateOrder({\n order_id: orderId,\n ...updatedOrderEntity,\n });\n };\n\n return [\n omit([\"ignoreValidate\"], order) as ComputedAlgoOrder,\n {\n submit,\n\n // create: submit,\n\n // update: updateOrder,/\n setValue: setOrderValue,\n setValues,\n // createPositionTPSL: submit,\n // createTPSL: submit,\n validate,\n errors,\n isCreateMutating,\n },\n ];\n};\n","import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, todpIfNeed, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, Decimal.ROUND_UP).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n // console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, Decimal.ROUND_DOWN).toNumber();\n }\n\n return decimal.toNumber();\n}\n\n// function formatPrice(price: number | string, symbol?: API.SymbolExt) {\n// if (typeof price !== \"string\") {\n// price = `${price}`;\n// }\n\n// if (price.endsWith(\".\") || !symbol) {\n// return price;\n// }\n// return new Decimal(Number(price))\n// .todp(symbol.quote_dp, Decimal.ROUND_UP)\n// .toNumber();\n// }\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n const entryPrice = new Decimal(inputs.entryPrice)\n .todp(options.symbol?.quote_dp ?? 2, Decimal.ROUND_UP)\n .toNumber();\n\n // console.log(\"******* entryPrice\", options.symbol?.quote_dp, entryPrice);\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: todpIfNeed(\n trigger_price,\n symbol?.quote_dp ?? 2\n ),\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useAccountInfo } from \"./useAccountInfo\";\n\nexport const useSymbolLeverage = (symbol: string) : number | \"-\" => {\n const { data: info } = useAccountInfo();\n\n const maxAccountLeverage = info?.max_leverage;\n\n const res = useQuery<any>(`/v1/public/info/${symbol}`, {\n dedupingInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n errorRetryCount: 2,\n errorRetryInterval: 200,\n });\n\n const maxSymbolLeverage = useMemo(() => {\n const base = res?.data?.base_imr;\n if (base) return 1 / base;\n }, [res]);\n\n const maxLeverage = useMemo(() => {\n if (!maxAccountLeverage || !maxSymbolLeverage) {\n return \"-\";\n }\n\n return Math.min(maxAccountLeverage, maxSymbolLeverage);\n }, [maxAccountLeverage, maxSymbolLeverage]);\n\n return maxLeverage;\n};\n","import { API } from \"@orderly.network/types\";\nimport { SWRInfiniteResponse } from \"swr/infinite\";\nimport { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { useEffect } from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\n\nexport enum AssetHistoryStatusEnum {\n NEW = \"new\",\n CONFIRM = \"confirm\",\n PROCESSING = \"processing\",\n COMPLETED = \"completed\",\n PENDDING = \"pendding\",\n PENDING_REBALANCE = \"pending_rebalance\",\n}\n\nconst useAssetsHistory = (options: {\n // token?: string;\n side?: string;\n // status?: AssetHistoryStatusEnum;\n startTime?: string;\n endTime?: string;\n page?: number;\n pageSize?: number;\n}) => {\n const { page = 1, pageSize = 10 } = options;\n const ee = useEventEmitter();\n\n const getKey = () => {\n // if (previousPageData && !previousPageData.length) return null;\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", page.toString());\n searchParams.set(\"size\", pageSize.toString());\n\n // if (options.token) searchParams.set(\"token\", options.token);\n if (options.side && options.side !== \"All\")\n searchParams.set(\"side\", options.side);\n // if (options.status) searchParams.set(\"status\", options.status);\n if (options.startTime) searchParams.set(\"start_t\", options.startTime);\n if (options.endTime) searchParams.set(\"end_t\", options.endTime);\n\n return `/v1/asset/history?${searchParams.toString()}`;\n };\n\n const { data, isLoading, mutate } = usePrivateQuery<API.AssetHistory>(\n getKey(),\n {\n formatter: (data) => data,\n revalidateOnFocus: false,\n errorRetryInterval: 60 * 1000,\n }\n );\n const updateList = useDebouncedCallback(\n (data: any) => {\n mutate();\n },\n // delay in ms\n 300\n );\n\n useEffect(() => {\n ee.on(\"wallet:changed\", updateList);\n\n return () => {\n ee.off(\"wallet:changed\", updateList);\n };\n }, []);\n\n return [\n data?.rows || [],\n {\n meta: data?.meta,\n isLoading,\n },\n ] as const;\n};\n\nexport { useAssetsHistory };\n","import { API, SDKError } from \"@orderly.network/types\";\nimport { useMemo } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { zero } from \"@orderly.network/utils\";\n\ntype QueryParams = {\n startDate: string;\n endDate: string;\n page?: number;\n};\n\n/**\n * Fetch statistics data, only support weekly/monthly/quarterly for now\n */\nexport const useStatisticsDaily = (\n params: QueryParams,\n options?: {\n ignoreAggregation?: boolean;\n }\n) => {\n const { startDate, endDate, page = 1 } = params;\n const { ignoreAggregation = false } = options || {};\n\n if (!startDate || !endDate) {\n throw new SDKError(\"startDate and endDate are required\");\n }\n\n const getPeriod = (startDate: string, endDate: string) => {\n if (startDate === endDate) {\n return 1;\n }\n const diff = new Date(endDate).getTime() - new Date(startDate).getTime();\n return diff / (1000 * 60 * 60 * 24);\n };\n\n const key = useMemo(() => {\n // if (previousPageData && !previousPageData.length) return null;\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", page.toString());\n searchParams.set(\n \"size\",\n (getPeriod(startDate, endDate) + (ignoreAggregation ? 0 : 1)).toString()\n );\n\n /*\n * add one day for the start date, for ROI calculation\n */\n const modifiedStartDate = new Date(startDate);\n modifiedStartDate.setDate(new Date(startDate).getDate() - 1);\n\n searchParams.set(\n \"start_date\",\n modifiedStartDate.toISOString().split(\"T\")[0]\n );\n searchParams.set(\"end_date\", params.endDate);\n\n return `/v1/client/statistics/daily?${searchParams.toString()}`;\n }, [page, startDate, endDate]);\n\n const { data } = usePrivateQuery<API.DailyRow[]>(key, {\n formatter: (data) => data.rows.reverse(),\n revalidateOnFocus: false,\n });\n\n const aggregateValue = useMemo(() => {\n if (ignoreAggregation) {\n return { vol: null, pnl: null, roi: null };\n }\n let vol = zero;\n let pnl = zero;\n let roi = zero;\n\n if (Array.isArray(data) && data.length) {\n const prevDate = data.shift();\n data.forEach((d) => {\n vol = vol.add(d.perp_volume);\n pnl = pnl.add(d.pnl);\n });\n\n roi = pnl.div(prevDate!.account_value);\n }\n\n return { vol: vol.toNumber(), pnl: pnl.toNumber(), roi: roi.toNumber() };\n }, [data]);\n\n // (data?.rows as any[]).shift();\n\n return [\n data || [],\n {\n aggregateValue,\n },\n ] as const;\n};\n\nexport type UseStatisticsDailyReturn = ReturnType<typeof useStatisticsDaily>;\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { useMemo, useRef } from \"react\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { SWRConfiguration } from \"swr\";\n\ntype FundingSearchParams = {\n /**\n * Data range for the funding fee history\n * noted that the time stamp is a 13-digits timestamp\n * the first element is the start date and the second element is the end date\n * @default [Now subtract 3 months, Now]\n */\n dataRange?: number[];\n symbol?: string;\n page?: number;\n pageSize?: number;\n};\n\nexport const useFundingFeeHistory = (\n params: FundingSearchParams,\n options?: SWRConfiguration\n) => {\n let { symbol, dataRange, page = 1, pageSize = 10 } = params;\n\n const infos = useSymbolsInfo();\n\n const getKey = () => {\n // console.log(\"symbol\", symbol, dataRange);\n\n const search = new URLSearchParams();\n\n if (typeof symbol !== \"undefined\" && symbol !== \"All\") {\n search.set(\"symbol\", symbol);\n }\n search.set(\"page\", `${page}`);\n search.set(\"size\", `${pageSize}`);\n\n if (dataRange) {\n search.set(\"start_t\", dataRange[0].toString());\n search.set(\"end_t\", dataRange[1].toString());\n }\n\n return `/v1/funding_fee/history?${search.toString()}`;\n };\n const { data, isLoading, isValidating } =\n usePrivateQuery<API.FundingFeeHistory>(getKey(), {\n // initialSize: 1,\n formatter: (data) => data,\n revalidateOnFocus: false,\n errorRetryCount: 3,\n // keepPreviousData: true,\n ...options,\n });\n\n const parsedData = useMemo<\n | (API.FundingFeeRow & {\n annual_rate: number;\n })[]\n | null\n >(() => {\n if (!data || !Array.isArray(data?.rows) || infos.isNil) {\n return null;\n }\n\n return data.rows.map((row: API.FundingFeeRow) => {\n const config = infos[row.symbol];\n return {\n ...row,\n annual_rate: row.funding_rate * (24 / config(\"funding_period\")) * 365,\n };\n });\n }, [data, infos]);\n\n return [\n parsedData,\n {\n meta: data?.meta,\n isLoading,\n isValidating,\n },\n ] as const;\n};\n\nexport type UseFundingFeeHistoryReturn = ReturnType<\n typeof useFundingFeeHistory\n>;\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { useMemo } from \"react\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\n\ntype DistributionSearchParams = {\n /**\n * Data range for the distribution history\n * noted that the time stamp is a 13-digits timestamp\n * the first element is the start date and the second element is the end date\n * @default [Now subtract 3 months, Now]\n */\n dataRange?: number[];\n type?: string;\n page: number;\n pageSize: number;\n};\n\nexport const useDistributionHistory = (parmas: DistributionSearchParams) => {\n let { type, dataRange, page, pageSize } = parmas;\n\n const infos = useSymbolsInfo();\n\n const getKey = () => {\n const search = new URLSearchParams();\n\n if (typeof type !== \"undefined\" && type !== \"All\") {\n search.set(\"type\", type);\n }\n search.set(\"page\", page.toString());\n search.set(\"size\", pageSize.toString());\n\n if (dataRange) {\n search.set(\"start_t\", dataRange[0].toString());\n search.set(\"end_t\", dataRange[1].toString());\n }\n\n return `/v1/client/distribution_history?${search.toString()}`;\n };\n const { data, isLoading, isValidating } =\n usePrivateQuery<API.FundingFeeHistory>(getKey(), {\n // initialSize: 1,\n formatter: (data) => data,\n revalidateOnFocus: false,\n errorRetryCount: 3,\n });\n\n const parsedData = useMemo<\n (API.FundingFeeRow & {\n annual_rate: number;\n })[]\n >(() => {\n if (!Array.isArray(data?.rows) || !data?.rows.length || infos.isNil) {\n return [];\n }\n\n return data.rows.map((row: API.FundingFeeRow) => {\n const config = infos[row.symbol];\n return {\n ...row,\n annual_rate: row.funding_rate * (24 / config(\"funding_period\")),\n };\n });\n }, [data, infos]);\n\n return [\n parsedData,\n {\n meta: data?.meta,\n isLoading,\n isValidating,\n },\n ] as const;\n};\n\nexport type UseDistributionHistoryReturn = ReturnType<\n typeof useDistributionHistory\n>;\n","import { useEffect, useRef, useState } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useConfig } from \"../useConfig\";\nimport { useWS } from \"../useWS\";\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nexport function useMaintenanceStatus() {\n // 0 for nothing, 2 for maintenance\n const [status, setStatus] = useState<number>(0);\n const [startTime, setStartTime] = useState<number>();\n const [endTime, setEndTime] = useState<number>();\n const [brokerName, setBrokerName] = useState<string>(\"Orderly network\");\n const { data: systemInfo, mutate } = useQuery<any>(`/v1/public/system_info`, {\n revalidateOnFocus: false,\n errorRetryCount: 2,\n errorRetryInterval: 200,\n });\n const ws = useWS();\n\n const config = useConfig();\n\n useEffect(() => {\n if (!systemInfo || !systemInfo.data) {\n return;\n }\n\n const brokerName = config.get(\"brokerName\");\n if (brokerName) {\n setBrokerName(brokerName);\n }\n // systemInfo.data.status = 2;\n // systemInfo.data.scheduled_maintenance = {\n // start_time: new Date(\"2024-08-27\").getTime(),\n // end_time: new Date(\"2024-08-30\").getTime(),\n // };\n console.log(\"--systemInfo\", systemInfo, brokerName);\n if (systemInfo.data.scheduled_maintenance) {\n setStartTime(systemInfo.data.scheduled_maintenance.start_time);\n setEndTime(systemInfo.data.scheduled_maintenance.end_time);\n }\n if (systemInfo.data.status === 2) {\n setStatus(2);\n }\n }, [systemInfo, config]);\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(`maintenance_status`, {\n onMessage: (message: any) => {\n setStatus(message.status);\n console.log(\"-- ws maintenance_status\", message);\n if (message.scheduled_maintenance) {\n setStartTime(message.scheduled_maintenance.start_time);\n setEndTime(message.scheduled_maintenance.end_time);\n }\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n }, []);\n\n return {\n status,\n brokerName,\n startTime,\n endTime,\n };\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useMediaQuery(query: string): boolean {\n const getMatches = (query: string): boolean => {\n // Prevents SSR issues\n if (typeof window !== \"undefined\") {\n return window.matchMedia(query).matches;\n }\n return false;\n };\n\n const [matches, setMatches] = useState<boolean>(getMatches(query));\n\n function handleChange() {\n setMatches(getMatches(query));\n }\n\n useEffect(() => {\n const matchMedia = window?.matchMedia(query);\n\n // Triggered at the first client-side load and if query changes\n handleChange();\n\n // Listen matchMedia\n if (matchMedia?.addListener) {\n matchMedia?.addListener(handleChange);\n } else {\n matchMedia?.addEventListener?.(\"change\", handleChange);\n }\n\n return () => {\n if (matchMedia?.removeListener) {\n matchMedia?.removeListener(handleChange);\n } else {\n matchMedia?.removeEventListener?.(\"change\", handleChange);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n\n return matches;\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { mergeDeepRight } from \"ramda\";\nimport { PosterPainter } from \"./services/painter/painter\";\nimport { type DrawOptions } from \"./services/painter/basePaint\";\nimport { DefaultLayoutConfig } from \"./services/painter/layout.config\";\nimport { SDKError } from \"@orderly.network/types\";\n\n/**\n * Generates a poster image based on position information. You can set the size, background color, font color, font size, and content position of the poster.\n * @example\n * ```tsx\n * const { ref, toDataURL, toBlob, download, copy } = usePoster({\n * backgroundColor: \"#0b8c70\",\n * backgroundImg: \"/images/poster_bg.png\",\n * color: \"rgba(255, 255, 255, 0.98)\",\n * profitColor: \"rgb(0,181,159)\",\n * // ...\n * });\n * ```\n */\nexport const usePoster = (\n /**\n * The options to draw the poster\n */\n data: DrawOptions,\n options?: {\n /**\n * The ratio of the poster\n */\n ratio?: number;\n }\n) => {\n const [error, setError] = useState<Error | null>(null);\n const [canCopy, setCanCopy] = useState<boolean>(\n () => typeof navigator.clipboard !== \"undefined\"\n );\n\n const painterRef = useRef<PosterPainter | null>(null);\n\n const [target, setTarget] = useState<HTMLCanvasElement | null>(null);\n\n useEffect(() => {\n // Create the painter instance\n if (target) {\n if (!painterRef.current) {\n painterRef.current = new PosterPainter(target, {\n ratio: options?.ratio || 1,\n ...options,\n });\n }\n\n painterRef.current.draw(\n mergeDeepRight<Partial<DrawOptions>, DrawOptions>(\n { layout: DefaultLayoutConfig, fontFamily: \"Manrope\" },\n data\n )\n );\n }\n }, [target, data]);\n\n // useEffect(() => {\n // if (painterRef.current) {\n // painterRef.current.draw(\n // mergeDeepRight<Partial<DrawOptions>, DrawOptions>(\n // { layout: DefaultLayoutConfig, fontFamily: \"Manrope\" },\n // data\n // )\n // );\n // }\n // }, [data]);\n\n const toDataURL = (type?: string, encoderOptions?: number) => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n return target.toDataURL(type, encoderOptions);\n };\n\n /**\n * Converts the poster to a blob\n */\n const toBlob = useCallback(\n (type?: string, encoderOptions?: number): Promise<Blob | null> => {\n return new Promise<Blob | null>((resolve) => {\n if (!target) {\n resolve(null);\n return;\n }\n target.toBlob(resolve, type, encoderOptions);\n });\n },\n [target]\n );\n\n const ref = (ref: HTMLCanvasElement | null) => {\n if (!ref) return;\n if (ref.tagName.toUpperCase() !== \"CANVAS\") {\n // throw new Error(\"The ref must be a canvas element\");\n setError(new SDKError(\"The ref must be a canvas element\"));\n return;\n }\n setTarget(ref);\n };\n\n const download = useCallback(\n (filename: string, type: string = \"image/png\", encoderOptions?: number) => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n const img = new Image();\n img.src = target.toDataURL(type, encoderOptions);\n const link = document.createElement(\"a\");\n link.href = img.src;\n link.download = filename;\n link.click();\n },\n [target]\n );\n\n const copy = useCallback(() => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n // copy image to clipboard\n return new Promise<void>((resolve, reject) => {\n if (!navigator.clipboard) {\n reject(new SDKError(\"Clipboard API is not supported\"));\n return;\n }\n target.toBlob((blob) => {\n if (!blob) {\n reject(new SDKError(\"Failed to create blob\"));\n return;\n }\n return navigator.clipboard\n .write([new ClipboardItem({ [blob.type]: blob })])\n .then(resolve, reject);\n });\n });\n }, [target]);\n\n return {\n error,\n /**\n * The ref to the canvas element, you should pass this ref to the canvas element\n */\n ref,\n /**\n * Converts the poster to a data URL\n */\n toDataURL,\n /**\n * Converts the poster to a blob\n */\n toBlob,\n /**\n * Downloads the poster as an image\n */\n download,\n /**\n * Browser if supports copy image to clipboard\n */\n canCopy,\n copy,\n } as const;\n};\n","import { OrderSide } from \"@orderly.network/types\";\nimport { PosterPainter } from \"./painter\";\n\nexport type posterDataSource = {\n /**\n * slogan of the poster\n */\n message?: string;\n position: {\n symbol: string;\n // side: OrderSide;\n side: \"LONG\" | \"SHORT\";\n /**\n * The leverage of the position\n */\n leverage: number;\n /**\n * The unrealized PnL of the position\n */\n pnl: number;\n /**\n * The return on investment of the position\n */\n ROI: number;\n /**\n * The informations of the position, such as open price, opened at, mark price, quantity and custom message.\n */\n informations: { title: string; value: string }[];\n /**\n * The quote currency of the position\n */\n currency: string;\n };\n /**\n * The domain of the application\n */\n domain: string;\n\n /**\n * The update time of the position\n */\n updateTime: string;\n\n referral?: {\n code: string;\n slogan: string;\n link: string;\n } | null;\n};\n\nexport type layoutInfo = {\n width?: number;\n height?: number;\n // padding?: number;\n // margin?: number;\n fontSize?: number;\n\n color?: string;\n textAlign?: CanvasTextAlign;\n textBaseline?: CanvasTextBaseline;\n position: Partial<{\n left: number;\n right: number;\n top: number;\n bottom: number;\n }>;\n};\n\nexport type PosterLayoutConfig = {\n message?: layoutInfo;\n\n domain?: layoutInfo;\n position?: layoutInfo;\n unrealizedPnl?: layoutInfo & {\n secondaryColor: string;\n secondaryFontSize: number;\n };\n\n informations?: layoutInfo & {\n labelColor?: string;\n };\n updateTime?: layoutInfo;\n};\n\nexport type DrawOptions = {\n /**\n * Color of common text\n */\n color?: string;\n fontFamily?: string;\n /**\n * Lose color\n */\n lossColor?: string;\n /**\n * Profit color\n */\n profitColor?: string;\n /**\n * The brand color of the application\n */\n brandColor?: string;\n backgroundColor?: string;\n backgroundImg?: string;\n data?: posterDataSource;\n layout?: PosterLayoutConfig;\n};\n\nexport abstract class BasePaint {\n constructor(\n protected ctx: CanvasRenderingContext2D,\n protected painter: PosterPainter\n ) {}\n abstract draw(options: DrawOptions): Promise<void>;\n}\n","import { BasePaint, type DrawOptions } from \"./basePaint\";\n\nexport class BackgroundPaint extends BasePaint {\n private img: HTMLImageElement | null = null;\n\n async draw(options: DrawOptions) {\n console.log(\"BackgroundPaint draw: \", options.backgroundColor);\n\n if (\n typeof options.backgroundImg !== \"undefined\" &&\n options.backgroundImg !== \"\"\n ) {\n return this._drawImage(options);\n } else if (typeof options.backgroundColor !== \"undefined\") {\n return this._drawColor(options);\n }\n }\n\n _drawColor(options: DrawOptions) {\n console.log(\"graw background color\", options);\n this.ctx.fillStyle = options.backgroundColor || \"black\";\n this.ctx.fillRect(\n 0,\n 0,\n this.painter.width * this.painter.ratio,\n this.painter.height * this.painter.ratio\n );\n }\n\n async _drawImage(options: DrawOptions) {\n return this.loadImg(options.backgroundImg!).then((img) => {\n this.img = img;\n this.ctx.drawImage(\n this.img!,\n 0,\n 0,\n this.painter.width * this.painter.ratio,\n this.painter.height * this.painter.ratio\n );\n });\n }\n\n private loadImg(url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onload = () => {\n resolve(img);\n };\n img.onerror = (e) => {\n reject(e);\n };\n img.src = url;\n });\n }\n}\n","import { commify } from \"@orderly.network/utils\";\nimport { BasePaint, DrawOptions, layoutInfo } from \"./basePaint\";\nimport { path } from \"ramda\";\nimport { qrPaint } from \"./qrPaint\";\n\nexport class DataPaint extends BasePaint {\n private positionInfoCellWidth = 110;\n\n private DEFAULT_PROFIT_COLOR = \"rgb(0,181,159)\";\n private DEFAULT_LOSS_COLOR = \"rgb(255,103,194)\";\n\n private transformTop = 0;\n\n private QRCODE_SIZE = 56;\n\n async draw(options: DrawOptions) {\n const needDrawDetails =\n Array.isArray(options.data?.position?.informations) &&\n (options.data?.position?.informations?.length ?? 0) > 0;\n\n const hasReferral = this.hasReferral(options);\n\n // const hasMessage = !!options.data?.message;\n const hasMessage = true;\n\n this.transformTop = hasMessage ? 0 : needDrawDetails ? -40 : -150;\n\n // If position details are not displayed, the position PNL information will be margin\n // const offsetTop = hasMessage ? 50 : 100;\n const offsetTop = 0; // 100;\n // const offsetMessage = hasMessage ? 0 : -50;\n\n if (!!options.data?.message) {\n this.drawMessage(options);\n }\n\n if (!!options.data?.position) {\n this.drawPosition(\n options,\n needDrawDetails || hasReferral ? 0 : offsetTop\n );\n }\n\n if (needDrawDetails) {\n this.drawInformations(options);\n }\n\n this.drawUnrealizedPnL(\n options,\n needDrawDetails || hasReferral ? 0 : offsetTop\n );\n\n if (!hasReferral) {\n if (!!options.data?.domain) {\n this.drawDomainUrl(options);\n }\n\n if (typeof options.data?.updateTime !== \"undefined\") {\n this.drawPositionTime(options);\n }\n }\n\n if (typeof options.data?.referral !== \"undefined\") {\n this.drawReferralCode(options);\n }\n }\n\n private drawMessage(options: DrawOptions) {\n // console.log(\"draw message\", options);\n\n const layout = path<layoutInfo>(\n [\"layout\", \"message\"],\n options\n ) as layoutInfo;\n const { position } = layout;\n\n this._drawText(`\"${options.data?.message!}\"`, {\n color: layout.color,\n fontSize: this._ratio(layout.fontSize as number),\n top: this._ratio(position.top!),\n left: this._ratio(position.left!),\n textBaseline: \"top\",\n fontFamily: options.fontFamily,\n });\n }\n private drawPosition(options: DrawOptions, offsetTop: number = 0) {\n const layout = path<layoutInfo>(\n [\"layout\", \"position\"],\n options\n ) as layoutInfo;\n const { position, fontSize = 14 } = layout;\n let left = this._ratio(position.left!);\n\n let top = layout.position.top! + offsetTop + this.transformTop;\n let prevElementBoundingBox: TextMetrics = {} as TextMetrics;\n\n // draw position side;\n\n if (typeof options.data?.position.side !== \"undefined\") {\n prevElementBoundingBox = this._drawText(options.data.position.side, {\n color:\n options.data?.position.side.toUpperCase() === \"LONG\"\n ? this.DEFAULT_PROFIT_COLOR\n : this.DEFAULT_LOSS_COLOR,\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n\n if (typeof options.data?.position.symbol !== \"undefined\") {\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n\n if (prevElementBoundingBox.width) {\n prevElementBoundingBox = this._drawText(\"|\", {\n color: \"rgba(255,255,255,0.2)\",\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n prevElementBoundingBox = this._drawText(options.data?.position.symbol!, {\n color: layout.color,\n left: left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n\n if (typeof options.data?.position.leverage !== \"undefined\") {\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n\n if (prevElementBoundingBox.width) {\n prevElementBoundingBox = this._drawText(\"|\", {\n color: \"rgba(255,255,255,0.2)\",\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n prevElementBoundingBox = this._drawText(\n `${options.data?.position.leverage}X`,\n {\n color: layout.color,\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n }\n );\n }\n }\n\n private drawUnrealizedPnL(options: DrawOptions, offsetTop: number = 0) {\n // reset left value;\n const layout = path<layoutInfo>(\n [\"layout\", \"unrealizedPnl\"],\n options\n ) as layoutInfo & {\n secondaryColor: string;\n secondaryFontSize: number;\n };\n const { position } = layout;\n let left = this._ratio(position.left!);\n let prevElementBoundingBox: TextMetrics = {} as TextMetrics;\n\n const top = (position.top ?? 0) + offsetTop + this.transformTop;\n\n // ROI\n if (typeof options.data?.position.ROI !== \"undefined\") {\n const prefix = options.data?.position.ROI! > 0 ? \"+\" : \"\";\n prevElementBoundingBox = this._drawText(\n `${prefix}${commify(options.data?.position.ROI)}%`,\n {\n color:\n prefix === \"+\"\n ? options.profitColor || this.DEFAULT_PROFIT_COLOR\n : options.lossColor || this.DEFAULT_LOSS_COLOR,\n left,\n top: this._ratio(top),\n\n fontSize: this._ratio(layout.fontSize as number),\n fontWeight: 700,\n fontFamily: options.fontFamily,\n }\n );\n }\n // unrelPnL\n if (typeof options.data?.position.pnl !== \"undefined\") {\n const prefix = options.data?.position.pnl! > 0 ? \"+\" : \"\";\n let text = `${prefix}${commify(options.data?.position.pnl)} ${\n options.data?.position.currency\n }`;\n let fontWeight = 600;\n\n if (prevElementBoundingBox.width) {\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(8);\n text = `(${text})`;\n } else {\n left = this._ratio(position.left!);\n fontWeight = 700;\n }\n\n const color =\n typeof options.data.position.ROI === \"undefined\"\n ? prefix === \"+\"\n ? options.profitColor || this.DEFAULT_PROFIT_COLOR\n : options.lossColor || this.DEFAULT_LOSS_COLOR\n : layout.secondaryColor;\n\n const fontSize =\n typeof options.data.position.ROI === \"undefined\"\n ? this._ratio(layout.fontSize as number)\n : this._ratio(layout.secondaryFontSize as number);\n\n prevElementBoundingBox = this._drawText(text, {\n color,\n left,\n top: this._ratio(top),\n fontSize,\n fontWeight,\n fontFamily: options.fontFamily,\n });\n }\n }\n\n private drawInformations(options: DrawOptions) {\n const layout = path<layoutInfo>(\n [\"layout\", \"informations\"],\n options\n ) as layoutInfo & {\n labelColor?: string;\n };\n const { position } = layout;\n\n const isVertical = (options.data?.position.informations.length ?? 0) === 2;\n\n options.data?.position.informations.forEach((info, index) => {\n // let cellWidth = this.positionInfoCellWidth;\n let left = position.left! + (index % 2) * this.positionInfoCellWidth;\n // let top = (position.top as number) + (index / 2) * 38 + this.transformTop;\n let top =\n (position.top as number) +\n Math.floor(index / 2) * 38 +\n this.transformTop;\n\n this._drawText(info.title, {\n left: this._ratio(left),\n top: this._ratio(top),\n fontSize: this._ratio(10),\n color: layout.labelColor,\n fontFamily: options.fontFamily,\n });\n\n this._drawText(info.value, {\n left: this._ratio(left),\n top: this._ratio(top + 17),\n fontSize: this._ratio(layout.fontSize as number),\n fontWeight: 500,\n color: layout.color as string,\n fontFamily: options.fontFamily,\n });\n });\n }\n\n private drawDomainUrl(options: DrawOptions, onlyMeasure: boolean = false) {\n const layout = path<layoutInfo>(\n [\"layout\", \"domain\"],\n options\n ) as layoutInfo;\n\n const hasReferral = this.hasReferral(options);\n\n const { position } = layout;\n const top = this.painter.height - position.bottom!;\n\n return this._drawText(\n options.data?.domain!,\n {\n left: !hasReferral\n ? this._ratio(position.left!)\n : this._ratio(this.painter.width - 20),\n top: !hasReferral\n ? this._ratio(top)\n : this._ratio(this.painter.height - 16),\n fontSize: this._ratio(layout.fontSize as number),\n color: options.brandColor ?? this.DEFAULT_PROFIT_COLOR,\n fontFamily: options.fontFamily,\n textBaseline: layout.textBaseline,\n textAlign: !hasReferral ? layout.textAlign : \"end\",\n fontWeight: 600,\n },\n onlyMeasure\n );\n }\n\n private drawPositionTime(options: DrawOptions) {\n const layout = path<layoutInfo>(\n [\"layout\", \"updateTime\"],\n options\n ) as layoutInfo;\n const { position } = layout;\n const hasReferral = this.hasReferral(options);\n\n let top = this.painter.height - position.bottom!;\n let left = this._ratio(position.left!);\n\n if (hasReferral) {\n const metrics = this.drawDomainUrl(options, true);\n // console.log(\"metrics\", metrics);\n left =\n this._ratio(this.painter.width) -\n metrics.width -\n this._ratio(8 + position.left!);\n top = this.painter.height - position.bottom!;\n // console.log(\"left\", left, top, metrics.width, this._ratio(top));\n }\n\n this._drawText(\n !hasReferral\n ? options.data?.updateTime!\n : `Share on ${options.data?.updateTime} |`,\n {\n left,\n top: this._ratio(top),\n // top: 536,\n fontSize: this._ratio(layout.fontSize as number),\n color: layout.color as string,\n // color: \"red\",\n textAlign: !hasReferral ? layout.textAlign : \"end\",\n fontFamily: options.fontFamily,\n textBaseline: layout.textBaseline,\n }\n );\n }\n\n private drawReferralCode(options: DrawOptions) {\n if (!options.data?.referral) {\n return;\n }\n\n const layout = path<layoutInfo>(\n [\"layout\", \"updateTime\"],\n options\n ) as layoutInfo;\n const { position } = layout;\n const top = this.painter.height - (position.bottom ?? 0);\n\n const messageLayout = path<layoutInfo>(\n [\"layout\", \"message\"],\n options\n ) as layoutInfo;\n\n const url = new URL(options.data.referral.link);\n\n const searchParams = url.searchParams;\n searchParams.append(\"ref\", options.data.referral.code);\n\n url.search = searchParams.toString();\n\n qrPaint(this.ctx, {\n size: this._ratio(this.QRCODE_SIZE),\n padding: this._ratio(2),\n left: this._ratio(position.left!),\n top: this._ratio(top - this.QRCODE_SIZE),\n data: `${url.toString()}`,\n });\n\n this._drawText(options.data.referral.slogan, {\n left: this._ratio(position.left! + 66),\n top: this._ratio(top - this.QRCODE_SIZE),\n fontSize: this._ratio(14),\n color: options.brandColor ?? this.DEFAULT_PROFIT_COLOR,\n fontFamily: options.fontFamily,\n textBaseline: \"top\",\n });\n\n this._drawText(\"Referral Code\", {\n left: this._ratio(position.left! + 66),\n top: this._ratio(top - 29),\n fontSize: this._ratio(12),\n color: layout.color as string,\n fontFamily: options.fontFamily,\n textBaseline: \"middle\",\n });\n\n this._drawText(options.data.referral.code, {\n left: this._ratio(position.left! + 66),\n top: this._ratio(top),\n fontSize: this._ratio(16),\n color: messageLayout.color as string,\n fontFamily: options.fontFamily,\n textBaseline: \"bottom\",\n });\n }\n\n private _drawText(\n str: string,\n options?: {\n left?: number;\n top?: number;\n fontSize?: number;\n fontFamily?: string;\n fontWeight?: number;\n color?: string;\n textBaseline?: CanvasTextBaseline;\n textAlign?: CanvasTextAlign;\n },\n onlyMeasure: boolean = false\n ): TextMetrics {\n let boundingBox: TextMetrics;\n const {\n left = 30,\n top = 30,\n fontSize = 13,\n fontWeight = 500,\n color = \"black\",\n textBaseline = \"middle\",\n textAlign = \"start\",\n } = options ?? {};\n\n this.ctx.save();\n // \"Nunito Sans\",-apple-system,\"San Francisco\",BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Helvetica,Arial,sans-serif\n this.ctx.font = `${fontWeight} ${fontSize}px ${options?.fontFamily}`;\n\n this.ctx.fillStyle = color;\n this.ctx.textBaseline = textBaseline;\n this.ctx.textAlign = textAlign;\n boundingBox = this.ctx.measureText(str);\n\n if (!onlyMeasure) {\n this.ctx.fillText(str, left, top);\n }\n this.ctx.restore();\n\n return boundingBox;\n }\n\n private hasReferral(options: DrawOptions): boolean {\n return typeof options.data?.referral !== \"undefined\";\n }\n\n private _ratio(num: number) {\n return num * this.painter.ratio;\n }\n}\n","//@ts-ignore\n// import QRious from \"./qrious\";\nimport { qrcode } from \"@akamfoad/qr\";\n\nexport const qrPaint = (\n ctx: CanvasRenderingContext2D,\n options: {\n size: number;\n padding: number;\n left: number;\n top: number;\n data: string;\n }\n) => {\n const { size, left, top, data, padding } = options;\n\n const qr = qrcode(data);\n const canvas = document.createElement(\"canvas\");\n canvas.width = size;\n canvas.height = size;\n const ctx2 = canvas.getContext(\"2d\");\n\n // const qr = new QRious({\n // value: data,\n // size: 200,\n // padding: 5,\n // level: \"L\",\n // });\n\n const cells = qr.modules;\n\n if (!cells) {\n return;\n }\n\n const tileW = size / cells.length;\n const tileH = size / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx2!.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx2!.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n\n ctx.save();\n ctx.fillStyle = \"#fff\";\n\n ctx.fillRect(\n left - padding,\n top - padding,\n size + padding * 2,\n size + padding * 2\n );\n ctx.restore();\n\n ctx.drawImage(canvas, left, top, size, size);\n};\n","import { BackgroundPaint } from \"./backgroundPaint\";\nimport { DrawOptions } from \"./basePaint\";\nimport { DataPaint } from \"./dataPaint\";\nexport class PosterPainter {\n private ctx: CanvasRenderingContext2D;\n width: number = 0;\n height: number = 0;\n ratio: number;\n // resourceManager: Resource;\n constructor(\n private canvas: HTMLCanvasElement,\n options?: {\n ratio: number;\n }\n ) {\n // console.log(\"PosterPainter constructor\");\n\n this.ctx = this.canvas.getContext(\"2d\")!;\n\n this.width = this.canvas.width;\n this.height = this.canvas.height;\n\n // this.ratio =\n // options?.ratio ||\n // (typeof window !== \"undefined\"\n // ? Math.ceil(window.devicePixelRatio)\n // : 1) ||\n // 1;\n\n this.ratio = Math.max(\n options?.ratio || 1,\n typeof window !== \"undefined\" ? Math.ceil(window.devicePixelRatio) : 1\n );\n\n // render to high resolution\n this.canvas.width = this.width * this.ratio;\n this.canvas.height = this.height * this.ratio;\n this.canvas.style.width = this.width + \"px\";\n this.canvas.style.height = this.height + \"px\";\n\n //\n }\n\n draw(options: DrawOptions) {\n requestAnimationFrame(() => this._draw.bind(this)(options));\n }\n\n async _draw(options: DrawOptions) {\n if (this.ctx === null) return;\n // console.log(\"============ DRAW ============\");\n // this.ctx.font = options.fontFamily!;\n // this.ctx.clearRect(0, 0, this.width * this.ratio, this.height * this.ratio);\n // start draw\n // background\n await new BackgroundPaint(this.ctx, this).draw(options);\n // data paint\n await new DataPaint(this.ctx, this).draw(options);\n }\n}\n","import { type PosterLayoutConfig } from \"./basePaint\";\n\nexport const DefaultLayoutConfig: PosterLayoutConfig = {\n domain: {\n fontSize: 13,\n // color: undefined,\n textBaseline: \"bottom\",\n position: {\n left: 20,\n bottom: 32,\n },\n },\n message: {\n fontSize: 20,\n color: \"rgba(255, 255, 255, 0.98)\",\n textBaseline: \"top\",\n position: {\n left: 20,\n top: 16,\n },\n },\n position: {\n fontSize: 14,\n color: \"rgba(255,255,255,0.98)\",\n position: {\n left: 20,\n top: 70,\n },\n },\n unrealizedPnl: {\n fontSize: 36,\n color: \"rgba(255,255,255,0.5)\",\n secondaryColor: \"rgba(255,255,255,0.54)\",\n secondaryFontSize: 20,\n position: {\n left: 20,\n top: 110,\n },\n },\n informations: {\n fontSize: 12,\n color: \"rgba(255, 255, 255, 0.8)\",\n labelColor: \"rgba(255,255,255,0.36)\",\n position: {\n left: 20,\n top: 150,\n },\n },\n\n updateTime: {\n fontSize: 10,\n color: \"rgba(255,255,255,0.3)\",\n textAlign: \"start\",\n textBaseline: \"bottom\",\n position: {\n left: 20,\n bottom: 17,\n },\n },\n};\n","export {\n findTPSLFromOrder,\n findTPSLFromOrders,\n findPositionTPSLFromOrders,\n} from \"../orderly/usePositionStream/utils\";\n\nexport { cleanStringStyle } from \"./orderEntryHelper\";\n\nexport { getPositionBySymbol } from \"./swr\";\n\nexport { priceToPnl } from \"../orderly/useTakeProfitAndStopLoss/utils\";\nexport { formatNumber } from \"./orderEntryHelper\";\nexport type { ValueOf } from \"./createGetter\";","import { useMemo } from \"react\";\nimport { useDistribution } from \"./useDistribution\";\nimport { useRefereeHistory } from \"./useRefereeHistory\";\n\nexport const useCommission = (options?: { size?: number }) => {\n\n const [referee, { refresh: refreshReferee, loadMore: loadMoreReferee, }] = useRefereeHistory({ size: options?.size });\n\n const [distribution, { refresh: refreshDistribution, loadMore: loadMoreDistribution, isLoading }] = useDistribution({ size: options?.size });\n\n const commissionData = useMemo(() => {\n\n return distribution?.map((item: any) => {\n\n if (\"updated_time\" in item) {\n const updateTime = new Date(item.updated_time);\n\n const index = referee?.findIndex((e: any) => {\n if (\"date\" in e) {\n return compareDate(updateTime, new Date(e.date));\n }\n return false;\n });\n if (index !== -1) {\n return { ...item, volume: referee?.[index].volume };\n }\n }\n return { ...item };\n\n });\n\n }, [referee, distribution]);\n\n const loadMore = () => {\n loadMoreReferee();\n loadMoreDistribution();\n }\n\n const refresh = () => {\n refreshReferee();\n refreshDistribution();\n }\n\n return [commissionData, {\n loadMore,\n refresh,\n isLoading\n }];\n}\n\n//** compare two date, yyyy-mm-dd */\nfunction compareDate(d1?: Date, d2?: Date) {\n const isEqual = d1 && d2 &&\n d1.getDay() === d2.getDay()\n && d1.getMonth() === d2.getMonth()\n && d1.getFullYear() === d2.getFullYear();\n\n\n return isEqual;\n}","export const generateKeyFun =\n (args: {\n path: string;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 100 */\n size?: number;\n page?: number;\n sort?: string;\n }) =>\n (pageIndex: number, previousPageData: any): string | null => {\n // reached the end\n if (previousPageData && !previousPageData.rows?.length) return null;\n\n const { path, startDate, endDate, size = 100, page, sort } = args;\n\n const search = new URLSearchParams([\n [\"size\", size.toString()],\n [\"page\", `${page || pageIndex + 1}`],\n ]);\n\n if (sort) {\n search.set(\"sort\", sort);\n }\n\n if (startDate) {\n search.set(`start_date`, startDate);\n }\n\n if (endDate) {\n search.set(`end_date`, endDate);\n }\n\n return `${path}?${search.toString()}`;\n };\n","import { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\nimport { RefferalAPI } from \"./api\";\nimport { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 1 */\n initialSize?: number;\n};\n\nexport const useDistribution = (params: Params): any => {\n const { size = 10, startDate, endDate, initialSize } = params;\n\n const ordersResponse: any = usePrivateInfiniteQuery(\n generateKeyFun({\n path: \"/v1/client/distribution_history\",\n size,\n startDate,\n endDate,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data: any) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n const total = useMemo(() => {\n return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [ordersResponse.data?.[0]?.meta?.total]);\n\n const flattenOrders = useMemo((): RefferalAPI.Distribution[] | null => {\n if (!ordersResponse.data) {\n return null;\n }\n\n return (\n ordersResponse.data\n ?.map((item: any) => item.rows)\n ?.flat()\n /// TODO: next version will be remove this code\n .map((item: any) => {\n return {\n ...item,\n created_time: item.created_time - 86400000,\n updated_time: item.updated_time - 86400000,\n };\n })\n );\n }, [ordersResponse.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n },\n ] as const;\n};\n","import { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\nimport { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 1 */\n initialSize?: number;\n};\n\nexport const useRefereeHistory = (params: Params): any[] => {\n const { size = 10, startDate, endDate, initialSize } = params;\n\n const response: any = usePrivateInfiniteQuery(\n generateKeyFun({\n path: \"/v1/referral/referee_history\",\n size,\n startDate,\n endDate,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n response.setSize(response.size + 1);\n };\n\n const total = useMemo(() => {\n return response.data?.[0]?.meta?.total || 0;\n }, [response.data?.[0]?.meta?.total]);\n\n const flattenOrders = useMemo(() => {\n if (!response.data) {\n return null;\n }\n\n return response.data?.map((item: any) => item.rows)?.flat();\n }, [response.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n },\n ];\n};\n","import { max, min } from \"ramda\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { RefferalAPI } from \"./api\";\nimport { formatDate } from \"./format\";\nimport { getTimestamp } from \"@orderly.network/utils\";\nexport const useDaily = (options?: {\n //** default Date() - 30d */\n startDate?: Date;\n //** default Date() */\n endDate?: Date;\n}): {\n data?: RefferalAPI.DayliVolume[];\n mutate: any;\n} => {\n const path = \"/v1/volume/user/daily\";\n const endDate = options?.startDate || new Date();\n const startDate =\n options?.endDate || new Date(getTimestamp() - 86400000 * 30);\n\n const start_date = formatDate(startDate);\n const end_date = formatDate(endDate);\n\n const url = `${path}?start_date=${min(start_date, end_date)}&end_date=${max(\n start_date,\n end_date\n )}`;\n const { data: dailyVolume, mutate } = usePrivateQuery<\n RefferalAPI.DayliVolume[]\n >(url, {\n revalidateOnFocus: true,\n });\n\n return {\n data: dailyVolume,\n mutate,\n };\n};\n","export function formatDate(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n \n return `${year}-${month}-${day}`;\n }\n ","import { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\nimport { RefferalAPI } from \"./api\";\nimport { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 1 */\n initialSize?: number;\n page?: number,\n};\n\nexport const useReferralRebateSummary = (params: Params) => {\n const { size = 10, startDate, endDate, initialSize, page, } = params;\n\n const response = usePrivateInfiniteQuery<any>(\n generateKeyFun({\n path: \"/v1/referral/rebate_summary\",\n size,\n startDate,\n endDate,\n page,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n response.setSize(response.size + 1);\n };\n \n const meta = useMemo(():\n | {\n total: number;\n records_per_page: number;\n current_page: number;\n }\n | undefined => {\n return response.data?.[0]?.meta;\n }, [response.data]);\n\n const total = useMemo(() => {\n return meta?.total || 0;\n }, [meta]);\n\n const flattenOrders = useMemo(():\n | RefferalAPI.ReferralRebateSummary[]\n | null => {\n if (!response.data) {\n return null;\n }\n\n return response.data?.map((item) => item.rows)?.flat();\n }, [response.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n meta\n },\n ] as const;\n};\n","import { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\nimport { RefferalAPI } from \"./api\";\nimport { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\nimport { API } from \"@orderly.network/types\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n /**\n * @deprecated \n * YYYY-MM-dd */\n startDate?: string;\n /**\n * @deprecated \n * YYYY-MM-dd */\n endDate?: string;\n /** default is 1 */\n initialSize?: number;\n sort?:\n | \"ascending_code_binding_time\"\n | \"descending_code_binding_time\"\n | \"ascending_referral_rebate\"\n | \"descending_referral_rebate\"\n | \"ascending_volume\"\n | \"descending_volume\";\n page?: number;\n};\n\nexport const useRefereeInfo = (params: Params) => {\n const { size = 10, startDate, endDate, initialSize, page, sort } = params;\n\n const response = usePrivateInfiniteQuery<any>(\n generateKeyFun({\n path: \"/v1/referral/referee_info\",\n size,\n startDate,\n endDate,\n page,\n sort,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n response.setSize(response.size + 1);\n };\n\n const meta = useMemo(():\n | {\n total: number;\n records_per_page: number;\n current_page: number;\n }\n | undefined => {\n return response.data?.[0]?.meta;\n }, [response.data]);\n\n const total = useMemo(() => {\n return meta?.total || 0;\n }, [meta]);\n\n const flattenOrders = useMemo((): RefferalAPI.RefereeInfoItem[] | null => {\n if (!response.data) {\n return null;\n }\n\n return response.data?.map((item) => item.rows)?.flat();\n }, [response.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n meta,\n },\n ] as const;\n};\n","import { usePrivateQuery } from \"../usePrivateQuery\";\nimport { RefferalAPI } from \"./api\";\nimport { formatDate } from \"./format\";\n\ntype Params = {\n startDate?: Date,\n endDate?: Date\n}\n\nexport const useRefereeRebateSummary = (params: Params): {\n data?: RefferalAPI.RefereeRebateSummary[],\n mutate: any,\n isLoading: boolean,\n} => {\n const path = \"/v1/referral/referee_rebate_summary\";\n\n let url = path;\n if (typeof params.endDate !== 'undefined' && typeof params.startDate !== 'undefined') {\n\n const sDate = minDate(params.startDate, params.endDate);\n const eDate = maxDate(params.startDate, params.endDate);\n const search = new URLSearchParams([]);\n search.set(`start_date`, formatDate(sDate, ));\n search.set(`end_date`, formatDate(eDate,));\n const queryParams = search.toString() || \"\";\n url = `${path}?${queryParams}`;\n }\n const {\n data,\n mutate,\n isLoading,\n } = usePrivateQuery<RefferalAPI.RefereeRebateSummary[]>(url, {\n revalidateOnFocus: true\n });\n\n return {\n data,\n mutate,\n isLoading,\n }\n}\n\nfunction minDate(a: Date, b: Date) {\n return a < b ? a : b;\n}\n\nfunction maxDate(a: Date, b: Date) {\n return a > b ? a : b;\n}","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\n\nexport type CheckReferralCodeReturns = {\n isExist?: boolean;\n error: any;\n isLoading: boolean;\n};\n\nexport const useCheckReferralCode = (\n code?: string\n): CheckReferralCodeReturns => {\n const { data, error, isLoading } = useQuery<{ exist?: boolean }>(\n typeof code === \"undefined\" || code?.length === 0\n ? null\n : `/v1/public/referral/verify_ref_code?referral_code=${code}`\n );\n\n if (typeof code === \"undefined\") {\n return {\n isExist: false,\n error: \"The code is undefined\",\n isLoading: false,\n };\n }\n\n return {\n isExist: data?.exist,\n error,\n isLoading,\n };\n};\n","import { useQuery } from \"../useQuery\";\n\nexport const useGetReferralCode = (\n accountId?: string\n): {\n referral_code?: string;\n error: any;\n isLoading: boolean;\n} => {\n const { data, error, isLoading } = useQuery<{ referral_code?: string }>(\n typeof accountId === \"undefined\" ? null : `/v1/public/referral/check_ref_code?account_id=${accountId}`\n );\n\n if (typeof accountId === \"undefined\") {\n return {\n referral_code: undefined,\n error: \"The account id is empty or undefined\",\n isLoading: false,\n };\n }\n\n return {\n referral_code: data?.referral_code,\n error,\n isLoading,\n };\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { RefferalAPI } from \"./api\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const useReferralInfo = ():{\n data?: RefferalAPI.ReferralInfo;\n isTrader?: boolean;\n isAffiliate?: boolean;\n error: any;\n isLoading: boolean;\n getFirstRefCode: () => RefferalAPI.ReferralCode | undefined;\n} => {\n const {\n data,\n mutate,\n isLoading,\n error,\n } = usePrivateQuery<RefferalAPI.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: true,\n });\n\n const isTrader = useMemo(() => {\n if (typeof data?.referee_info?.referer_code === 'undefined') return undefined;\n return (data?.referee_info?.referer_code?.length || 0) > 0;\n }, [data?.referee_info]);\n \n const isAffiliate = useMemo(() => {\n if (typeof data?.referrer_info?.referral_codes === 'undefined') return undefined;\n return (data?.referrer_info?.referral_codes?.length || 0) > 0;\n }, [data?.referrer_info]);\n\n\n const [pinCodes] = useLocalStorage<string[]>(\"orderly_referral_codes\", [] as string[]);\n\n const getFirstRefCode = useCallback(() : RefferalAPI.ReferralCode | undefined => {\n\n if (!data?.referrer_info.referral_codes) return undefined;\n const referralCodes = [...data?.referrer_info.referral_codes];\n\n const pinedItems: RefferalAPI.ReferralCode[] = [];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n\n const index = referralCodes.findIndex((item) => item.code === code);\n if (index !== -1) {\n\n pinedItems.push({ ...referralCodes[index]});\n referralCodes.splice(index, 1);\n }\n\n }\n\n const newCodes = [...pinedItems, ...referralCodes];\n\n return newCodes?.[0];\n }, [pinCodes, data]);\n \n\n return {\n data,\n isTrader,\n isAffiliate,\n error,\n isLoading,\n getFirstRefCode,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { TWType } from \"./types\";\nimport { useQuery } from \"../useQuery\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport type EpochInfoItem = {\n epoch_id: number;\n start_time: number;\n end_time: number;\n // power_fees_paid_major: number;\n // power_fees_paid_alts: number;\n // power_staked_major: number;\n // power_staked_alts: number;\n epoch_token: string;\n max_reward_amount: number;\n // k_constant_major: number;\n // k_constant_alts: number;\n};\n\nexport type EpochInfoType = [\n data: EpochInfoItem[] | undefined,\n {\n isLoading: boolean;\n curEpochInfo: EpochInfoItem | undefined;\n isUnstart: boolean;\n refresh: () => void;\n }\n];\n\nexport const useEpochInfo = (type: TWType): EpochInfoType => {\n // const [data, setData] = useState<EpochInfoItem[] | undefined>(undefined);\n const [curEpochInfo, setCurEpochInfo] = useState<EpochInfoItem | undefined>(\n undefined\n );\n\n const path =\n type === TWType.normal\n ? \"/v1/public/trading_rewards/epoch_info\"\n : \"/v1/public/market_making_rewards/epoch_info\";\n const {\n data: epochInfo,\n error,\n isLoading,\n mutate: refresh,\n } = useQuery(path, {\n formatter: (res) => {\n if (typeof res === \"object\" && \"rows\" in res! && \"current_epoch\" in res) {\n const { rows, current_epoch } = res;\n if (Array.isArray(rows)) {\n const list: EpochInfoItem[] = rows.map(\n (e: any) => e as EpochInfoItem\n );\n list.sort((a, b) => b.end_time - a.end_time);\n const curEpochIndex = list?.findIndex(\n (item: any) => item.epoch_id === current_epoch\n );\n\n const epochOne = list.find((item) => item.epoch_id === 1);\n\n if (epochOne && epochOne?.start_time > getTimestamp()) {\n // not start\n setCurEpochInfo(epochOne);\n } else {\n setCurEpochInfo(\n curEpochIndex !== -1 ? list?.[curEpochIndex] : undefined\n );\n }\n\n return list;\n }\n }\n return [];\n },\n });\n\n const isUnstart = useMemo(() => {\n // if (curEpochInfo) {\n // return curEpochInfo?.start_time > Date.now();\n // }\n // return true;\n\n const epochOne = epochInfo?.find((item) => item.epoch_id === 1);\n if (epochOne) {\n return epochOne.start_time > getTimestamp();\n }\n return true;\n }, [epochInfo]);\n\n return [epochInfo, { isLoading, curEpochInfo, isUnstart, refresh }];\n};\n","export enum TWType {\n normal = \"normal\",\n mm = \"mm\",\n}\n","import { useQuery } from \"../useQuery\";\n\nexport type Brokers = {\n [key: string]: string;\n}\n\nexport const useAllBrokers = () => {\n\n const { data } = useQuery<Brokers | undefined>(\"/v1/public/broker/name\", {\n formatter: (res) => {\n const { rows } = res;\n\n return rows\n ?.map((item: any) => ({ [item.broker_id]: item.broker_name }))\n .reduce((acc: any, curr: any) => ({ ...acc, ...curr }), {});\n },\n });\n\n return [data] as const;\n};\n","\nimport { useEffect, useMemo, useState } from \"react\";\nimport { TWType } from \"./types\";\nimport { useAccount } from \"../useAccount\";\nimport { useWalletConnector } from \"../walletConnectorContext\";\nimport { useQuery } from \"../useQuery\";\nimport { useAllBrokers } from \"./useAllBrokers\";\n\nexport type CurrentEpochEstimateRow = {\n broker_id: string;\n est_r_account: number;\n /// front end added\n broker_name: string;\n};\n\nexport type CurrentEpochEstimate = {\n est_r_wallet: string;\n est_stake_boost?: number;\n est_avg_stake?: number;\n est_trading_volume: number;\n rows: CurrentEpochEstimateRow[];\n};\n\nexport const useCurEpochEstimate = (type: TWType) => {\n const [data, setData] = useState<CurrentEpochEstimate | undefined>(undefined);\n // const { address, brokers, isNotSupportChain } = useAppContext();\n const { account } = useAccount();\n\n const brokers = useAllBrokers();\n\n /// TODO: use right value\n const isNotSupportChain = false;\n\n const address = account.address;\n\n\n\n const path =\n type === TWType.normal\n ? `/v1/public/trading_rewards/current_epoch_estimate?address=${address}`\n : `/v1/public/market_making_rewards/current_epoch_estimate?address=${address}`;\n const { data: estimateData } = useQuery<CurrentEpochEstimate | undefined>(address !== undefined ? path : '', {\n formatter: (res: any) => {\n const data = {\n ...res,\n rows:\n res.rows?.map((item: any) => ({\n ...item,\n broker_name: item.broker_id,\n })) || [],\n est_trading_volume: res?.est_maker_volume || res?.est_trading_volume,\n };\n return data;\n }\n });\n \n\n\n const reuslt = useMemo(() => {\n if (estimateData) {\n const newData = { ...estimateData };\n newData.rows = newData.rows?.map((item: any) => ({\n ...item,\n broker_name: brokers[item.broker_id] || item.broker_id,\n }));\n\n return newData;\n }\n return data;\n }, [estimateData, brokers]);\n\n return [reuslt] as const;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useAllBrokers } from \"./useAllBrokers\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\n// import { assert } from \"ethers\";\n\nexport type AccountRewardsHistoryRow = {\n broker_id: string;\n wallet_epoch_avg_staked?: number;\n trader_score_major?: number;\n trader_score_alts?: number;\n epoch_token?: string;\n reward_status?: string;\n r_major?: number;\n r_alts?: number;\n r_account?: number;\n broker_name?: string;\n};\n\nexport type AccountRewardsHistory = {\n epoch_id: number;\n broker: AccountRewardsHistoryRow[];\n};\n\nexport const useAccountRewardsHistory = (address?: string) => {\n const [brokers] = useAllBrokers();\n const { data } = usePrivateQuery<AccountRewardsHistory[] | undefined>(\n `/v1/public/trading_rewards/account_rewards_history?address=${\n address ?? \"\"\n }`,\n {\n revalidateOnFocus: false,\n formatter: (res) => {\n const data = res?.rows?.map((e: any) => {\n e.broker = e.broker.map((item: any) => ({\n ...item,\n broker_name: item?.broker_id,\n }));\n return {\n epoch_id: e.epoch_id,\n broker: e.broker,\n };\n });\n\n return data;\n },\n }\n );\n\n const result = useMemo(() => {\n if (data && brokers) {\n const newData = [...data];\n newData.forEach((data) => {\n const list = data.broker;\n for (let i = 0; i < list.length; i++) {\n const broker = list[i];\n\n const name = brokers[broker.broker_id];\n list[i].broker_name = name || list[i].broker_name;\n }\n });\n return newData;\n }\n return data;\n }, [data, brokers]);\n\n return { data: result };\n};\n","// import { ethers } from \"ethers\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { getContractByEnv } from \"./abis/contrast\";\nimport { toOrder } from \"./utils\";\nimport { useGetEnv } from \"./useGetEnv\";\nimport { useAccount } from \"../useAccount\";\n\nexport enum DistributionId {\n order = 0,\n esORder = 1,\n mmOrder = 2,\n mmEsOrder = 3,\n}\n\nexport const useGetClaimed = (\n id: DistributionId\n): [\n number | undefined,\n {\n refresh: () => void;\n }\n] => {\n const [data, setData] = useState<number | undefined>(0);\n const { account } = useAccount();\n // account.wallet?.callOnChain\n const address = account.address;\n // const rpc = useRef<string | undefined>(undefined);\n // const provider = useRef<ethers.AbstractProvider | undefined>(undefined);\n // const contract = useRef<ethers.Contract | undefined>(undefined);\n const env = useGetEnv();\n\n // useEffect(() => {\n // const params = getContractByEnv(env);\n // rpc.current = params.orderlyChainRpcUrl;\n // provider.current = ethers.getDefaultProvider(rpc.current);\n // contract.current = new ethers.Contract(\n // params.orderlyContract,\n // params.orderlyContractABI,\n // provider.current\n // );\n // }, []);\n\n const refresh = useCallback(() => {\n const params = getContractByEnv(env);\n if (\n typeof address === \"undefined\"\n // ||\n // typeof rpc.current === \"undefined\" ||\n // typeof provider.current === \"undefined\" ||\n // typeof contract.current === \"undefined\"\n )\n return;\n\n console.log(`get claimed(${id})`, [id, address]);\n account.walletAdapter\n ?.callOnChain(\n // @ts-ignore\n { public_rpc_url: params.orderlyChainRpcUrl },\n params.orderlyContract,\n \"getClaimed\",\n [id, address],\n {\n abi: params.orderlyContractABI,\n }\n )\n .catch((error: any) => {\n // const parsedEthersError = getParsedEthersError(error);\n // throw parsedEthersError;\n throw error;\n })\n .then((res: any) => {\n const resOrder = toOrder(res);\n // const resOrder = toOrder(BigInt(2921867952260000000000));\n console.log(`new get claimed(${id})`, resOrder);\n setData(resOrder);\n })\n .catch((error: any) => {});\n\n // contract.current[\"getClaimed\"]\n // .apply(null, [id, address])\n // .catch((error: any) => {\n // const parsedEthersError = getParsedEthersError(error);\n // throw parsedEthersError;\n // })\n // .then((res: any) => {\n // const resOrder = toOrder(res);\n // // const resOrder = toOrder(BigInt(2921867952260000000000));\n // console.log(`get claimed(${id})`, resOrder);\n // setData(resOrder);\n // })\n // .catch((error: any) => {});\n }, [address, env]);\n\n useEffect(() => {\n refresh();\n }, [env, id, address]);\n\n return [data, { refresh }];\n};\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDelegate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidEndpointCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidLocalDecimals\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"InvalidOptions\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LzTokenUnavailable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"NoPeer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"msgValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"NotEnoughNative\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"addr\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyEndpoint\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"OnlyPeer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlySelf\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"result\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"SimulationResult\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"SlippageExceeded\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"msgType\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct EnforcedOptionParam[]\",\n \"name\": \"_enforcedOptions\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"EnforcedOptionSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"inspector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MsgInspectorSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"toAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OFTReceived\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"fromAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountSentLD\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OFTSent\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"PeerSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"preCrimeAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"PreCrimeSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"SEND\",\n \"outputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"\",\n \"type\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SEND_AND_CALL\",\n \"outputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"\",\n \"type\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"origin\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"allowInitializePath\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"approvalRequired\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"_nonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_payloadHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"burnInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"_origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"clearInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"_msgType\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_extraOptions\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"combineOptions\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimalConversionRate\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"endpoint\",\n \"outputs\": [\n {\n \"internalType\": \"contract ILayerZeroEndpointV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"msgType\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"enforcedOptions\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"enforcedOption\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_lzEndpoint\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isComposeMsgSender\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isPeer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"_origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_executor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"lzReceive\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"executor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct InboundPacket[]\",\n \"name\": \"_packets\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"lzReceiveAndRevert\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"_origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_executor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"lzReceiveSimulate\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"maxReceivedNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"msgInspector\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"nextNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"_nonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_payloadHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"nilifyInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"oApp\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"oAppVersion\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"senderVersion\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"receiverVersion\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"oftVersion\",\n \"outputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"orderedNonce\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"peers\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"preCrime\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"to\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraOptions\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"oftCmd\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct SendParam\",\n \"name\": \"_sendParam\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"quoteOFT\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxAmountLD\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct OFTLimit\",\n \"name\": \"oftLimit\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"feeAmountLD\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"description\",\n \"type\": \"string\"\n }\n ],\n \"internalType\": \"struct OFTFeeDetail[]\",\n \"name\": \"oftFeeDetails\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountSentLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct OFTReceipt\",\n \"name\": \"oftReceipt\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"to\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraOptions\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"oftCmd\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct SendParam\",\n \"name\": \"_sendParam\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_payInLzToken\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"quoteSend\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nativeFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lzTokenFee\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MessagingFee\",\n \"name\": \"msgFee\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"to\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraOptions\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"oftCmd\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct SendParam\",\n \"name\": \"_sendParam\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nativeFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lzTokenFee\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MessagingFee\",\n \"name\": \"_fee\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_refundAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"send\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nativeFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lzTokenFee\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MessagingFee\",\n \"name\": \"fee\",\n \"type\": \"tuple\"\n }\n ],\n \"internalType\": \"struct MessagingReceipt\",\n \"name\": \"msgReceipt\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountSentLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct OFTReceipt\",\n \"name\": \"oftReceipt\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"msgType\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct EnforcedOptionParam[]\",\n \"name\": \"_enforcedOptions\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"setEnforcedOptions\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_msgInspector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setMsgInspector\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_orderedNonce\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setOrderedNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setPeer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_preCrime\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setPreCrime\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"sharedDecimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"_nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"skipInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"token\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n]","[\n { \"type\": \"constructor\", \"inputs\": [], \"stateMutability\": \"nonpayable\" },\n { \"type\": \"receive\", \"stateMutability\": \"payable\" },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"string\", \"internalType\": \"string\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_msgPayload\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_msgReceipt\",\n \"inputs\": [],\n \"outputs\": [\n { \"name\": \"guid\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"nonce\", \"type\": \"uint64\", \"internalType\": \"uint64\" },\n {\n \"name\": \"fee\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MessagingFee\",\n \"components\": [\n { \"name\": \"nativeFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"lzTokenFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_oftReceipt\",\n \"inputs\": [],\n \"outputs\": [\n { \"name\": \"amountSentLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"amountReceivedLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_options\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"chainId2Eid\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint32\", \"internalType\": \"uint32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"chainedEventId\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimReward\",\n \"inputs\": [\n { \"name\": \"distributionId\", \"type\": \"uint32\", \"internalType\": \"uint32\" },\n { \"name\": \"cumulativeAmount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"merkleProof\", \"type\": \"bytes32[]\", \"internalType\": \"bytes32[]\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultOftGas\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint128\", \"internalType\": \"uint128\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eid2ChainId\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint32\", \"internalType\": \"uint32\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLzSendReceipt\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MessagingReceipt\",\n \"components\": [\n { \"name\": \"guid\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"nonce\", \"type\": \"uint64\", \"internalType\": \"uint64\" },\n {\n \"name\": \"fee\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MessagingFee\",\n \"components\": [\n { \"name\": \"nativeFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"lzTokenFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OFTReceipt\",\n \"components\": [\n { \"name\": \"amountSentLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"amountReceivedLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n },\n { \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [{ \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bool\", \"internalType\": \"bool\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n { \"name\": \"_oft\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"_usdc\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"_owner\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ledgerAddr\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ledgerChainId\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lzCompose\",\n \"inputs\": [\n { \"name\": \"from\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"_message\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lzEndpoint\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"myChainId\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"orderTokenOft\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n { \"type\": \"function\", \"name\": \"pause\", \"inputs\": [], \"outputs\": [], \"stateMutability\": \"nonpayable\" },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bool\", \"internalType\": \"bool\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payloadType2BackwardFee\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint8\", \"internalType\": \"uint8\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payloadType2DstGas\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint8\", \"internalType\": \"uint8\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint128\", \"internalType\": \"uint128\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteClaimReward\",\n \"inputs\": [\n { \"name\": \"distributionId\", \"type\": \"uint32\", \"internalType\": \"uint32\" },\n { \"name\": \"user\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"cumulativeAmount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"merkleProof\", \"type\": \"bytes32[]\", \"internalType\": \"bytes32[]\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteSendUserRequest\",\n \"inputs\": [\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"user\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteStakeOrder\",\n \"inputs\": [\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"callerConfirmation\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sendUserRequest\",\n \"inputs\": [\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setChainId2Eid\",\n \"inputs\": [\n { \"name\": \"chainId\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"eid\", \"type\": \"uint32\", \"internalType\": \"uint32\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDefaultOftGas\",\n \"inputs\": [{ \"name\": \"_defaultOftGas\", \"type\": \"uint128\", \"internalType\": \"uint128\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setLedgerInfo\",\n \"inputs\": [\n { \"name\": \"_ledgerChainId\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"_ledgerAddr\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setLzEndpoint\",\n \"inputs\": [{ \"name\": \"_lzEndpoint\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMyChainId\",\n \"inputs\": [{ \"name\": \"_myChainId\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOrderTokenOft\",\n \"inputs\": [{ \"name\": \"_orderTokenOft\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPayloadType2BackwardFee\",\n \"inputs\": [\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" },\n { \"name\": \"backwardFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPayloadType2DstGas\",\n \"inputs\": [\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" },\n { \"name\": \"dstGas\", \"type\": \"uint128\", \"internalType\": \"uint128\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"stakeOrder\",\n \"inputs\": [{ \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [{ \"name\": \"interfaceId\", \"type\": \"bytes4\", \"internalType\": \"bytes4\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bool\", \"internalType\": \"bool\" }],\n \"stateMutability\": \"view\"\n },\n { \"type\": \"function\", \"name\": \"unpause\", \"inputs\": [], \"outputs\": [], \"stateMutability\": \"nonpayable\" },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"inputs\": [\n { \"name\": \"newImplementation\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"data\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"usdcAddr\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimRewardTokenTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimUsdcRevenueTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimVestingRequestTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [{ \"name\": \"version\", \"type\": \"uint64\", \"indexed\": false, \"internalType\": \"uint64\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [{ \"name\": \"account\", \"type\": \"address\", \"indexed\": false, \"internalType\": \"address\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"previousAdminRole\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"newAdminRole\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"sender\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"sender\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [{ \"name\": \"account\", \"type\": \"address\", \"indexed\": false, \"internalType\": \"address\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Upgraded\",\n \"inputs\": [{ \"name\": \"implementation\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WithdrawOrderTokenTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n { \"type\": \"error\", \"name\": \"AccessControlBadConfirmation\", \"inputs\": [] },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"neededRole\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }\n ]\n },\n { \"type\": \"error\", \"name\": \"AddressEmptyCode\", \"inputs\": [{ \"name\": \"target\", \"type\": \"address\", \"internalType\": \"address\" }] },\n { \"type\": \"error\", \"name\": \"AddressInsufficientBalance\", \"inputs\": [{ \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }] },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [{ \"name\": \"implementation\", \"type\": \"address\", \"internalType\": \"address\" }]\n },\n { \"type\": \"error\", \"name\": \"ERC1967NonPayable\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"EnforcedPause\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"ExpectedPause\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"FailedInnerCall\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"InvalidInitialization\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"InvalidOptionType\", \"inputs\": [{ \"name\": \"optionType\", \"type\": \"uint16\", \"internalType\": \"uint16\" }] },\n { \"type\": \"error\", \"name\": \"NotInitializing\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"ReentrancyGuardReentrantCall\", \"inputs\": [] },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n { \"name\": \"bits\", \"type\": \"uint8\", \"internalType\": \"uint8\" },\n { \"name\": \"value\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n },\n { \"type\": \"error\", \"name\": \"SafeERC20FailedOperation\", \"inputs\": [{ \"name\": \"token\", \"type\": \"address\", \"internalType\": \"address\" }] },\n { \"type\": \"error\", \"name\": \"UUPSUnauthorizedCallContext\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"UUPSUnsupportedProxiableUUID\", \"inputs\": [{ \"name\": \"slot\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }] }\n]","[\n {\n \"inputs\": [],\n \"name\": \"AccessControlBadConfirmation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"neededRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AmountIsGreaterThanCollectedValor\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AmountIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BatchIsNotCreatedYet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BatchIsNotFinished\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BatchValorToUsdcRateIsNotFixed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"CannotUpdateRoot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderDeposited\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderRequested\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DepositNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DistributionAlreadyExists\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DistributionNotFound\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidMerkleProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoActiveMerkleRoot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoPendingUnstakeRequest\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"NothingToClaim\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProposedMerkleRootIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RedemptionAmountIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"StakingBalanceInsufficient\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"StartTimestampIsInThePast\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ThisMerkleRootIsAlreadyProposed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TokenIsNotSupportedForDistribution\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TooEarlyUsdcNetFeeRevenueUpdate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnlockTimeNotPassedYet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedPayloadType\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_requestId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UserDontHaveVestingRequest\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ValorPerSecondExceedsMaxValue\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingAmountIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingLinearPeriodIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingLockPeriodIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingLockPeriodNotPassed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingPeriodIsOutOfRange\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint16\",\n \"name\": \"batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"BatchPreparedToClaim\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint16\",\n \"name\": \"batchId\",\n \"type\": \"uint16\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"fixedValorToUsdcRate\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"BatchValorToUsdcRateIsFixed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"usdcNetFeeRevenue\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"totalUsdcInTreasure\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"totalValorAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"valorToUsdcRateScaled\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DailyUsdcNetFeeRevenueUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"eventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"DistributionCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"EsOrderUnstake\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"totalUnstakedAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderUnstakeAmount\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"pendingOrderAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderUnstakeCancelled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderUnstakeRequested\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"RewardsClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"eventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"RootProposed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"eventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"RootUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Staked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"usdcAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UsdcRevenueClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint16\",\n \"name\": \"batchId\",\n \"type\": \"uint16\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"valorAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ValorRedeemed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderStakedBack\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"VestingCanceled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderBurned\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountOrderVested\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"vestedPeriod\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"VestingClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderRequested\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"VestingRequested\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"ROOT_UPDATER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TREASURE_UPDATER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALOR_TO_USDC_RATE_PRECISION\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"accValorPerShareScaled\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"batchPreparedToClaim\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"batches\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"claimable\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"redeemedValorAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fixedValorToUsdcRateScaled\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_requestId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"calculateVestingOrderAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"canUpdateRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"collectedValor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"_token\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"createDistribution\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_usdcNetFeeRevenue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"dailyUsdcNetFeeRevenue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"fixBatchValorToUsdcRate\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"getBatchChainedValorAmount\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Revenue.ChainedAmount[]\",\n \"name\": \"\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"getBatchInfo\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"batchStartTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"batchEndTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"claimable\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"redeemedValorAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fixedValorToUsdcRateScaled\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getClaimed\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getCurrentBatchId\",\n \"outputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"\",\n \"type\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getDistribution\",\n \"outputs\": [\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getOrderAvailableToWithdraw\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"orderAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getProposedRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getStakingInfo\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"orderBalance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"esOrderBalance\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"getUsdcAmountForBatch\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Revenue.ChainedAmount[]\",\n \"name\": \"chainedUsdcAmount\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_chainId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getUserRedeemedValorAmountForBatchAndChain\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getUserValor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getUserVestingRequests\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"esOrderAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Vesting.VestingRequest[]\",\n \"name\": \"\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"hasPendingRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_occAdaptor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_orderCollector\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IOFT\",\n \"name\": \"_orderTokenOft\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_valorPerSecond\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_maximumValorEmission\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"isDistributionRecordBased\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"lastUsdcNetFeeRevenueUpdateTimestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"lastValorUpdateTimestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"srcChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"payloadType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"payload\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct OCCVaultMessage\",\n \"name\": \"message\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"ledgerRecvFromVault\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maximumValorEmission\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"occAdaptor\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"orderCollector\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"orderTokenOft\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"proposeRoot\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"callerConfirmation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_occAdaptor\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOccAdaptor\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_orderCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOrderCollector\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IOFT\",\n \"name\": \"_orderTokenOft\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOrderTokenOft\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_valorPerSecond\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setValorPerSecond\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"srcChainIdToEventId\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"startTimestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalStakedAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalUsdcInTreasure\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalValorAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalValorEmitted\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unstakeLockPeriod\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"updateRoot\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"updateValorVars\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"userPendingUnstake\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balanceOrder\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"userTotalStakingBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"valorPerSecond\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"valorToUsdcRateScaled\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"vestingLinearPeriod\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"vestingLockPeriod\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n]\n","import { useContext } from \"react\";\nimport { OrderlyContext } from \"../orderlyContext\";\n\nexport enum ENVType {\n prod = 'prod',\n staging = 'staging',\n qa = 'qa',\n dev = 'dev',\n}\n\nexport const useGetEnv = (): ENVType => {\n const { configStore } = useContext(OrderlyContext);\n const baseUrl =\n configStore.get(\"apiBaseUrl\") || \"https://api-evm.orderly.org\";\n switch (baseUrl) {\n case \"https://testnet-api-evm.orderly.org\":\n return ENVType.staging;\n case \"https://dev-api-iap-v2.orderly.org\":\n return ENVType.dev;\n case \"https://qa-api-evm.orderly.org\":\n return ENVType.qa;\n default:\n return ENVType.prod;\n }\n};\n","import orderTokenAbi from './orderTokenAbi.json';\nimport contractABI from \"./proxyLedgerAbi.json\";\nimport omnichainLedgerV1ABI from \"./OmnichainLedgerV1ABI.json\";\nimport { ENVType } from \"../useGetEnv\";\n\nexport const orderlySepolia = \"0x1cB262C876AE47A75Ec354D89766593839681C29\";\nexport const arbitrumSepolia = \"0x13b2d9219e4afb48c085e60a9cfacbc193a61f43\";\n\n\n/**\n * 1. orderlyTokenAdress :\n * ETH L1 : ORDER Token\n * Other chains : ORDER Token\n * 2. orderlyContract : Ledger Test Address\n * 3. contract : Ledger Proxy\n */\ninterface ContractDataInterface {\n\n orderTokenAddress: string,\n orderTokenAddressOnEthereum: string;\n orderTokenAbi: Object,\n orderlyContract: string,\n orderlyContractABI: any,\n contract: string,\n contractABI: any,\n orderlyChainRpcUrl: string;\n}\n\nexport function getOrderlyChainRPC(env: ENVType) {\n if (env === ENVType.prod) {\n return \"https://rpc.orderly.network\";\n }\n return \"https://testnet-rpc.orderly.org\";\n}\n\nexport const getContractByEnv = (env: ENVType): ContractDataInterface => {\n const data = {\n orderTokenAddress: '',\n orderTokenAddressOnEthereum: '',\n orderTokenAbi,\n orderlyContract: orderlySepolia,\n orderlyContractABI: omnichainLedgerV1ABI,\n contract: arbitrumSepolia,\n contractABI: contractABI,\n orderlyChainRpcUrl: getOrderlyChainRPC(env),\n\n }\n\n // only order token address and orderlyContract split dev and qa, other use qa.\n if (env === ENVType.dev) {\n\n data.orderTokenAddress = '0xe2eB2df1CA9D90c8501049bAEEEf57f111782903';\n data.orderTokenAddressOnEthereum = '0x4cdE8A33afbb7f0F80841d9AE3Ada59fA1413F38';\n data.orderlyContract = '0x741a48F39683c345Ff37A86791537154869C77D4';\n data.contract = '0x0180107E72FB14a22a776913063b8a4081E9dc94';\n }\n if (env === ENVType.qa) {\n data.orderTokenAddress = '0x562874e9fcb02Ae6164781EcFb4AeAa169E99B18';\n data.orderTokenAddressOnEthereum = '0x8F7c2c827f0E9248CB5cf81fE732FDa62207F09c';\n data.orderlyContract = '0xf4EFdE916687eFBa271b1eDf436B206b285bc478';\n data.contract = '0xB20A18d8A53Ea23A5E8da32465De374f942693D7';\n\n }\n if (env === ENVType.staging) {\n data.orderTokenAddress = '0x5f11B4510BC50EfB82Fb55D7839a46e9b621f8C2';\n data.orderTokenAddressOnEthereum = '0x48465104e96AEE47bdD0E40dD40b1DFE1a66e232';\n data.orderlyContract = '0xAFEabBA48Aa0D33267a4ADf92a63C3E1A1284AB5';\n data.contract = '0x912196EB2583A2f0a18FaD632ee5dB65B8C93EEf';\n }\n if (env === ENVType.prod) {\n data.orderTokenAddress = '0x4E200fE2f3eFb977d5fd9c430A41531FB04d97B8';\n data.orderTokenAddressOnEthereum = '0xABD4C63d2616A5201454168269031355f4764337';\n data.orderlyContract = '0x7819704B69a38fD63Cc768134b8410dc08B987D0';\n data.contract = '0xC8A8Ce0Ab010E499ca57477AC031358febCbbF17'; \n }\n\n return data;\n}","import { Decimal } from \"@orderly.network/utils\";\n\n// input a bigint, return value/(10^18) number\nexport function toOrder(value?: bigint): number | undefined {\n if (value === null || value === BigInt(0)) {\n return value === BigInt(0) ? 0 : undefined;\n }\n \n const decimalValue = new Decimal(value!.toString()).div(1e18); \n return Number(decimalValue.toFixed(18));\n }\n \n // input a number | string, return value*(10^18) string\n export function toUint(value?: number | string) : string | undefined {\n if (typeof value === 'undefined') return undefined;\n // 创建 Decimal 对象\n const decimalValue = new Decimal(value);\n \n // 计算 value * (10^18)\n const result = decimalValue.mul(new Decimal('1e18'));\n \n // 将结果转换为字符串并返回\n return result.toFixed(0);\n }","import { TWType } from \"./types\";\nimport { useAccount } from \"../useAccount\";\nimport { useQuery } from \"../useQuery\";\n\nexport type WalletRewardsItem = {\n epoch_id: number;\n wallet_epoch_avg_staked: number;\n epoch_token: string;\n max_reward_amount: number;\n reward_status: string;\n r_wallet: number;\n};\n\nexport type WalletRewards = {\n wallet_lifetime_trading_rewards_order: string;\n wallet_lifetime_trading_rewards_escrow: string;\n rows: WalletRewardsItem[];\n};\n\nexport type WalletRewardsHisotryReturns = [\n WalletRewards | undefined,\n {\n refresh: () => void;\n error?: any;\n }\n];\n\nexport const useWalletRewardsHistory = (type: TWType): WalletRewardsHisotryReturns => {\n const { account } = useAccount();\n\n const address = account.address;\n const isNotSupportChain = false;\n\n const path =\n type === TWType.normal\n ? `/v1/public/trading_rewards/wallet_rewards_history?address=${address}`\n : `/v1/public/market_making_rewards/group_rewards_history?address=${address}`;\n\n const {\n data,\n mutate: refresh,\n error,\n } = useQuery(address !== undefined ? path : \"\", {\n formatter: (res) => {\n return {\n wallet_lifetime_trading_rewards_order:\n res?.group_lifetime_mm_rewards_order ||\n res?.wallet_lifetime_trading_rewards_order ||\n 0,\n wallet_lifetime_trading_rewards_escrow:\n res?.group_lifetime_mm_rewards_escrow ||\n res?.wallet_lifetime_trading_rewards_escrow ||\n 0,\n rows: (res?.rows || []).map((item: any) => ({\n ...item,\n r_wallet: item?.total_reward || item?.r_wallet,\n })),\n } as WalletRewards;\n },\n });\n return [data, { refresh, error }];\n};\n","import { useCallback } from \"react\";\nimport { useMutation } from \"../useMutation\";\nimport { useAccount } from \"../useAccount\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\n\nexport type APIKeyItem = {\n orderly_key: string;\n key_status: string;\n ip_restriction_list: string[];\n ip_restricion_status: string;\n expiration: number;\n tag?: any;\n scope?: string;\n};\n\nexport enum ScopeType {\n trade = \"trade\",\n trading = \"trading\",\n tradeAndTrading = \"trade,trading\",\n}\n\nexport const useApiKeyManager = (queryParams?: {\n keyInfo?: {\n page?: number;\n size?: number;\n keyStatus?: string;\n };\n}) => {\n const { account } = useAccount();\n const { keyInfo } = queryParams || {};\n\n const keyInfoPrams = getQueryParamsFromObject(keyInfo);\n\n const { data, mutate, error, isLoading } = usePrivateQuery<APIKeyItem[]>(\n `/v1/client/key_info${keyInfoPrams.length > 0 ? `?${keyInfoPrams}` : ''}`,\n {\n formatter: (data) => data?.rows,\n }\n );\n\n const [doIPRestriction] = useMutation(\n \"/v1/client/set_orderly_key_ip_restriction\",\n \"POST\"\n );\n\n const [doRemoveOrderKey] = useMutation(\n \"/v1/client/remove_orderly_key\",\n \"POST\"\n );\n\n const [doResetIPRestriction] = useMutation(\n '/v1/client/reset_orderly_key_ip_restriction',\n \"POST\",\n );\n\n /** ip_restriction_list is [\"192.168.1.1\", \"192.168.1.2\"].join(\",\") */\n const setIPRestriction = useCallback(\n (orderly_key: string, ip_restriction_list: string): Promise<any> => {\n return doIPRestriction({\n orderly_key,\n ip_restriction_list,\n });\n },\n []\n );\n\n const removeOrderkyKey = useCallback((orderly_key: string): Promise<any> => {\n return doRemoveOrderKey({\n orderly_key,\n });\n }, []);\n\n const generateOrderlyKey = (\n scope?: ScopeType\n ): Promise<{\n key: string;\n secretKey: string;\n }> => {\n return account?.createApiKey(365, {\n tag: \"manualCreated\",\n scope,\n });\n };\n\n\n const resetOrderlyKeyIPRestriction = (orderlyKey: string, mode: \"ALLOW_ALL_IPS\" | \"DISALLOW_ALL_IPS\") => {\n return doResetIPRestriction({\n orderly_key: orderlyKey,\n reset_mode: mode,\n });\n };\n return [\n data,\n {\n refresh: mutate,\n error,\n isLoading,\n generateOrderlyKey,\n setIPRestriction,\n removeOrderkyKey,\n resetOrderlyKeyIPRestriction,\n },\n ] as const;\n};\n\n\nfunction getQueryParamsFromObject(obj?: Record<string, any>): string {\n if (typeof obj === 'undefined') return '';\n const queryParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n value.forEach((item) => {\n queryParams.append(key, item.toString());\n });\n } else {\n queryParams.set(key, value.toString());\n }\n }\n }\n\n return queryParams.toString();\n}"]}
|
|
1
|
+
{"version":3,"sources":["../src/version.ts","../src/useQuery.ts","../src/utils/fetcher.ts","../src/useConfig.ts","../src/orderlyContext.ts","../src/useLazyQuery.ts","../src/useMutation.ts","../src/useAccountInstance.ts","../src/usePrivateQuery.ts","../src/middleware/signatureMiddleware.ts","../src/useAccount.ts","../src/usePrivateInfiniteQuery.ts","../src/useBoolean.ts","../src/usePreloadData.ts","../src/useEventEmitter.ts","../src/useSessionStorage.ts","../src/utils/json.ts","../src/useLocalStorage.ts","../src/index.ts","../src/useWS.ts","../src/useKeyStore.ts","../src/useSimpleDI.ts","../src/statusProvider.tsx","../src/useWsStatus.ts","../src/configProvider.tsx","../src/dataProvider.tsx","../src/orderly/usePrivateDataObserver.ts","../src/utils/swr.ts","../src/services/orderMerge/baseMergeHandler.ts","../src/utils/ws.ts","../src/services/orderMerge/algoOrderMergeHandler.ts","../src/services/orderMerge/regularOrderMergeHandler.ts","../src/dev/proxyConfigStore.ts","../src/walletConnectorContext.tsx","../src/orderly/useOrderbookStream.ts","../src/orderly/useTickerStream.ts","../src/orderly/useMarkPrice.ts","../src/orderly/useIndexPrice.ts","../src/orderly/useOpenInterest.ts","../src/unuse/useFetures.ts","../src/orderly/useSymbolsInfo.ts","../src/utils/createGetter.ts","../src/orderly/orderbook.service.ts","../src/orderly/useOrderEntry.ts","../src/utils/orderEntryHelper.ts","../src/orderly/useCollateral.ts","../src/orderly/usePositionStream/usePositionStream.ts","../src/orderly/useFundingRates.ts","../src/orderly/useMarkPricesStream.ts","../src/utils/parseHolding.ts","../src/orderly/useMarketsStream.ts","../src/orderly/usePositionStream/utils.ts","../src/orderly/useHoldingStream.ts","../src/orderly/useMaxQty.ts","../src/orderly/useOrderStream/useOrderStream.ts","../src/services/orderCreator/factory.ts","../src/services/orderCreator/baseCreator.ts","../src/utils/createOrder.ts","../src/services/orderCreator/marketOrderCreator.ts","../src/services/orderCreator/limitOrderCreator.ts","../src/services/orderCreator/stopLimitOrderCreator.ts","../src/services/orderCreator/generalCreator.ts","../src/services/orderCreator/stopMarketOrderCreator.ts","../src/services/orderCreator/postOnlyCreator.ts","../src/services/orderCreator/fokCreator.ts","../src/services/orderCreator/iocCreator.ts","../src/services/orderCreator/tpslOrderCreator.ts","../src/services/orderCreator/baseAlgoCreator.ts","../src/services/orderCreator/tpslPositionOrderCreator.ts","../src/orderly/useAccountInfo.ts","../src/orderly/useMarkets.ts","../src/orderly/useMarketList.ts","../src/orderly/useLeverage.ts","../src/orderly/useFundingRate.ts","../src/orderly/useMarketTradeStream.ts","../src/orderly/useMarginRatio.ts","../src/orderly/useChains.ts","../src/orderly/useChain.ts","../src/orderly/useWithdraw.ts","../src/orderly/useDeposit.ts","../src/orderly/useWalletSubscription.ts","../src/orderly/useSettleSubscription.ts","../src/orderly/useSymbolPriceRange.ts","../src/orderly/useTakeProfitAndStopLoss/index.ts","../src/orderly/useTakeProfitAndStopLoss/useTPSL.ts","../src/orderly/useTakeProfitAndStopLoss/utils.ts","../src/orderly/useSymbolLeverage.ts","../src/orderly/statistics/useAssetHistory.ts","../src/orderly/statistics/useStatisticsDaily.ts","../src/orderly/statistics/useFundingFeeHistory.ts","../src/orderly/statistics/useDistributionHistory.ts","../src/orderly/useMaintenanceStatus.ts","../src/useMediaQuery.ts","../src/usePoster.ts","../src/services/painter/basePaint.ts","../src/services/painter/backgroundPaint.ts","../src/services/painter/dataPaint.ts","../src/services/painter/qrPaint.ts","../src/services/painter/painter.ts","../src/services/painter/layout.config.ts","../src/utils/index.ts","../src/referral/useCommission.ts","../src/referral/swr.ts","../src/referral/useDistribution.ts","../src/referral/useRefereeHistory.ts","../src/referral/useDaily.ts","../src/referral/format.ts","../src/referral/useReferralRebateSummary.ts","../src/referral/useRefereeInfo.ts","../src/referral/useRefereeRebateSummary.ts","../src/referral/useCheckReferralCode.ts","../src/referral/useGetReferralCode.ts","../src/referral/useReferralInfo.tsx","../src/trading-rewards/useEpochInfo.ts","../src/trading-rewards/types.ts","../src/trading-rewards/useAllBrokers.ts","../src/trading-rewards/useCurEpochEstimate.ts","../src/trading-rewards/useAccountRewardHistory.ts","../src/trading-rewards/useGetClaimed.ts","../src/trading-rewards/abis/orderTokenAbi.json","../src/trading-rewards/abis/proxyLedgerAbi.json","../src/trading-rewards/abis/OmnichainLedgerV1ABI.json","../src/trading-rewards/useGetEnv.ts","../src/trading-rewards/abis/contrast.ts","../src/trading-rewards/utils.ts","../src/trading-rewards/useWalletRewardsHistory.ts","../src/apiKeys/useApiKeyManager.ts"],"names":["options","useSWRMutation","useContext","account","fetcher","data","useSWR","SimpleDI","getTimestamp","get","AccountStatusEnum","useCallback","useState","useEffect","useConstant","default","Account","getGlobalObject","createContext","useRef","WsNetworkStatus","useMemo","mutate","lensIndex","over","i","jsx","useSWRSubscription","sortedData","Decimal","SDKError","symbol","depth","OrderSide","OrderType","getPrecisionByNumber","pick","AlgoOrderRootType","OrderStatus","order","totalCollateral","totalValue","totalUnrealizedROI","pathOr","zero","usdc","positions","includes","orders","positionsPath","orderUntil","maxPrice","minPrice","scropePrice","TriggerPriceType","AlgoOrderType","oldOrder","errors","symbolOrOrder","MarketsType","tabs","favorites","type","markets","get8hFunding","get24hChange","est_funding_rate","prop","networkId","chainsInfoMap","isTestnet","ARBITRUM_MAINNET_CHAINID","ARBITRUM_TESTNET_CHAINID","useDebouncedCallback","balance","allowance","quantity","omit","AssetHistoryStatusEnum","startDate","endDate","brokerName","unstable_serialize","query","ref","generateKeyFun","path","max","min","TWType","ENVType","DistributionId"],"mappings":"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","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\"] = \"2.0.0\";\n};\n\nexport default \"2.0.0\";\n","import useSWR, { SWRResponse } from \"swr\";\nimport { fetcher, useQueryOptions } from \"./utils/fetcher\";\nimport { useConfig } from \"./useConfig\";\n\n/**\n * useQuery\n * @description for public api\n * @param query\n * @param options\n */\nexport const useQuery = <T>(\n query: Parameters<typeof useSWR>[\"0\"],\n options?: useQueryOptions<T>\n): SWRResponse<T> => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n const { formatter, ...swrOptions } = options || {};\n\n if (typeof apiBaseUrl === \"undefined\") {\n throw new Error(\"please add OrderlyConfigProvider to your app\");\n }\n\n // @ts-ignore\n return useSWR<T>(\n query,\n (url, init) =>\n fetcher(url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`, init, {\n formatter,\n }),\n swrOptions\n );\n};\n","import { get } from \"@orderly.network/net\";\nimport { type SWRConfiguration } from \"swr\";\n\nexport const fetcher = (\n url: string,\n init: RequestInit = {},\n queryOptions: useQueryOptions<any>\n) => get(url, init, queryOptions?.formatter);\n\nexport type useQueryOptions<T> = SWRConfiguration & {\n formatter?: (data: any) => T;\n};\n","import { useContext } from \"react\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { ConfigStore, type ConfigKey } from \"@orderly.network/core\";\n\nexport function useConfig(): ConfigStore;\nexport function useConfig<T = string>(key: ConfigKey, defaultValue?: T): T;\n\nexport function useConfig(key?: ConfigKey, defaultValue?: any) {\n const { configStore } = useContext(OrderlyContext);\n\n if (typeof key !== \"undefined\") {\n if (typeof defaultValue !== \"undefined\") {\n return configStore.getOr(key, defaultValue) as any;\n }\n return configStore.get(key);\n }\n\n return configStore;\n}\n","import { createContext } from \"react\";\n\nimport {\n type ConfigStore,\n type OrderlyKeyStore,\n type getWalletAdapterFunc,\n WalletAdapter,\n} from \"@orderly.network/core\";\n\nimport { Chain, NetworkId } from \"@orderly.network/types\";\nimport { Chains } from \"./orderly/useChains\";\n\nexport type filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\nexport type chainFilterFunc = (config: ConfigStore) => filteredChains;\n\nexport type chainFilter = filteredChains | chainFilterFunc;\n\nexport interface OrderlyConfigContextState {\n fetcher?: (url: string, init: RequestInit) => Promise<any>;\n\n configStore: ConfigStore;\n keyStore: OrderlyKeyStore;\n getWalletAdapter: getWalletAdapterFunc;\n walletAdapters: WalletAdapter[];\n\n networkId: NetworkId;\n\n /**\n * @hidden\n */\n onlyTestnet?: boolean;\n // extraApis:ExtraAPIs\n filteredChains?: filteredChains | null;\n customChains?: Chains<undefined, undefined>;\n}\n\nexport const OrderlyContext = createContext<OrderlyConfigContextState>({\n // configStore: new MemoryConfigStore(),\n} as OrderlyConfigContextState);\n\nexport const OrderlyProvider = OrderlyContext.Provider;\n","import useSWR from \"swr\";\nimport { fetcher } from \"./utils/fetcher\";\nimport useSWRMutation, {\n type SWRMutationConfiguration,\n SWRMutationResponse,\n} from \"swr/mutation\";\nimport { useConfig } from \"./useConfig\";\n\n/**\n * useQuery\n * @description for public api\n * @param query\n * @param options\n */\nexport const useLazyQuery = <T, R = any>(\n query: Parameters<typeof useSWR>[\"0\"],\n options?: SWRMutationConfiguration<any, any> & {\n formatter?: (data: any) => R;\n init?: RequestInit;\n }\n): SWRMutationResponse => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n const { formatter, init, ...swrOptions } = options || {};\n // check the query is public api\n // if (typeof query === \"string\" && !query.startsWith(\"/v1/public\")) {\n // throw new Error(\"useQuery is only for public api\");\n // }\n\n if (typeof apiBaseUrl === \"undefined\") {\n throw new Error(\"please add OrderlyConfigProvider to your app\");\n }\n\n // @ts-ignore\n return useSWRMutation(\n query,\n (url: string, options: any) => {\n url = url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`;\n if (options?.arg) {\n // const searchParams = new URLSearchParams(init.arg);\n // url = `${url}?${encodeURIComponent(searchParams.toString())}`;\n const queryString = Object.entries(options.arg)\n .map(\n ([key, value]) => `${key}=${encodeURIComponent(value as string)}`\n )\n .join(\"&\");\n url = `${url}?${queryString}`;\n }\n return fetcher(url, init, {\n formatter,\n });\n },\n swrOptions\n );\n};\n","import useSWRMutation, {\n TriggerWithOptionsArgs,\n type SWRMutationConfiguration,\n TriggerWithoutArgs,\n} from \"swr/mutation\";\nimport { mutate } from \"@orderly.network/net\";\nimport {\n type MessageFactor,\n type SignedMessagePayload,\n} from \"@orderly.network/core\";\nimport { useAccountInstance } from \"./useAccountInstance\";\nimport { useConfig } from \"./useConfig\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\ntype HTTP_METHOD = \"POST\" | \"PUT\" | \"DELETE\" | \"GET\";\n\nconst fetcher = (\n url: string,\n options: {\n arg: {\n data?: any;\n params?: any;\n method: HTTP_METHOD;\n signature: SignedMessagePayload;\n };\n }\n) => {\n const init: RequestInit = {\n method: options.arg.method,\n headers: {\n ...options.arg.signature,\n },\n };\n\n if (options.arg.data) {\n init.body = JSON.stringify(options.arg.data);\n }\n\n if (\n typeof options.arg.params === \"object\" &&\n Object.keys(options.arg.params).length\n ) {\n let search = new URLSearchParams(options.arg.params);\n url = `${url}?${search.toString()}`;\n }\n\n return mutate(url, init);\n};\n\n/**\n * This hook is used to execute API requests for data mutation, such as POST, DELETE, PUT, etc.\n */\nexport const useMutation = <T, E>(\n /**\n * The URL to send the request to. If the URL does not start with \"http\",\n * it will be prefixed with the API base URL.\n */\n url: string,\n /**\n * The HTTP method to use for the request. Defaults to \"POST\".\n */\n method: HTTP_METHOD = \"POST\",\n /**\n * The configuration object for the mutation.\n * @see [useSWRMutation](https://swr.vercel.app/docs/mutation#api)\n *\n * @link https://swr.vercel.app/docs/mutation#api\n */\n options?: SWRMutationConfiguration<T, E>\n) => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n\n let fullUrl = url;\n if (!url.startsWith(\"http\")) {\n fullUrl = `${apiBaseUrl}${url}`;\n }\n\n const account = useAccountInstance();\n\n const { trigger, data, error, reset, isMutating } = useSWRMutation(\n fullUrl,\n // method === \"POST\" ? fetcher : deleteFetcher,\n fetcher,\n options\n );\n\n const mutation = async (\n /**\n * The data to send with the request.\n */\n data: Record<string, any> | null,\n /**\n * The query parameters to send with the request.\n */\n params?: Record<string, any>,\n options?: SWRMutationConfiguration<T, E>\n ): Promise<any> => {\n let newUrl = url;\n if (typeof params === \"object\" && Object.keys(params).length) {\n let search = new URLSearchParams(params);\n newUrl = `${url}?${search.toString()}`;\n }\n\n const payload: MessageFactor = {\n method,\n url: newUrl,\n data,\n };\n\n const signer = account.signer;\n const signature = await signer.sign(payload, getTimestamp());\n\n return trigger(\n {\n data,\n params,\n method,\n signature: {\n ...signature,\n \"orderly-account-id\": account.accountId,\n },\n },\n options\n );\n };\n\n return [\n mutation,\n {\n data,\n error,\n reset,\n isMutating,\n },\n ] as const;\n};\n","import useConstant from \"use-constant\";\nimport { Account, SimpleDI } from \"@orderly.network/core\";\nimport { useContext } from \"react\";\nimport { OrderlyContext } from \"./orderlyContext\";\n\nexport const useAccountInstance = (): Account => {\n const { configStore, keyStore, getWalletAdapter, walletAdapters } =\n useContext(OrderlyContext);\n\n if (!configStore)\n throw new Error(\"configStore is not defined, please use OrderlyProvider\");\n\n if (!keyStore) {\n throw new Error(\n \"keyStore is not defined, please use OrderlyProvider and provide keyStore\"\n );\n }\n\n const account = useConstant(() => {\n let account = SimpleDI.get<Account>(\"account\");\n\n if (!account) {\n account = new Account(\n configStore,\n keyStore,\n // getWalletAdapter,\n walletAdapters\n );\n\n SimpleDI.registerByName(\"account\", account);\n }\n return account;\n });\n\n return account;\n};\n","import useSWR, { SWRResponse } from \"swr\";\nimport { signatureMiddleware } from \"./middleware/signatureMiddleware\";\nimport { fetcher, useQueryOptions } from \"./utils/fetcher\";\nimport { useAccount } from \"./useAccount\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\n/**\n * usePrivateQuery\n * @description for private api\n * @param query\n * @param options\n */\nexport const usePrivateQuery = <T>(\n query: string,\n options?: useQueryOptions<T>\n): SWRResponse<T> => {\n const { formatter, ...swrOptions } = options || {};\n const account = useAccount();\n const middleware = Array.isArray(options?.use) ? options?.use ?? [] : [];\n\n // @ts-ignore\n return useSWR<T>(\n () =>\n account.state.status >= AccountStatusEnum.EnableTrading\n ? [query, account.state.accountId]\n : null,\n (url: string, init: RequestInit) => {\n return fetcher(url, init, { formatter });\n },\n {\n ...swrOptions,\n use: [signatureMiddleware, ...middleware],\n onError: (err) => {},\n }\n );\n};\n","import { SWRHook, Middleware } from \"swr\";\nimport { SimpleDI, Account, MessageFactor } from \"@orderly.network/core\";\nimport { useConfig } from \"../useConfig\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const signatureMiddleware: Middleware = (useSWRNext: SWRHook) => {\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n return (key, fetcher, config) => {\n try {\n const extendedFetcher = async (args: any) => {\n let url = Array.isArray(args) ? args[0] : args;\n\n let account = SimpleDI.get<Account>(\"account\");\n let fullUrl = `${apiBaseUrl}${url}`;\n\n const signer = account.signer;\n\n const payload: MessageFactor = {\n method: \"GET\",\n url,\n };\n\n const signature = await signer.sign(payload, getTimestamp());\n\n // @ts-ignore\n return fetcher(fullUrl, {\n headers: {\n ...signature,\n \"orderly-account-id\": account.accountId,\n },\n });\n };\n return useSWRNext(key, extendedFetcher, config);\n } catch (e) {\n console.error(\"signature error:\", e);\n throw e;\n }\n };\n};\n","import { useCallback, useContext, useEffect, useState } from \"react\";\nimport { AccountState } from \"@orderly.network/core\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { useAccountInstance } from \"./useAccountInstance\";\n\nexport const useAccount = () => {\n const {\n configStore,\n keyStore,\n // onWalletConnect,\n // onWalletDisconnect,\n // onSetChain,\n } = useContext(OrderlyContext);\n\n if (!configStore)\n throw new Error(\"configStore is not defined, please use OrderlyProvider\");\n\n if (!keyStore) {\n throw new Error(\n \"keyStore is not defined, please use OrderlyProvider and provide keyStore\"\n );\n }\n\n const account = useAccountInstance();\n\n const [state, setState] = useState<AccountState>(account.stateValue);\n\n const statusChangeHandler = (nextState: AccountState) => {\n //\n setState(() => nextState);\n };\n\n useEffect(() => {\n account.on(\"change:status\", statusChangeHandler);\n\n return () => {\n account.off(\"change:status\", statusChangeHandler);\n };\n }, []);\n\n const createOrderlyKey = useCallback(\n async (remember: boolean) => {\n return account.createOrderlyKey(remember ? 365 : 30);\n },\n [account]\n );\n\n const createAccount = useCallback(async () => {\n return account.createAccount();\n }, [account]);\n\n return {\n account,\n state,\n // info: {},\n // login,\n createOrderlyKey,\n createAccount,\n // disconnect,\n // connect,\n // setChain,\n // settlement,\n };\n};\n","import useSWRInfinite, {\n type SWRInfiniteKeyLoader,\n type SWRInfiniteConfiguration,\n} from \"swr/infinite\";\nimport { signatureMiddleware } from \"./middleware/signatureMiddleware\";\nimport { get } from \"@orderly.network/net\";\nimport { useAccount } from \"./useAccount\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\n\nexport const usePrivateInfiniteQuery = <T>(\n getKey: SWRInfiniteKeyLoader,\n options?: SWRInfiniteConfiguration & {\n formatter?: (data: any) => any;\n }\n) => {\n const { formatter, ...restOptions } = options || {};\n const account = useAccount();\n\n const middleware = Array.isArray(restOptions?.use)\n ? restOptions?.use ?? []\n : [];\n\n const result = useSWRInfinite<T>(\n (pageIndex: number, previousPageData) => {\n const queryKey = getKey(pageIndex, previousPageData);\n if (account.state.status < AccountStatusEnum.EnableTrading || !queryKey) {\n return null;\n }\n return [queryKey, account.state.accountId];\n },\n (url: string, init: RequestInit) => {\n return restOptions.fetcher?.(url, init) || get(url, init, formatter);\n },\n {\n ...restOptions,\n use: [signatureMiddleware, ...middleware],\n }\n );\n\n return result;\n};\n","import { useCallback, useState } from \"react\";\n\nexport const useBoolean = (\n initialValue = false\n): [\n boolean,\n {\n setTrue: () => void;\n setFalse: () => void;\n toggle: () => void;\n }\n] => {\n const [value, setValue] = useState(initialValue);\n const setTrue = useCallback(() => setValue(true), []);\n const setFalse = useCallback(() => setValue(false), []);\n const toggle = useCallback(() => setValue((v) => !v), []);\n return [value, { setTrue, setFalse, toggle }];\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useConfig, useQuery, useSWR } from \".\";\nimport { request } from \"@orderly.network/net/src/fetch\";\nimport { getGlobalObject } from \"@orderly.network/utils\";\n\nexport const usePreLoadData = () => {\n const [timestampOffsetInitialized, setTimestampOffsetInitialized] =\n useState(false);\n const { error: tokenError, data: tokenData } = useQuery(\n \"https://api-evm.orderly.org/v1/public/token\",\n {\n revalidateOnFocus: false,\n }\n );\n\n /// get service timestamp\n /// get local timestamp\n /// calculate delta offset = SD - LD\n /// save to getGlobalObject.__ORDERLY_timestamp_offset\n\n const apiBaseUrl = useConfig(\"apiBaseUrl\");\n\n const { data: systemInfo } = useSWR(\n \"/v1/public/system_info\",\n async (url: any, init: any) => {\n const data = await fetch(\n url.startsWith(\"http\") ? url : `${apiBaseUrl}${url}`,\n init\n );\n return await data.json();\n },\n {\n errorRetryCount: 3,\n errorRetryInterval: 500,\n }\n );\n\n useEffect(() => {\n if (timestampOffsetInitialized) return;\n if (typeof systemInfo !== \"undefined\") {\n const sd = systemInfo.timestamp;\n const ld = Date.now();\n // @ts-ignore\n const diff = sd - ld;\n if (isNaN(diff)) {\n return;\n }\n (getGlobalObject() as any).__ORDERLY_timestamp_offset = diff;\n setTimestampOffsetInitialized(true);\n }\n }, [systemInfo, timestampOffsetInitialized]);\n\n const isDone = useMemo(() => {\n return !!tokenData && timestampOffsetInitialized;\n }, [timestampOffsetInitialized, tokenData]);\n\n return {\n error: tokenError,\n done: isDone,\n };\n};\n","import useConstant from \"use-constant\";\nimport { EventEmitter, SimpleDI } from \"@orderly.network/core\";\n\nexport const useEventEmitter = () => {\n return useConstant(() => {\n let ee = SimpleDI.get<EventEmitter>(\"EE\");\n\n if (!ee) {\n ee = new EventEmitter();\n\n SimpleDI.registerByName(\"EE\", ee);\n }\n return ee;\n });\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useSessionStorage<T>(\n key: string,\n initialValue: T\n): [T, (data: any) => void] {\n // Get from session storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keep keep working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.sessionStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading sessionStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n const setValue: React.Dispatch<T> = (value: any) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window == \"undefined\") {\n console.warn(\n `Tried setting sessionStorage key “${key}” even though environment is not a client`\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to session storage\n window.sessionStorage.setItem(key, JSON.stringify(newValue));\n\n // Save state\n setStoredValue(newValue);\n\n // We dispatch a custom event so every useSessionStorage hook are notified\n // window.dispatchEvent(new Event(\"session-storage\"));\n } catch (error) {\n console.warn(`Error setting sessionStorage key “${key}”:`, error);\n }\n };\n\n useEffect(() => {\n setStoredValue(readValue());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (typeof window == \"undefined\") {\n return;\n }\n window.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window.removeEventListener?.(\"storage\", handleStorageChange);\n };\n });\n\n const handleStorageChange = useCallback(\n (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n },\n [key, readValue]\n );\n\n return [storedValue, setValue];\n}\n","export function parseJSON<T>(value: string | null): T | undefined {\n try {\n return value === \"undefined\" ? undefined : JSON.parse(value ?? \"\");\n } catch {\n return undefined;\n }\n}\n","// https://usehooks-ts.com/react-hook/use-local-storage\nimport { useCallback, useEffect, useState } from \"react\";\nimport { parseJSON } from \"./utils/json\";\n\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [any, (value: T) => void] {\n // Get from local storage then\n // parse stored json or return initialValue\n const readValue = useCallback((): T => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n return initialValue;\n }\n\n try {\n const item = window.localStorage.getItem(key);\n return item ? (parseJSON(item) as T) : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key “${key}”:`, error);\n return initialValue;\n }\n }, [initialValue, key]);\n\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = useState<T>(readValue);\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue: React.Dispatch<T> = useCallback(\n (value: T) => {\n // Prevent build error \"window is undefined\" but keeps working\n if (typeof window === \"undefined\") {\n console.warn(\n `Tried setting localStorage key “${key}” even though environment is not a client`\n );\n }\n\n try {\n // Allow value to be a function so we have the same API as useState\n const newValue = value instanceof Function ? value(storedValue) : value;\n\n // Save to local storage\n window.localStorage.setItem(key, JSON.stringify(newValue));\n // dispath event\n window.dispatchEvent(new Event(\"storage\"));\n\n // Save state\n setStoredValue(() => newValue);\n\n // We dispatch a custom event so every useLocalStorage hook are notified\n // window.dispatchEvent(new Event('local-storage'))\n } catch (error) {\n console.warn(`Error setting localStorage key “${key}”:`, error);\n }\n },\n [storedValue]\n );\n\n useEffect(() => {\n setStoredValue(readValue());\n }, []);\n\n // const handleStorageChange = useCallback(\n // (event: StorageEvent | CustomEvent) => {\n // if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n // return\n // }\n // setStoredValue(readValue())\n // },\n // [key, readValue],\n // )\n\n useEffect(() => {\n const handleStorageChange = (event: StorageEvent | CustomEvent) => {\n if ((event as StorageEvent)?.key && (event as StorageEvent).key !== key) {\n return;\n }\n setStoredValue(readValue());\n };\n\n window?.addEventListener?.(\"storage\", handleStorageChange);\n\n return () => {\n window?.removeEventListener?.(\"storage\", handleStorageChange);\n };\n }, [key]);\n\n return [storedValue, setValue];\n}\n","// import \"./utils/dev\";\n\nexport { default as version } from \"./version\";\n\nexport { useQuery } from \"./useQuery\";\nexport { useLazyQuery } from \"./useLazyQuery\";\nexport { useMutation } from \"./useMutation\";\nexport { usePrivateQuery } from \"./usePrivateQuery\";\nexport { usePrivateInfiniteQuery } from \"./usePrivateInfiniteQuery\";\nexport { useBoolean } from \"./useBoolean\";\n\nexport { useAccount } from \"./useAccount\";\nexport { useAccountInstance } from \"./useAccountInstance\";\n\nexport { usePreLoadData } from \"./usePreloadData\";\n\nexport { useEventEmitter } from \"./useEventEmitter\";\n\nexport { useSessionStorage } from \"./useSessionStorage\";\nexport { useLocalStorage } from \"./useLocalStorage\";\n\nexport { parseJSON } from \"./utils/json\";\n\nexport { default as useConstant } from \"use-constant\";\nexport { useWS } from \"./useWS\";\nexport { useConfig } from \"./useConfig\";\nexport { useKeyStore } from \"./useKeyStore\";\nexport { useSimpleDI } from \"./useSimpleDI\";\n\nexport * from \"./orderlyContext\";\nexport * from \"./statusProvider\";\nexport { useWsStatus, WsNetworkStatus } from \"./useWsStatus\";\nexport type { ConfigProviderProps } from \"./configProvider\";\nexport { OrderlyConfigProvider } from \"./configProvider\";\n\nexport {\n WalletConnectorContext,\n type ConnectedChain,\n useWalletConnector,\n type WalletState,\n} from \"./walletConnectorContext\";\n\nexport * from \"./orderly/orderlyHooks\";\n\nimport useSWR, {\n type SWRConfiguration,\n SWRConfig,\n useSWRConfig,\n unstable_serialize,\n} from \"swr\";\n\nexport {\n useSWR,\n SWRConfig,\n useSWRConfig,\n type SWRConfiguration,\n unstable_serialize,\n};\n\nexport * from \"use-debounce\";\n\nexport { useMediaQuery } from \"./useMediaQuery\";\n\nexport { usePoster } from \"./usePoster\";\nexport { DefaultLayoutConfig } from \"./services/painter/layout.config\";\nexport type {\n PosterLayoutConfig,\n DrawOptions,\n} from \"./services/painter/basePaint\";\n\nexport * from \"./orderly/orderlyHooks\";\n\nexport { cleanStringStyle } from \"./utils/orderEntryHelper\";\nexport { checkNotional } from \"./utils/createOrder\";\n\nexport * as utils from \"./utils\";\n\nexport type { WalletAdapter } from \"@orderly.network/core\";\n\nexport * from \"./referral\";\n\nexport * from \"./trading-rewards\";\n\nexport * from \"./apiKeys\";\n","import { useContext, useRef } from \"react\";\nimport { Account, AccountState, SimpleDI } from \"@orderly.network/core\";\nimport { WS } from \"@orderly.network/net\";\nimport useConstant from \"use-constant\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { OrderlyContext } from \"./orderlyContext\";\nimport { getGlobalObject, getTimestamp } from \"@orderly.network/utils\";\n\nconst WS_NAME = \"nativeWebsocketClient\";\n\nexport const useWS = () => {\n const { configStore } = useContext(OrderlyContext);\n // const prevAccountState = useRef<AccountState | null>(null);\n\n const ws = useConstant(() => {\n let websocketClient = SimpleDI.get<WS>(WS_NAME);\n const account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!websocketClient) {\n websocketClient = new WS({\n networkId: configStore.get(\"networkId\"),\n publicUrl: configStore.get(\"publicWsUrl\"),\n privateUrl: configStore.get(\"privateWsUrl\"),\n onSigntureRequest: async (accountId: string) => {\n const signer = account.signer;\n const timestamp = getTimestamp();\n const result = await signer.signText(timestamp.toString());\n\n return { ...result, timestamp };\n },\n });\n\n // if user login, open the private websocket\n if (\n account.stateValue.status === AccountStatusEnum.EnableTrading &&\n account.stateValue.accountId\n ) {\n websocketClient.openPrivate(account.stateValue.accountId);\n }\n\n // open the pirvate websocket when user login\n account.on(\"change:status\", (nextState: AccountState) => {\n if (\n nextState.status === AccountStatusEnum.EnableTrading &&\n nextState.accountId\n ) {\n websocketClient.openPrivate(nextState.accountId);\n } else {\n websocketClient.closePrivate(1000, \"switch account\");\n }\n\n // prevAccountState.current = nextState;\n });\n\n if (typeof window !== \"undefined\") {\n (getGlobalObject() as any)[\"__Orderly_WS\"] = websocketClient;\n }\n\n SimpleDI.registerByName(WS_NAME, websocketClient);\n }\n\n return websocketClient;\n });\n\n // auto open private when user login;\n\n return ws;\n};\n","import { useContext } from \"react\";\n\nimport { OrderlyContext } from \"./orderlyContext\";\n\nexport const useKeyStore = () => {\n const ctx = useContext(OrderlyContext);\n\n return ctx.keyStore;\n};\n","import { SimpleDI } from \"@orderly.network/core\";\n\nexport const useSimpleDI = <T>() => {\n return {\n get: SimpleDI.get<T>,\n // getOr: SimpleDI.getOr<T>(name, SimpleDI.get<T>(name)),\n register: SimpleDI.register,\n };\n};\n","import { PropsWithChildren, createContext } from \"react\";\nimport { useWsStatus, type WsNetworkStatus } from \"./useWsStatus\";\n\nexport interface StatusContextState {\n ws?: WsNetworkStatus;\n}\n\nexport const StatusContext = createContext({} as StatusContextState);\n\nexport const StatusProvider: React.FC<PropsWithChildren> = (props) => {\n const wsStatus = useWsStatus();\n\n return (\n <StatusContext.Provider value={{ ws: wsStatus }}>\n {props.children}\n </StatusContext.Provider>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { useWS } from \"./useWS\";\n\nexport enum WsNetworkStatus {\n Connected = \"connected\",\n Unstable = \"unstable\",\n Disconnected = \"disconnected\",\n}\n\nexport function useWsStatus() {\n const ws = useWS();\n const [wsStatus, setWsStatus] = useState<WsNetworkStatus>(\n ws.client.public.readyState\n ? WsNetworkStatus.Connected\n : WsNetworkStatus.Disconnected\n );\n\n const connectCount = useRef(0);\n\n useEffect(() => {\n ws.on(\"status:change\", (status: any) => {\n console.log(\"status:change\", status);\n\n const { type, isPrivate } = status;\n if (!isPrivate) {\n switch (type) {\n case \"open\":\n connectCount.current = 0;\n setWsStatus(WsNetworkStatus.Connected);\n break;\n case \"close\":\n connectCount.current = 0;\n setWsStatus(WsNetworkStatus.Disconnected);\n break;\n case \"reconnecting\":\n connectCount.current++;\n if (connectCount.current >= 3) {\n setWsStatus(WsNetworkStatus.Unstable);\n }\n break;\n }\n }\n });\n return () => ws.off(\"websocket:status\", () => {});\n }, []);\n\n return wsStatus;\n}\n","import type { PropsWithChildren } from \"react\";\nimport React, { useLayoutEffect, useMemo } from \"react\";\nimport { OrderlyProvider } from \"./orderlyContext\";\nimport {\n ConfigStore,\n // MemoryConfigStore,\n DefaultConfigStore,\n OrderlyKeyStore,\n getWalletAdapterFunc,\n WalletAdapterOptions,\n LocalStorageStore,\n EtherAdapter,\n SimpleDI,\n Account,\n IContract,\n WalletAdapter,\n} from \"@orderly.network/core\";\n\nimport useConstant from \"use-constant\";\nimport { Chain, NetworkId } from \"@orderly.network/types\";\n// import { usePreLoadData } from \"./usePreloadData\";\nimport { DataCenterProvider } from \"./dataProvider\";\nimport { StatusProvider } from \"./statusProvider\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { ProxyConfigStore } from \"./dev/proxyConfigStore\";\nimport type { Chains } from \"./orderly/useChains\";\nimport { DefaultEVMAdapterWalletAdapter } from \"@orderly.network/default-evm-adapter\";\nimport { DefaultSolanaWalletAdapter } from \"@orderly.network/default-solana-adapter\";\nimport { EthersProvider } from \"@orderly.network/web3-provider-ethers\";\n// import { useParamsCheck } from \"./useParamsCheck\";\n\ntype RequireOnlyOne<T, U extends keyof T = keyof T> = Omit<T, U> &\n {\n [K in U]-?: Required<Pick<T, K>> & Partial<Record<Exclude<U, K>, never>>;\n }[U];\n\ntype RequireAtLeastOne<T, R extends keyof T = keyof T> = Omit<T, R> &\n {\n [K in R]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<R, K>>>;\n }[R];\n\ntype filteredChains = {\n mainnet?: Chain[];\n testnet?: Chain[];\n};\n\ntype filterChainsFunc = (config: ConfigStore) => filteredChains;\n\nexport interface ConfigProviderProps {\n configStore?: ConfigStore;\n keyStore?: OrderlyKeyStore;\n contracts?: IContract;\n getWalletAdapter?: getWalletAdapterFunc;\n walletAdapters: WalletAdapter[];\n brokerId: string;\n brokerName: string;\n networkId: NetworkId;\n\n chainFilter?: filteredChains | filterChainsFunc;\n customChains?: Chains<undefined, undefined>;\n}\n\nexport const OrderlyConfigProvider = (\n props: PropsWithChildren<\n RequireAtLeastOne<ConfigProviderProps, \"brokerId\" | \"configStore\">\n >\n) => {\n const [account, setAccount] = React.useState<Account | null>(null);\n const {\n configStore,\n keyStore,\n getWalletAdapter,\n walletAdapters,\n brokerId,\n brokerName,\n networkId,\n contracts,\n chainFilter,\n customChains,\n } = props;\n\n if (!brokerId && typeof configStore === \"undefined\") {\n console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n }\n\n // if (typeof walletAdapters === \"undefined\") {\n // console.error(\n // \"[OrderlyConfigProvider]: walletAdapters is required, please provide at least one wallet adapter, \" +\n // \"you can install the `@orderly.network/default-evm-adapter` or `@orderly.network/default-solana-adapter` package\"\n // );\n // }\n\n if (typeof configStore !== \"undefined\" && !configStore.get(\"brokerId\")) {\n // console.error(\"[OrderlyConfigProvider]: brokerId is required\");\n throw new SDKError(\n \"if configStore is provided, brokerId is required in configStore\"\n );\n }\n\n if (\n typeof brokerId !== \"undefined\" &&\n typeof configStore !== \"undefined\" &&\n brokerId !== configStore.get(\"brokerId\")\n ) {\n throw new SDKError(\n \"If you have provided a custom `configStore` and the `brokerId` is set in the `configStore`, please remove the `brokerId` prop.\"\n );\n }\n\n const innerConfigStore = useConstant<ConfigStore>(() => {\n return new ProxyConfigStore(\n configStore || new DefaultConfigStore({ brokerId, brokerName, networkId })\n );\n });\n\n const innerKeyStore = useConstant<OrderlyKeyStore>(() => {\n return keyStore || new LocalStorageStore(networkId);\n });\n\n const innerGetWalletAdapter = useConstant<getWalletAdapterFunc>(() => {\n return (\n getWalletAdapter ||\n ((options: WalletAdapterOptions) => new EtherAdapter(options))\n );\n });\n\n const innerWalletAdapters = useConstant<WalletAdapter[]>(() => {\n return (\n walletAdapters || [\n new DefaultEVMAdapterWalletAdapter(new EthersProvider()),\n new DefaultSolanaWalletAdapter(),\n ]\n );\n });\n\n // check params, if has mismatch, throw warning message to console\n // useParamsCheck({ brokerId: innerConfigStore.get(\"brokerId\") });\n\n useLayoutEffect(() => {\n let account = SimpleDI.get<Account>(Account.instanceName);\n\n if (!account) {\n account = new Account(\n innerConfigStore,\n innerKeyStore,\n // innerGetWalletAdapter,\n innerWalletAdapters,\n {\n contracts,\n }\n );\n\n SimpleDI.registerByName(Account.instanceName, account);\n }\n\n setAccount(account);\n }, []);\n\n const filteredChains = useMemo(() => {\n if (typeof chainFilter === \"function\") {\n return chainFilter(innerConfigStore);\n }\n\n return chainFilter;\n }, [props.chainFilter, innerConfigStore]);\n\n if (!account) {\n return null;\n }\n\n return (\n <OrderlyProvider\n value={{\n configStore: innerConfigStore,\n keyStore: innerKeyStore,\n getWalletAdapter: innerGetWalletAdapter,\n networkId: networkId,\n filteredChains: filteredChains,\n walletAdapters: innerWalletAdapters,\n // apiBaseUrl,\n customChains,\n }}\n >\n <StatusProvider>\n <DataCenterProvider>{props.children}</DataCenterProvider>\n </StatusProvider>\n </OrderlyProvider>\n );\n};\n","import { PropsWithChildren, createContext, useContext, useRef } from \"react\";\nimport { usePrivateDataObserver } from \"./orderly/usePrivateDataObserver\";\nimport { usePreLoadData } from \"./usePreloadData\";\n\nexport type getKeyFunction = (index: number, prevData: any) => string | null;\n\ninterface DataCenterContextState {\n // orders\n // positions\n // balances\n //\n regesterKeyHandler: (key: string, handler: getKeyFunction) => void;\n unregisterKeyHandler: (key: string) => void;\n}\n\nexport const DataCenterContext = createContext<DataCenterContextState>(\n {} as any\n);\n\nexport const useDataCenterContext = () => useContext(DataCenterContext);\n\nexport const DataCenterProvider = ({ children }: PropsWithChildren) => {\n /**\n * preload the required data for the app\n * hidden view while the required data is not ready\n */\n const { error, done } = usePreLoadData();\n\n const getKeyHandlerMapRef = useRef<Map<string, getKeyFunction>>(new Map());\n\n usePrivateDataObserver({\n getKeysMap(type) {\n return getKeyHandlerMapRef.current;\n },\n });\n\n if (error) {\n return <div>Data load failed</div>;\n }\n\n if (!done) return null;\n\n return (\n <DataCenterContext.Provider\n value={{\n regesterKeyHandler: (key, fun) => {\n getKeyHandlerMapRef.current.set(key, fun);\n },\n unregisterKeyHandler: (key) => {\n getKeyHandlerMapRef.current.delete(key);\n },\n }}\n >\n {children}\n </DataCenterContext.Provider>\n );\n};\n","import { useEffect } from \"react\";\nimport { useWS } from \"../useWS\";\nimport { mutate } from \"swr\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { useAccount } from \"../useAccount\";\nimport { unstable_serialize } from \"swr/infinite\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { getKeyFunction } from \"../dataProvider\";\nimport { updateOrdersHandler, updateAlgoOrdersHandler } from \"../utils/swr\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { object2underscore } from \"../utils/ws\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const usePrivateDataObserver = (options: {\n // onUpdateOrders: (data: any) => void;\n getKeysMap: (type: string) => Map<string, getKeyFunction>;\n}) => {\n const ws = useWS();\n // const { mutate } = useSWRConfig();\n const ee = useEventEmitter();\n const { state } = useAccount();\n\n // TODO: remove this when the WS service provides the correct data\n // const algoOrderCacheQuneue = useRef<API.AlgoOrder[]>([]);\n\n const [subOrder, setSubOrder] = useLocalStorage(\n \"orderly_subscribe_order\",\n true\n );\n\n const updateOrders = (\n data: WSMessage.AlgoOrder[] | WSMessage.Order,\n isAlgoOrder: boolean\n ) => {\n const keysMap = options.getKeysMap(\"orders\");\n\n keysMap.forEach((getKey, key) => {\n mutate(\n unstable_serialize((index, prevData) => [\n getKey(index, prevData),\n state.accountId,\n ]),\n (prevData?: any[]) => {\n try {\n if (isAlgoOrder) {\n const result = updateAlgoOrdersHandler(\n key,\n data as WSMessage.AlgoOrder[],\n prevData!\n );\n\n return result;\n }\n return updateOrdersHandler(key, data as WSMessage.Order, prevData);\n } catch (error) {\n return prevData;\n }\n },\n {\n revalidate: false,\n }\n );\n });\n\n // emit events;\n // ee.emit(\"orders:changed\", {\n // ...data,\n // status: data.status || (data as WSMessage.AlgoOrder).algoStatus,\n // });\n\n const formattedData = isAlgoOrder\n ? AlgoOrderMergeHandler.groupOrders(data as WSMessage.AlgoOrder[])\n : object2underscore(data);\n\n ee.emit(\"orders:changed\", {\n ...formattedData,\n status: isAlgoOrder\n ? formattedData.algo_status\n : (data as WSMessage.Order).status,\n });\n };\n\n // orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"executionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, false);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // algo orders\n useEffect(() => {\n if (!state.accountId) return;\n if (subOrder !== true) return;\n const unsubscribe = ws.privateSubscribe(\"algoexecutionreport\", {\n onMessage: (data: any) => {\n updateOrders(data, true);\n },\n });\n\n return () => unsubscribe?.();\n }, [state.accountId, subOrder]);\n\n // positions\n useEffect(() => {\n if (!state.accountId) return;\n const key = [\"/v1/positions\", state.accountId];\n const unsubscribe = ws.privateSubscribe(\"position\", {\n onMessage: (data: { positions: WSMessage.Position[] }) => {\n const { positions: nextPostions } = data;\n\n // updatePositions();\n\n mutate(\n key,\n (prevPositions: any) => {\n // return nextPostions;\n if (!!prevPositions) {\n const newPostions = {\n ...prevPositions,\n rows: prevPositions.rows.map((row: any) => {\n const itemIndex = nextPostions.findIndex(\n (item) => item.symbol === row.symbol\n );\n\n // const item = nextPostions.find(\n // (item) => item.symbol === row.symbol\n // );\n\n if (itemIndex >= 0) {\n const itemArr = nextPostions.splice(itemIndex, 1);\n\n const item = itemArr[0];\n\n return object2underscore(item);\n }\n\n return row;\n }),\n };\n\n if (nextPostions.length > 0) {\n newPostions.rows = [\n ...newPostions.rows,\n ...nextPostions.map((item) => {\n return object2underscore(item);\n }),\n ];\n }\n\n return newPostions;\n }\n },\n {\n revalidate: false,\n }\n );\n },\n });\n return () => {\n unsubscribe?.();\n };\n }, [state.accountId]);\n};\n","import { API } from \"@orderly.network/types\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { is, lensIndex, over, startsWith } from \"ramda\";\nimport { AlgoOrderMergeHandler } from \"../services/orderMerge/algoOrderMergeHandler\";\nimport { RegularOrderMergeHandler } from \"../services/orderMerge/regularOrderMergeHandler\";\n\n// import { useSWRConfig, unstable_serialize } from \"swr\";\n\nexport const generateKeyFun =\n (args: {\n status?: string;\n symbol?: string;\n side?: string;\n size?: number;\n page?: number;\n dateRange?: {\n from?: Date;\n to?: Date;\n };\n }) =>\n (pageIndex: number, previousPageData: any): string | null => {\n // reached the end\n if (previousPageData && !previousPageData.rows?.length) return null;\n\n const { status, symbol, side, size = 100, page, dateRange } = args;\n\n const search = new URLSearchParams([\n [\"size\", size.toString()],\n [\"page\", `${pageIndex + 1}`],\n [\"source_type\", \"ALL\"],\n ]);\n\n if (dateRange) {\n if (dateRange.from) {\n search.set(\"start_t\", `${dateRange.from.getTime()}`);\n }\n \n if (dateRange.to) {\n search.set(\"end_t\", `${dateRange.to.getTime()}`);\n }\n }\n\n if (page) {\n search.set(\"page\", `${page}`);\n }\n\n if (status) {\n search.set(`status`, status);\n }\n\n if (symbol) {\n search.set(`symbol`, symbol);\n }\n\n if (side) {\n search.set(`side`, side);\n }\n\n return `/v1/orders?${search.toString()}`;\n };\n\nexport const updateOrdersHandler = (\n key: string,\n updatedOrder: WSMessage.Order,\n // isAlgoOrder:boolean,\n orders?: API.OrderResponse[]\n) => {\n if (!orders) {\n return;\n }\n const handler = new RegularOrderMergeHandler(updatedOrder);\n\n return handler.merge(key, updatedOrder, orders);\n\n // console.log(key);\n // const isAlgoOrder = \"algoOrderId\" in updatedOrder;\n\n // // if (isAlgoOrder) {\n // // mergeHandler = new AlgoOrderMergeHandler();\n // // } else {\n // // mergeHandler = new RegularOrderMergeHandler();\n // // }\n\n // const underscoreOrder = object2underscore(updatedOrder);\n\n // let formattedOrder: API.Order & API.AlgoOrder = {\n // ...underscoreOrder,\n // updated_time: updatedOrder.timestamp,\n // type: updatedOrder.type?.replace(\"_ORDER\", \"\"),\n // //@ts-ignore\n // // visible_quantity: updatedOrder.visibleQuantity || updatedOrder.visible,\n // };\n\n // if (typeof formattedOrder.visible_quantity === \"undefined\") {\n // // check visible field;\n // // @ts-ignore\n // formattedOrder.visible_quantity = updatedOrder.visible;\n // }\n\n // // console.log(formattedOrder, updatedOrder);\n\n // const hasCreateTime = \"created_time\" in formattedOrder;\n // if (!hasCreateTime) {\n // formattedOrder[\"created_time\"] = updatedOrder.timestamp;\n // }\n\n // if (isAlgoOrder) {\n // if (typeof updatedOrder.triggerTradePrice !== \"undefined\") {\n // formattedOrder.trigger_price = updatedOrder.triggerTradePrice;\n // }\n\n // if (formattedOrder.type === \"MARKET\") {\n // const { price, ...newObj } = formattedOrder;\n // // @ts-ignore\n // formattedOrder = newObj;\n // }\n // } else {\n // // formattedOrder.created_time = updatedOrder.timestamp;\n // }\n\n // // const index = lensIndex(0);\n // const orderId =\n // (updatedOrder as WSMessage.Order).orderId ||\n // (updatedOrder as WSMessage.AlgoOrder).algoOrderId;\n\n // const isExisting = orderIsExisting(orders, orderId);\n\n // const status =\n // (updatedOrder as WSMessage.Order).status ||\n // (updatedOrder as WSMessage.AlgoOrder).rootAlgoStatus;\n\n // switch (status) {\n // case \"NEW\": {\n // // chceck if the order is already in the list\n // if (\n // isExisting ||\n // key.startsWith(\"orders:CANCELLED\") ||\n // key.startsWith(\"orders:FILLED\") ||\n // key.startsWith(\"orders:REJECTED\")\n // ) {\n // return orders;\n // }\n // return insertOrders(orders, formattedOrder);\n // }\n\n // case \"CANCELLED\": {\n // if (\n // key.startsWith(\"orders:FILLED\") ||\n // key.startsWith(\"orders:REJECTED\")\n // ) {\n // return orders;\n // }\n // if (key.startsWith(\"orders:NEW\") || key.startsWith(\"orders:INCOMPLETE\")) {\n // return removeOrderIfExisting(orders, orderId);\n // }\n\n // if (key.startsWith(\"orders:CANCELLED\")) {\n // return insertOrders(orders, formattedOrder);\n // }\n\n // return updateOrders(orders, formattedOrder);\n // }\n\n // case \"REPLACED\":\n // return updateOrders(orders, formattedOrder);\n\n // case \"FILLED\": {\n // if (isExisting) {\n // // for new list, remove the order if it exists\n // if (\n // key.startsWith(\"orders:INCOMPLETE\") ||\n // key.startsWith(\"orders:NEW\")\n // ) {\n // // if fullfilled, remove from the list\n // if (updatedOrder.totalExecutedQuantity === updatedOrder.quantity) {\n // return removeOrderIfExisting(orders, orderId);\n // }\n\n // // update\n // return updateOrders(orders, formattedOrder);\n // }\n // } else {\n // // for filled list, insert the order if it doesn't exist\n\n // if (\n // key.startsWith(\"orders:CANCELLED\") ||\n // key.startsWith(\"orders:INCOMPLETE\") ||\n // key.startsWith(\"orders:NEW\")\n // ) {\n // return orders;\n // }\n // // if filled/history list:\n // return insertOrders(orders, formattedOrder);\n // }\n // }\n\n // default:\n // return orders;\n // }\n};\n\nexport function updateAlgoOrdersHandler(\n key: string,\n message: WSMessage.AlgoOrder[],\n orders: API.OrderResponse[]\n) {\n if (!orders) {\n return;\n }\n\n const mergeHandler = new AlgoOrderMergeHandler(message);\n\n const result = mergeHandler.merge(key, message, orders);\n\n return result;\n}\n\nfunction updateOrders(\n orders: API.OrderResponse[],\n formattedOrder: API.Order & API.AlgoOrder\n) {\n return orders.map((item) => {\n return {\n // ...item,\n meta: item.meta,\n rows: item.rows.map((order: API.Order | API.AlgoOrder) => {\n const isAlgoOrder = \"algo_order_id\" in order;\n\n if (\n isAlgoOrder &&\n formattedOrder?.algo_order_id === order?.algo_order_id\n ) {\n return { ...order, ...formattedOrder };\n }\n\n if (!isAlgoOrder && formattedOrder?.order_id === order?.order_id) {\n return { ...order, ...formattedOrder };\n }\n\n return order;\n }),\n };\n });\n}\n\nfunction insertOrders(\n orders: API.OrderResponse[],\n formattedOrder: API.Order & API.AlgoOrder\n) {\n const index = lensIndex(0);\n return over(\n index,\n (item: any) => ({\n meta: {\n ...item.meta,\n total: item.meta.total + 1,\n },\n rows: [formattedOrder, ...item.rows],\n }),\n orders\n );\n}\n\nfunction removeOrderIfExisting(\n orders: API.OrderResponse[],\n orderId: number\n): API.OrderResponse[] {\n const isExisting = orderIsExisting(orders, orderId);\n if (!isExisting) return orders;\n return orders.map((item) => {\n return {\n meta: { ...item.meta, total: item.meta.total - 1 },\n rows: item.rows.filter((order: API.Order | API.AlgoOrder) => {\n const isAlgoOrder = \"algo_order_id\" in order;\n return isAlgoOrder\n ? (order as API.AlgoOrder).algo_order_id !== orderId\n : (order as API.Order).order_id !== orderId;\n }),\n };\n });\n}\n\nfunction findOrderIndex(\n orders: API.OrderResponse[],\n orderId: number\n): number[] | undefined {\n let index: number = 0;\n let index2: number | undefined;\n\n for (let idx = 0; idx < orders.length; idx++) {\n index = idx;\n const item = orders[idx];\n\n for (let idx2 = 0; idx2 < item.rows.length; idx2++) {\n const element = item.rows[idx2];\n if (\n (element as API.AlgoOrder).algo_order_id === orderId ||\n (element as API.Order).order_id === orderId\n ) {\n index2 = idx2;\n\n break;\n }\n }\n }\n\n if (typeof index2 === \"undefined\") {\n return;\n }\n\n return [index, index2];\n}\n\nfunction orderIsExisting(orders: API.OrderResponse[], orderId: number) {\n const index = findOrderIndex(orders, orderId);\n return Array.isArray(index);\n}\n\nexport function getPositionBySymbol(symbol: string) {\n // const config = useSWRConfig();\n // console.log(config);\n}\n","import { WSMessage, API } from \"@orderly.network/types\";\nimport { IOrderMergeHandler } from \"./interface\";\nimport { lensIndex, over } from \"ramda\";\n\nexport abstract class BaseMergeHandler<\n T extends WSMessage.AlgoOrder[] | WSMessage.Order,\n D extends API.AlgoOrder | API.Order\n> implements IOrderMergeHandler<T, D>\n{\n data: D;\n constructor(private message: T) {\n this.data = this.formatOrder(message);\n }\n abstract get status(): string;\n abstract get orderId(): number;\n abstract pre(message: T, prevData?: API.OrderResponse[]): D;\n abstract isFullFilled(): boolean;\n\n /**\n * format the order data;\n */\n formatOrder(message: T): D {\n const data = this.pre(message);\n\n if (!data.created_time) {\n data.created_time = (data as any).timestamp;\n }\n\n if (data.type && data.type.endsWith(\"_ORDER\")) {\n data.type = data.type.replace(\"_ORDER\", \"\");\n }\n\n return data;\n }\n\n merge(\n key: string,\n message: T,\n prevData: API.OrderResponse[]\n ): API.OrderResponse[] {\n switch (this.status) {\n case \"NEW\": {\n if (\n key.startsWith(\"orders:CANCELLED\") ||\n key.startsWith(\"orders:FILLED\") ||\n key.startsWith(\"orders:REJECTED\")\n ) {\n return prevData;\n }\n return this.insetOrUpdate(prevData);\n }\n case \"CANCELLED\": {\n if (\n key.startsWith(\"orders:FILLED\") ||\n key.startsWith(\"orders:REJECTED\")\n ) {\n return prevData;\n }\n if (\n key.startsWith(\"orders:NEW\") ||\n key.startsWith(\"orders:INCOMPLETE\")\n ) {\n return this.remove(prevData);\n }\n\n if (key.startsWith(\"orders:CANCELLED\")) {\n return this.insert(prevData);\n }\n\n return this.update(prevData);\n }\n\n case \"REPLACED\":\n return this.update(prevData);\n\n case \"FILLED\": {\n if (this.orderIsExisting(prevData)) {\n // for new list, remove the order if it exists\n if (\n key.startsWith(\"orders:INCOMPLETE\") ||\n key.startsWith(\"orders:NEW\")\n ) {\n // if fullfilled, remove from the list\n if (this.isFullFilled()) {\n return this.remove(prevData);\n }\n\n // update\n return this.update(prevData);\n }\n } else {\n // for filled list, insert the order if it doesn't exist\n\n if (\n key.startsWith(\"orders:CANCELLED\") ||\n key.startsWith(\"orders:INCOMPLETE\") ||\n key.startsWith(\"orders:NEW\")\n ) {\n return prevData;\n }\n // if filled/history list:\n return this.insert(prevData);\n }\n }\n\n default:\n return prevData || [];\n }\n }\n\n insert(orders?: API.OrderResponse[] | undefined): API.OrderResponse[] {\n const index = lensIndex<API.OrderResponse>(0);\n return over(\n //@ts-ignore\n index,\n (item: any) => ({\n meta: {\n ...item.meta,\n total: item.meta.total + 1,\n },\n rows: [this.data, ...item.rows],\n }),\n orders\n ) as API.OrderResponse[];\n }\n\n insetOrUpdate(orders: API.OrderResponse[]): API.OrderResponse[] {\n if (this.orderIsExisting(orders)) {\n return this.update(orders);\n }\n return this.insert(orders);\n }\n\n update(prevData: API.OrderResponse[]): API.OrderResponse[] {\n const idx = this.findOrderIndex(prevData);\n if (!Array.isArray(idx)) {\n return prevData || [];\n }\n\n const [index, index2] = idx;\n\n return prevData.map((item, i) => {\n return {\n meta: { ...item.meta },\n rows: item.rows.map((order, j) => {\n if (index === i && index2 === j) {\n return { ...order, ...this.data };\n }\n return order;\n }),\n };\n });\n }\n\n remove(prevData: API.OrderResponse[]): API.OrderResponse[] {\n const idx = this.findOrderIndex(prevData);\n if (!Array.isArray(idx)) {\n return prevData;\n }\n\n const [index, index2] = idx;\n\n return prevData.map((item, i) => {\n return {\n meta: { ...item.meta, total: item.meta.total - 1 },\n rows:\n index === i ? item.rows.filter((_, i) => i !== index2) : item.rows,\n };\n });\n }\n\n findOrderIndex(orders: API.OrderResponse[]): number[] | undefined {\n let index: number = 0;\n let index2: number | undefined;\n\n for (; index < orders.length; index++) {\n // index = idx;\n const item = orders[index];\n\n for (let idx2 = 0; idx2 < item.rows.length; idx2++) {\n const element = item.rows[idx2];\n if (\n (element as API.AlgoOrder).algo_order_id === this.orderId ||\n (element as API.Order).order_id === this.orderId\n ) {\n index2 = idx2;\n\n break;\n }\n }\n if (typeof index2 !== \"undefined\") {\n break;\n }\n }\n\n if (typeof index2 === \"undefined\") {\n return;\n }\n\n return [index, index2];\n }\n\n orderIsExisting(orders: API.OrderResponse[]): boolean {\n const index = this.findOrderIndex(orders);\n return Array.isArray(index);\n }\n}\n","import { camelCaseToUnderscoreCase } from \"@orderly.network/utils\";\n\nexport function object2underscore(obj: any) {\n return Object.keys(obj).reduce((acc, key) => {\n acc[camelCaseToUnderscoreCase(key)] = obj[key];\n return acc;\n }, {} as any);\n}\n","import { API, WSMessage } from \"@orderly.network/types\";\nimport { BaseMergeHandler } from \"./baseMergeHandler\";\nimport { object2underscore } from \"../../utils/ws\";\n\nexport class AlgoOrderMergeHandler extends BaseMergeHandler<\n WSMessage.AlgoOrder[],\n API.AlgoOrder\n> {\n get orderId(): number {\n return this.data.algo_order_id;\n }\n\n get status(): string {\n return this.data.root_algo_status;\n }\n\n // merge(\n // key: string,\n // message: WSMessage.AlgoOrder[],\n // prevData: API.OrderResponse[]\n // ): API.OrderResponse[] | undefined {\n // switch (this.status) {\n // case \"TRIGGER\": {\n // }\n // default:\n // return super.merge(key, message, prevData);\n // }\n // }\n\n pre(\n message: WSMessage.AlgoOrder[],\n prevData?: API.OrderResponse[]\n ): API.AlgoOrder {\n return AlgoOrderMergeHandler.groupOrders(message);\n }\n\n isFullFilled(): boolean {\n if (\n \"total_executed_quantity\" in this.data &&\n this.data.total_executed_quantity !== 0\n ) {\n return this.data.total_executed_quantity === this.data.quantity;\n } else if (\n \"total_executed_quantity\" in (this.data as API.AlgoOrder).child_orders[0]\n ) {\n return (\n (this.data as API.AlgoOrder).child_orders[0].total_executed_quantity ===\n (this.data as API.AlgoOrder).child_orders[0].quantity\n );\n }\n\n return false;\n }\n\n static groupOrders(orders: WSMessage.AlgoOrder[]): API.AlgoOrder {\n const rootOrderIndex = orders.findIndex(\n (order) =>\n order.parentAlgoOrderId === 0 &&\n order.algoOrderId === order.rootAlgoOrderId\n );\n if (rootOrderIndex === -1) {\n throw new Error(\"Root order not found\");\n }\n\n const rootOrder_ = object2underscore(\n orders[rootOrderIndex]\n ) as unknown as API.AlgoOrder;\n\n rootOrder_.child_orders = orders\n .filter((_, index) => index !== rootOrderIndex)\n .map((order) => {\n return object2underscore(order) as unknown as API.AlgoOrder;\n });\n\n return rootOrder_;\n }\n}\n","import { API, WSMessage } from \"@orderly.network/types\";\nimport { BaseMergeHandler } from \"./baseMergeHandler\";\nimport { object2underscore } from \"../../utils/ws\";\n\nexport class RegularOrderMergeHandler extends BaseMergeHandler<\n WSMessage.Order,\n API.Order\n> {\n get orderId(): number {\n return this.data.order_id;\n }\n get status(): string {\n return this.data.status;\n }\n pre(\n message: WSMessage.Order,\n prevData?: API.OrderResponse[] | undefined\n ): API.Order {\n return object2underscore(message) as unknown as API.Order;\n }\n isFullFilled(): boolean {\n return (\n \"total_executed_quantity\" in this.data &&\n this.data.total_executed_quantity === this.data.quantity\n );\n }\n}\n","import { ConfigKey, ConfigStore } from \"@orderly.network/core\";\nimport { windowGuard } from \"@orderly.network/utils\";\n\nexport class ProxyConfigStore implements ConfigStore {\n private _proxyConfigStore?: ConfigStore;\n\n constructor(private readonly _originConfigStore: ConfigStore) {\n windowGuard(() => {\n this._proxyConfigStore =\n (window as any).__ORDERLY_CONFIG_STORE__ || _originConfigStore;\n });\n }\n\n get<T>(key: ConfigKey): T {\n const value = this._proxyConfigStore?.get(key);\n if (typeof value === \"undefined\") {\n return this._originConfigStore.get(key);\n }\n return value as T;\n }\n\n getOr<T>(key: ConfigKey, defaultValue: T): T {\n return (this._proxyConfigStore ?? this._originConfigStore).getOr(\n key,\n defaultValue\n );\n }\n\n set<T>(key: ConfigKey, value: T): void {\n (this._proxyConfigStore ?? this._originConfigStore).set(key, value);\n }\n\n clear(): void {\n throw new Error(\"Method not implemented.\");\n }\n\n getFromOrigin<T>(key: ConfigKey): T {\n return this._originConfigStore.get(key);\n }\n\n getOrFromOrigin<T>(key: ConfigKey, defaultValue: T): T {\n return this._originConfigStore.getOr(key, defaultValue);\n }\n\n setToOrigin<T>(key: ConfigKey, value: T): void {\n this._originConfigStore.set(key, value);\n }\n\n clearOrigin(): void {\n this._originConfigStore.clear();\n }\n}\n","import { ChainNamespace } from \"@orderly.network/types\";\nimport type { EIP1193Provider } from \"@web3-onboard/common\";\nimport { createContext, useContext } from \"react\";\n\nexport type ConnectedChain = {\n id: number | string;\n namespace: ChainNamespace;\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: (options?: any) => 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","import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\nimport {useTickerStream} from \"./useTickerStream\";\nimport {useMarkPrice} from \"./useMarkPrice\";\nimport {useWS} from \"../useWS\";\nimport {useEventEmitter} from \"../useEventEmitter\";\nimport {useSymbolsInfo} from \"./useSymbolsInfo\";\nimport {Decimal, removeTrailingZeros} from \"@orderly.network/utils\";\nimport {max, min} from \"ramda\";\nimport {SDKError} from \"@orderly.network/types\";\nimport orderbooksService from './orderbook.service';\n\nexport type OrderBookItem = number[];\n\nexport type OrderbookData = {\n asks: OrderBookItem[];\n bids: OrderBookItem[];\n};\n\nconst paddingFn = (len: number) =>\n Array(len).fill([Number.NaN, Number.NaN, Number.NaN, Number.NaN] as OrderBookItem);\n\nconst asksSortFn = (a: OrderBookItem, b: OrderBookItem) => a[0] - b[0];\n\nconst bidsSortFn = (a: OrderBookItem, b: OrderBookItem) => b[0] - a[0];\n\n// const commonSortFn = (a: OrderBookItem, b: OrderBookItem) => b[0] - a[0];\n\nconst reduceItems = (\n depth: number | undefined,\n level: number,\n data: OrderBookItem[],\n asks = false\n) => {\n if (!Array.isArray(data) || data.length === 0) {\n return [];\n }\n let newData = [...data];\n const result: OrderBookItem[] = [];\n\n //\n\n if (typeof depth !== \"undefined\") {\n const prices = new Map<number, number[]>();\n for (let i = 0; i < data.length; i++) {\n const [price, quantity] = data[i];\n if (isNaN(price) || isNaN(quantity)) continue;\n let priceKey;\n\n if (asks) {\n priceKey = new Decimal(Math.ceil(price / depth)).mul(depth).toNumber();\n } else {\n priceKey = new Decimal(Math.floor(price / depth)).mul(depth).toNumber();\n }\n\n if (depth < 1 && depth > 0 && priceKey.toString().indexOf(\".\") !== -1) {\n const priceStr = price.toString();\n const index = priceStr.indexOf(\".\");\n const decimal = priceStr.slice(index + 1);\n const decimalDepth = removeTrailingZeros(depth).toString().slice(2).length;\n const decimalStr = decimal.slice(0, min(decimal.length, decimalDepth));\n priceKey = new Decimal(\n priceStr.slice(0, index) + \".\" + decimalStr\n ).toNumber();\n }\n\n // console.log(`reduce items price: ${price}, priceKey: ${priceKey}, depth: ${depth}, resetPriceKey: ${price.toString === priceKey.toString}`);\n // console.log(`ask: ${asks} reduce items price: ${priceKey}`);\n\n if (prices.has(priceKey)) {\n const item = prices.get(priceKey)!;\n const itemPrice = new Decimal(item[1]).add(quantity).toNumber();\n\n // prices.push([price, quantity]);\n prices.set(priceKey, [priceKey, itemPrice]);\n } else {\n prices.set(priceKey, [priceKey, quantity]);\n }\n }\n\n newData = Array.from(prices.values());\n }\n\n for (let i = 0; i < newData.length; i++) {\n const [price, quantity] = newData[i];\n if (isNaN(price) || isNaN(quantity)) continue;\n\n const newQuantity = new Decimal(quantity)\n .add(result.length > 0 ? result[result.length - 1][2] : 0)\n .toNumber();\n\n const newAmount = new Decimal(quantity * price)\n .add(result.length > 0 ? result[result.length - 1][3] : 0)\n .toNumber();\n\n result.push([price, quantity, newQuantity, newAmount]);\n // if the total is greater than the level, break\n // TODO:\n // if (i + 1 >= level) {\n // break;\n // }\n }\n\n return result;\n};\n\n/**\n * @name reduceOrderbook\n * @param depth\n * @param level\n * @param data\n */\nexport const reduceOrderbook = (\n depth: number | undefined,\n level: number,\n padding: boolean,\n data: OrderbookData,\n): OrderbookData => {\n let asks = reduceItems(depth, level, data.asks, true);\n\n let bids = reduceItems(depth, level, data.bids);\n\n /// not empty and asks.price <= bids.price\n if (asks.length !== 0 && bids.length !== 0 && asks[0][0] <= bids[0][0]) {\n if (asks.length === 1) {\n const [price, qty, newQuantity, newAmount] = asks[0];\n asks.shift();\n asks.push([price + (depth === undefined ? 0 : depth), qty, newQuantity, newAmount]);\n } else {\n const [bidPrice] = bids[0];\n while (asks.length > 0) {\n const [askPrice, askQty, newQuantity, newAmount] = asks[0];\n\n\n if (askPrice <= bidPrice) {\n // console.log(\"xxxxxxxxxxx reset ask list begin\", [...asks], { ...asks[0] });\n asks.shift();\n let logStr = \"\";\n for (let index = 0; index < asks.length; index++) {\n if (index === 0) {\n const quantity = asks[index][1] + askQty;\n asks[index][1] = quantity;\n asks[index][2] = quantity;\n // asks[index][3] += newAmount;\n // FIXME: fix this code later\n asks[index][3] = Math.ceil(quantity) * asks[index][0];\n } else {\n // asks[index][3] += newAmount;\n // FIXME: fix this code later\n asks[index][3] = asks[index][0] * asks[index][1] + asks[index - 1][3];\n }\n logStr += `index: ${index} ${asks[index]}\\n`;\n }\n // console.log(\"xxxxxxxxxxx reset ask list end\", logStr);\n } else {\n break;\n }\n }\n }\n }\n\n asks = asks.reverse();\n\n if (padding) {\n asks =\n asks.length < level ? paddingFn(level - asks.length).concat(asks) : asks;\n bids =\n bids.length < level ? bids.concat(paddingFn(level - bids.length)) : bids;\n }\n\n return {\n asks: asks,\n bids: bids,\n };\n};\n\nconst mergeItems = (data: OrderBookItem[], update: OrderBookItem[]) => {\n // let index = -1;\n if (data.length === 0) return update;\n\n data = data.filter(([price]) => !isNaN(price));\n\n while (update.length > 0) {\n const item = update.shift();\n //\n if (item) {\n const [price, quantity] = item;\n\n const index = data.findIndex(([p], index) => p === price);\n //\n if (index === -1) {\n if (quantity === 0) continue;\n data.push(item);\n } else {\n if (quantity === 0) {\n data.splice(index, 1);\n } else {\n data[index] = item;\n }\n }\n }\n }\n\n return data;\n};\n\nexport const mergeOrderbook = (data: OrderbookData, update: OrderbookData) => {\n let asks = [...data.asks];\n let bids = [...data.bids];\n\n asks = mergeItems(asks, update.asks).sort(asksSortFn);\n bids = mergeItems(bids, update.bids).sort(bidsSortFn);\n\n return {\n asks: asks,\n bids: bids,\n };\n};\n\n/**\n * Configuration for the Order Book\n */\nexport type OrderbookOptions = {\n /** Indicates the number of data entries to return for ask/bid, default is 10 */\n level?: number;\n /** Whether to fill in when the actual data entries are less than the level. If filled, it will add [nan, nan, nan, nan]. Default is true */\n padding?: boolean;\n};\n\nconst INIT_DATA = {asks: [], bids: []};\n\n/**\n * @name useOrderbookStream\n * @description React hook that returns the current orderbook for a given market\n */\nexport const useOrderbookStream = (\n symbol: string,\n initial: OrderbookData = INIT_DATA,\n options?: OrderbookOptions\n) => {\n if (!symbol) {\n throw new SDKError(\"useOrderbookStream requires a symbol\");\n }\n\n const level = options?.level ?? 10;\n const padding = options?.padding ?? true;\n\n const [requestData, setRequestData] = useState<OrderbookData | null>(null);\n const [data, setData] = useState<OrderbookData>(initial);\n const [isLoading, setIsLoading] = useState(true);\n // const [level, setLevel] = useState(() => options?.level ?? 10);\n\n const config = useSymbolsInfo()[symbol];\n\n const [depth, setDepth] = useState<number | undefined>();\n\n // markPrice, lastPrice\n const prevMiddlePrice = useRef<number>(0);\n\n const depths = useMemo(() => {\n const tick = config(\"quote_tick\");\n if (typeof tick === 'undefined') return [];\n\n try {\n const base = new Decimal(tick);\n return [base.toNumber(), base.mul(10).toNumber(), base.mul(100).toNumber(), base.mul(1000).toNumber()];\n } catch (e) {\n\n }\n return [tick];\n }, [config(\"quote_tick\")]);\n\n useEffect(() => {\n setDepth(config(\"quote_tick\"));\n }, [config(\"quote_tick\")]);\n\n const ws = useWS();\n\n const ticker = useTickerStream(symbol);\n\n const eventEmitter = useEventEmitter();\n\n // const orderbookRequest =\n\n useEffect(() => {\n let needRequestFullOrderbook= true;\n setIsLoading(true);\n let orderBookUpdateSub: any;\n let fullOrderBookUpdateSub: any;\n orderBookUpdateSub = ws.subscribe(\n {\n event: \"subscribe\",\n topic: `${symbol}@orderbookupdate`,\n },\n {\n formatter: (message) => message,\n onMessage: (message: any) => {\n const {data: wsData, ts} = message;\n const {asks, bids, prevTs} = wsData;\n orderbooksService.updateOrderbook(symbol, {asks, bids, ts, prevTs}, () => needRequestFullOrderbook = true);\n\n\n const data = orderbooksService.getRawOrderbook(symbol);\n setData({bids: data.bids, asks: data.asks});\n\n }\n }\n )\n\n if ( needRequestFullOrderbook) {\n setIsLoading(true);\n\n fullOrderBookUpdateSub = ws.onceSubscribe(\n {\n event: \"request\",\n id: `${symbol}@orderbook`,\n params: {\n type: \"orderbook\",\n symbol: symbol,\n },\n },\n {\n formatter: (message) => message,\n onMessage: (message: any) => {\n const {symbol, asks, bids, ts} = message.data;\n orderbooksService.setFullOrderbook(symbol, {asks, bids, ts})\n const data = orderbooksService.getRawOrderbook(symbol);\n setData({bids: data.bids, asks: data.asks});\n\n setIsLoading(false);\n },\n }\n )\n needRequestFullOrderbook= false;\n }\n\n return () => {\n // unsubscribe\n orderBookUpdateSub?.();\n fullOrderBookUpdateSub?.();\n orderbooksService.resetOrderBook(symbol);\n setData(INIT_DATA);\n }\n\n }, [symbol]);\n\n // const {data:markPrices} = useMarkPricesStream();\n\n const {data: markPrice} = useMarkPrice(symbol);\n\n\n const onItemClick = useCallback((item: OrderBookItem) => {\n eventEmitter.emit(\"orderbook:item:click\", item);\n }, []);\n\n const onDepthChange = useCallback((depth: number) => {\n //\n setDepth(() => depth);\n }, []);\n\n\n const reducedData = reduceOrderbook(depth, level, padding, {\n asks: [...data.asks],\n bids: [...data.bids],\n });\n\n // emit the asks0 and bids0\n useEffect(() => {\n const updateData = [\n reducedData.asks?.[reducedData.asks.length - 1]?.[0],\n reducedData.bids?.[0]?.[0]\n ];\n eventEmitter.emit(\"orderbook:update\", updateData);\n }, [reducedData.asks?.[reducedData.asks.length - 1]?.[0], reducedData.bids?.[0]?.[0]]);\n\n const middlePrice = useMemo(() => {\n let asksFrist = 0,\n bidsFirst = 0;\n\n if (data.asks.length > 0) {\n asksFrist = reducedData.asks?.[reducedData.asks.length - 1]?.[0];\n }\n\n if (data.bids.length > 0) {\n bidsFirst = data.bids[0][0];\n }\n\n if (isNaN(asksFrist) || isNaN(bidsFirst) || !ticker) return 0;\n\n\n return [asksFrist, bidsFirst, ticker[\"24h_close\"]].sort()[1];\n }, [ticker?.[\"24h_close\"], data]);\n\n useEffect(() => {\n prevMiddlePrice.current = middlePrice;\n }, [middlePrice]);\n\n return [\n {\n asks: reducedData.asks.slice(-level),\n bids: reducedData.bids.slice(0, level),\n markPrice: markPrice,\n middlePrice: [prevMiddlePrice.current, middlePrice],\n },\n {onDepthChange, depth, allDepths: depths, isLoading, onItemClick},\n ];\n};\n\nexport type useOrderbookStreamReturn = ReturnType<typeof useOrderbookStream>;\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { API } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useWS } from \"../useWS\";\nimport { useMarkPrice } from \"./useMarkPrice\";\nimport { useIndexPrice } from \"./useIndexPrice\";\nimport { useOpenInterest } from \"./useOpenInterest\";\nimport { useFetures } from \"../unuse/useFetures\";\n\nexport const useTickerStream = (symbol: string) => {\n if (!symbol) {\n throw new Error(\"useFuturesForSymbol requires a symbol\");\n }\n const { data: info } = useQuery<API.MarketInfo>(\n `/v1/public/futures/${symbol}`,\n {\n revalidateOnFocus: false,\n }\n );\n\n const [ticker, setTicker] = useState<any>();\n\n const ws = useWS();\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n `${symbol}@ticker`,\n {\n onMessage: (message: any) => {\n if (message.symbol !== symbol) return;\n\n setTicker(message);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n // onError: (error: any) => {\n //\n // },\n }\n );\n\n return () => {\n setTicker(undefined);\n unsubscribe?.();\n };\n }, [symbol]);\n\n const { data: markPrice } = useMarkPrice(symbol);\n const { data: indexPrice } = useIndexPrice(symbol);\n const { data: openInterest } = useOpenInterest(symbol);\n const { data: futures } = useFetures();\n\n const value = useMemo(() => {\n //\n if (!info) return null;\n if (!ticker || ticker.symbol !== symbol) return info;\n\n const futureIndex = futures?.findIndex(\n (item: any) => item.symbol === symbol\n );\n let _oi = openInterest;\n if (!_oi && futureIndex !== -1 && futures) {\n // @ts-ignore\n _oi = futures[futureIndex].open_interest;\n }\n\n const config: any = {\n ...info,\n mark_price: markPrice,\n index_price: indexPrice,\n open_interest: _oi,\n };\n\n if (ticker.open !== undefined) {\n config[\"24h_open\"] = ticker.open;\n }\n\n if (ticker.close !== undefined) {\n config[\"24h_close\"] = ticker.close;\n }\n\n if (ticker.high !== undefined) {\n config[\"24h_high\"] = ticker.high;\n }\n\n if (ticker.low !== undefined) {\n config[\"24h_low\"] = ticker.low;\n }\n\n if (ticker.volume !== undefined) {\n config[\"24h_volumn\"] = ticker.volume;\n config[\"24h_volume\"] = ticker.volume;\n }\n\n if (ticker.close !== undefined && ticker.open !== undefined) {\n config[\"change\"] = new Decimal(ticker.close)\n .minus(ticker.open)\n .div(ticker.open)\n .toNumber();\n\n config[\"24h_change\"] = new Decimal(ticker.close).minus(ticker.open);\n }\n return config;\n }, [info, symbol, ticker, futures, openInterest]);\n\n return value as API.MarketInfo & { change?: Decimal; \"24h_change\"?: Decimal };\n};\n","import { useEffect, useState } from \"react\";\nimport { useWS } from \"../useWS\";\n// import useSWRSubscription from \"swr/subscription\";\n\nexport const useMarkPrice = (symbol: string) => {\n const ws = useWS();\n const [price, setPrice] = useState(0);\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(`${symbol}@markprice`, {\n onMessage: (message: any) => {\n setPrice(message.price);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n }, [symbol]);\n\n // return useSWRSubscription(`${symbol}@markprice`, (key, { next }) => {\n // const unsubscribe = ws.subscribe(`${symbol}@markprice`, {\n // onMessage: (message: any) => {\n // next(null, message.price);\n // },\n // });\n\n // return () => {\n // // console.log(\"_____________________ unsubscribe _________ \", symbol);\n // unsubscribe?.();\n // };\n // });\n\n return { data: price };\n};\n","import { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useIndexPrice = (symbol: string) => {\n // WARNING: force change perp to spot, because there is no perp now\n symbol = symbol.replace(\"PERP\", \"SPOT\");\n const ws = useWS();\n return useSWRSubscription(`${symbol}@indexprice`, (key, { next }) => {\n const unsubscribe = ws.subscribe(`${symbol}@indexprice`, {\n onMessage: (message: any) => {\n next(null, message.price);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n });\n};\n","import { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useOpenInterest = (symbol: string) => {\n const ws = useWS();\n return useSWRSubscription(`${symbol}@openinterest`, (key, { next }) => {\n const unsubscribe = ws.subscribe(`${symbol}@openinterest`, {\n onMessage: (message: any) => {\n next(null, message.openInterest);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n });\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useQuery } from \"../useQuery\";\n\nimport { useWS } from \"../useWS\";\n\ninterface MarketInfo {}\n\n// api: /public/futures\nexport const useFetures = () => {\n const { data, isLoading, error } = useQuery<MarketInfo[]>(\n `/v1/public/futures`,\n {\n revalidateOnFocus: false,\n }\n );\n\n const [sortedData, setSortedData] = useState(data);\n\n const ws = useWS();\n\n useEffect(() => {\n // const sub = ws\n // .observe<WSMessage.Ticker>(`tickers`)\n // .subscribe((value: any) => {\n //\n // // setData(value);\n // });\n // return () => {\n // sub.unsubscribe();\n // };\n }, []);\n\n useEffect(() => {\n if (data) {\n const sortedData = data.sort((a, b) => {\n return 0;\n });\n setSortedData(sortedData);\n }\n }, [data]);\n\n const sortBy = useCallback((key: string) => {}, [data]);\n\n const filterBy = useCallback((key: string) => {}, [data]);\n\n return {\n data: sortedData,\n sortBy,\n filterBy,\n isLoading,\n error,\n };\n};\n","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { type API } from \"@orderly.network/types\";\nimport { createGetter } from \"../utils/createGetter\";\nimport { getPrecisionByNumber } from \"@orderly.network/utils\";\n\nexport type SymbolInfo = ReturnType<typeof useSymbolsInfo>;\n\nexport const useSymbolsInfo = () => {\n const { data } = useQuery<Record<string, API.SymbolExt>>(`/v1/public/info`, {\n focusThrottleInterval: 1000 * 60 * 60 * 24,\n dedupingInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n formatter(data: { rows: API.Symbol[] }) {\n if (!data?.rows || !data?.rows?.length) {\n return {};\n }\n const obj = Object.create(null);\n\n for (let index = 0; index < data.rows.length; index++) {\n const item = data.rows[index];\n const arr = item.symbol.split(\"_\");\n const base_dp = getPrecisionByNumber(item.base_tick);\n const quote_dp = getPrecisionByNumber(item.quote_tick);\n obj[item.symbol] = {\n ...item,\n base_dp,\n quote_dp,\n base: arr[1],\n quote: arr[2],\n type: arr[0],\n name: `${arr[1]}-${arr[0]}`,\n };\n }\n\n return obj;\n },\n });\n\n return useMemo(() => createGetter<API.SymbolExt, string>(data), [data]);\n};\n","import { API } from \"@orderly.network/types\";\nimport { isNil } from \"ramda\";\n\ntype objectDepth = 1 | 2;\ntype propertyType<D, K, F> = D extends 1 ? K : F;\n\n// {\n// // [P in K]: (key: P, defaultValue?: T[P]) => T[K][P];\n// [P in K]: (key: P, defaultValue?: T[P]) => T[K][P];\n// }\n\n// type KeyOf<T> = keyof T;\nexport type ValueOf<T> = T[keyof T];\n\n// export function createGetter<T extends Record<string, any>, K extends keyof T>(\nexport function createGetter<\n T extends any,\n K extends string = string,\n Key = keyof T\n>(\n data: Record<string, T> | null | undefined,\n depth: objectDepth = 2\n): (typeof depth extends 1\n ? { [P in K]: (defaultValue?: any) => any }\n : { [P in K]: (key?: Key, defaultValue?: ValueOf<T>) => any }) & {\n isNil: boolean;\n} {\n const getValue = (value: any, defaultValue?: any) => {\n if (defaultValue === undefined) {\n return value;\n }\n\n return value ?? defaultValue;\n };\n\n return new Proxy(data || {}, {\n get(\n target: any,\n property: propertyType<typeof depth, keyof T, any>,\n receiver\n ): any {\n if (property === \"isNil\") {\n return isNil(data);\n }\n if (depth === 1) {\n return (defaultValue: any) => {\n if (!target) return defaultValue;\n return getValue(target[property], defaultValue);\n };\n }\n return (key?: Key, defaultValue?: any) => {\n if (key) {\n return getValue((target as any)[property]?.[key], defaultValue);\n } else {\n return target[property];\n }\n };\n },\n });\n}\n","export interface RawOrderBook {\n asks: [number, number][];\n bids: [number, number][];\n ts: number;\n}\n\nexport interface RawOrderBookUpdate {\n asks: [number, number][];\n bids: [number, number][];\n prevTs: number;\n ts: number;\n}\n\nexport const defaultRawOrderBook: RawOrderBook = {\n asks: [],\n bids: [],\n ts: 0,\n};\n\nclass OrderbookService{\n private static instance: OrderbookService;\n private bufferedOrderBookUpdates: { [symbol: string]: RawOrderBookUpdate[] } = {};\n private rawOrderBook: { [symbol: string]: RawOrderBook } = {};\n\n constructor() {\n }\n\n static getInstance() {\n if (!this.instance) {\n this.instance = new OrderbookService();\n }\n return this.instance;\n }\n\n private sortBufferedOrderBookUpdates(symbol: string){\n this.bufferedOrderBookUpdates[symbol]?.sort((a, b) => a.ts - b.ts);\n }\n\n private applyUpdateToRawOrderBook(symbol: string, update: RawOrderBookUpdate) {\n const rawOrderBook = this.rawOrderBook[symbol];\n\n if (!rawOrderBook || rawOrderBook.ts > update.prevTs) {\n return;\n }\n\n const askMap = new Map<number, number>();\n const bidMap = new Map<number, number>();\n\n rawOrderBook.asks.forEach((ask) => askMap.set(ask[0], ask[1]));\n rawOrderBook.bids.forEach((bid) => bidMap.set(bid[0], bid[1]));\n\n update.asks.forEach((ask) => (ask[1] === 0 ? askMap.delete(ask[0]) : askMap.set(ask[0], ask[1])));\n update.bids.forEach((bid) => (bid[1] === 0 ? bidMap.delete(bid[0]) : bidMap.set(bid[0], bid[1])));\n\n rawOrderBook.asks = Array.from(askMap.entries()).sort((a, b) => a[0] - b[0]);\n rawOrderBook.bids = Array.from(bidMap.entries()).sort((a, b) => b[0] - a[0]);\n\n rawOrderBook.ts = update.ts;\n }\n private applyBufferedUpdatesToRawOrderBooks(symbol: string) {\n this.bufferedOrderBookUpdates[symbol]?.forEach((update) => this.applyUpdateToRawOrderBook(symbol, update));\n }\n\n private deleteBufferedOrderBookUpdates(symbol: string) {\n delete this.bufferedOrderBookUpdates[symbol];\n }\n\n private commitOrderBook(symbol: string) {\n const rawOrderBook = this.rawOrderBook[symbol];\n if (!rawOrderBook) {\n return;\n }\n\n // const orderbook = this.prepareOrderBookStore(rawOrderBook);\n // if (orderbook.firstAskPrice <= orderbook.firstBidPrice) {\n // console.error(SERVICE_PREFIX, 'Orderbook crossing error', { crossedAsks: orderbook.asks, crossedBids: orderbook.bids });\n //\n // this.rawOrderBook[symbol] = {\n // ...defaultRawOrderBook,\n // ts: -1, // must be -1 because it needs to cause Orderbook version error in public websocket\n // };\n // } else {\n // orderBookStore.update(symbol, orderbook);\n // depthChartService.commitDepthChart(symbol);\n // }\n }\n\n\n\n private pushUpdateToBuffer(symbol: string, update: RawOrderBookUpdate) {\n if (this.bufferedOrderBookUpdates[symbol] === undefined) {\n this.bufferedOrderBookUpdates[symbol] = [];\n }\n\n const buffer = this.bufferedOrderBookUpdates[symbol];\n if (buffer.length > 0) {\n const lastUpdate = buffer[buffer.length - 1];\n\n if (lastUpdate.ts !== update.prevTs) {\n this.bufferedOrderBookUpdates[symbol] = [];\n }\n }\n\n this.bufferedOrderBookUpdates[symbol].push(update);\n }\n private isValidFullOrderBook(symbol: string, currentTs: number) {\n if ((this.bufferedOrderBookUpdates[symbol]?.length ?? 0) !== 0) {\n const earliestUpdates = this.bufferedOrderBookUpdates[symbol][0];\n\n // Incoming full orderbook is invalid if the timestamp is less than all of our buffered diff orderbook updates.\n return earliestUpdates.prevTs <= currentTs;\n }\n return true;\n }\n\n setFullOrderbook(symbol: string, rawOrderbook: RawOrderBook){\n const {ts} = rawOrderbook;\n this.rawOrderBook[symbol] = rawOrderbook;\n this.sortBufferedOrderBookUpdates(symbol);\n if (this.isValidFullOrderBook(symbol, ts)) {\n this.applyBufferedUpdatesToRawOrderBooks(symbol);\n }\n\n\n\n };\n\n updateOrderbook(symbol: string, update: RawOrderBookUpdate, callback: () => void) {\n const {asks, bids, prevTs, ts} = update;\n const rawOrderBook = this.rawOrderBook[symbol];\n if (!rawOrderBook) {\n return;\n }\n const currentTs = rawOrderBook.ts;\n if (currentTs === 0) {\n this.pushUpdateToBuffer(symbol, { asks, bids, prevTs, ts });\n return;\n }\n if (prevTs !== currentTs) {\n\n this.pushUpdateToBuffer(symbol, {asks, bids, prevTs, ts})\n if (callback) {\n callback();\n }\n return;\n }\n\n this.applyUpdateToRawOrderBook(symbol, update);\n this.deleteBufferedOrderBookUpdates(symbol);\n }\n\n getRawOrderbook(symbol: string) {\n return this.rawOrderBook[symbol];\n }\n\n public resetOrderBook(symbol: string) {\n this.rawOrderBook[symbol] = defaultRawOrderBook;\n }\n\n\n\n\n}\n\nconst orderBookService = OrderbookService.getInstance();\n\nexport default orderBookService;","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { \n API,\n OrderEntity,\n OrderSide,\n OrderType,\n SDKError,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { Decimal, getPrecisionByNumber } from \"@orderly.network/utils\";\nimport { useMutation } from \"../useMutation\";\nimport { compose, head, includes, omit, pick } from \"ramda\";\nimport {\n baseInputHandle,\n getCalculateHandler,\n orderEntityFormatHandle,\n} from \"../utils/orderEntryHelper\";\nimport { useCollateral } from \"./useCollateral\";\nimport { useMaxQty } from \"./useMaxQty\";\n// import { availableOrderTypes } from \"../utils/createOrder\";\nimport { useMarkPrice } from \"./useMarkPrice\";\nimport { order as orderUtils } from \"@orderly.network/perp\";\nimport { useEventEmitter } from \"../useEventEmitter\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { OrderFactory } from \"../services/orderCreator/factory\";\n// import { VerifyResult } from \"../utils/createOrder\";\n\nexport type UseOrderEntryOptions = {\n commify?: boolean;\n // Whether to observe the orderbook, if it is a limit order, the orderbook will automatically calculate the est. liq. price when it is updated.\n watchOrderbook?: boolean;\n validate?: (\n data: OrderEntity\n ) => { [P in keyof OrderEntity]?: string } | null | undefined;\n};\n\nexport type UseOrderEntryMetaState = {\n errors:\n | { [P in keyof OrderEntity]?: { type: string; message: string } }\n | null\n | undefined;\n dirty: { [P in keyof OrderEntity]?: boolean } | null | undefined;\n submitted: boolean;\n};\n\nexport type UseOrderEntryReturn = {\n // Maximum open position\n maxQty: number;\n freeCollateral: number;\n markPrice: number;\n estLiqPrice?: number | null;\n estLeverage?: number | null;\n //@Deprecated\n onSubmit: (order: OrderEntity) => Promise<any>;\n submit: () => Promise<OrderEntity>;\n // order: data,\n submitting: boolean;\n formattedOrder: Partial<OrderEntity>;\n helper: {\n calculate: (\n values: Partial<OrderEntity>,\n field: keyof OrderEntity,\n value: any\n ) => Partial<OrderEntity>;\n validator: (values: Partial<OrderEntity>) => any;\n // clearErrors: () => void;\n // setValues: (values: Partial<OrderEntity>) => void;\n };\n // formState: any;\n metaState: UseOrderEntryMetaState;\n symbolConfig: API.SymbolExt;\n};\n\nexport type OrderParams = Required<\n Pick<OrderEntity, \"side\" | \"order_type\" | \"symbol\">\n> &\n Partial<Omit<OrderEntity, \"side\" | \"symbol\" | \"order_type\">>;\n\n/**\n * Create Order\n * @example\n * ```tsx\n * import { useOrderEntry } from \"@orderly.network/hooks\";\n * import {OrderSide, OrderType} from '@orderly.network/types';\n *\n * const { formattedOrder, onSubmit, helper } = useOrderEntry({\n * symbol: \"PERP_ETH_USDC\",\n * side: OrderSide.BUY,\n * order_type: OrderType.LIMIT,\n * order_price: 10000,\n * order_quantity: 1,\n * },{\n * // **Note:** it's required\n * watchOrderbook: true,\n * });\n * ```\n */\nexport function useOrderEntry(\n order: OrderParams,\n options?: UseOrderEntryOptions\n): UseOrderEntryReturn;\n/**\n * @deprecated\n */\nexport function useOrderEntry(\n symbol: string,\n side: OrderSide,\n reduceOnly: boolean\n): UseOrderEntryReturn;\nexport function useOrderEntry(\n symbolOrOrder: string | OrderParams,\n sideOrOptions?: OrderSide | UseOrderEntryOptions,\n reduceOnly?: boolean,\n options?: UseOrderEntryOptions\n): UseOrderEntryReturn {\n // if symbolOrOrder is string, then it's deprecated\n let isNewVersion = false;\n if (typeof symbolOrOrder === \"object\") {\n isNewVersion = true;\n\n if (!symbolOrOrder.symbol) {\n throw new SDKError(\"symbol is required\");\n }\n\n if (!symbolOrOrder.side) {\n throw new SDKError(\"Order side is required\");\n }\n\n if (!symbolOrOrder.order_type) {\n throw new SDKError(\"order_type is required\");\n }\n }\n\n const prevOrderData = useRef<Partial<OrderEntity> | null>(null);\n // Cache data from the last calculate\n const orderDataCache = useRef<Partial<OrderEntity> | null>(null);\n //\n const notSupportData = useRef<Partial<OrderEntity>>({});\n\n const [errors, setErrors] = useState<any>(null);\n\n const ee = useEventEmitter();\n\n const fieldDirty = useRef<{ [K in keyof OrderEntity]?: boolean }>({});\n const submitted = useRef<boolean>(false);\n const askAndBid = useRef<number[]>([]); // 0: ask0, 1: bid0\n\n const onOrderbookUpdate = useDebouncedCallback((data: number[]) => {\n askAndBid.current = data;\n }, 200);\n\n const { freeCollateral, totalCollateral, positions, accountInfo } =\n useCollateral();\n\n const symbolInfo = useSymbolsInfo();\n // const tokenInfo = useTokenInfo();\n\n const symbol = useMemo(() => {\n if (typeof symbolOrOrder === \"string\") {\n return symbolOrOrder;\n }\n return symbolOrOrder.symbol!;\n }, [symbolOrOrder]);\n\n const optionsValue = useMemo(() => {\n if (typeof sideOrOptions === \"object\") {\n return sideOrOptions;\n }\n\n return options;\n }, [sideOrOptions]);\n\n const isReduceOnly = useMemo<boolean>(() => {\n if (typeof reduceOnly === \"boolean\") {\n return reduceOnly;\n }\n\n if (typeof symbolOrOrder === \"object\") {\n return !!symbolOrOrder.reduce_only;\n }\n\n return false;\n }, [symbolOrOrder, reduceOnly]);\n\n const sideValue = useMemo(() => {\n if (typeof symbolOrOrder === \"object\") {\n return symbolOrOrder.side;\n }\n\n // if (typeof sideOrOptions === \"string\") {\n return sideOrOptions as OrderSide;\n // }\n }, [symbolOrOrder, sideOrOptions]);\n\n const baseDP = useMemo(\n () => getPrecisionByNumber(symbolInfo[symbol](\"base_tick\", 0)),\n [symbolInfo]\n );\n const quoteDP = useMemo(() => {\n return getPrecisionByNumber(symbolInfo[symbol](\"quote_tick\", 0));\n }, [symbolInfo]);\n\n const baseIMR = useMemo(\n () => symbolInfo[symbol](\"base_imr\", 0),\n [symbolInfo]\n );\n const baseMMR = useMemo(\n () => symbolInfo[symbol](\"base_mmr\", 0),\n [symbolInfo]\n );\n\n const { data: markPrice } = useMarkPrice(symbol);\n // const markPrice = 1;\n\n const diffOrderEntry = (\n prev: Partial<OrderParams>,\n current: Partial<OrderParams>\n ): { key: keyof OrderParams; value: any; preValue: any } | null => {\n if (!prev) return null;\n let key, value, preValue;\n const keys = Object.keys(current) as (keyof OrderParams)[];\n\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n\n let preveValue = prev[k];\n let currentValue = current[k];\n\n if (\n typeof preveValue === \"undefined\" &&\n typeof currentValue === \"undefined\"\n )\n continue;\n\n // if (k === \"order_quantity\") {\n // preveValue = Number(preveValue);\n // currentValue = Number(currentValue);\n // }\n\n if (preveValue !== currentValue) {\n key = k;\n value = currentValue;\n preValue = preveValue;\n break;\n }\n }\n\n if (!key) return null;\n\n return { key, value, preValue };\n };\n\n const maxQty = useMaxQty(symbol, sideValue, isReduceOnly);\n\n const parseString2Number = (\n order: OrderParams & Record<string, any>,\n key: keyof OrderParams,\n dp?: number,\n ) => {\n if (typeof order[key] !== \"string\") return;\n // fix: delete the comma then remove the forward one of the string\n // first find the difference between current value and previous value\n\n if (order[key] && (order[key] as string).startsWith(\".\")) {\n (order[key] as string) = `0${order[key]}`;\n }\n\n // order[`${key}_origin`] = order[key];\n (order[key] as string) = (order[key] as string).replace(/,/g, \"\");\n\n // format input by decimal precision\n if (dp && (order[key] as string).length > 0) {\n const hasPoint = `${order[key]}`.includes(\".\");\n const endOfPoint = `${order[key]}`.endsWith(\".\");\n const decimalPart = `${order[key]}`.split(\".\");\n if (hasPoint && !endOfPoint) {\n (order[key] as string) = `${decimalPart[0]}.${decimalPart[1].slice(0,quoteDP)}`;\n }\n }\n };\n\n // just for performance optimization\n const needParse = useMemo(() => {\n if (typeof symbolOrOrder === \"string\") {\n return null;\n }\n return pick([\n \"order_price\",\n \"side\",\n \"order_quantity\",\n \"visible_quantity\",\n \"order_type\",\n \"order_type_ext\",\n \"symbol\",\n \"total\",\n \"reduce_only\",\n \"trigger_price\",\n ])(\n //@ts-ignore\n symbolOrOrder\n );\n }, [symbolOrOrder]);\n\n const parsedData = useMemo<OrderParams | null>(() => {\n if (typeof symbolOrOrder === \"string\") {\n return null;\n }\n // clean comma\n\n if (typeof symbolOrOrder.order_quantity === \"string\") {\n parseString2Number(symbolOrOrder, \"order_quantity\");\n } else if (typeof symbolOrOrder.order_quantity === \"number\") {\n symbolOrOrder.order_quantity = new Decimal(symbolOrOrder.order_quantity)\n .toDecimalPlaces(baseDP)\n .toString();\n }\n\n if (typeof symbolOrOrder.order_price === \"string\") {\n parseString2Number(symbolOrOrder, \"order_price\", quoteDP);\n }\n\n if (typeof symbolOrOrder.total === \"string\") {\n parseString2Number(symbolOrOrder, \"total\", quoteDP);\n }\n\n if (typeof symbolOrOrder.trigger_price === \"string\") {\n parseString2Number(symbolOrOrder, \"trigger_price\", quoteDP);\n }\n\n // if (typeof symbolOrOrder.trigger_price === \"string\") {\n // symbolOrOrder.trigger_price = symbolOrOrder.trigger_price.replace(\n // /,/g,\n // \"\"\n // );\n // }\n\n return symbolOrOrder;\n }, [\n needParse?.order_price,\n needParse?.order_quantity,\n needParse?.total,\n needParse?.trigger_price,\n needParse?.order_type,\n needParse?.order_type_ext,\n needParse?.symbol,\n needParse?.reduce_only,\n needParse?.side,\n needParse?.visible_quantity,\n quoteDP,\n baseDP,\n ]);\n\n const isAlgoOrder =\n parsedData?.order_type === OrderType.STOP_LIMIT ||\n parsedData?.order_type === OrderType.STOP_MARKET ||\n parsedData?.order_type === OrderType.CLOSE_POSITION;\n\n const [doCreateOrder, { isMutating }] = useMutation<OrderEntity, any>(\n isAlgoOrder ? \"/v1/algo/order\" : \"/v1/order\"\n );\n\n // const maxQty = 3;\n\n const createOrder = (values: Partial<OrderEntity>): Promise<OrderEntity> => {\n if (!values.symbol) {\n throw new SDKError(\"symbol is error\");\n }\n\n if (!values.side) {\n throw new SDKError(\"side is error\");\n }\n\n if (!values || typeof values.order_type === \"undefined\") {\n throw new SDKError(\"order_type is error\");\n }\n\n const orderCreator = OrderFactory.create(\n // @ts-ignore\n values.order_type_ext ? values.order_type_ext : values.order_type\n );\n\n if (!orderCreator) {\n return Promise.reject(new SDKError(\"orderCreator is null\"));\n }\n\n \n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(values, {\n symbol: symbolInfo[symbol](),\n // token: tokenInfo[symbol](),\n maxQty,\n markPrice: markPrice,\n })\n .then((errors: any) => {\n submitted.current = true;\n\n if (\n errors.order_price ||\n errors.order_quantity ||\n errors.trigger_price ||\n errors.total\n ) {\n setErrors(errors);\n reject(\n errors.order_price?.message || errors.order_quantity?.message\n );\n // throw new SDKError(\n // errors.order_price?.message ||\n // errors.order_quantity?.message ||\n // \"order validation error\"\n // );\n } else {\n const data = orderCreator.create(values as OrderEntity, {\n symbol: symbolInfo[symbol](),\n maxQty,\n markPrice: markPrice,\n });\n\n // console.log(\"------------------\", values, data);\n\n return doCreateOrder(\n omit([\"order_type_ext\"], {\n // ...values,\n // ...omit([\"order_price\"], values),\n ...data,\n })\n ).then((res) => {\n // resolve(res);\n if (res.success) {\n // TODO: remove when the WS service is fixed\n\n // if (Array.isArray(res.data.rows)) {\n // ee.emit(\"algoOrder:cache\", {\n // ...res.data.rows[0],\n // trigger_price: data.trigger_price,\n // });\n // }\n\n resolve(res.data);\n } else {\n reject(res);\n }\n }, reject);\n }\n });\n });\n };\n\n /**\n * submit form,validate values\n * @param values\n * @returns\n */\n const onSubmit = (values: OrderEntity) => {\n if (typeof reduceOnly === \"boolean\" && reduceOnly && !values.reduce_only) {\n return Promise.reject(\n new SDKError(\n \"The reduceOny parameter of hook does not match your order data\"\n )\n );\n }\n return createOrder({\n ...values,\n symbol,\n });\n };\n\n const submit = useCallback(() => {\n if (!parsedData) {\n throw new SDKError(\"Function is not supported, please use onSubmit()\");\n }\n return createOrder(parsedData);\n }, [parsedData]);\n\n const calculate = useCallback(\n (\n values: Partial<OrderEntity>,\n field: keyof OrderEntity,\n value: any\n ): Partial<OrderEntity> => {\n const fieldHandler = getCalculateHandler(field);\n const newValues = compose(\n head,\n orderEntityFormatHandle(baseDP, quoteDP),\n fieldHandler,\n baseInputHandle\n )([values, field, value, markPrice, { baseDP, quoteDP }]);\n\n return newValues as Partial<OrderEntity>;\n },\n [markPrice]\n );\n\n // const estLiqPrice = useMemo(() => {}, []);\n\n const validator = (values: any) => {\n // @ts-ignore\n const creator = OrderFactory.create(values.order_type);\n\n return creator?.validate(values, {\n symbol: symbolInfo[symbol](),\n // token: tokenInfo[symbol](),\n maxQty,\n markPrice: markPrice,\n });\n };\n\n const formattedOrder = useMemo<Partial<OrderEntity>>(() => {\n if (!parsedData) {\n return notSupportData.current;\n }\n // prevOrderData.current = symbolOrOrder;\n\n if (!prevOrderData.current) {\n // prevOrderData.current = {\n // ...symbolOrOrder,\n // total: \"\",\n // };\n\n prevOrderData.current = parsedData;\n orderDataCache.current = {\n ...parsedData,\n total: \"\",\n };\n\n return orderDataCache.current as Partial<OrderEntity>;\n }\n\n // diff order entry\n const item = diffOrderEntry(prevOrderData.current, parsedData);\n\n // console.log(prevOrderData.current, symbolOrOrder, item);\n // console.log(item);\n\n if (!item) {\n return orderDataCache.current as Partial<OrderEntity>;\n }\n\n // set field dirty\n if (typeof parsedData.order_price !== \"undefined\") {\n fieldDirty.current.order_price = true;\n }\n if (typeof parsedData.order_quantity !== \"undefined\") {\n fieldDirty.current.order_quantity = true;\n }\n\n const values = calculate(parsedData, item.key, item.value);\n\n values.isStopOrder = values.order_type?.startsWith(\"STOP\") || false;\n\n values.total = values.total || \"\";\n\n prevOrderData.current = parsedData;\n orderDataCache.current = values;\n\n return values;\n }, [parsedData, markPrice]);\n\n /// validator order info\n useEffect(() => {\n if (!markPrice || symbolInfo.isNil) return;\n // validate order data;\n validator(formattedOrder)\n ?.then((err) => {\n setErrors(err);\n })\n .catch((err) => {});\n }, [\n formattedOrder.broker_id,\n formattedOrder.order_quantity,\n formattedOrder.total,\n formattedOrder.trigger_price,\n formattedOrder.order_type,\n markPrice,\n ]);\n\n //====== update orderbook ask0/bid0 ======\n useEffect(() => {\n if (isNewVersion) {\n if (!optionsValue?.watchOrderbook) {\n throw new SDKError(\n \"In order to calculate the estimated liquidation price, the `options.watchOrderbook` parameter must be set to true.\"\n );\n }\n } else {\n if (!optionsValue?.watchOrderbook) {\n return;\n }\n }\n\n ee.on(\"orderbook:update\", onOrderbookUpdate);\n\n return () => {\n ee.off(\"orderbook:update\", onOrderbookUpdate);\n };\n }, [optionsValue?.watchOrderbook]);\n\n useEffect(() => {\n askAndBid.current = [];\n }, [parsedData?.symbol]);\n\n //====== end ======\n\n const getPriceAndQty = (\n symbolOrOrder: OrderEntity\n ): { quantity: number; price: number } | null => {\n let quantity = Number(symbolOrOrder.order_quantity);\n const orderPrice = Number(symbolOrOrder.order_price);\n\n if (isNaN(quantity) || quantity <= 0) {\n return null;\n }\n\n if (!!options?.watchOrderbook && askAndBid.current.length === 0) {\n throw new SDKError(\n \"Please check if you are using the `useOrderbookStream` hook or if the orderBook has data.\"\n );\n }\n\n if (\n (symbolOrOrder.order_type === OrderType.LIMIT ||\n symbolOrOrder.order_type === OrderType.STOP_LIMIT) &&\n isNaN(orderPrice)\n )\n return null;\n\n /**\n * price\n * if order_type = market order,\n order side = long, then order_price_i = ask0\n order side = short, then order_price_i = bid0\n if order_type = limit order\n order side = long\n limit_price >= ask0, then order_price_i = ask0\n limit_price < ask0, then order_price_i = limit_price\n order side = short\n limit_price <= bid0, then order_price_i = bid0\n limit_price > ask0, then order_price_i = ask0\n */\n let price: number | undefined;\n\n if (\n symbolOrOrder.order_type === OrderType.MARKET ||\n symbolOrOrder.order_type === OrderType.STOP_MARKET\n ) {\n if (symbolOrOrder.side === OrderSide.BUY) {\n price = askAndBid.current[0];\n } else {\n price = askAndBid.current[1];\n }\n } else {\n // LIMIT order\n if (symbolOrOrder.side === OrderSide.BUY) {\n if (orderPrice >= askAndBid.current[0]) {\n price = askAndBid.current[0];\n } else {\n price = orderPrice;\n }\n } else {\n if (orderPrice <= askAndBid.current[1]) {\n price = askAndBid.current[1];\n } else {\n price = orderPrice;\n }\n }\n }\n\n if (symbolOrOrder.side === OrderSide.SELL) {\n quantity = -quantity;\n }\n\n return { price, quantity };\n };\n\n const estLiqPrice = useMemo(() => {\n if (!accountInfo || !parsedData || !markPrice) return null;\n\n const result = getPriceAndQty(formattedOrder as OrderEntity);\n if (result === null) return null;\n const { price, quantity } = result;\n if (!price || !quantity) return null;\n\n const orderFee = orderUtils.orderFee({\n qty: quantity,\n price,\n futuresTakeFeeRate: Number(accountInfo[\"futures_taker_fee_rate\"]) / 10000,\n });\n\n const liqPrice = orderUtils.estLiqPrice({\n markPrice,\n baseIMR,\n baseMMR,\n totalCollateral,\n positions,\n IMR_Factor: accountInfo[\"imr_factor\"][symbol],\n orderFee,\n newOrder: {\n qty: quantity,\n price,\n symbol: parsedData.symbol!,\n },\n });\n\n // console.log(\"********\", liqPrice, markPrice, totalCollateral, result);\n\n if (liqPrice <= 0) return null;\n\n return liqPrice;\n }, [\n markPrice,\n baseIMR,\n baseMMR,\n totalCollateral,\n formattedOrder?.order_price,\n formattedOrder?.order_quantity,\n formattedOrder?.total,\n formattedOrder?.trigger_price,\n accountInfo,\n ]);\n\n const estLeverage = useMemo(() => {\n if (!accountInfo || !parsedData) return null;\n const result = getPriceAndQty(formattedOrder as OrderEntity);\n if (result === null || !result.price || !result.quantity) return null;\n\n const leverage = orderUtils.estLeverage({\n totalCollateral,\n positions,\n newOrder: {\n symbol: parsedData.symbol,\n qty: result.quantity,\n price: result.price,\n },\n });\n\n return leverage;\n }, [\n baseIMR,\n baseMMR,\n totalCollateral,\n positions,\n formattedOrder?.order_price,\n formattedOrder?.order_quantity,\n formattedOrder?.total,\n formattedOrder?.trigger_price,\n ]);\n\n return {\n maxQty,\n freeCollateral,\n markPrice,\n onSubmit,\n submit,\n submitting: isMutating,\n formattedOrder,\n // errors,\n estLiqPrice,\n estLeverage,\n helper: {\n calculate,\n validator,\n // clearErrors,\n },\n metaState: {\n dirty: fieldDirty.current,\n submitted: submitted.current,\n errors,\n },\n symbolConfig: symbolInfo[symbol](),\n };\n}\n","import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type OrderEntityKey = keyof OrderEntity & string;\n\n// index 3: markPrice\ntype orderEntryInputs = [\n Partial<OrderEntity>,\n // to update field\n keyof OrderEntity,\n any,\n number,\n {\n baseDP: number;\n quoteDP: number;\n }\n];\n\ntype orderEntryInputHandle = (inputs: orderEntryInputs) => orderEntryInputs;\n\nconst needNumberOnlyFields: (keyof OrderEntity)[] = [\n \"order_quantity\",\n \"order_price\",\n \"trigger_price\",\n \"total\",\n];\n\n/// only save number\nexport const cleanStringStyle = (str: string | number): string => {\n if (typeof str !== \"string\") {\n str = `${str}`;\n }\n str = str.replace(/,/g, \"\");\n // clear extra character expect number and .\n str = str\n .replace(/[^\\d.]/g, \"\")\n .replace(\".\", \"$#$\")\n .replace(/\\./g, \"\")\n .replace(\"$#$\", \".\");\n\n return str;\n};\n\nexport function baseInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n let [values, input, value, markPrice, config] = inputs;\n\n needNumberOnlyFields.forEach((field) => {\n if (typeof values[field] !== \"undefined\") {\n // @ts-ignore\n values[field] = cleanStringStyle(values[field] as string);\n }\n });\n\n if (needNumberOnlyFields.includes(input)) {\n value = cleanStringStyle(value);\n }\n\n return [\n {\n ...values,\n [input]: value,\n },\n input,\n value,\n markPrice,\n config,\n ];\n\n // return [values, input, value, markPrice];\n}\n\nexport function orderTypeHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === OrderType.LIMIT || value === OrderType.STOP_LIMIT) {\n if (values.order_price === \"\") {\n values.total = \"\";\n }\n }\n\n return [values, input, value, markPrice, config];\n}\n\n/**\n * digital precision processing\n * @param inputs\n * @returns\n */\nexport function orderEntityFormatHandle(baseTick: number, quoteTick: number) {\n return function (inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n // TODO: formatting only deals with the thousandths and so on\n // if (!!values.order_quantity) {\n //\n // const d = new Decimal(values.order_quantity);\n // const dp = d.dp();\n // if (dp > quoteTick) {\n // values.order_quantity = d.toDecimalPlaces(baseTick).toNumber();\n // }\n // }\n\n // if (!!values.order_price && values.order_type === OrderType.LIMIT) {\n // const sd = new Decimal(values.order_price).sd(false);\n // if (sd > quoteTick) {\n // values.order_price = new Decimal(values.order_price).toFixed(quoteTick);\n // }\n // }\n\n // if (!!values.total) {\n // const sd = new Decimal(values.total).sd(false);\n // if (sd > quoteTick) {\n // values.total = new Decimal(values.total).toFixed(quoteTick);\n // }\n // }\n\n return [values, input, value, markPrice, config];\n };\n}\n\n/**\n * price input handle\n * @param inputs\n * @returns\n */\nfunction priceInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n // when entering the price, total also needs to be linked\n const price = new Decimal(value);\n const priceDP = price.dp();\n\n if (priceDP > config.quoteDP) {\n values.order_price = price.toDecimalPlaces(config.quoteDP).toString();\n }\n\n price.toDecimalPlaces(Math.min(priceDP, config.quoteDP));\n\n if (!values.order_quantity && !values.total) {\n return [values, input, value, markPrice, config];\n }\n\n const newValue = {\n ...values,\n };\n\n if (values.order_quantity) {\n // total = price.mul(values.order_quantity);\n newValue.total = price.mul(values.order_quantity).todp(2).toString();\n } else if (values.total) {\n // total = new Decimal(values.total);\n newValue.order_quantity = new Decimal(values.total)\n .div(price)\n .todp(config.baseDP)\n .toString();\n }\n\n // const quantityDP = total.dp();\n return [\n // {\n // ...values,\n // total: total.todp(2).toString(),\n // },\n newValue,\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * quantity input handle\n * @param inputs\n * @returns\n */\nfunction quantityInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n\n if (value === \"\") {\n return [{ ...values, total: \"\" }, input, value, markPrice, config];\n }\n\n let quantity = new Decimal(value);\n const quantityDP = quantity.dp();\n\n // check the length for precision and recalculate\n if (quantityDP > config.baseDP) {\n quantity = quantity.toDecimalPlaces(config.baseDP);\n values.order_quantity = quantity.toNumber();\n }\n\n // if(values.order_type === OrderType.MARKET) {\n\n // }\n\n if (\n values.order_type === OrderType.MARKET ||\n values.order_type === OrderType.STOP_MARKET\n ) {\n const price = markPrice;\n values.total = quantity.mul(price).todp(2).toString();\n }\n\n if (\n values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT\n ) {\n if (values.order_price) {\n const price = Number(values.order_price);\n const total = quantity.mul(price);\n values.total = total.todp(config.quoteDP).toString();\n } else {\n values.total = \"\";\n }\n }\n\n // const totalDP = total.dp();\n // total.todp(Math.min(config.quoteDP, totalDP));\n\n return [\n {\n ...values,\n // total: total.todp(2).toNumber(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * total input handle\n * @param inputs\n * @returns\n */\nfunction totalInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n const [values, input, value, markPrice, config] = inputs;\n if (value === \"\") {\n return [{ ...values, order_quantity: \"\" }, input, value, markPrice, config];\n }\n\n let price = markPrice;\n\n if (\n (values.order_type === OrderType.LIMIT ||\n values.order_type === OrderType.STOP_LIMIT) &&\n !!values.order_price\n ) {\n price = Number(values.order_price);\n }\n let total = new Decimal(value);\n const totalDP = total.dp();\n\n if (totalDP > config.quoteDP) {\n total = total.toDecimalPlaces(config.quoteDP);\n values.total = total.toString();\n }\n\n const quantity = total.div(price);\n\n return [\n {\n ...values,\n order_quantity: quantity\n .toDecimalPlaces(Math.min(config.baseDP, quantity.dp()))\n .toString(),\n },\n input,\n value,\n markPrice,\n config,\n ];\n}\n\n/**\n * other input handle\n * @param inputs\n * @returns\n */\nfunction otherInputHandle(inputs: orderEntryInputs): orderEntryInputs {\n return inputs;\n}\n\nexport const getCalculateHandler = (\n fieldName: string\n): orderEntryInputHandle => {\n switch (fieldName) {\n case \"order_type\":\n return orderTypeHandle;\n case \"order_quantity\": {\n return quantityInputHandle;\n }\n case \"order_price\": {\n return priceInputHandle;\n }\n case \"total\": {\n return totalInputHandle;\n }\n default:\n return otherInputHandle;\n }\n};\n\n//** format number */\nexport function formatNumber(\n qty?: string | number,\n dp?: number | string\n): string | undefined {\n if (typeof qty === \"undefined\") return qty;\n if (typeof dp === \"undefined\") return `${qty}`;\n\n // console.log(\"qty\", qty, \"dp\", dp);\n \n const _qty = `${qty}`.replace(/,/g, \"\");\n \n \n try {\n const _dp = new Decimal(dp);\n const _qtyDecimal = new Decimal(_qty);\n \n if (_dp.lessThan(1)) {\n if (`${_qty}`.endsWith(\".\")) return `${_qty}`;\n \n const numStr = dp.toString();\n const decimalIndex = numStr.indexOf(\".\");\n const digitsAfterDecimal =\n decimalIndex === -1 ? 0 : numStr.length - decimalIndex - 1;\n\n const result = _qtyDecimal\n .toDecimalPlaces(digitsAfterDecimal, Decimal.ROUND_DOWN)\n .toString();\n\n return result;\n }\n\n if (_qtyDecimal.lessThan(_dp)) {\n return _qty;\n }\n\n return _qtyDecimal\n .dividedBy(_dp)\n .toDecimalPlaces(0, Decimal.ROUND_DOWN)\n .mul(dp)\n .toString();\n } catch (e) { \n return undefined;\n }\n}\n","import { useMemo } from \"react\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport {\n pathOr_unsettledPnLPathOr,\n usePositionStream,\n} from \"./usePositionStream/usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { account } from \"@orderly.network/perp\";\nimport { type API } from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { zero } from \"@orderly.network/utils\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useHoldingStream } from \"./useHoldingStream\";\n\nexport type CollateralOutputs = {\n totalCollateral: number;\n freeCollateral: number;\n totalValue: number;\n availableBalance: number;\n unsettledPnL: number;\n\n positions: API.Position[];\n accountInfo?: API.AccountInfo;\n};\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\nconst totalCollateralPath = pathOr(0, [0, \"totalCollateral\"]);\n\nexport const useCollateral = (\n options: {\n /** decimal precision */\n dp: number;\n } = { dp: 6 }\n): CollateralOutputs => {\n const { dp } = options;\n const positions = usePositionStream(undefined, {\n includedPendingOrder: true,\n });\n\n // console.log(\"positions\", positions);\n\n // const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const { usdc } = useHoldingStream();\n\n // const filterAlgoOrders =\n // orders?.filter((item) => item.algo_order_id === undefined) ?? [];\n\n // const { data: holding } = usePrivateQuery<API.Holding[]>(\n // \"/v1/client/holding\",\n // {\n // formatter: (data) => {\n // return data.holding;\n // },\n // }\n // );\n\n const [totalCollateral, totalValue] = useMemo(() => {\n return [\n pathOr(zero, [0, \"totalCollateral\"], positions),\n pathOr(zero, [0, \"totalValue\"], positions),\n ];\n }, [positions, markPrices]);\n\n const totalInitialMarginWithOrders = useMemo(() => {\n if (!accountInfo || !symbolInfo || !markPrices) {\n return 0;\n }\n\n return account.totalInitialMarginWithQty({\n positions: positionsPath(positions),\n markPrices,\n IMR_Factors: accountInfo.imr_factor,\n maxLeverage: accountInfo.max_leverage,\n symbolInfo,\n });\n }, [\n positions,\n // filterAlgoOrders,\n markPrices,\n accountInfo,\n symbolInfo,\n ]);\n\n const freeCollateral = useMemo(() => {\n return account.freeCollateral({\n totalCollateral,\n totalInitialMarginWithOrders,\n });\n }, [totalCollateral, totalInitialMarginWithOrders]);\n\n const availableBalance = useMemo(() => {\n return account.availableBalance({\n USDCHolding: usdc?.holding ?? 0,\n unsettlementPnL: pathOr_unsettledPnLPathOr(positions),\n });\n }, [usdc?.holding, pathOr_unsettledPnLPathOr(positions)]);\n\n return {\n totalCollateral: totalCollateral.toDecimalPlaces(dp).toNumber(),\n freeCollateral: freeCollateral.toDecimalPlaces(dp).toNumber(),\n totalValue: totalValue.toDecimalPlaces(dp).toNumber(),\n availableBalance,\n unsettledPnL: pathOr_unsettledPnLPathOr(positions),\n\n accountInfo,\n\n // @hidden\n positions: positionsPath(positions),\n };\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { type SWRConfiguration } from \"swr\";\nimport { createGetter } from \"../../utils/createGetter\";\nimport { useFundingRates } from \"../useFundingRates\";\nimport {\n type API,\n OrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { pathOr, propOr } from \"ramda\";\nimport { parseHolding } from \"../../utils/parseHolding\";\nimport { Decimal, zero } from \"@orderly.network/utils\";\nimport { useMarketsStream } from \"../useMarketsStream\";\nimport { useOrderStream } from \"../orderlyHooks\";\nimport {\n findPositionTPSLFromOrders,\n findTPSLFromOrder,\n findTPSLFromOrders,\n} from \"./utils\";\n\ntype PriceMode = \"markPrice\" | \"lastPrice\";\n\nexport interface PositionReturn {\n data: any[];\n loading: boolean;\n close: (\n order: Pick<OrderEntity, \"order_type\" | \"order_price\" | \"side\">\n ) => void;\n}\n\nexport const usePositionStream = (\n /**\n * If symbol is passed, only the position of that symbol will be returned.\n */\n symbol?: string,\n options?: SWRConfiguration & {\n calcMode?: PriceMode;\n /**\n * If true, the pending order will be included in the result.\n */\n includedPendingOrder?: boolean;\n }\n) => {\n const symbolInfo = useSymbolsInfo();\n\n const { includedPendingOrder = false } = options || {};\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const { data: holding } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const fundingRates = useFundingRates();\n\n const {\n data,\n error,\n isLoading,\n isValidating,\n mutate: refreshPositions,\n } = usePrivateQuery<API.PositionInfo>(`/v1/positions`, {\n // revalidateOnFocus: false,\n // revalidateOnReconnect: false,\n // dedupingInterval: 200,\n // keepPreviousData: false,\n // revalidateIfStale: true,\n ...options,\n\n formatter: (data) => data,\n onError: (err) => {},\n });\n\n const { data: markPrices } = useMarkPricesStream();\n\n // get TP/SL orders;\n\n const [tpslOrders] = useOrderStream({\n status: OrderStatus.INCOMPLETE,\n includes: [AlgoOrderRootType.POSITIONAL_TP_SL, AlgoOrderRootType.TP_SL],\n });\n //\n\n // console.log(\"---------------\");\n\n const [priceMode, setPriceMode] = useState(options?.calcMode || \"markPrice\");\n\n useEffect(() => {\n if (options?.calcMode && priceMode !== options?.calcMode) {\n setPriceMode(options?.calcMode);\n }\n }, [options?.calcMode]);\n\n const { data: tickers } = useMarketsStream();\n\n const tickerPrices = useMemo(() => {\n const data: Record<string, number> = Object.create(null);\n tickers?.forEach((item) => {\n // @ts-ignore\n data[item.symbol] = item[\"24h_close\"];\n });\n return data;\n }, [tickers]);\n\n const formatedPositions = useMemo<[API.PositionExt[], any] | null>(() => {\n if (!data?.rows || symbolInfo.isNil || !accountInfo) return null;\n\n const filteredData =\n typeof symbol === \"undefined\" || symbol === \"\"\n ? data.rows\n : data.rows.filter((item) => {\n return item.symbol === symbol;\n });\n\n let unrealPnL_total = zero,\n notional_total = zero,\n unsettlementPnL_total = zero;\n\n const formatted = filteredData.map((item: API.Position) => {\n // const price = (markPrices as any)[item.symbol] ?? item.mark_price;\n const unRealizedPrice = propOr(\n item.mark_price,\n item.symbol,\n priceMode === \"markPrice\" ? markPrices : tickerPrices\n ) as unknown as number;\n\n const price = propOr(\n item.mark_price,\n item.symbol,\n markPrices\n ) as unknown as number;\n\n const info = symbolInfo[item.symbol];\n //\n\n const notional = positions.notional(item.position_qty, price);\n\n const unrealPnl = positions.unrealizedPnL({\n qty: item.position_qty,\n openPrice: item?.average_open_price,\n markPrice: unRealizedPrice,\n });\n\n const imr = account.IMR({\n maxLeverage: accountInfo.max_leverage,\n baseIMR: info(\"base_imr\"),\n IMR_Factor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: notional,\n ordersNotional: 0,\n IMR_factor_power: 4 / 5,\n });\n\n const unrealPnlROI = positions.unrealizedPnLROI({\n positionQty: item.position_qty,\n openPrice: item.average_open_price,\n IMR: imr,\n unrealizedPnL: unrealPnl,\n });\n\n const unsettlementPnL = positions.unsettlementPnL({\n positionQty: item.position_qty,\n markPrice: price,\n costPosition: item.cost_position,\n sumUnitaryFunding: fundingRates[item.symbol]?.(\n \"sum_unitary_funding\",\n 0\n ),\n lastSumUnitaryFunding: item.last_sum_unitary_funding,\n });\n\n unrealPnL_total = unrealPnL_total.add(unrealPnl);\n notional_total = notional_total.add(notional);\n unsettlementPnL_total = unsettlementPnL_total.add(unsettlementPnL);\n\n return {\n ...item,\n mark_price: price,\n mm: 0,\n notional,\n unsettlement_pnl: unsettlementPnL,\n unrealized_pnl: unrealPnl,\n unrealized_pnl_ROI: unrealPnlROI,\n symbolInfo: info\n };\n });\n\n return [\n formatted,\n {\n unrealPnL: unrealPnL_total.toNumber(),\n notional: notional_total.toNumber(),\n unsettledPnL: unsettlementPnL_total.toNumber(),\n },\n ];\n }, [\n data?.rows,\n symbolInfo,\n accountInfo,\n markPrices,\n priceMode,\n tickerPrices,\n symbol,\n holding,\n ]);\n\n // const showSymbol = useCallback((symbol: string) => {\n // setVisibleSymbol(symbol);\n // }, []);\n\n const [totalCollateral, totalValue, totalUnrealizedROI] = useMemo<\n [Decimal, Decimal, number]\n >(() => {\n if (!holding || !markPrices) {\n return [zero, zero, 0];\n }\n const unsettlemnedPnL = pathOr(0, [1, \"unsettledPnL\"])(formatedPositions);\n const unrealizedPnL = pathOr(0, [1, \"unrealPnL\"])(formatedPositions);\n\n const [USDC_holding, nonUSDC] = parseHolding(holding, markPrices);\n\n const totalCollateral = account.totalCollateral({\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n unsettlementPnL: unsettlemnedPnL,\n });\n\n const totalValue = account.totalValue({\n totalUnsettlementPnL: unsettlemnedPnL,\n USDCHolding: USDC_holding,\n nonUSDCHolding: nonUSDC,\n });\n\n const totalUnrealizedROI = account.totalUnrealizedROI({\n totalUnrealizedPnL: unrealizedPnL,\n totalValue: totalValue.toNumber(),\n });\n\n return [totalCollateral, totalValue, totalUnrealizedROI];\n }, [holding, formatedPositions, markPrices]);\n\n const positionsRows = useMemo<API.PositionTPSLExt[] | null>(() => {\n if (!formatedPositions) return null;\n\n if (!symbolInfo || !accountInfo) return formatedPositions[0];\n\n const total = totalCollateral.toNumber();\n\n let rows = formatedPositions[0];\n\n if (!includedPendingOrder) {\n rows = rows.filter((item) => item.position_qty !== 0);\n } else {\n rows = rows.filter(\n (item) =>\n item.position_qty !== 0 ||\n item.pending_long_qty !== 0 ||\n item.pending_short_qty !== 0\n );\n }\n // .filter((item) => item.position_qty !== 0)\n rows = rows.map((item) => {\n const info = symbolInfo?.[item.symbol];\n\n const related_order = Array.isArray(tpslOrders)\n ? findPositionTPSLFromOrders(tpslOrders, item.symbol)\n : undefined;\n\n const tp_sl_pricer = !!related_order\n ? findTPSLFromOrder(related_order)\n : undefined;\n\n const MMR = positions.MMR({\n baseMMR: info(\"base_mmr\"),\n baseIMR: info(\"base_imr\"),\n IMRFactor: accountInfo.imr_factor[item.symbol] as number,\n positionNotional: item.notional,\n IMR_factor_power: 4 / 5,\n });\n\n return {\n ...item,\n mm: positions.maintenanceMargin({\n positionQty: item.position_qty,\n markPrice: item.mark_price,\n MMR,\n }),\n tp_trigger_price: tp_sl_pricer?.tp_trigger_price,\n sl_trigger_price: tp_sl_pricer?.sl_trigger_price,\n\n mmr: MMR,\n\n // has_position_tp_sl:\n // !tp_sl_pricer?.sl_trigger_price && !tp_sl_pricer?.tp_trigger_price,\n algo_order: related_order,\n };\n });\n\n // calculate est_liq_price\n rows = rows.map((item) => {\n const est_liq_price = positions.liqPrice({\n markPrice: item.mark_price,\n totalCollateral: total,\n positionQty: item.position_qty,\n positions: rows,\n MMR: item.mmr,\n });\n return {\n ...item,\n est_liq_price,\n };\n });\n\n return rows;\n }, [formatedPositions, symbolInfo, accountInfo, totalCollateral, tpslOrders]);\n\n const positionInfoGetter = createGetter<\n Omit<API.PositionInfo, \"rows\">,\n keyof Omit<API.PositionInfo, \"rows\">\n >(data as any, 1);\n\n return [\n {\n rows: positionsRows,\n aggregated: {\n ...(formatedPositions?.[1] ?? {}),\n unrealPnlROI: totalUnrealizedROI,\n },\n totalCollateral,\n totalValue,\n totalUnrealizedROI,\n },\n positionInfoGetter,\n {\n /**\n * @deprecated use `isLoading` instead\n */\n loading: isLoading,\n isLoading,\n isValidating,\n // showSymbol,\n error,\n // loadMore: () => {},\n refresh: refreshPositions,\n },\n ] as const;\n};\n\nexport const pathOr_unsettledPnLPathOr = pathOr(0, [\n 0,\n \"aggregated\",\n \"unsettledPnL\",\n]);\n","import { useQuery } from \"../useQuery\";\nimport { type API } from \"@orderly.network/types\";\nimport { createGetter } from \"../utils/createGetter\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useFundingRates = () => {\n const { data } = useQuery<{ [key: string]: API.FundingRate }>(\n `/v1/public/funding_rates`,\n {\n focusThrottleInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n formatter(data: { rows: API.FundingRate[] }) {\n if (!data?.rows || !data?.rows?.length) {\n return {};\n }\n const obj = Object.create(null);\n\n for (let index = 0; index < data.rows.length; index++) {\n const item = data.rows[index];\n obj[item.symbol] = {\n ...item,\n est_funding_rate: getEstFundingRate(item),\n };\n }\n\n return obj;\n },\n }\n );\n\n return createGetter<API.FundingRate>(data);\n};\n\nfunction getEstFundingRate(data: API.FundingRate) {\n if (!data) return;\n\n const { next_funding_time, est_funding_rate } = data;\n\n if (getTimestamp() > next_funding_time) {\n return null;\n }\n\n return est_funding_rate;\n}\n","import useSWRSubscription, { SWRSubscriptionOptions } from \"swr/subscription\";\nimport { useWS } from \"../useWS\";\n\nexport const useMarkPricesStream = () => {\n const ws = useWS();\n return useSWRSubscription<Record<string, number>>(\n \"markPrices\",\n (\n key: string,\n { next }: SWRSubscriptionOptions<Record<string, number>, any>\n ) => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n \"markprices\",\n {\n onMessage: (message: any) => {\n const data: Record<string, number> = Object.create(null);\n\n for (let index = 0; index < message.length; index++) {\n const element = message[index];\n data[element.symbol] = element.price;\n }\n\n next(null, data);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n onError: (error: any) => {},\n }\n );\n\n return () => {\n unsubscribe?.();\n };\n }\n );\n};\n","import { API } from \"@orderly.network/types\";\n\ntype NonUSDCHolding = {\n holding: number;\n markPrice: number;\n // margin replacement rate, default 0\n discount: number;\n};\n\nexport const parseHolding = (\n holding: API.Holding[],\n markPrices: Record<string, number>\n): [number, NonUSDCHolding[]] => {\n // if (!holding || !markPrices) {\n // return [zero, zero];\n // }\n const nonUSDC: NonUSDCHolding[] = [];\n\n let USDC_holding = 0;\n\n holding.forEach((item) => {\n if (item.token === \"USDC\") {\n USDC_holding = item.holding;\n } else {\n nonUSDC.push({\n holding: item.holding,\n markPrice: markPrices[item.token] ?? 0,\n // markPrice: 0,\n discount: 0,\n });\n }\n });\n\n return [USDC_holding, nonUSDC];\n};\n","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useConfig } from \"../useConfig\";\n\nexport const useMarketsStream = () => {\n // get listing of all markets from /public/info\n const ws = useWS();\n // const brokerId = useConfig(\"brokerId\");\n const { data: futures } = useQuery<WSMessage.Ticker[]>(`/v1/public/futures`, {\n revalidateOnFocus: false,\n });\n\n // const topic = brokerId ? `${brokerId}$tickers` : \"tickers\";\n const topic = \"tickers\";\n\n const { data: tickers } = useSWRSubscription(\"tickers\", (_, { next }) => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n topic,\n {\n onMessage: (message: any) => {\n // window.debugPrint(message);\n next(null, message);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n // onError: (error: any) => {\n //\n // },\n }\n );\n\n return () => {\n unsubscribe?.();\n };\n });\n\n const value = useMemo(() => {\n if (!futures) return null;\n if (!tickers) return futures;\n\n return futures.map((item) => {\n const ticker = tickers.find(\n (t: WSMessage.Ticker) => t.symbol === item.symbol\n );\n if (ticker) {\n const data = {\n ...item,\n [\"24h_close\"]: ticker.close,\n [\"24h_open\"]: ticker.open,\n /**\n * @deprecated\n * spelling mistake, use 24h_volume to instead, will be remove next version\n */\n [\"24h_volumn\"]: ticker.volume,\n [\"24h_volume\"]: ticker.volume,\n [\"24h_amount\"]: ticker.amount,\n change: 0,\n };\n\n if (ticker.close !== undefined && ticker.open !== undefined) {\n data[\"change\"] = new Decimal(ticker.close)\n .minus(ticker.open)\n .div(ticker.open)\n .toNumber();\n }\n\n return data;\n }\n return item;\n });\n }, [futures, tickers]);\n\n return { data: value };\n};\n","import {\n API,\n AlgoOrderEntity,\n AlgoOrderType,\n AlgoOrderRootType,\n OrderStatus,\n} from \"@orderly.network/types\";\n\nexport const findTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): Partial<AlgoOrderEntity> | undefined => {\n const order = findPositionTPSLFromOrders(orders, symbol);\n\n // console.log(\"!!!!!\", order);\n\n if (!order) return;\n return findTPSLFromOrder(order);\n};\n\nexport const findTPSLFromOrder = (\n order: API.AlgoOrder\n): {\n tp_trigger_price?: number;\n sl_trigger_price?: number;\n} => {\n let tp_trigger_price;\n\n let sl_trigger_price;\n\n const tpOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.TAKE_PROFIT\n );\n const slOrder = order.child_orders.find(\n (order: any) => order.algo_type === AlgoOrderType.STOP_LOSS\n );\n\n if (tpOrder) {\n tp_trigger_price = tpOrder.trigger_price;\n // take_profit_qty = tpOrder.quantity ;\n }\n if (slOrder) {\n sl_trigger_price = slOrder.trigger_price;\n // stop_loss_qty = slOrder.quantity;\n }\n\n return {\n tp_trigger_price,\n sl_trigger_price,\n };\n};\n\nexport const findPositionTPSLFromOrders = (\n orders: API.AlgoOrder[],\n symbol: string\n): API.AlgoOrder | undefined => {\n return orders?.find((order) => {\n // console.log(order.symbol, symbol, order.algo_type);\n return (\n order.symbol === symbol &&\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL &&\n (order.root_algo_status === OrderStatus.NEW ||\n order.root_algo_status === OrderStatus.REPLACED ||\n order.root_algo_status === OrderStatus.PARTIAL_FILLED)\n );\n });\n\n // return order;\n};\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { useMemo } from \"react\";\nimport { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useHoldingStream = () => {\n const ws = useWS();\n\n const { data, isLoading, mutate } = usePrivateQuery<API.Holding[]>(\n \"/v1/client/holding\",\n {\n formatter: (data) => {\n return data.holding;\n },\n }\n );\n\n const usdc = useMemo(() => {\n const usdc = data?.find((item) => item.token === \"USDC\");\n return usdc;\n }, [data]);\n\n useSWRSubscription(\"holding\", (_, { next }) => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"balance\",\n event: \"subscribe\",\n topic: \"balance\",\n ts: getTimestamp(),\n },\n {\n onMessage: (data: any) => {\n const holding = data?.balances ?? ({} as Record<string, any>);\n\n if (holding) {\n mutate((prevData) => {\n return prevData?.map((item) => {\n const token = holding[item.token];\n return {\n ...item,\n frozen: token.frozen,\n holding: token.holding,\n };\n });\n });\n\n next(holding);\n }\n },\n }\n );\n\n return () => unsubscribe();\n });\n\n return {\n data,\n usdc,\n isLoading,\n };\n};\n","import { useEffect, useMemo } from \"react\";\nimport { type API, OrderSide, OrderStatus } from \"@orderly.network/types\";\n\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\n\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { account } from \"@orderly.network/perp\";\nimport { useCollateral } from \"./useCollateral\";\n\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { useOrderStream } from \"./useOrderStream/useOrderStream\";\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\n\n/**\n * @param symbol\n * @param side\n * @param reduceOnly\n * @returns the maximum quantity available for trading in USD\n */\nexport const useMaxQty = (\n symbol: string,\n side: OrderSide,\n reduceOnly: boolean = false\n) => {\n const positionsData = usePositionStream();\n\n // const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { totalCollateral } = useCollateral();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const maxQty = useMemo(() => {\n if (!symbol) return 0;\n\n const positions = positionsPath(positionsData);\n\n const positionQty = account.getQtyFromPositions(positions, symbol);\n\n if (reduceOnly) {\n if (positionQty > 0) {\n if (side === OrderSide.BUY) {\n return 0;\n } else {\n return Math.abs(positionQty);\n }\n }\n\n if (positionQty < 0) {\n if (side === OrderSide.BUY) {\n return Math.abs(positionQty);\n } else {\n return 0;\n }\n }\n\n return 0;\n }\n\n if (!markPrices || !markPrices[symbol] || !orders || !accountInfo) return 0;\n\n const getSymbolInfo = symbolInfo[symbol];\n\n const filterAlgoOrders = orders.filter(\n (item) => item.algo_order_id === undefined\n );\n\n // current symbol buy order quantity\n const buyOrdersQty = account.getQtyFromOrdersBySide(\n filterAlgoOrders,\n symbol,\n OrderSide.BUY\n );\n // current symbol sell order quantity\n const sellOrdersQty = account.getQtyFromOrdersBySide(\n filterAlgoOrders,\n symbol,\n OrderSide.SELL\n );\n\n const otherPositions = positions.filter(\n (item: API.Position) => item.symbol !== symbol\n );\n\n const otherOrders = filterAlgoOrders.filter(\n (item: API.Order) => item.symbol !== symbol\n );\n\n const otherIMs = account.otherIMs({\n orders: otherOrders,\n positions: otherPositions,\n symbolInfo,\n markPrices,\n IMR_Factors: accountInfo.imr_factor,\n maxLeverage: accountInfo.max_leverage,\n });\n\n return account.maxQty(side, {\n markPrice: markPrices[symbol],\n symbol,\n baseMaxQty: getSymbolInfo(\"base_max\"),\n totalCollateral,\n maxLeverage: accountInfo.max_leverage,\n takerFeeRate: accountInfo.futures_taker_fee_rate,\n baseIMR: getSymbolInfo(\"base_imr\"),\n otherIMs,\n positionQty,\n buyOrdersQty,\n sellOrdersQty,\n IMR_Factor: accountInfo.imr_factor[symbol],\n });\n }, [\n orders,\n positionsData,\n markPrices,\n accountInfo,\n symbolInfo,\n symbol,\n side,\n totalCollateral,\n reduceOnly,\n ]);\n\n // debugPrint({\n // maxQty,\n // totalCollateral,\n // side,\n // // reduceOnly,\n // orders: orders?.map((o) => o.quantity),\n // // positionsData,\n // // markPrices,\n // // accountInfo,\n // // symbolInfo,\n // // symbol,\n // });\n // console.log(\"maxQty\", maxQty);\n\n return Math.max(maxQty, 0) as number;\n};\n","import { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport {\n OrderSide,\n OrderEntity,\n OrderStatus,\n API,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { useMarkPricesStream } from \"../useMarkPricesStream\";\nimport { useMutation } from \"../../useMutation\";\nimport version from \"../../version\";\nimport { useDataCenterContext } from \"../../dataProvider\";\nimport { generateKeyFun } from \"../../utils/swr\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { SDKError } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\n\ntype CreateOrderType = \"normalOrder\" | \"algoOrder\";\n\ntype CombineOrderType = AlgoOrderRootType | \"ALL\";\n\nexport const useOrderStream = (\n /**\n * Orders query params\n */\n params: {\n symbol?: string;\n status?: OrderStatus;\n page?: number;\n size?: number;\n side?: OrderSide;\n /**\n * Include the order type\n * @default [\"ALL\"]\n */\n includes?: CombineOrderType[];\n /**\n * Exclude the order type\n * @default []\n */\n excludes?: CombineOrderType[];\n dateRange?: {\n from?: Date;\n to?: Date;\n }\n },\n options?: {\n /**\n * Keep the state update alive\n */\n keeplive?: boolean;\n /**\n * Stop the state update when the component unmount\n */\n stopOnUnmount?: boolean;\n }\n) => {\n const {\n status,\n symbol,\n side,\n size = 100,\n page,\n dateRange,\n includes = [\"ALL\"],\n excludes = [],\n } = params;\n\n const { data: markPrices = {} } = useMarkPricesStream();\n\n const { regesterKeyHandler, unregisterKeyHandler } = useDataCenterContext();\n const [\n doCancelOrder,\n { error: cancelOrderError, isMutating: cancelMutating },\n ] = useMutation(\"/v1/order\", \"DELETE\");\n\n const [doCancelAllOrders] = useMutation(\"/v1/orders\", \"DELETE\");\n\n const [\n doUpdateOrder,\n { error: updateOrderError, isMutating: updateMutating },\n ] = useMutation(\"/v1/order\", \"PUT\");\n\n const [\n doCanceAlgolOrder,\n { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [doCancelAllAlgoOrders] = useMutation(\"/v1/algo/orders\", \"DELETE\");\n\n const [\n doUpdateAlgoOrder,\n { error: updateAlgoOrderError, isMutating: updateAlgoMutating },\n ] = useMutation(\"/v1/algo/order\", \"PUT\");\n\n useEffect(() => {\n const formatKey = (value?: string) => (value ? `:${value}` : \"\");\n const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(\n side\n )}`;\n regesterKeyHandler?.(\n key,\n generateKeyFun({ status, symbol, side, size, page, dateRange })\n );\n\n return () => {\n if (!options?.stopOnUnmount) return;\n\n unregisterKeyHandler(key);\n };\n }, [status, symbol, side, options?.keeplive, page, dateRange]);\n\n const ordersResponse = usePrivateInfiniteQuery(\n generateKeyFun({ status, symbol, side, size, page, dateRange }),\n {\n initialSize: 1,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const flattenOrders = useMemo(() => {\n if (!ordersResponse.data) {\n return null;\n }\n let orders = ordersResponse.data?.map((item: any) => item.rows)?.flat();\n\n // return ordersResponse.data?.map((item) => item.rows)?.flat();\n\n if (includes.includes(\"ALL\") && excludes.length === 0) {\n return orders;\n }\n\n if (includes.includes(\"ALL\") && excludes.length > 0) {\n return orders?.filter((item) => !excludes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length === 0) {\n return orders?.filter((item) => includes.includes(item.algo_type));\n }\n\n if (includes.length > 0 && excludes.length > 0) {\n return orders?.filter(\n (item) =>\n includes.includes(item.algo_type) &&\n !excludes.includes(item.algo_type)\n );\n }\n\n return orders;\n }, [ordersResponse.data, includes, excludes]);\n\n // console.log(ordersResponse.data);\n\n const orders = useMemo(() => {\n if (!flattenOrders) {\n return null;\n }\n\n if (status !== OrderStatus.NEW && status !== OrderStatus.INCOMPLETE) {\n return flattenOrders;\n }\n return flattenOrders.map((item) => {\n const order = {\n ...item,\n mark_price: (markPrices as any)[item.symbol] ?? 0,\n };\n\n ///TODO: remove this when BE provides the correct data\n // console.log(\"------------->>>>>>>>\", order);\n if (\n order.algo_type === AlgoOrderRootType.POSITIONAL_TP_SL ||\n order.algo_type === AlgoOrderRootType.TP_SL\n ) {\n order.quantity = order.child_orders[0].quantity;\n }\n ///-----------------todo end----------------\n\n return order;\n });\n }, [flattenOrders, markPrices, status]);\n\n const total = useMemo(() => {\n return orders?.length || 0;\n // return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [orders?.length]);\n\n const cancelAlgoOrdersByTypes = (types: AlgoOrderRootType[]) => {\n if (!types) {\n throw new SDKError(\"types is required\");\n }\n\n if (!Array.isArray(types)) {\n throw new SDKError(\"types should be an array\");\n }\n\n // TODO: order type check\n\n return Promise.all(\n types.map((type) => {\n return doCancelAllAlgoOrders(null, { algo_type: type });\n })\n );\n };\n\n /**\n * cancel all orders\n */\n const cancelAllOrders = useCallback(() => {\n return Promise.all([\n doCancelAllOrders(null),\n doCancelAllAlgoOrders(null, { algo_type: \"STOP\" }),\n ]);\n }, [ordersResponse.data]);\n\n const cancelAllTPSLOrders = useCallback(() => {\n return cancelAlgoOrdersByTypes([\n AlgoOrderRootType.POSITIONAL_TP_SL,\n AlgoOrderRootType.TP_SL,\n ]);\n }, [ordersResponse.data]);\n\n const _updateOrder = useCallback(\n (orderId: string, order: OrderEntity, type: CreateOrderType) => {\n switch (type) {\n case \"algoOrder\":\n return doUpdateAlgoOrder({\n order_id: orderId,\n price: order[\"order_price\"],\n quantity: order[\"order_quantity\"],\n trigger_price: order[\"trigger_price\"],\n });\n default:\n return doUpdateOrder({ ...order, order_id: orderId });\n }\n },\n []\n );\n\n /**\n * update order\n */\n const updateOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"normalOrder\");\n }, []);\n\n /**\n * update algo order\n */\n const updateAlgoOrder = useCallback((orderId: string, order: OrderEntity) => {\n return _updateOrder(orderId, order, \"algoOrder\");\n }, []);\n\n const _cancelOrder = useCallback(\n (orderId: number, type: CreateOrderType, symbol?: string) => {\n switch (type) {\n case \"algoOrder\":\n return doCanceAlgolOrder(null, {\n // @ts-ignore\n order_id: orderId,\n symbol,\n source: `SDK${version}`,\n }).then((res: any) => {\n if (res.success) {\n ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n default:\n return doCancelOrder(null, {\n order_id: orderId,\n symbol,\n source: `SDK_${version}`,\n }).then((res: any) => {\n if (res.success) {\n // return ordersResponse.mutate().then(() => {\n // return res;\n // });\n //Optimistic Updates\n // ordersResponse.mutate();\n return res;\n } else {\n throw new Error(res.message);\n }\n });\n }\n },\n []\n );\n /**\n * calcel order\n */\n const cancelOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"normalOrder\", symbol);\n }, []);\n\n /**\n * calcel algo order\n */\n const cancelAlgoOrder = useCallback((orderId: number, symbol?: string) => {\n return _cancelOrder(orderId, \"algoOrder\", symbol);\n }, []);\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n // const cancelTPSLOrder = useCallback((orderId:number, symbol:string)=>{\n // return\n // });\n\n const cancelTPSLChildOrder = useCallback(\n (orderId: number, rootAlgoOrderId: number): Promise<any> => {\n return doUpdateAlgoOrder({\n order_id: rootAlgoOrderId,\n child_orders: [\n {\n order_id: orderId,\n is_activated: false,\n },\n ],\n });\n },\n []\n );\n\n const updateTPSLOrder = useCallback(\n (\n /**\n * the root algo order id\n */\n orderId: number,\n childOrders: API.AlgoOrder[\"child_orders\"]\n ) => {\n if (!Array.isArray(childOrders)) {\n throw new SDKError(\"children orders is required\");\n }\n return doUpdateAlgoOrder({\n order_id: orderId,\n child_orders: childOrders,\n });\n },\n []\n );\n\n const meta = useMemo(() => {\n // @ts-ignore\n return ordersResponse.data?.[0]?.meta;\n }, [ordersResponse.data?.[0]]);\n\n return [\n orders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n cancelAllOrders,\n cancelAllTPSLOrders,\n cancelAlgoOrdersByTypes,\n updateOrder,\n cancelOrder,\n updateAlgoOrder,\n cancelAlgoOrder,\n cancelTPSLChildOrder,\n updateTPSLOrder,\n meta,\n errors: {\n cancelOrder: cancelOrderError,\n updateOrder: updateOrderError,\n cancelAlgoOrder: cancelAlgoOrderError,\n updateAlgoOrder: updateAlgoOrderError,\n },\n submitting: {\n cancelOrder: cancelMutating,\n updateOrder: updateMutating,\n cancelAlgoOrder: cancelAlgoMutating,\n updateAlglOrder: updateAlgoMutating,\n },\n },\n ] as const;\n};\n","import { OrderType } from \"@orderly.network/types\";\nimport { MarketOrderCreator } from \"./marketOrderCreator\";\nimport { LimitOrderCreator } from \"./limitOrderCreator\";\nimport { StopLimitOrderCreator } from \"./stopLimitOrderCreator\";\nimport { OrderCreator } from \"./interface\";\nimport { GeneralOrderCreator } from \"./generalCreator\";\nimport { StopMarketOrderCreator } from \"./stopMarketOrderCreator\";\nimport { PostOnlyOrderCreator } from \"./postOnlyCreator\";\nimport { FOKOrderCreator } from \"./fokCreator\";\nimport { IOCOrderCreator } from \"./iocCreator\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\n\nimport { TPSLOrderCreator } from \"./tpslOrderCreator\";\nimport { TPSLPositionOrderCreator } from \"./tpslPositionOrderCreator\";\n\nexport class OrderFactory {\n static create(type: OrderType | AlgoOrderRootType): OrderCreator<any> {\n switch (type) {\n case OrderType.LIMIT:\n return new LimitOrderCreator();\n case OrderType.MARKET:\n return new MarketOrderCreator();\n // case OrderType.ASK:\n // return new AskOrderCreator();\n // case OrderType.BID:\n // return new BidOrderCreator();\n case OrderType.IOC:\n return new IOCOrderCreator();\n case OrderType.FOK:\n return new FOKOrderCreator();\n case OrderType.POST_ONLY:\n return new PostOnlyOrderCreator();\n\n case OrderType.STOP_LIMIT:\n return new StopLimitOrderCreator();\n case OrderType.STOP_MARKET:\n return new StopMarketOrderCreator();\n\n // algo order\n case AlgoOrderRootType.TP_SL:\n return new TPSLOrderCreator();\n case AlgoOrderRootType.POSITIONAL_TP_SL:\n return new TPSLPositionOrderCreator();\n\n default:\n return new GeneralOrderCreator();\n }\n }\n}\n","import { OrderEntity, OrderType } from \"@orderly.network/types\";\nimport {\n OrderCreator,\n OrderFormEntity,\n ValuesDepConfig,\n VerifyResult,\n} from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { checkNotional } from \"../../utils/createOrder\";\n\nexport abstract class BaseOrderCreator<T> implements OrderCreator<T> {\n abstract create(values: T, config?: ValuesDepConfig): T;\n\n abstract validate(values: T, config: ValuesDepConfig): Promise<VerifyResult>;\n\n baseOrder(data: OrderEntity): OrderEntity {\n const order: Pick<\n OrderEntity,\n | \"symbol\"\n | \"order_type\"\n | \"side\"\n | \"reduce_only\"\n | \"order_quantity\"\n | \"total\"\n | \"visible_quantity\"\n > = {\n symbol: data.symbol!,\n order_type:\n data.order_type === OrderType.LIMIT\n ? !!data.order_type_ext\n ? data.order_type_ext\n : data.order_type\n : data.order_type,\n side: data.side,\n reduce_only: data.reduce_only!,\n order_quantity: data.order_quantity!,\n total: data.total,\n };\n\n if (data.visible_quantity === 0) {\n order.visible_quantity = data.visible_quantity;\n }\n\n return order as OrderEntity;\n }\n\n baseValidate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n const errors: {\n [P in keyof OrderEntity]?: { type: string; message: string };\n } = {};\n\n const { maxQty, symbol, markPrice } = configs;\n\n // @ts-ignore\n let { order_quantity, total, order_price, reduce_only, order_type } =\n values;\n\n const { min_notional } = symbol;\n\n if (!order_quantity) {\n // calculate order_quantity from total\n if (total && order_price) {\n const { quote_dp } = configs.symbol;\n const totalNumber = new Decimal(total);\n const qty = totalNumber.dividedBy(order_price).toFixed(quote_dp);\n order_quantity = qty;\n }\n }\n\n if (!order_quantity) {\n errors.order_quantity = {\n type: \"required\",\n message: \"quantity is required\",\n };\n } else {\n // need to use MaxQty+base_max, base_min to compare\n const { base_min, quote_dp, base_dp } = configs.symbol;\n const qty = new Decimal(order_quantity);\n if (qty.lt(base_min)) {\n errors.order_quantity = {\n type: \"min\",\n message: `quantity must be greater than ${new Decimal(base_min).todp(\n base_dp\n )}`,\n };\n // errors.order_quantity = `quantity must be greater than ${base_min}`;\n } else if (qty.gt(maxQty)) {\n errors.order_quantity = {\n type: \"max\",\n message: `quantity must be less than ${new Decimal(maxQty).todp(\n base_dp\n )}`,\n };\n }\n }\n\n // remove total validation\n // if (!!total) {\n // const { quote_max, quote_min, quote_dp } = configs.symbol;\n // const totalNumber = new Decimal(total);\n // if (totalNumber.lt(quote_min)) {\n // errors.total = {\n // type: \"min\",\n // message: `Quantity must be at least ${new Decimal(quote_min).todp(\n // quote_dp\n // )}`,\n // };\n // } else if (totalNumber.gt(quote_max)) {\n // errors.total = {\n // type: \"max\",\n // message: `Quantity should be less or equal than ${new Decimal(\n // quote_max\n // ).todp(quote_dp)}`,\n // };\n // }\n // }\n\n const price = `${order_type}`.includes(\"MARKET\") ? markPrice : order_price;\n const notionalHintStr = checkNotional(price, order_quantity, min_notional);\n\n if (notionalHintStr !== undefined && reduce_only !== true) {\n errors.total = {\n type: \"min\",\n message: notionalHintStr,\n };\n }\n\n return Promise.resolve(errors);\n }\n\n totalToQuantity(\n order: {\n order_quantity?: number | string;\n total?: string | number;\n order_price?: string | number;\n },\n config: ValuesDepConfig\n ): OrderEntity {\n // if order_quantity is not set but total is set, calculate order_quantity from total\n if (!order.order_quantity && order.total && order.order_price) {\n const { base_dp } = config.symbol;\n const totalNumber = new Decimal(order.total);\n const qty = totalNumber.div(order.order_price).toDecimalPlaces(base_dp);\n order.order_quantity = qty.toNumber();\n\n delete order.total;\n }\n\n return order as OrderEntity;\n }\n}\n","import { Decimal } from \"@orderly.network/utils\";\n\nexport function checkNotional(\n price?: string | number,\n qty?: string | number,\n minNotional?: number\n): string | undefined {\n if (price !== undefined && qty !== undefined && minNotional !== undefined) {\n try {\n const calcNotional = new Decimal(price).mul(new Decimal(qty)).toNumber();\n const notional = Number.parseFloat(`${minNotional}`);\n\n const str =\n calcNotional < notional\n ? `The order value should be greater or equal to ${minNotional} USDC`\n : undefined;\n return str;\n } catch (e) {\n return undefined;\n }\n }\n\n return undefined;\n}\n","import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nexport class MarketOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(values: OrderEntity) {\n const data = this.baseOrder(values);\n\n delete data[\"order_price\"];\n delete data[\"total\"];\n delete data[\"trigger_price\"];\n delete data[\"isStopOrder\"];\n\n return {\n ...data,\n };\n }\n validate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, configs);\n }\n}\n","import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { order as orderUntil } from \"@orderly.network/perp\";\nimport { pick } from \"ramda\";\n\nconst { maxPrice, minPrice, scropePrice } = orderUntil;\n\nexport class LimitOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(values: OrderEntity, config?: ValuesDepConfig): OrderEntity {\n const order = {\n ...this.baseOrder(values),\n order_price: values.order_price,\n };\n\n this.totalToQuantity(order, config!);\n\n // console.log(\"create\", order);\n\n return pick(\n [\n \"symbol\",\n \"order_price\",\n \"order_quantity\",\n \"visible_quantity\",\n \"reduce_only\",\n \"side\",\n \"order_type\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, side } = values;\n\n if (!order_price) {\n errors.order_price = {\n type: \"required\",\n message: \"price is required\",\n };\n } else {\n const price = new Decimal(order_price);\n const { symbol } = config;\n const { price_range, price_scope, quote_max, quote_min } = symbol;\n const maxPriceNumber = maxPrice(config.markPrice, price_range);\n const minPriceNumber = minPrice(config.markPrice, price_range);\n const scropePriceNumbere = scropePrice(\n config.markPrice,\n price_scope,\n side\n );\n\n const priceRange =\n side === \"BUY\"\n ? {\n min: scropePriceNumbere,\n max: maxPriceNumber,\n }\n : {\n min: minPriceNumber,\n max: scropePriceNumbere,\n };\n\n /// if side is 'buy', only check max price,\n /// if side is 'sell', only check min price,\n if (price.gt(quote_max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${quote_max}`,\n };\n } else {\n if (price.gt(priceRange?.max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${new Decimal(\n priceRange.max\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n\n if (price.lt(quote_min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${quote_min}`,\n };\n } else {\n if (price.lt(priceRange?.min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${new Decimal(\n priceRange.min\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n }\n\n return errors;\n });\n }\n}\n","import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { order as orderUntil } from \"@orderly.network/perp\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { pick } from \"ramda\";\n\nconst { maxPrice, minPrice, scropePrice } = orderUntil;\n\nexport class StopLimitOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n },\n config?: ValuesDepConfig\n ): AlgoOrderEntity<AlgoOrderRootType.STOP> {\n this.totalToQuantity(values, config!);\n\n const order: AlgoOrderEntity<AlgoOrderRootType.STOP> = {\n ...this.baseOrder(values as unknown as OrderEntity),\n\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.LIMIT,\n quantity: values[\"order_quantity\"]!,\n price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n const { symbol } = config;\n const { price_range, price_scope, quote_max, quote_min } = symbol;\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n if (!order_price) {\n errors.order_price = {\n type: \"required\",\n message: \"Price is required\",\n };\n }\n\n // validate trigger price\n if (trigger_price > quote_max) {\n errors.trigger_price = {\n type: \"max\",\n message: `Trigger price must be less than ${quote_max}`,\n };\n } else if (trigger_price < quote_min) {\n errors.trigger_price = {\n type: \"min\",\n message: `Trigger price must be greater than ${quote_min}`,\n };\n } else {\n if (trigger_price && order_price) {\n const price = new Decimal(order_price);\n\n const maxPriceNumber = maxPrice(trigger_price, price_range);\n const minPriceNumber = minPrice(trigger_price, price_range);\n const scropePriceNumbere = scropePrice(\n trigger_price,\n price_scope,\n side\n );\n\n const priceRange =\n side === \"BUY\"\n ? {\n min: scropePriceNumbere,\n max: maxPriceNumber,\n }\n : {\n min: minPriceNumber,\n max: scropePriceNumbere,\n };\n\n /// if side is 'buy', only check max price,\n /// if side is 'sell', only check min price,\n if (price.gt(quote_max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${quote_max}`,\n };\n } else {\n if (price.gt(priceRange?.max)) {\n errors.order_price = {\n type: \"max\",\n message: `Price must be less than ${new Decimal(\n priceRange.max\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n\n if (price.lt(quote_min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${quote_min}`,\n };\n } else {\n if (price.lt(priceRange?.min)) {\n errors.order_price = {\n type: \"min\",\n message: `Price must be greater than ${new Decimal(\n priceRange.min\n ).todp(symbol.quote_dp)}`,\n };\n }\n }\n }\n }\n\n return errors;\n });\n }\n}\n","import { OrderEntity } from \"@orderly.network/types\";\nimport { BaseOrderCreator } from \"./baseCreator\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nexport class GeneralOrderCreator extends BaseOrderCreator<OrderEntity> {\n create(data: OrderEntity): OrderEntity {\n return {\n ...this.baseOrder(data),\n order_price: data.order_price,\n order_quantity: data.order_quantity,\n };\n }\n validate(\n values: OrderFormEntity,\n configs: ValuesDepConfig\n ): Promise<VerifyResult> {\n return super.baseValidate(values, configs);\n }\n}\n","import {\n AlgoOrderEntity,\n AlgoOrderRootType,\n OrderEntity,\n OrderType,\n TriggerPriceType,\n} from \"@orderly.network/types\";\nimport { OrderFormEntity, ValuesDepConfig, VerifyResult } from \"./interface\";\n\nimport { pick } from \"ramda\";\nimport { BaseOrderCreator } from \"./baseCreator\";\n\nexport class StopMarketOrderCreator extends BaseOrderCreator<AlgoOrderEntity> {\n create(\n values: AlgoOrderEntity & {\n order_quantity: number;\n order_price: number;\n }\n ) {\n const order = {\n ...this.baseOrder(values as unknown as OrderEntity),\n // order_price: values.order_price,\n trigger_price: values.trigger_price!,\n algo_type: AlgoOrderRootType.STOP,\n type: OrderType.MARKET,\n quantity: values[\"order_quantity\"]!,\n // price: values[\"order_price\"],\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n };\n\n return pick(\n [\n \"symbol\",\n \"trigger_price\",\n \"algo_type\",\n \"type\",\n \"quantity\",\n // \"price\",\n \"trigger_price_type\",\n \"side\",\n \"reduce_only\",\n \"visible_quantity\",\n ],\n order\n );\n\n // return order;\n }\n validate(\n values: OrderFormEntity,\n config: ValuesDepConfig\n ): Promise<VerifyResult> {\n return this.baseValidate(values, config).then((errors) => {\n // const errors = this.baseValidate(values, config);\n // @ts-ignore\n const { order_price, trigger_price, side } = values;\n const { symbol } = config;\n const { quote_max, quote_min } = symbol;\n\n if (!trigger_price) {\n errors.trigger_price = {\n type: \"required\",\n message: \"Trigger price is required\",\n };\n }\n\n // validate trigger price\n if (trigger_price > quote_max) {\n errors.trigger_price = {\n type: \"max\",\n message: `Trigger price must be less than ${quote_max}`,\n };\n } else if (trigger_price < quote_min) {\n errors.trigger_price = {\n type: \"min\",\n message: `Trigger price must be greater than ${quote_min}`,\n };\n }\n\n return errors;\n });\n }\n}\n","import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class PostOnlyOrderCreator extends LimitOrderCreator {}\n","import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class FOKOrderCreator extends LimitOrderCreator {}\n","import { LimitOrderCreator } from \"./limitOrderCreator\";\n\nexport class IOCOrderCreator extends LimitOrderCreator {}\n","import { AlgoOrderEntity, OrderType, API } from \"@orderly.network/types\";\nimport { TriggerPriceType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: tp_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.MARKET,\n trigger_price: sl_trigger_price,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n reduce_only: true,\n quantity: values.quantity,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: AlgoOrderUpdateEntity[] = [];\n\n const needUpdateQty = values.quantity !== oldValue.quantity;\n\n data.child_orders.forEach((order) => {\n // find the old order\n let _order = Object.create(null);\n\n if (needUpdateQty) {\n _order[\"quantity\"] = data.quantity;\n }\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n _order[\"is_activated\"] = false;\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n // _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n _order[\"trigger_price\"] = order.trigger_price as number;\n }\n\n if (Object.keys(_order).length > 0) {\n _order[\"order_id\"] = Number(oldOrder.algo_order_id);\n newData.push(_order);\n }\n }\n });\n\n if (needUpdateQty && newData.length < 2) {\n // if quantity is changed, need to update all child orders\n const missingOrders = oldValue.child_orders.filter(\n (order) => order.algo_order_id !== newData[0].order_id\n );\n\n if (missingOrders.length) {\n newData.push({\n quantity: Number(data.quantity),\n order_id: missingOrders[0].algo_order_id,\n });\n }\n }\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n","import { AlgoOrderEntity, OrderSide } from \"@orderly.network/types\";\nimport {\n OrderCreator,\n OrderFormEntity,\n ValuesDepConfig,\n VerifyResult,\n} from \"./interface\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\n\nexport type AlgoOrderUpdateEntity = {\n trigger_price?: number;\n order_id: number;\n quantity?: number;\n is_activated?: boolean;\n};\n\nexport abstract class BaseAlgoOrderCreator<\n T extends AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n> implements OrderCreator<T>\n{\n abstract create(values: T, config: ValuesDepConfig): T;\n\n /**\n * base validate\n */\n validate(\n values: Partial<T>,\n config: ValuesDepConfig\n ): Promise<{\n [P in keyof T]?: {\n type: string;\n message: string;\n };\n }> {\n const result = Object.create(null);\n return Promise.resolve().then(() => {\n const { tp_trigger_price, sl_trigger_price, side } = values;\n\n const qty = Number(values.quantity);\n const maxQty = config.maxQty;\n if (!isNaN(qty) && qty > maxQty) {\n result.quantity = {\n message: `Quantity must be less than ${config.maxQty}`,\n };\n }\n\n if (Number(tp_trigger_price) < 0) {\n result.tp_trigger_price = {\n message: `TP Price must be greater than 0`,\n };\n }\n\n if (Number(sl_trigger_price) < 0) {\n result.sl_trigger_price = {\n message: `SL Price must be greater than 0`,\n };\n }\n\n // there need use position side to validate\n // so if order's side is buy, then position's side is sell\n if (side === OrderSide.BUY) {\n if (\n !!sl_trigger_price &&\n Number(sl_trigger_price) >= config.markPrice\n ) {\n result.sl_trigger_price = {\n message: `SL price must be less than ${config.markPrice}`,\n };\n }\n\n if (\n !!tp_trigger_price &&\n Number(tp_trigger_price) <= config.markPrice\n ) {\n result.tp_trigger_price = {\n message: `TP price must be greater than ${config.markPrice}`,\n };\n }\n }\n\n if (side === OrderSide.SELL) {\n if (\n !!sl_trigger_price &&\n Number(sl_trigger_price) <= config.markPrice\n ) {\n result.sl_trigger_price = {\n message: `SL price must be greater than ${config.markPrice}`,\n };\n }\n\n if (\n !!tp_trigger_price &&\n Number(tp_trigger_price) >= config.markPrice\n ) {\n result.tp_trigger_price = {\n message: `TP price must be less than ${config.markPrice}`,\n };\n }\n }\n\n return Object.keys(result).length > 0 ? result : null;\n });\n }\n}\n","import {\n AlgoOrderEntity,\n AlgoOrderType,\n OrderType,\n TriggerPriceType,\n AlgoOrderRootType,\n} from \"@orderly.network/types\";\nimport { OrderSide } from \"@orderly.network/types\";\nimport { API } from \"@orderly.network/types\";\nimport { AlgoOrderUpdateEntity, BaseAlgoOrderCreator } from \"./baseAlgoCreator\";\nimport { ValuesDepConfig } from \"./interface\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport class TPSLPositionOrderCreator extends BaseAlgoOrderCreator<\n AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>\n> {\n create(\n values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,\n config: ValuesDepConfig\n ) {\n const side =\n values.side! === OrderSide.BUY ? OrderSide.SELL : OrderSide.BUY;\n\n const child_orders = [];\n\n if (typeof values.tp_trigger_price !== \"undefined\") {\n const tp_trigger_price = !!values.tp_trigger_price\n ? new Decimal(values.tp_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.tp_trigger_price;\n\n child_orders.push({\n algo_type: AlgoOrderType.TAKE_PROFIT,\n reduce_only: true,\n side,\n type: OrderType.CLOSE_POSITION,\n trigger_price: tp_trigger_price,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n symbol: values.symbol,\n is_activated: !!values.tp_trigger_price,\n });\n }\n\n if (typeof values.sl_trigger_price !== \"undefined\") {\n const sl_trigger_price = !!values.sl_trigger_price\n ? new Decimal(values.sl_trigger_price)\n .todp(config.symbol.quote_dp)\n .toNumber()\n : values.sl_trigger_price;\n child_orders.push({\n algo_type: AlgoOrderType.STOP_LOSS,\n reduce_only: true,\n side,\n type: OrderType.CLOSE_POSITION,\n trigger_price: sl_trigger_price,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n symbol: values.symbol,\n is_activated: !!values.sl_trigger_price,\n });\n }\n\n return {\n algo_type: AlgoOrderRootType.POSITIONAL_TP_SL,\n trigger_price_type: TriggerPriceType.MARK_PRICE,\n // reduce_only: true,\n symbol: values.symbol,\n child_orders,\n };\n }\n\n crateUpdateOrder(\n values: AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>,\n /**\n * The old value of the order\n */\n oldValue: API.AlgoOrder,\n config: ValuesDepConfig\n ): [\n { child_orders: AlgoOrderUpdateEntity[] },\n AlgoOrderEntity<AlgoOrderRootType.POSITIONAL_TP_SL>\n ] {\n const data = this.create(values, config);\n const newData: {\n trigger_price?: number;\n order_id: number;\n is_activated?: boolean;\n }[] = [];\n data.child_orders.forEach((order) => {\n // find the old order\n\n const oldOrder = oldValue.child_orders?.find(\n (oldOrder) => oldOrder.algo_type === order.algo_type\n );\n\n if (oldOrder) {\n if (!order.is_activated) {\n newData.push({\n is_activated: false,\n order_id: Number(oldOrder.algo_order_id),\n });\n } else if (oldOrder.trigger_price !== order.trigger_price) {\n newData.push({\n trigger_price: order.trigger_price as number,\n order_id: Number(oldOrder.algo_order_id),\n });\n }\n }\n });\n\n return [\n {\n child_orders: newData,\n },\n data,\n ];\n }\n}\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\n\nexport const useAccountInfo = () => {\n return usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n};\n","import { useContext, useMemo, useState } from \"react\";\nimport { useMarketsStream } from \"./useMarketsStream\";\nimport { OrderlyContext } from \"../orderlyContext\";\nimport { API } from \"@orderly.network/types\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { useFundingRates } from \"./useFundingRates\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport enum MarketsType {\n FAVORITES,\n RECENT,\n ALL,\n}\n\nexport interface FavoriteTab {\n name: string;\n id: number;\n}\n\nexport interface Favorite {\n name: string;\n tabs: FavoriteTab[];\n}\n\nexport interface Recent {\n name: string;\n}\n\nexport interface TabSort {\n sortKey: string;\n sortOrder: string;\n}\n\nexport type MarketStoreKey =\n | \"recent\"\n | \"favorites\"\n | \"favoriteTabs\"\n | \"lastSelectedFavoriteTab\"\n | \"tabSort\";\n\n/*\n{\n markets: {\n recent: [\n { \"name\": `${symbol.name}` },\n { \"name\": `${symbol.name}` },\n ],\n favorites: [\n { \"name\": `${symbol.name}`, \"tabs\": [{ \"name\": \"Popular\", \"id\": 1 }] },\n ],\n favoriteTabs: [\n { \"name\": \"Popular\", \"id\": 1 },\n ],\n \"lastSelectFavoriteTab\": { \"name\": \"Popular\", \"id\": 1 },\n \"tabSort\": { \"all\": { \"sortKey\": \"24h_amount\", \"sortOrder\": \"desc\" }} \n }\n}\n*/\n\nconst DefaultTab = { name: \"Popular\", id: 1 };\nconst marketsKey = \"markets\";\n\nexport const useMarkets = (type: MarketsType) => {\n const { configStore } = useContext(OrderlyContext);\n\n const symbolsInfo = useSymbolsInfo();\n const fundingRates = useFundingRates();\n const { data: futures } = useMarketsStream();\n\n const updateStore = (key: MarketStoreKey, data: any) => {\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n [key]: data,\n });\n };\n\n const getStore = <T>(key: MarketStoreKey, defaultValue: T) => {\n return (configStore.get(marketsKey)[key as any] as T) || defaultValue;\n };\n\n if (!configStore.get(marketsKey)) {\n const jsonStr = localStorage.getItem(marketsKey);\n if (jsonStr) {\n configStore.set(marketsKey, JSON.parse(jsonStr));\n } else {\n configStore.set(marketsKey, {\n recent: [],\n favorites: [\n { name: \"PERP_ETH_USDC\", tabs: [{ ...DefaultTab }] },\n { name: \"PERP_BTC_USDC\", tabs: [{ ...DefaultTab }] },\n ],\n favoriteTabs: [{ ...DefaultTab }],\n lastSelectedFavoriteTab: { ...DefaultTab },\n });\n }\n }\n\n const getFavoriteTabs = useMemo(() => {\n return getStore(\"favoriteTabs\", [{ ...DefaultTab }]);\n }, []);\n\n const getFavorites = useMemo(() => {\n const curData = getStore<Favorite[]>(\"favorites\", []);\n const tabs = getFavoriteTabs;\n const result = [] as Favorite[];\n for (let index = 0; index < curData.length; index++) {\n const favData = curData[index];\n var favTabs = favData.tabs.filter(\n (tab) => tabs.findIndex((item) => tab.id === item.id) !== -1\n );\n if (favTabs.length > 0) {\n result.push({ ...favData, tabs: favTabs });\n }\n }\n updateStore(\"favorites\", result);\n\n return result;\n }, [configStore]);\n\n const [favoriteTabs, setFavoriteTabs] = useState(getFavoriteTabs);\n const [favorites, setFavorites] = useState(getFavorites);\n\n const [recent, setRecent] = useState(\n getStore<Recent[]>(\"recent\", []).filter((e) => e)\n );\n const [tabSort, setTabSort] = useState(\n getStore<Record<string, TabSort>>(\"tabSort\", {})\n );\n\n const updateFavoriteTabs = (\n tab: FavoriteTab | FavoriteTab[],\n operator?: {\n add?: boolean;\n update?: boolean;\n delete?: boolean;\n }\n ) => {\n const saveTabs = (tabs: FavoriteTab[]) => {\n setFavoriteTabs(tabs);\n updateStore(\"favoriteTabs\", tabs);\n };\n\n if (Array.isArray(tab)) {\n saveTabs(tab);\n return;\n }\n\n var tabs = [...favoriteTabs];\n const index = tabs.findIndex((item) => item.id === tab.id);\n if (operator?.add) {\n tabs.push(tab);\n } else if (operator?.update) {\n if (index !== -1) {\n tabs[index] = tab;\n }\n } else if (operator?.delete) {\n if (index !== -1) {\n tabs.splice(index, 1);\n }\n }\n saveTabs(tabs);\n };\n\n const updateFavorites = (favorites: Favorite[]) => {\n updateStore(\"favorites\", favorites);\n setFavorites(favorites);\n };\n\n const addToHistory = (symbol: API.MarketInfoExt) => {\n const curData = [...recent];\n const index = curData.findIndex((item) => item.name == symbol.symbol);\n if (index !== -1) {\n curData.splice(index, 1);\n }\n curData.unshift({ name: symbol.symbol });\n updateStore(\"recent\", curData);\n setRecent(curData);\n };\n\n const updateSymbolFavoriteState = (\n symbol: API.MarketInfoExt,\n tab: FavoriteTab | FavoriteTab[],\n remove: boolean = false\n ) => {\n const curData = [...favorites];\n const index = curData.findIndex((item) => item.name == symbol.symbol);\n\n if (index === -1) {\n // can not find\n if (Array.isArray(tab)) {\n if (tab.length > 0) {\n curData.unshift({ name: symbol.symbol, tabs: tab });\n }\n } else {\n if (!remove) {\n // insert\n curData.unshift({ name: symbol.symbol, tabs: [tab] });\n }\n }\n } else {\n const favorite = curData[index];\n if (Array.isArray(tab)) {\n if (tab.length === 0) {\n // remove\n curData.splice(index, 1);\n } else {\n // overrides\n curData[index] = { ...favorite, tabs: tab };\n }\n } else {\n if (remove) {\n const tabs = favorite.tabs.filter((item) => item.id != tab.id);\n if (tabs.length === 0) {\n // del favorite\n curData.splice(index, 1);\n } else {\n curData[index] = { ...favorite, tabs };\n }\n } else {\n // insert\n const tabs = favorite.tabs;\n tabs.push(tab);\n curData[index] = { ...favorite, tabs };\n }\n }\n }\n\n updateStore(\"favorites\", curData);\n setFavorites(() => curData);\n };\n\n const marketsList = useMemo(() => {\n const list = futures?.map((item: any) => {\n const { open_interest = 0, index_price = 0 } = item;\n\n const info = symbolsInfo[item.symbol];\n const rate = fundingRates[item.symbol];\n const est_funding_rate = rate(\"est_funding_rate\");\n const funding_period = info(\"funding_period\");\n const change =\n item.change === undefined\n ? get24hChange(item[\"24h_close\"], item[\"24h_open\"])\n : item.change;\n\n return {\n ...item,\n change,\n \"8h_funding\": get8hFunding(est_funding_rate, funding_period),\n quote_dp: info(\"quote_dp\"),\n created_time: info(\"created_time\"),\n openInterest: new Decimal(open_interest || 0)\n .mul(index_price || 0)\n .toNumber(),\n };\n });\n return list || [];\n }, [symbolsInfo, futures, fundingRates]);\n\n const getData = (type: MarketsType) => {\n // get data\n const localData =\n type === MarketsType.FAVORITES ? [...favorites] : [...recent];\n // filter\n const keys = localData.map((item) => item.name);\n const filter =\n type == MarketsType.ALL\n ? marketsList\n : marketsList?.filter((item) => keys.includes(item.symbol));\n\n const favoritesData = [...favorites];\n const favoriteKeys = favoritesData.map((item) => item.name);\n if (filter) {\n for (let index = 0; index < filter.length; index++) {\n const element = filter[index];\n const isFavorite =\n type == MarketsType.FAVORITES\n ? true\n : favoriteKeys.includes(element.symbol);\n\n const fIndex = favoritesData.findIndex(\n (item) => item.name === element.symbol\n );\n const tabs = fIndex === -1 ? [] : favoritesData[fIndex].tabs;\n\n let imr = undefined;\n if (symbolsInfo) {\n imr = symbolsInfo?.[element.symbol](\"base_imr\");\n }\n\n filter[index] = {\n ...filter[index],\n isFavorite,\n tabs,\n leverage: imr ? 1 / imr : undefined,\n };\n }\n }\n\n return filter;\n };\n\n const pinToTop = (symbol: API.MarketInfoExt) => {\n const index = favorites.findIndex((item) => item.name === symbol.symbol);\n if (index !== -1) {\n const element = favorites[index];\n const list = [...favorites];\n list.splice(index, 1);\n list.unshift(element);\n updateStore(\"favorites\", list);\n setFavorites(list);\n }\n };\n\n const getLastSelFavTab = () => {\n return getStore<FavoriteTab>(\"lastSelectedFavoriteTab\", { ...DefaultTab });\n };\n\n const updateSelectedFavoriteTab = (tab: FavoriteTab) => {\n updateStore(\"lastSelectedFavoriteTab\", tab);\n };\n\n const updateTabsSortState = (\n tabId: string,\n sortKey: string,\n sortOrder: \"desc\" | \"asc\"\n ) => {\n const map = getStore<Record<string, TabSort>>(\"tabSort\", {});\n\n map[tabId] = {\n sortKey,\n sortOrder,\n };\n\n updateStore(\"tabSort\", map);\n setTabSort(map);\n };\n\n const markets = getData(type);\n\n return [\n markets || [],\n {\n favoriteTabs,\n favorites,\n recent,\n tabSort,\n addToHistory,\n updateFavorites,\n updateFavoriteTabs,\n updateSymbolFavoriteState,\n pinToTop,\n getLastSelFavTab,\n updateSelectedFavoriteTab,\n updateTabsSortState,\n },\n ] as const;\n};\n\nfunction get8hFunding(est_funding_rate: number, funding_period: number) {\n let funding8h = 0;\n\n if (est_funding_rate === undefined || est_funding_rate === null) {\n return null;\n }\n\n if (funding_period) {\n funding8h = new Decimal(est_funding_rate || 0)\n .mul(funding_period)\n .div(8)\n .toNumber();\n }\n\n return funding8h;\n}\n\nfunction get24hChange(close: number, open: number) {\n if (close !== undefined && open !== undefined) {\n if (open === 0) {\n return 0;\n }\n return new Decimal(close).minus(open).div(open).toNumber();\n }\n}\n","import { useContext, useEffect, useState } from \"react\";\nimport { useMarketsStream } from \"./useMarketsStream\";\nimport { OrderlyContext } from \"../orderlyContext\";\nimport { API, WSMessage } from \"@orderly.network/types\";\nimport { SymbolInfo, useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport enum MarketsType {\n FAVORITES,\n RECENT,\n ALL,\n}\n\nexport interface FavoriteTab {\n name: string;\n id: number;\n}\n\nexport interface Favorite {\n name: string;\n tabs: FavoriteTab[];\n}\n\nexport interface Recent {\n name: string;\n}\n\nexport type TabSort = Record<\n string,\n {\n sortKey: string;\n sortOrder: string;\n }\n>;\n\n/*\nexample data:\n{\n markets: {\n recent: [\n { \"name\": `${symbol.name}` },\n { \"name\": `${symbol.name}` },\n ],\n favorites: [\n { \"name\": `${symbol.name}`, \"tabs\": [{ \"name\": \"Popular\", \"id\": 1 }] },\n ],\n favoriteTabs: [\n { \"name\": \"Popular\", \"id\": 1 },\n ],\n \"lastSelectFavoriteTab\": { \"name\": \"Popular\", \"id\": 1 },\n \"tabSort\": { \"all\": { \"sortKey\": \"24h_amount\", \"sortOrder\": \"desc\" }} \n }\n}\n*/\nexport type MarketsData = {\n favoriteTabs?: FavoriteTab[];\n favorites?: Favorite[];\n recent?: Recent[];\n selectedFavoriteTab?: FavoriteTab;\n tabSort?: TabSort;\n};\n\nexport type MarketsKey = keyof MarketsData;\n\nexport type MarketsItem = {\n symbol: string;\n index_price: number;\n mark_price: number;\n sum_unitary_funding: number;\n est_funding_rate: number;\n last_funding_rate: number;\n next_funding_time: number;\n open_interest: number;\n \"24h_open\": number;\n \"24h_close\": number;\n \"24h_high\": number;\n \"24h_low\": number;\n \"24h_volume\": number;\n \"24h_amount\": number;\n \"24h_volumn\": number;\n change: number;\n \"8h_funding\": number;\n quote_dp: number;\n created_time: number;\n openInterest: number;\n isFavorite: boolean;\n leverage?: number;\n};\n\nexport const MarketsStorageKey = \"markets\";\nexport const DefaultFavoriteTab = { name: \"Popular\", id: 1 };\n\nexport const useMarketList = (type: MarketsType) => {\n const { configStore } = useContext(OrderlyContext);\n\n const { data: futures } = useMarketsStream();\n const symbolsInfo = useSymbolsInfo();\n\n const getStore = () => {\n const store = configStore.get(MarketsStorageKey) as MarketsData;\n return store || getDefaultStoreData();\n };\n\n const getStoreByKey = <Key extends MarketsKey>(\n key: Key,\n defaultValue: MarketsData[Key]\n ) => {\n const store = getStore();\n return (store[key] || defaultValue)!;\n };\n\n const updateStore = (data: MarketsData) => {\n configStore.set(MarketsStorageKey, {\n ...getStore(),\n ...data,\n });\n };\n\n const getFavoriteTabs = () => {\n return getStoreByKey(\"favoriteTabs\", [{ ...DefaultFavoriteTab }]);\n };\n\n const getSelectedFavoriteTab = () => {\n return getStoreByKey(\"selectedFavoriteTab\", { ...DefaultFavoriteTab });\n };\n\n const getFavorites = () => {\n const favs = getStoreByKey(\"favorites\", []);\n const tabs = getFavoriteTabs();\n return filterInvalidTabs(favs, tabs);\n };\n\n const getRecent = () => {\n return getStoreByKey(\"recent\", []);\n };\n\n const getTabSort = () => {\n return getStoreByKey(\"tabSort\", {});\n };\n\n const [markets, setMarkets] = useState<MarketsItem[]>([]);\n\n const [favoriteTabs, setFavoriteTabs] = useState(getFavoriteTabs);\n const [selectedFavoriteTab, setSelectedFavoriteTab] = useState(\n getSelectedFavoriteTab\n );\n const [favorites, setFavorites] = useState(getFavorites);\n const [recent, setRecent] = useState(getRecent);\n\n const [tabSort, setTabSort] = useState(getTabSort);\n\n const updateFavoriteTabs = (\n tab: FavoriteTab | FavoriteTab[],\n operator?: {\n add?: boolean;\n update?: boolean;\n delete?: boolean;\n }\n ) => {\n const tabs = updateTabs(favoriteTabs, tab, operator);\n setFavoriteTabs(tabs);\n };\n\n const updateSymbolFavoriteState = (\n symbol: API.MarketInfoExt,\n tab: FavoriteTab | FavoriteTab[],\n remove: boolean = false\n ) => {\n const list = updateSymbolFavorite({ favorites, symbol, tab, remove });\n setFavorites(list);\n };\n\n const addToHistory = (symbol: API.MarketInfoExt) => {\n const list = addToTop(recent, symbol);\n setRecent(list);\n };\n\n const pinToTop = (symbol: API.MarketInfoExt) => {\n const newList = moveToTop(favorites, symbol);\n if (newList) {\n setFavorites(newList);\n }\n };\n\n const updateTabsSortState = (\n tabId: string,\n sortKey: string,\n sortOrder: \"desc\" | \"asc\"\n ) => {\n const map = getStoreByKey(\"tabSort\", {});\n\n map[tabId] = {\n sortKey,\n sortOrder,\n };\n\n setTabSort(map);\n };\n\n useEffect(() => {\n updateStore({\n favoriteTabs,\n favorites,\n recent,\n tabSort,\n selectedFavoriteTab,\n });\n }, [favoriteTabs, favorites, recent, tabSort, selectedFavoriteTab]);\n\n useEffect(() => {\n const markets = addFieldToMarkets(futures, symbolsInfo);\n const filterList = filterMarkets({ markets, favorites, recent, type });\n setMarkets(filterList);\n }, [futures, symbolsInfo, favorites, recent, type]);\n\n return [\n markets,\n {\n favoriteTabs,\n favorites,\n recent,\n tabSort,\n selectedFavoriteTab,\n updateFavorites: setFavorites,\n updateFavoriteTabs,\n updateSymbolFavoriteState,\n pinToTop,\n addToHistory,\n updateSelectedFavoriteTab: setSelectedFavoriteTab,\n updateTabsSortState,\n },\n ] as const;\n};\n\nconst addFieldToMarkets = (\n futures: WSMessage.Ticker[] | null,\n symbolsInfo: SymbolInfo\n) => {\n return (futures || [])?.map((item: any) => {\n const info = symbolsInfo[item.symbol];\n\n return {\n ...item,\n quote_dp: info(\"quote_dp\"),\n created_time: info(\"created_time\"),\n leverage: getLeverage(info(\"base_imr\")),\n openInterest: getOpenInterest(item.open_interest, item.index_price),\n \"8h_funding\": get8hFunding(item.est_funding_rate, info(\"funding_period\")),\n change: get24hChange({\n change: item.change,\n close: item[\"24h_close\"],\n open: item[\"24h_open\"],\n }),\n } as MarketsItem;\n });\n};\n\nconst filterMarkets = (params: {\n markets: MarketsItem[];\n favorites: Favorite[];\n recent: Recent[];\n type: MarketsType;\n}) => {\n const { markets, favorites, recent, type } = params;\n let curData: MarketsItem[] = [];\n if (type === MarketsType.ALL) {\n curData = markets;\n } else {\n const storageData = type === MarketsType.FAVORITES ? favorites : recent;\n\n const keys = storageData.map((item) => item.name);\n\n curData = markets?.filter((item) => keys.includes(item.symbol));\n }\n\n const favoriteKeys = favorites.map((item) => item.name);\n\n return curData?.map((item) => ({\n ...item,\n isFavorite:\n type == MarketsType.FAVORITES ? true : favoriteKeys.includes(item.symbol),\n }));\n};\n\nfunction get8hFunding(est_funding_rate: number, funding_period: number) {\n let funding8h = 0;\n\n if (est_funding_rate === undefined || est_funding_rate === null) {\n return null;\n }\n\n if (funding_period) {\n funding8h = new Decimal(est_funding_rate || 0)\n .mul(funding_period)\n .div(8)\n .toNumber();\n }\n\n return funding8h;\n}\n\nfunction get24hChange(params: { change: number; close: number; open: number }) {\n const { change, close, open } = params;\n\n if (change !== undefined) {\n return change;\n }\n\n if (close !== undefined && open !== undefined) {\n if (open === 0) {\n return 0;\n }\n return new Decimal(close).minus(open).div(open).toNumber();\n }\n}\n\nfunction getLeverage(base_imr: number) {\n return base_imr ? 1 / base_imr : undefined;\n}\n\nfunction getOpenInterest(open_interest?: number, index_price?: number) {\n return new Decimal(open_interest || 0).mul(index_price || 0).toNumber();\n}\n\nfunction getDefaultStoreData() {\n return {\n recent: [],\n favorites: [\n { name: \"PERP_ETH_USDC\", tabs: [{ ...DefaultFavoriteTab }] },\n { name: \"PERP_BTC_USDC\", tabs: [{ ...DefaultFavoriteTab }] },\n ],\n favoriteTabs: [{ ...DefaultFavoriteTab }],\n lastSelectedFavoriteTab: { ...DefaultFavoriteTab },\n tabSort: {},\n } as MarketsData;\n}\n\nfunction filterInvalidTabs(favorites: Favorite[], tabs: FavoriteTab[]) {\n return favorites\n .map((favorite) => {\n return {\n ...favorite,\n tabs: favorite.tabs.filter(\n (tab) => !!tabs.find((item) => item.id === tab.id)\n ),\n };\n })\n .filter((item) => !!item.tabs.length);\n}\n\nexport function updateTabs(\n favoriteTabs: FavoriteTab[],\n tab: FavoriteTab | FavoriteTab[],\n operator?: {\n add?: boolean;\n update?: boolean;\n delete?: boolean;\n }\n) {\n if (Array.isArray(tab)) {\n return tab;\n }\n\n const tabs = [...favoriteTabs];\n const index = tabs.findIndex((item) => item.id === tab.id);\n\n if (operator?.add) {\n tabs.push(tab);\n } else if (operator?.update && index !== -1) {\n tabs[index] = tab;\n } else if (operator?.delete && index !== -1) {\n tabs.splice(index, 1);\n }\n\n return tabs;\n}\n\nfunction addToTop(recent: Recent[], symbol: API.MarketInfoExt) {\n const list = [...recent];\n const index = list.findIndex((item) => item.name == symbol.symbol);\n if (index !== -1) {\n list.splice(index, 1);\n }\n list.unshift({ name: symbol.symbol });\n return list;\n}\n\nfunction moveToTop(favorites: Favorite[], symbol: API.MarketInfoExt) {\n const index = favorites.findIndex((item) => item.name === symbol.symbol);\n if (index !== -1) {\n const item = favorites[index];\n const list = [...favorites];\n list.splice(index, 1);\n list.unshift(item);\n return list;\n }\n}\n\n/**\n * if tab is arrary, the remove params is not work\n * if tab is empty array, will be delete, otherwise will be override\n */\nfunction updateSymbolFavorite(params: {\n favorites: Favorite[];\n tab: FavoriteTab | FavoriteTab[];\n symbol: API.MarketInfoExt;\n remove: boolean;\n}) {\n const { favorites, symbol, tab, remove = false } = params;\n\n const list = [...favorites];\n const index = list.findIndex((item) => item.name == symbol.symbol);\n\n const tabs = Array.isArray(tab) ? tab : [tab];\n\n // can not find\n if (index === -1) {\n if (tabs.length && !remove) {\n // insert\n list.unshift({ name: symbol.symbol, tabs });\n }\n } else {\n const favorite = list[index];\n if (Array.isArray(tab)) {\n if (!tab.length) {\n // remove\n list.splice(index, 1);\n } else {\n // update\n list[index] = { ...favorite, tabs: tab };\n }\n } else {\n if (remove) {\n const tabs = favorite.tabs.filter((item) => item.id != tab.id);\n if (!tabs.length) {\n // remove\n list.splice(index, 1);\n } else {\n // update\n list[index] = { ...favorite, tabs };\n }\n } else {\n // insert\n list[index] = { ...favorite, tabs: [...favorite.tabs, tab] };\n }\n }\n }\n\n return list;\n}\n","import { useCallback } from \"react\";\nimport { useMutation } from \"../useMutation\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { prop } from \"ramda\";\nimport { useQuery } from \"../useQuery\";\n\nexport const useLeverage = (): any => {\n const { data, mutate } = usePrivateQuery(\"/v1/client/info\");\n const [update, { isMutating }] = useMutation(\"/v1/client/leverage\");\n\n const { data: config } = useQuery(\"/v1/public/config\", {\n revalidateOnFocus: false,\n });\n\n const updateLeverage = useCallback((data: { leverage: number }) => {\n return update(data).then((res: any) => {\n if (res.success) {\n return mutate();\n } else {\n throw new Error(res.message);\n }\n // return res\n });\n }, []);\n\n return [\n prop(\"max_leverage\", data as any),\n {\n update: updateLeverage,\n isMutating,\n // config: [1, 2, 3, 4, 5, 10, 15, 20],\n config: config\n ? (config as any)?.available_futures_leverage\n ?.split(\",\")\n .map((item: string) => parseInt(item))\n : [],\n },\n ];\n};\n","import { API } from \"@orderly.network/types\";\nimport { useQuery } from \"../useQuery\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { getTimestamp, timeConvertString } from \"@orderly.network/utils\";\n\nexport const useFundingRate = (symbol: string) => {\n if (!symbol) {\n throw new Error(\"useFuturesForSymbol requires a symbol\");\n }\n\n const [countDown, setCountDown] = useState(\"00:00:00\");\n\n const { data } = useQuery<API.FundingRate>(\n `/v1/public/funding_rate/${symbol}`,\n {\n fallbackData: {\n est_funding_rate: 0,\n next_funing_time: 0,\n },\n }\n );\n\n useEffect(() => {\n if (!data) return;\n const { next_funding_time } = data;\n if (!next_funding_time || next_funding_time <= 0) {\n return;\n }\n const timer = setInterval(() => {\n const diff = new Date(next_funding_time).getTime() - getTimestamp();\n const result = timeConvertString(diff);\n if (result.length === 3) {\n setCountDown(\n `${result[0].toString().padStart(2, \"0\")}:${result[1]\n .toString()\n .padStart(2, \"0\")}:${result[2].toString().padStart(2, \"0\")}`\n );\n }\n }, 1000);\n return () => {\n clearInterval(timer);\n };\n }, [data]);\n\n const est_funding_rate = useMemo(() => {\n if (!data) return;\n\n const { next_funding_time, est_funding_rate = 0 } = data;\n\n if (getTimestamp() > next_funding_time) {\n return null;\n }\n\n return (Number(est_funding_rate) * 100).toFixed(4);\n }, [data]);\n\n return {\n ...data,\n est_funding_rate,\n countDown,\n };\n};\n","import { API } from \"@orderly.network/types\";\nimport { useWS } from \"../useWS\";\nimport { useEffect, useState } from \"react\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport interface MarketTradeStreamOptions {\n limit?: number;\n}\n\nexport const useMarketTradeStream = (\n symbol: string,\n options: MarketTradeStreamOptions = {}\n) => {\n if (!symbol) {\n throw new Error(\"useTradeStream: symbol is required\");\n }\n\n const [trades, setTrades] = useState<API.Trade[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const { limit = 50 } = options;\n\n const ws = useWS();\n\n useEffect(() => {\n setIsLoading(true);\n setTrades(() => []);\n ws.onceSubscribe(\n {\n id: `${symbol}@trade`,\n event: \"request\",\n params: {\n type: \"trade\",\n symbol: symbol,\n limit,\n },\n },\n {\n onMessage: (data: any) => {\n setIsLoading(false);\n setTrades(() => data);\n },\n }\n );\n }, [symbol]);\n\n useEffect(() => {\n const unsubscript = ws.subscribe(\n {\n id: `${symbol}@trade`,\n event: \"subscribe\",\n topic: `${symbol}@trade`,\n ts: getTimestamp(),\n },\n {\n onMessage: (data: any) => {\n setTrades((prev) => {\n const arr = [{ ...data, ts: getTimestamp() }, ...prev];\n if (arr.length > limit) {\n arr.pop();\n }\n return arr;\n });\n },\n }\n );\n\n return () => {\n unsubscript?.();\n };\n }, [symbol]);\n\n return { data: trades, isLoading };\n};\n","import { useMemo } from \"react\";\nimport { account, positions } from \"@orderly.network/perp\";\nimport { usePositionStream } from \"./usePositionStream/usePositionStream\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useCollateral } from \"./useCollateral\";\nimport { zero } from \"@orderly.network/utils\";\n\nexport type MarginRatioReturn = {\n // Margin Ratio\n marginRatio: number;\n // Current Leverage\n currentLeverage: number;\n // account margin ratio, if user has no position, return null\n mmr: number | null;\n};\n\nexport const useMarginRatio = (): MarginRatioReturn => {\n const [{ rows, aggregated }] = usePositionStream();\n const { data: markPrices } = useMarkPricesStream();\n\n const { totalCollateral } = useCollateral();\n const marginRatio = useMemo(() => {\n if (!rows || !markPrices || !totalCollateral || rows.length === 0) {\n return 0;\n }\n\n const ratio = account.totalMarginRatio({\n totalCollateral: totalCollateral,\n markPrices: markPrices,\n positions: rows ?? [],\n });\n return ratio;\n }, [rows, markPrices, totalCollateral]);\n\n const currentLeverage = useMemo(() => {\n return account.currentLeverage(marginRatio);\n }, [marginRatio]);\n\n // MMR\n const mmr = useMemo<number | null>(() => {\n if (!rows || rows.length <= 0) return null;\n let positionsMM = zero;\n // const positionsNotional = positions.totalNotional(rows);\n\n for (let index = 0; index < rows.length; index++) {\n const item = rows[index];\n positionsMM = positionsMM.add(item.mm);\n }\n\n return account.MMR({\n positionsMMR: positionsMM.toNumber(),\n positionsNotional: aggregated.notional,\n });\n }, [rows, aggregated]);\n\n return { marginRatio, currentLeverage, mmr };\n};\n","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 isTestnet?: boolean;\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 // Whether to force the use of data returned by the API, ignoring the customChains.\n forceAPI?: boolean;\n} & SWRConfiguration;\n\nexport type UseChainsReturnObject = {\n findByChainId: (chainId: number, field?: string) => Chain | undefined;\n checkChainSupport: (\n chainId: number | string,\n networkId: NetworkId\n ) => boolean;\n error: any;\n};\n\nexport function useChains(\n networkId?: undefined,\n options?: undefined\n): [Chains<undefined, undefined>, UseChainsReturnObject];\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): [any, any] {\n const { pick: pickField, ...swrOptions } = options;\n const {\n filteredChains: allowedChains,\n configStore,\n customChains,\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: tokenChainsRes, 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 const needFetchFromAPI = options.forceAPI || !customChains;\n\n // only prod env return mainnet chains info\n const { data: chainInfos, error: chainInfoErr } = useQuery(\n needFetchFromAPI\n ? `https://api-evm.orderly.org/v1/public/chain_info${\n brokerId !== \"orderly\" ? `?broker_id=${brokerId}` : \"\"\n }`\n : null,\n { ...commonSwrOpts }\n );\n\n const chains = useMemo(() => {\n const tokenChains = fillChainsInfo(tokenChainsRes, filterFun.current);\n\n let testnetArr = needFetchFromAPI\n ? ([...TestnetChains] as API.Chain[])\n : customChains?.testnet;\n\n tokenChains?.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 mainnetArr = filterAndUpdateChains(\n tokenChains,\n chainInfos,\n filterFun.current\n );\n\n mainnetArr = needFetchFromAPI ? mainnetArr : customChains?.mainnet;\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 = 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 }, [\n networkId,\n tokenChainsRes,\n chainInfos,\n customChains,\n pickField,\n allowedChains,\n ]);\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 const checkChainSupport = useCallback(\n (chainId: number | string, networkId: NetworkId) => {\n const _chains = Array.isArray(chains) ? chains : chains[networkId];\n return _checkChainSupport(chainId, _chains);\n },\n [chains]\n );\n\n return [\n chains,\n {\n findByChainId,\n checkChainSupport,\n error: tokenError,\n },\n ];\n}\n\nfunction _checkChainSupport(chainId: number | string, chains: API.Chain[]) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\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/** filter chains and update network_infos by chain_info api (v1/public/chain_info) */\nexport function filterAndUpdateChains(\n chains: API.Chain[],\n chainInfos: any,\n filter?: (chain: any) => boolean\n) {\n const filterChains: API.Chain[] = [];\n\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 if (networkInfo) {\n filterChains.push(_chain);\n }\n });\n\n return filterChains;\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","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { API, chainsInfoMap } from \"@orderly.network/types\";\n\nexport const useChain = (token: string) => {\n const { data, isLoading } = useQuery<API.Chain[]>(\"/v1/public/token\");\n\n const chains = useMemo(() => {\n if (!data) return null;\n\n let item = data.find((chain) => chain.token === token);\n\n if (item) {\n item.chain_details = item.chain_details.map((d) => {\n const chain = chainsInfoMap.get(Number(d.chain_id));\n return {\n ...d,\n chain_name: chain?.chainName ?? \"--\",\n };\n });\n }\n\n return item || null;\n }, [data, token]);\n\n return { chains, isLoading };\n};\n","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","import {useCallback, useEffect, useMemo, useRef, useState} from \"react\";\nimport {useAccount} from \"../useAccount\";\nimport {\n AccountStatusEnum,\n API,\n ARBITRUM_MAINNET_CHAINID,\n ARBITRUM_TESTNET_CHAINID,\n DEPOSIT_FEE_RATE,\n isNativeTokenChecker, MaxUint256,\n ChainNamespace,\n NetworkId,\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 console.log('-- chain', chain, options );\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(\n account.assetsManager.getBalanceByAddress(token.address, {\n decimals: token?.decimals,\n })\n );\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 (inputs: {\n address?: string;\n vaultAddress?: string;\n decimals?: number;\n }) => {\n const { address, vaultAddress, decimals } = inputs;\n const key = `${address}-${vaultAddress}`;\n console.log('--- get allowance', 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 decimals,\n });\n\n setAllowance(() => allowance);\n // setAllowanceRevalidating(false);\n return allowance;\n };\n\n const getAllowanceByDefaultAddress = async (inputs: {\n address?: string;\n decimals?: number;\n }) => {\n const { address, decimals } = inputs;\n if (prevAddress.current === address) return;\n\n if (!address || isNativeTokenChecker(address)) return;\n\n prevAddress.current = address;\n\n console.log('-- ttttt agetAllowanceByDefaultAddress', address)\n const allowance = await account.assetsManager.getAllowance({\n address,\n decimals,\n });\n setAllowance(() => allowance);\n };\n\n const queryBalance = useDebouncedCallback(\n (address?: string, decimals?: number) => {\n fetchBalance(address, decimals).finally(() => {\n setBalanceRevalidating(false);\n });\n },\n 100\n );\n\n const queryAllowance = useDebouncedCallback(\n (inputs: {\n address?: string;\n vaultAddress?: string;\n decimals?: number;\n }) => {\n getAllowance(inputs);\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 const params = {\n address: options?.address,\n decimals: options?.decimals,\n };\n\n if (account.walletAdapter?.chainNamespace === ChainNamespace.solana) {\n setAllowance(account.walletAdapter.formatUnits(MaxUint256));\n return;\n }\n console.log('-- dst chainid', dst.chainId, options?.srcChainId, dst, options)\n if (dst.chainId !== options?.srcChainId) {\n queryAllowance(params);\n } else {\n if (dst.symbol !== options?.srcToken) {\n queryAllowance(params);\n } else {\n getAllowanceByDefaultAddress(params);\n }\n }\n }, [\n state.status,\n options?.address,\n options?.srcChainId,\n options?.srcToken,\n options?.decimals,\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({\n address: options.address,\n amount,\n })\n .then((result: any) => {\n return account.walletAdapter\n ?.pollTransactionReceiptWithBackoff(result.hash)\n .then((receipt) => {\n if (receipt.status === 1) {\n account.assetsManager\n .getAllowance({ address: 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 console.log('-- start deposit')\n return account.assetsManager\n .deposit(quantity, depositFee)\n .then((res: any) => {\n account.assetsManager\n .getAllowance({ address: 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 || Number(quantity) === 0) {\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","import useSWRSubscription from \"swr/subscription\";\nimport { useWS } from \"../useWS\";\n\nexport const useWalletSubscription = (options?: {\n onMessage?: (data: any) => void;\n}) => {\n const ws = useWS();\n\n return useSWRSubscription(\"wallet\", (_, { next }) => {\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 options?.onMessage?.(data);\n next(null, data);\n },\n }\n );\n\n return () => unsubscribe();\n });\n};\n","import useSWRSubscription from \"swr/subscription\";\nimport { useWS } from \"../useWS\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport const useSettleSubscription = (options?: {\n onMessage?: (data: any) => void;\n}) => {\n const ws = useWS();\n\n return useSWRSubscription(\"settle\", (_, { next }) => {\n const unsubscribe = ws.privateSubscribe(\n {\n id: \"settle\",\n event: \"subscribe\",\n topic: \"settle\",\n ts: getTimestamp(),\n },\n {\n onMessage: (data: any) => {\n //\n options?.onMessage?.(data);\n next(data);\n },\n }\n );\n\n return () => unsubscribe();\n });\n};\n","import { Decimal } from \"@orderly.network/utils\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { useEffect, useMemo, useState } from \"react\";\n\n// Define the PriceRange type to represent a range of prices\nexport type PriceRange = {\n min: number,\n max: number,\n};\n\n/**\n * Get the price range for the specified symbol with an optional price\n *\n * @param symbol - The symbol to get the price range for\n * @param price - Optional parameter to set the price\n * @returns PriceRange | undefined - Returns the PriceRange representing the price range or undefined\n */\nexport const useSymbolPriceRange = (symbol: string, side: \"BUY\" | \"SELL\", price?: number): PriceRange | undefined => {\n const config = useSymbolsInfo();\n const priceRange = config?.[symbol](\"price_range\");\n const priceScrope = config?.[symbol](\"price_scope\");\n const { data: prices } = useMarkPricesStream();\n const markPrice = price || prices?.[symbol];\n\n /// max mark_price_i * (1+price_range)\n /// min mark_price_i * (1-price_range)\n\n const range = useMemo(() => {\n if (config === undefined || markPrice === undefined) {\n return undefined;\n }\n\n if (priceRange === undefined || Number.isNaN(markPrice)) {\n return undefined;\n }\n\n if (side === \"BUY\") {\n return {\n max: new Decimal(markPrice).mul((1 + priceRange)).toNumber(),\n min: new Decimal(markPrice).mul((1 - priceScrope)).toNumber(),\n };\n }\n\n return {\n max: new Decimal(markPrice).mul((1 + priceScrope)).toNumber(),\n min: new Decimal(markPrice).mul((1 - priceRange)).toNumber(),\n };\n }, [symbol, side, priceRange, markPrice]);\n\n return range;\n}","import { API, SDKError } from \"@orderly.network/types\";\nimport { useTaskProfitAndStopLossInternal } from \"./useTPSL\";\n\nexport const useTPSLOrder = (\n /**\n * Position that needs to set take profit and stop loss\n */\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n /**\n * You can set the default value for the take profit and stop loss order,\n * it is usually used when editing order\n */\n defaultOrder?: API.AlgoOrder;\n }\n): ReturnType<typeof useTaskProfitAndStopLossInternal> => {\n if (!position) {\n throw new SDKError(\"Position is required\");\n }\n\n if (!position.symbol) {\n throw new SDKError(\"Symbol is required\");\n }\n\n if (typeof position.average_open_price === \"undefined\") {\n throw new SDKError(\"Average open price is required\");\n }\n\n if (typeof position.position_qty === \"undefined\") {\n throw new SDKError(\"Position quantity is required\");\n }\n\n // const { data: markPrice } = useMarkPrice(position.symbol);\n\n const result = useTaskProfitAndStopLossInternal(position, options);\n\n return result;\n};\n\nexport type { ComputedAlgoOrder } from \"./useTPSL\";\n","import { useEffect, useState } from \"react\";\n\nimport {\n API,\n AlgoOrderEntity,\n OrderSide,\n SDKError,\n} from \"@orderly.network/types\";\nimport { UpdateOrderKey, calculateHelper } from \"./utils\";\nimport { useMutation } from \"../../useMutation\";\nimport { OrderFactory } from \"../../services/orderCreator/factory\";\nimport { AlgoOrderRootType } from \"@orderly.network/types\";\nimport { TPSLPositionOrderCreator } from \"../../services/orderCreator/tpslPositionOrderCreator\";\nimport { findTPSLFromOrder } from \"../usePositionStream/utils\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { useMarkPrice } from \"../useMarkPrice\";\nimport { omit } from \"ramda\";\n\nexport type ComputedAlgoOrder = Partial<\n AlgoOrderEntity<AlgoOrderRootType.TP_SL> & {\n /**\n * Computed take profit\n */\n tp_pnl: number;\n tp_offset: number;\n tp_offset_percentage: number;\n\n /**\n * Computed stop loss\n */\n sl_pnl: number;\n sl_offset: number;\n sl_offset_percentage: number;\n }\n>;\n\nexport type ValidateError = {\n [P in keyof ComputedAlgoOrder]?: {\n type: string;\n message: string;\n };\n};\n\n/**\n * @hidden\n */\nexport const useTaskProfitAndStopLossInternal = (\n position: Partial<API.PositionTPSLExt> &\n Pick<API.PositionTPSLExt, \"symbol\" | \"average_open_price\" | \"position_qty\">,\n options?: {\n defaultOrder?: API.AlgoOrder;\n }\n): [\n /**\n * return the computed & formatted order\n */\n ComputedAlgoOrder,\n {\n /**\n * Update the take profit and stop loss order, this will merge the new data with the old one\n */\n setValue: (key: string, value: number | string) => void;\n setValues: (values: Partial<ComputedAlgoOrder>) => void;\n // getOrderEntity: () => AlgoOrderEntity<AlgoOrderRootType.TP_SL|AlgoOrderRootType.POSITIONAL_TP_SL>;\n /**\n * Submit the TP/SL order\n */\n submit: () => Promise<void>;\n // /**\n // * Create the take profit and stop loss order, auto-detect the order type\n // */\n // create: () => Promise<void>;\n // update: (orderId: number) => Promise<any>;\n errors: ValidateError | null;\n /**\n *\n */\n validate: () => Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n >;\n isCreateMutating: boolean;\n }\n] => {\n const [order, setOrder] = useState<\n ComputedAlgoOrder & {\n ignoreValidate?: boolean;\n }\n >({\n algo_order_id: options?.defaultOrder?.algo_order_id,\n symbol: position.symbol as string,\n side: Number(position.position_qty) > 0 ? OrderSide.BUY : OrderSide.SELL,\n quantity:\n options?.defaultOrder?.quantity || Math.abs(position.position_qty),\n algo_type: options?.defaultOrder?.algo_type as AlgoOrderRootType,\n });\n\n const symbolInfo = useSymbolsInfo()[position.symbol!]();\n const { data: markPrice } = useMarkPrice(order.symbol!);\n\n const [doCreateOrder, { isMutating: isCreateMutating }] =\n useMutation(\"/v1/algo/order\");\n const [doUpdateOrder] = useMutation(\"/v1/algo/order\", \"PUT\");\n const [doDeleteOrder] = useMutation(\"/v1/algo/order\", \"DELETE\");\n\n const [errors, setErrors] = useState<ValidateError | null>(null);\n\n useEffect(() => {\n if (!options?.defaultOrder) return;\n const trigger_prices = findTPSLFromOrder(options.defaultOrder!);\n if (trigger_prices.tp_trigger_price) {\n setOrderValue(\"tp_trigger_price\", trigger_prices.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n if (trigger_prices.sl_trigger_price) {\n setOrderValue(\"sl_trigger_price\", trigger_prices.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n }, []);\n\n const _setOrderValue = (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n // console.log(\"[updateOrder:]\", key, value);\n\n setOrder((prev) => {\n const side = position.position_qty! > 0 ? OrderSide.BUY : OrderSide.SELL;\n\n if (key === \"sl_pnl\") {\n value = value ? `-${value}` : \"\";\n }\n\n const newValue = calculateHelper(\n key,\n {\n key,\n value,\n entryPrice: position.average_open_price!,\n qty:\n side === OrderSide.BUY\n ? Number(prev.quantity)!\n : -Number(prev.quantity)!,\n orderSide: side,\n },\n {\n symbol: symbolInfo,\n }\n );\n\n return {\n ...prev,\n ...newValue,\n ignoreValidate: options?.ignoreValidate,\n };\n });\n };\n\n const setOrderValue = async (\n key: string,\n value: number | string,\n options?: {\n ignoreValidate?: boolean;\n }\n ) => {\n // console.log(\"-------->>>>>\", key, value);\n if (key === \"quantity\") {\n setOrder((prev) => ({ ...prev, quantity: value }));\n\n if (typeof order.sl_trigger_price !== \"undefined\") {\n _setOrderValue(\"sl_trigger_price\", order.sl_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n if (typeof order.tp_trigger_price !== \"undefined\") {\n _setOrderValue(\"tp_trigger_price\", order.tp_trigger_price, {\n ignoreValidate: true,\n });\n }\n\n return;\n }\n\n _setOrderValue(key, value, options);\n };\n\n /**\n * calculate value config\n */\n const valueConfig = {\n symbol: symbolInfo,\n maxQty: Math.abs(position.position_qty),\n markPrice,\n };\n\n // auto validate when order changed\n useEffect(() => {\n requestAnimationFrame(() => {\n if (order.ignoreValidate) return;\n const orderCreator = getOrderCreator();\n orderCreator\n .validate(order as AlgoOrderEntity, valueConfig)\n .then((errors) => {\n setErrors(errors);\n });\n });\n }, [order, valueConfig.markPrice, order.quantity]);\n\n const setValues = (values: Partial<ComputedAlgoOrder>) => {\n const keys = Object.keys(values);\n keys.forEach((key) => {\n setOrderValue(\n key as UpdateOrderKey,\n values[key as keyof ComputedAlgoOrder] as number | string\n );\n });\n };\n\n const validate = (): Promise<\n AlgoOrderEntity<\n AlgoOrderRootType.POSITIONAL_TP_SL | AlgoOrderRootType.TP_SL\n >\n > => {\n const orderCreator = getOrderCreator();\n\n return new Promise((resolve, reject) => {\n return orderCreator\n .validate(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n .then((errors) => {\n console.log(\"errors::\", errors);\n\n if (errors) {\n setErrors(errors);\n return reject(errors);\n }\n\n resolve(\n orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n )\n );\n });\n });\n };\n\n // useEffect(() => {\n // // setError(validate());\n // }, [order]);\n\n const compare = (): boolean => {\n const quantityNum = Number(order.quantity);\n if (isNaN(quantityNum)) return false;\n return quantityNum === Math.abs(Number(position.position_qty));\n };\n\n const getOrderCreator = () => {\n // if the order is existed, and the order type is POSITIONAL_TP_SL, always return POSITIONAL_TP_SL\n // else use qty to determine the order type\n if (options?.defaultOrder?.algo_type === AlgoOrderRootType.TP_SL) {\n return OrderFactory.create(AlgoOrderRootType.TP_SL);\n }\n return OrderFactory.create(\n compare() ? AlgoOrderRootType.POSITIONAL_TP_SL : AlgoOrderRootType.TP_SL\n );\n };\n\n const submit = async () => {\n const defaultOrder = options?.defaultOrder;\n const orderId = defaultOrder?.algo_order_id;\n const algoType = defaultOrder?.algo_type;\n\n // if algo_order_id is not existed, create new order\n if (!orderId) {\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = POSITION_TP_SL\n if (algoType === AlgoOrderRootType.POSITIONAL_TP_SL) {\n // if order.qty = position.qty, update order\n if (compare()) {\n return updateOrder(orderId!);\n }\n // if order.qty != position.qty, create new tp/sl order\n return createOrder();\n }\n\n // if algo_order_id is existed and algoType = TP_SL, delete order and create new order\n\n return updateOrder(orderId!);\n };\n\n const createOrder = () => {\n const orderCreator = getOrderCreator();\n\n const orderBody = orderCreator.create(\n order as AlgoOrderEntity<AlgoOrderRootType.TP_SL>,\n valueConfig\n );\n\n if (orderBody.child_orders.length === 0) {\n throw new SDKError(\"No child orders\");\n }\n\n // filter the order that is not activated\n orderBody.child_orders = orderBody.child_orders.filter(\n (order: API.AlgoOrderExt) => order.is_activated\n );\n\n return doCreateOrder(orderBody);\n };\n\n const deleteOrder = (orderId: number, symbol: string): Promise<any> => {\n return doDeleteOrder(null, {\n order_id: orderId,\n symbol,\n });\n };\n\n const updateOrder = (orderId: number): Promise<any> => {\n const orderCreator = getOrderCreator() as TPSLPositionOrderCreator;\n\n const [updatedOrderEntity, orderEntity] = orderCreator.crateUpdateOrder(\n // @ts-ignore\n order,\n options?.defaultOrder,\n valueConfig\n );\n\n if (updatedOrderEntity.child_orders.length === 0) {\n return Promise.resolve(\"Not any order needs to update\");\n }\n\n const needDelete =\n orderEntity.child_orders.filter(\n (order) =>\n typeof order.is_activated === \"boolean\" && !order.is_activated\n ).length === orderEntity.child_orders.length;\n\n if (needDelete) {\n return deleteOrder(orderId, order.symbol!);\n }\n\n return doUpdateOrder({\n order_id: orderId,\n ...updatedOrderEntity,\n });\n };\n\n return [\n omit([\"ignoreValidate\"], order) as ComputedAlgoOrder,\n {\n submit,\n\n // create: submit,\n\n // update: updateOrder,/\n setValue: setOrderValue,\n setValues,\n // createPositionTPSL: submit,\n // createTPSL: submit,\n validate,\n errors,\n isCreateMutating,\n },\n ];\n};\n","import { API, OrderSide, PositionSide } from \"@orderly.network/types\";\nimport { OrderType } from \"@orderly.network/types\";\nimport { AlgoOrderType } from \"@orderly.network/types\";\nimport { Decimal, todpIfNeed, zero } from \"@orderly.network/utils\";\n\nexport type UpdateOrderKey =\n | \"tp_trigger_price\"\n | \"tp_offset_percentage\"\n | \"tp_pnl\"\n | \"tp_offset\"\n | \"quantity\"\n | \"sl_trigger_price\"\n | \"sl_offset_percentage\"\n | \"sl_pnl\"\n | \"sl_offset\";\n\n/**\n * offset -> TP/SL price\n */\nexport function offsetToPrice(inputs: {\n qty: number;\n offset: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, offset, entryPrice, orderType, orderSide } = inputs;\n\n if (!offset) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice).minus(new Decimal(offset)).toNumber();\n }\n\n return new Decimal(entryPrice).add(new Decimal(offset)).toNumber();\n }\n}\n\nexport function priceToOffset(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal: Decimal;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(price).minus(new Decimal(entryPrice));\n }\n\n decimal = new Decimal(entryPrice).minus(new Decimal(price));\n }\n\n if (symbol) {\n return decimal!.abs().todp(symbol.quote_dp, Decimal.ROUND_UP).toNumber();\n }\n\n return decimal!.abs().toNumber();\n}\n\nexport function offsetPercentageToPrice(inputs: {\n qty: number;\n percentage: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, percentage, entryPrice, orderType, orderSide } = inputs;\n\n if (!percentage) return;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n\n return new Decimal(1)\n .add(new Decimal(percentage))\n .mul(new Decimal(entryPrice))\n .toNumber();\n }\n}\n\nexport function priceToOffsetPercentage(inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(price)\n .div(new Decimal(entryPrice))\n .minus(1)\n .toNumber();\n }\n\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(1)\n .minus(new Decimal(price).div(new Decimal(entryPrice)))\n .toNumber();\n }\n\n return new Decimal(price).div(new Decimal(entryPrice)).minus(1).toNumber();\n }\n}\n\n/**\n * pnl -> TP/SL price\n */\nexport function pnlToPrice(inputs: {\n qty: number;\n pnl: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n}) {\n const { qty, pnl, entryPrice, orderType, orderSide } = inputs;\n\n // console.log(\"pnlToPrice\", inputs);\n\n if (!pnl) {\n return;\n }\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .plus(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n\n return new Decimal(entryPrice)\n .add(new Decimal(pnl).div(new Decimal(qty)))\n .toNumber();\n }\n}\n\n/**\n * TP/SL price -> pnl\n */\nexport function priceToPnl(\n inputs: {\n qty: number;\n price: number;\n entryPrice: number;\n orderSide: OrderSide;\n orderType: AlgoOrderType;\n },\n options: { symbol?: API.SymbolExt } = {}\n): number {\n const { qty, price, entryPrice, orderType, orderSide } = inputs;\n const { symbol } = options;\n let decimal = zero;\n\n if (orderSide === OrderSide.BUY) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (orderSide === OrderSide.SELL) {\n if (orderType === AlgoOrderType.TAKE_PROFIT) {\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n decimal = new Decimal(qty).mul(\n new Decimal(price).minus(new Decimal(entryPrice))\n );\n }\n\n if (symbol) {\n return decimal.todp(symbol.quote_dp, Decimal.ROUND_DOWN).toNumber();\n }\n\n return decimal.toNumber();\n}\n\n// function formatPrice(price: number | string, symbol?: API.SymbolExt) {\n// if (typeof price !== \"string\") {\n// price = `${price}`;\n// }\n\n// if (price.endsWith(\".\") || !symbol) {\n// return price;\n// }\n// return new Decimal(Number(price))\n// .todp(symbol.quote_dp, Decimal.ROUND_UP)\n// .toNumber();\n// }\n\nexport function calculateHelper(\n key: string,\n inputs: {\n key: string;\n value: string | number;\n entryPrice: number;\n qty: number;\n orderSide: OrderSide;\n },\n options: { symbol?: API.SymbolExt } = {}\n) {\n const { symbol } = options;\n // if not need to be computed, return the value directly\n if (\n key !== \"quantity\" &&\n key !== \"tp_trigger_price\" &&\n key !== \"sl_trigger_price\" &&\n key !== \"tp_pnl\" &&\n key !== \"sl_pnl\" &&\n key !== \"tp_offset\" &&\n key !== \"sl_offset\" &&\n key !== \"tp_offset_percentage\" &&\n key !== \"sl_offset_percentage\"\n ) {\n return {\n [key]: inputs.value,\n };\n }\n\n const orderType = key.startsWith(\"tp_\")\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS;\n const keyPrefix = key.slice(0, 3);\n\n let qty = Number(key === \"quantity\" ? inputs.value : inputs.qty);\n\n if (qty === 0)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n // [`${keyPrefix}offset`]: \"\",\n // [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n let trigger_price, offset, offset_percentage, pnl;\n\n const entryPrice = new Decimal(inputs.entryPrice)\n .todp(options.symbol?.quote_dp ?? 2, Decimal.ROUND_UP)\n .toNumber();\n\n // console.log(\"******* entryPrice\", options.symbol?.quote_dp, entryPrice);\n\n switch (key) {\n case \"tp_trigger_price\":\n case \"sl_trigger_price\": {\n trigger_price = inputs.value;\n // if trigger price is empty and the key is `*_trigger_price`, reset the offset and pnl\n if (inputs.value === \"\") {\n return {\n [`${keyPrefix}trigger_price`]: trigger_price,\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n };\n }\n break;\n }\n\n case \"tp_pnl\":\n case \"sl_pnl\": {\n pnl = inputs.value;\n trigger_price = pnlToPrice({\n qty,\n pnl: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n\n case \"tp_offset\":\n case \"sl_offset\": {\n offset = inputs.value;\n trigger_price = offsetToPrice({\n qty,\n offset: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType:\n key === \"tp_offset\"\n ? AlgoOrderType.TAKE_PROFIT\n : AlgoOrderType.STOP_LOSS,\n });\n break;\n }\n\n case \"tp_offset_percentage\":\n case \"sl_offset_percentage\": {\n offset_percentage = inputs.value;\n trigger_price = offsetPercentageToPrice({\n qty,\n percentage: Number(inputs.value),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n });\n break;\n }\n }\n\n if (!trigger_price)\n return {\n [`${keyPrefix}trigger_price`]: \"\",\n [`${keyPrefix}offset`]: \"\",\n [`${keyPrefix}offset_percentage`]: \"\",\n [`${keyPrefix}pnl`]: \"\",\n [key]: inputs.value,\n };\n\n return {\n [`${keyPrefix}trigger_price`]: todpIfNeed(\n trigger_price,\n symbol?.quote_dp ?? 2\n ),\n [`${keyPrefix}offset`]:\n offset ??\n priceToOffset(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n [`${keyPrefix}offset_percentage`]:\n offset_percentage ??\n priceToOffsetPercentage({\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n }),\n [`${keyPrefix}pnl`]:\n pnl ??\n priceToPnl(\n {\n qty,\n price: Number(trigger_price!),\n entryPrice,\n orderSide: inputs.orderSide,\n orderType,\n },\n options\n ),\n };\n}\n","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useAccountInfo } from \"./useAccountInfo\";\n\nexport const useSymbolLeverage = (symbol: string) : number | \"-\" => {\n const { data: info } = useAccountInfo();\n\n const maxAccountLeverage = info?.max_leverage;\n\n const res = useQuery<any>(`/v1/public/info/${symbol}`, {\n dedupingInterval: 1000 * 60 * 60 * 24,\n revalidateOnFocus: false,\n errorRetryCount: 2,\n errorRetryInterval: 200,\n });\n\n const maxSymbolLeverage = useMemo(() => {\n const base = res?.data?.base_imr;\n if (base) return 1 / base;\n }, [res]);\n\n const maxLeverage = useMemo(() => {\n if (!maxAccountLeverage || !maxSymbolLeverage) {\n return \"-\";\n }\n\n return Math.min(maxAccountLeverage, maxSymbolLeverage);\n }, [maxAccountLeverage, maxSymbolLeverage]);\n\n return maxLeverage;\n};\n","import { API } from \"@orderly.network/types\";\nimport { SWRInfiniteResponse } from \"swr/infinite\";\nimport { usePrivateInfiniteQuery } from \"../../usePrivateInfiniteQuery\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { useEventEmitter } from \"../../useEventEmitter\";\nimport { useEffect } from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\n\nexport enum AssetHistoryStatusEnum {\n NEW = \"new\",\n CONFIRM = \"confirm\",\n PROCESSING = \"processing\",\n COMPLETED = \"completed\",\n PENDDING = \"pendding\",\n PENDING_REBALANCE = \"pending_rebalance\",\n}\n\nconst useAssetsHistory = (options: {\n // token?: string;\n side?: string;\n // status?: AssetHistoryStatusEnum;\n startTime?: string;\n endTime?: string;\n page?: number;\n pageSize?: number;\n}) => {\n const { page = 1, pageSize = 10 } = options;\n const ee = useEventEmitter();\n\n const getKey = () => {\n // if (previousPageData && !previousPageData.length) return null;\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", page.toString());\n searchParams.set(\"size\", pageSize.toString());\n\n // if (options.token) searchParams.set(\"token\", options.token);\n if (options.side && options.side !== \"All\")\n searchParams.set(\"side\", options.side);\n // if (options.status) searchParams.set(\"status\", options.status);\n if (options.startTime) searchParams.set(\"start_t\", options.startTime);\n if (options.endTime) searchParams.set(\"end_t\", options.endTime);\n\n return `/v1/asset/history?${searchParams.toString()}`;\n };\n\n const { data, isLoading, mutate } = usePrivateQuery<API.AssetHistory>(\n getKey(),\n {\n formatter: (data) => data,\n revalidateOnFocus: false,\n errorRetryInterval: 60 * 1000,\n }\n );\n const updateList = useDebouncedCallback(\n (data: any) => {\n mutate();\n },\n // delay in ms\n 300\n );\n\n useEffect(() => {\n ee.on(\"wallet:changed\", updateList);\n\n return () => {\n ee.off(\"wallet:changed\", updateList);\n };\n }, []);\n\n return [\n data?.rows || [],\n {\n meta: data?.meta,\n isLoading,\n },\n ] as const;\n};\n\nexport { useAssetsHistory };\n","import { API, SDKError } from \"@orderly.network/types\";\nimport { useMemo } from \"react\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { zero } from \"@orderly.network/utils\";\n\ntype QueryParams = {\n startDate: string;\n endDate: string;\n page?: number;\n};\n\n/**\n * Fetch statistics data, only support weekly/monthly/quarterly for now\n */\nexport const useStatisticsDaily = (\n params: QueryParams,\n options?: {\n ignoreAggregation?: boolean;\n }\n) => {\n const { startDate, endDate, page = 1 } = params;\n const { ignoreAggregation = false } = options || {};\n\n if (!startDate || !endDate) {\n throw new SDKError(\"startDate and endDate are required\");\n }\n\n const getPeriod = (startDate: string, endDate: string) => {\n if (startDate === endDate) {\n return 1;\n }\n const diff = new Date(endDate).getTime() - new Date(startDate).getTime();\n return diff / (1000 * 60 * 60 * 24);\n };\n\n const key = useMemo(() => {\n // if (previousPageData && !previousPageData.length) return null;\n const searchParams = new URLSearchParams();\n\n searchParams.set(\"page\", page.toString());\n searchParams.set(\n \"size\",\n (getPeriod(startDate, endDate) + (ignoreAggregation ? 0 : 1)).toString()\n );\n\n /*\n * add one day for the start date, for ROI calculation\n */\n const modifiedStartDate = new Date(startDate);\n modifiedStartDate.setDate(new Date(startDate).getDate() - 1);\n\n searchParams.set(\n \"start_date\",\n modifiedStartDate.toISOString().split(\"T\")[0]\n );\n searchParams.set(\"end_date\", params.endDate);\n\n return `/v1/client/statistics/daily?${searchParams.toString()}`;\n }, [page, startDate, endDate]);\n\n const { data } = usePrivateQuery<API.DailyRow[]>(key, {\n formatter: (data) => data.rows.reverse(),\n revalidateOnFocus: false,\n });\n\n const aggregateValue = useMemo(() => {\n if (ignoreAggregation) {\n return { vol: null, pnl: null, roi: null };\n }\n let vol = zero;\n let pnl = zero;\n let roi = zero;\n\n if (Array.isArray(data) && data.length) {\n const prevDate = data.shift();\n data.forEach((d) => {\n vol = vol.add(d.perp_volume);\n pnl = pnl.add(d.pnl);\n });\n\n roi = pnl.div(prevDate!.account_value);\n }\n\n return { vol: vol.toNumber(), pnl: pnl.toNumber(), roi: roi.toNumber() };\n }, [data]);\n\n // (data?.rows as any[]).shift();\n\n return [\n data || [],\n {\n aggregateValue,\n },\n ] as const;\n};\n\nexport type UseStatisticsDailyReturn = ReturnType<typeof useStatisticsDaily>;\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { useMemo, useRef } from \"react\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\nimport { SWRConfiguration } from \"swr\";\n\ntype FundingSearchParams = {\n /**\n * Data range for the funding fee history\n * noted that the time stamp is a 13-digits timestamp\n * the first element is the start date and the second element is the end date\n * @default [Now subtract 3 months, Now]\n */\n dataRange?: number[];\n symbol?: string;\n page?: number;\n pageSize?: number;\n};\n\nexport const useFundingFeeHistory = (\n params: FundingSearchParams,\n options?: SWRConfiguration\n) => {\n let { symbol, dataRange, page = 1, pageSize = 10 } = params;\n\n const infos = useSymbolsInfo();\n\n const getKey = () => {\n // console.log(\"symbol\", symbol, dataRange);\n\n const search = new URLSearchParams();\n\n if (typeof symbol !== \"undefined\" && symbol !== \"All\") {\n search.set(\"symbol\", symbol);\n }\n search.set(\"page\", `${page}`);\n search.set(\"size\", `${pageSize}`);\n\n if (dataRange) {\n search.set(\"start_t\", dataRange[0].toString());\n search.set(\"end_t\", dataRange[1].toString());\n }\n\n return `/v1/funding_fee/history?${search.toString()}`;\n };\n const { data, isLoading, isValidating } =\n usePrivateQuery<API.FundingFeeHistory>(getKey(), {\n // initialSize: 1,\n formatter: (data) => data,\n revalidateOnFocus: false,\n errorRetryCount: 3,\n // keepPreviousData: true,\n ...options,\n });\n\n const parsedData = useMemo<\n | (API.FundingFeeRow & {\n annual_rate: number;\n })[]\n | null\n >(() => {\n if (!data || !Array.isArray(data?.rows) || infos.isNil) {\n return null;\n }\n\n return data.rows.map((row: API.FundingFeeRow) => {\n const config = infos[row.symbol];\n return {\n ...row,\n annual_rate: row.funding_rate * (24 / config(\"funding_period\")) * 365,\n };\n });\n }, [data, infos]);\n\n return [\n parsedData,\n {\n meta: data?.meta,\n isLoading,\n isValidating,\n },\n ] as const;\n};\n\nexport type UseFundingFeeHistoryReturn = ReturnType<\n typeof useFundingFeeHistory\n>;\n","import { API } from \"@orderly.network/types\";\nimport { usePrivateQuery } from \"../../usePrivateQuery\";\nimport { useMemo } from \"react\";\nimport { useSymbolsInfo } from \"../useSymbolsInfo\";\n\ntype DistributionSearchParams = {\n /**\n * Data range for the distribution history\n * noted that the time stamp is a 13-digits timestamp\n * the first element is the start date and the second element is the end date\n * @default [Now subtract 3 months, Now]\n */\n dataRange?: number[];\n type?: string;\n page: number;\n pageSize: number;\n};\n\nexport const useDistributionHistory = (parmas: DistributionSearchParams) => {\n let { type, dataRange, page, pageSize } = parmas;\n\n const infos = useSymbolsInfo();\n\n const getKey = () => {\n const search = new URLSearchParams();\n\n if (typeof type !== \"undefined\" && type !== \"All\") {\n search.set(\"type\", type);\n }\n search.set(\"page\", page.toString());\n search.set(\"size\", pageSize.toString());\n\n if (dataRange) {\n search.set(\"start_t\", dataRange[0].toString());\n search.set(\"end_t\", dataRange[1].toString());\n }\n\n return `/v1/client/distribution_history?${search.toString()}`;\n };\n const { data, isLoading, isValidating } =\n usePrivateQuery<API.FundingFeeHistory>(getKey(), {\n // initialSize: 1,\n formatter: (data) => data,\n revalidateOnFocus: false,\n errorRetryCount: 3,\n });\n\n const parsedData = useMemo<\n (API.FundingFeeRow & {\n annual_rate: number;\n })[]\n >(() => {\n if (!Array.isArray(data?.rows) || !data?.rows.length || infos.isNil) {\n return [];\n }\n\n return data.rows.map((row: API.FundingFeeRow) => {\n const config = infos[row.symbol];\n return {\n ...row,\n annual_rate: row.funding_rate * (24 / config(\"funding_period\")),\n };\n });\n }, [data, infos]);\n\n return [\n parsedData,\n {\n meta: data?.meta,\n isLoading,\n isValidating,\n },\n ] as const;\n};\n\nexport type UseDistributionHistoryReturn = ReturnType<\n typeof useDistributionHistory\n>;\n","import { useEffect, useRef, useState } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useConfig } from \"../useConfig\";\nimport { useWS } from \"../useWS\";\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nexport function useMaintenanceStatus() {\n // 0 for nothing, 2 for maintenance\n const [status, setStatus] = useState<number>(0);\n const [startTime, setStartTime] = useState<number>();\n const [endTime, setEndTime] = useState<number>();\n const [brokerName, setBrokerName] = useState<string>(\"Orderly network\");\n const { data: systemInfo, mutate } = useQuery<any>(`/v1/public/system_info`, {\n revalidateOnFocus: false,\n errorRetryCount: 2,\n errorRetryInterval: 200,\n });\n const ws = useWS();\n\n const config = useConfig();\n\n useEffect(() => {\n if (!systemInfo || !systemInfo.data) {\n return;\n }\n\n const brokerName = config.get(\"brokerName\");\n if (brokerName) {\n setBrokerName(brokerName);\n }\n // systemInfo.data.status = 2;\n // systemInfo.data.scheduled_maintenance = {\n // start_time: new Date(\"2024-08-27\").getTime(),\n // end_time: new Date(\"2024-08-30\").getTime(),\n // };\n console.log(\"--systemInfo\", systemInfo, brokerName);\n if (systemInfo.data.scheduled_maintenance) {\n setStartTime(systemInfo.data.scheduled_maintenance.start_time);\n setEndTime(systemInfo.data.scheduled_maintenance.end_time);\n }\n if (systemInfo.data.status === 2) {\n setStatus(2);\n }\n }, [systemInfo, config]);\n\n useEffect(() => {\n const unsubscribe = ws.subscribe(`maintenance_status`, {\n onMessage: (message: any) => {\n setStatus(message.status);\n console.log(\"-- ws maintenance_status\", message);\n if (message.scheduled_maintenance) {\n setStartTime(message.scheduled_maintenance.start_time);\n setEndTime(message.scheduled_maintenance.end_time);\n }\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n }, []);\n\n return {\n status,\n brokerName,\n startTime,\n endTime,\n };\n}\n","import { useEffect, useState } from \"react\";\n\nexport function useMediaQuery(query: string): boolean {\n const getMatches = (query: string): boolean => {\n // Prevents SSR issues\n if (typeof window !== \"undefined\") {\n return window.matchMedia(query).matches;\n }\n return false;\n };\n\n const [matches, setMatches] = useState<boolean>(getMatches(query));\n\n function handleChange() {\n setMatches(getMatches(query));\n }\n\n useEffect(() => {\n const matchMedia = window?.matchMedia(query);\n\n // Triggered at the first client-side load and if query changes\n handleChange();\n\n // Listen matchMedia\n if (matchMedia?.addListener) {\n matchMedia?.addListener(handleChange);\n } else {\n matchMedia?.addEventListener?.(\"change\", handleChange);\n }\n\n return () => {\n if (matchMedia?.removeListener) {\n matchMedia?.removeListener(handleChange);\n } else {\n matchMedia?.removeEventListener?.(\"change\", handleChange);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query]);\n\n return matches;\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { mergeDeepRight } from \"ramda\";\nimport { PosterPainter } from \"./services/painter/painter\";\nimport { type DrawOptions } from \"./services/painter/basePaint\";\nimport { DefaultLayoutConfig } from \"./services/painter/layout.config\";\nimport { SDKError } from \"@orderly.network/types\";\n\n/**\n * Generates a poster image based on position information. You can set the size, background color, font color, font size, and content position of the poster.\n * @example\n * ```tsx\n * const { ref, toDataURL, toBlob, download, copy } = usePoster({\n * backgroundColor: \"#0b8c70\",\n * backgroundImg: \"/images/poster_bg.png\",\n * color: \"rgba(255, 255, 255, 0.98)\",\n * profitColor: \"rgb(0,181,159)\",\n * // ...\n * });\n * ```\n */\nexport const usePoster = (\n /**\n * The options to draw the poster\n */\n data: DrawOptions,\n options?: {\n /**\n * The ratio of the poster\n */\n ratio?: number;\n }\n) => {\n const [error, setError] = useState<Error | null>(null);\n const [canCopy, setCanCopy] = useState<boolean>(\n () => typeof navigator.clipboard !== \"undefined\"\n );\n\n const painterRef = useRef<PosterPainter | null>(null);\n\n const [target, setTarget] = useState<HTMLCanvasElement | null>(null);\n\n useEffect(() => {\n // Create the painter instance\n if (target) {\n if (!painterRef.current) {\n painterRef.current = new PosterPainter(target, {\n ratio: options?.ratio || 1,\n ...options,\n });\n }\n\n painterRef.current.draw(\n mergeDeepRight<Partial<DrawOptions>, DrawOptions>(\n { layout: DefaultLayoutConfig, fontFamily: \"Manrope\" },\n data\n )\n );\n }\n }, [target, data]);\n\n // useEffect(() => {\n // if (painterRef.current) {\n // painterRef.current.draw(\n // mergeDeepRight<Partial<DrawOptions>, DrawOptions>(\n // { layout: DefaultLayoutConfig, fontFamily: \"Manrope\" },\n // data\n // )\n // );\n // }\n // }, [data]);\n\n const toDataURL = (type?: string, encoderOptions?: number) => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n return target.toDataURL(type, encoderOptions);\n };\n\n /**\n * Converts the poster to a blob\n */\n const toBlob = useCallback(\n (type?: string, encoderOptions?: number): Promise<Blob | null> => {\n return new Promise<Blob | null>((resolve) => {\n if (!target) {\n resolve(null);\n return;\n }\n target.toBlob(resolve, type, encoderOptions);\n });\n },\n [target]\n );\n\n const ref = (ref: HTMLCanvasElement | null) => {\n if (!ref) return;\n if (ref.tagName.toUpperCase() !== \"CANVAS\") {\n // throw new Error(\"The ref must be a canvas element\");\n setError(new SDKError(\"The ref must be a canvas element\"));\n return;\n }\n setTarget(ref);\n };\n\n const download = useCallback(\n (filename: string, type: string = \"image/png\", encoderOptions?: number) => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n const img = new Image();\n img.src = target.toDataURL(type, encoderOptions);\n const link = document.createElement(\"a\");\n link.href = img.src;\n link.download = filename;\n link.click();\n },\n [target]\n );\n\n const copy = useCallback(() => {\n if (!target) {\n throw new SDKError(\"The ref must be a canvas element\");\n }\n // copy image to clipboard\n return new Promise<void>((resolve, reject) => {\n if (!navigator.clipboard) {\n reject(new SDKError(\"Clipboard API is not supported\"));\n return;\n }\n target.toBlob((blob) => {\n if (!blob) {\n reject(new SDKError(\"Failed to create blob\"));\n return;\n }\n return navigator.clipboard\n .write([new ClipboardItem({ [blob.type]: blob })])\n .then(resolve, reject);\n });\n });\n }, [target]);\n\n return {\n error,\n /**\n * The ref to the canvas element, you should pass this ref to the canvas element\n */\n ref,\n /**\n * Converts the poster to a data URL\n */\n toDataURL,\n /**\n * Converts the poster to a blob\n */\n toBlob,\n /**\n * Downloads the poster as an image\n */\n download,\n /**\n * Browser if supports copy image to clipboard\n */\n canCopy,\n copy,\n } as const;\n};\n","import { OrderSide } from \"@orderly.network/types\";\nimport { PosterPainter } from \"./painter\";\n\nexport type posterDataSource = {\n /**\n * slogan of the poster\n */\n message?: string;\n position: {\n symbol: string;\n // side: OrderSide;\n side: \"LONG\" | \"SHORT\";\n /**\n * The leverage of the position\n */\n leverage: number;\n /**\n * The unrealized PnL of the position\n */\n pnl: number;\n /**\n * The return on investment of the position\n */\n ROI: number;\n /**\n * The informations of the position, such as open price, opened at, mark price, quantity and custom message.\n */\n informations: { title: string; value: string }[];\n /**\n * The quote currency of the position\n */\n currency: string;\n };\n /**\n * The domain of the application\n */\n domain: string;\n\n /**\n * The update time of the position\n */\n updateTime: string;\n\n referral?: {\n code: string;\n slogan: string;\n link: string;\n } | null;\n};\n\nexport type layoutInfo = {\n width?: number;\n height?: number;\n // padding?: number;\n // margin?: number;\n fontSize?: number;\n\n color?: string;\n textAlign?: CanvasTextAlign;\n textBaseline?: CanvasTextBaseline;\n position: Partial<{\n left: number;\n right: number;\n top: number;\n bottom: number;\n }>;\n};\n\nexport type PosterLayoutConfig = {\n message?: layoutInfo;\n\n domain?: layoutInfo;\n position?: layoutInfo;\n unrealizedPnl?: layoutInfo & {\n secondaryColor: string;\n secondaryFontSize: number;\n };\n\n informations?: layoutInfo & {\n labelColor?: string;\n };\n updateTime?: layoutInfo;\n};\n\nexport type DrawOptions = {\n /**\n * Color of common text\n */\n color?: string;\n fontFamily?: string;\n /**\n * Lose color\n */\n lossColor?: string;\n /**\n * Profit color\n */\n profitColor?: string;\n /**\n * The brand color of the application\n */\n brandColor?: string;\n backgroundColor?: string;\n backgroundImg?: string;\n data?: posterDataSource;\n layout?: PosterLayoutConfig;\n};\n\nexport abstract class BasePaint {\n constructor(\n protected ctx: CanvasRenderingContext2D,\n protected painter: PosterPainter\n ) {}\n abstract draw(options: DrawOptions): Promise<void>;\n}\n","import { BasePaint, type DrawOptions } from \"./basePaint\";\n\nexport class BackgroundPaint extends BasePaint {\n private img: HTMLImageElement | null = null;\n\n async draw(options: DrawOptions) {\n console.log(\"BackgroundPaint draw: \", options.backgroundColor);\n\n if (\n typeof options.backgroundImg !== \"undefined\" &&\n options.backgroundImg !== \"\"\n ) {\n return this._drawImage(options);\n } else if (typeof options.backgroundColor !== \"undefined\") {\n return this._drawColor(options);\n }\n }\n\n _drawColor(options: DrawOptions) {\n console.log(\"graw background color\", options);\n this.ctx.fillStyle = options.backgroundColor || \"black\";\n this.ctx.fillRect(\n 0,\n 0,\n this.painter.width * this.painter.ratio,\n this.painter.height * this.painter.ratio\n );\n }\n\n async _drawImage(options: DrawOptions) {\n return this.loadImg(options.backgroundImg!).then((img) => {\n this.img = img;\n this.ctx.drawImage(\n this.img!,\n 0,\n 0,\n this.painter.width * this.painter.ratio,\n this.painter.height * this.painter.ratio\n );\n });\n }\n\n private loadImg(url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = \"anonymous\";\n img.onload = () => {\n resolve(img);\n };\n img.onerror = (e) => {\n reject(e);\n };\n img.src = url;\n });\n }\n}\n","import { commify } from \"@orderly.network/utils\";\nimport { BasePaint, DrawOptions, layoutInfo } from \"./basePaint\";\nimport { path } from \"ramda\";\nimport { qrPaint } from \"./qrPaint\";\n\nexport class DataPaint extends BasePaint {\n private positionInfoCellWidth = 110;\n\n private DEFAULT_PROFIT_COLOR = \"rgb(0,181,159)\";\n private DEFAULT_LOSS_COLOR = \"rgb(255,103,194)\";\n\n private transformTop = 0;\n\n private QRCODE_SIZE = 56;\n\n async draw(options: DrawOptions) {\n const needDrawDetails =\n Array.isArray(options.data?.position?.informations) &&\n (options.data?.position?.informations?.length ?? 0) > 0;\n\n const hasReferral = this.hasReferral(options);\n\n // const hasMessage = !!options.data?.message;\n const hasMessage = true;\n\n this.transformTop = hasMessage ? 0 : needDrawDetails ? -40 : -150;\n\n // If position details are not displayed, the position PNL information will be margin\n // const offsetTop = hasMessage ? 50 : 100;\n const offsetTop = 0; // 100;\n // const offsetMessage = hasMessage ? 0 : -50;\n\n if (!!options.data?.message) {\n this.drawMessage(options);\n }\n\n if (!!options.data?.position) {\n this.drawPosition(\n options,\n needDrawDetails || hasReferral ? 0 : offsetTop\n );\n }\n\n if (needDrawDetails) {\n this.drawInformations(options);\n }\n\n this.drawUnrealizedPnL(\n options,\n needDrawDetails || hasReferral ? 0 : offsetTop\n );\n\n if (!hasReferral) {\n if (!!options.data?.domain) {\n this.drawDomainUrl(options);\n }\n\n if (typeof options.data?.updateTime !== \"undefined\") {\n this.drawPositionTime(options);\n }\n }\n\n if (typeof options.data?.referral !== \"undefined\") {\n this.drawReferralCode(options);\n }\n }\n\n private drawMessage(options: DrawOptions) {\n // console.log(\"draw message\", options);\n\n const layout = path<layoutInfo>(\n [\"layout\", \"message\"],\n options\n ) as layoutInfo;\n const { position } = layout;\n\n this._drawText(`\"${options.data?.message!}\"`, {\n color: layout.color,\n fontSize: this._ratio(layout.fontSize as number),\n top: this._ratio(position.top!),\n left: this._ratio(position.left!),\n textBaseline: \"top\",\n fontFamily: options.fontFamily,\n });\n }\n private drawPosition(options: DrawOptions, offsetTop: number = 0) {\n const layout = path<layoutInfo>(\n [\"layout\", \"position\"],\n options\n ) as layoutInfo;\n const { position, fontSize = 14 } = layout;\n let left = this._ratio(position.left!);\n\n let top = layout.position.top! + offsetTop + this.transformTop;\n let prevElementBoundingBox: TextMetrics = {} as TextMetrics;\n\n // draw position side;\n\n if (typeof options.data?.position.side !== \"undefined\") {\n prevElementBoundingBox = this._drawText(options.data.position.side, {\n color:\n options.data?.position.side.toUpperCase() === \"LONG\"\n ? this.DEFAULT_PROFIT_COLOR\n : this.DEFAULT_LOSS_COLOR,\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n\n if (typeof options.data?.position.symbol !== \"undefined\") {\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n\n if (prevElementBoundingBox.width) {\n prevElementBoundingBox = this._drawText(\"|\", {\n color: \"rgba(255,255,255,0.2)\",\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n prevElementBoundingBox = this._drawText(options.data?.position.symbol!, {\n color: layout.color,\n left: left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n\n if (typeof options.data?.position.leverage !== \"undefined\") {\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n\n if (prevElementBoundingBox.width) {\n prevElementBoundingBox = this._drawText(\"|\", {\n color: \"rgba(255,255,255,0.2)\",\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n });\n }\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(7);\n prevElementBoundingBox = this._drawText(\n `${options.data?.position.leverage}X`,\n {\n color: layout.color,\n left,\n top: this._ratio(top),\n fontSize: this._ratio(fontSize),\n fontFamily: options.fontFamily,\n }\n );\n }\n }\n\n private drawUnrealizedPnL(options: DrawOptions, offsetTop: number = 0) {\n // reset left value;\n const layout = path<layoutInfo>(\n [\"layout\", \"unrealizedPnl\"],\n options\n ) as layoutInfo & {\n secondaryColor: string;\n secondaryFontSize: number;\n };\n const { position } = layout;\n let left = this._ratio(position.left!);\n let prevElementBoundingBox: TextMetrics = {} as TextMetrics;\n\n const top = (position.top ?? 0) + offsetTop + this.transformTop;\n\n // ROI\n if (typeof options.data?.position.ROI !== \"undefined\") {\n const prefix = options.data?.position.ROI! > 0 ? \"+\" : \"\";\n prevElementBoundingBox = this._drawText(\n `${prefix}${commify(options.data?.position.ROI)}%`,\n {\n color:\n prefix === \"+\"\n ? options.profitColor || this.DEFAULT_PROFIT_COLOR\n : options.lossColor || this.DEFAULT_LOSS_COLOR,\n left,\n top: this._ratio(top),\n\n fontSize: this._ratio(layout.fontSize as number),\n fontWeight: 700,\n fontFamily: options.fontFamily,\n }\n );\n }\n // unrelPnL\n if (typeof options.data?.position.pnl !== \"undefined\") {\n const prefix = options.data?.position.pnl! > 0 ? \"+\" : \"\";\n let text = `${prefix}${commify(options.data?.position.pnl)} ${\n options.data?.position.currency\n }`;\n let fontWeight = 600;\n\n if (prevElementBoundingBox.width) {\n left += (prevElementBoundingBox.width ?? 0) + this._ratio(8);\n text = `(${text})`;\n } else {\n left = this._ratio(position.left!);\n fontWeight = 700;\n }\n\n const color =\n typeof options.data.position.ROI === \"undefined\"\n ? prefix === \"+\"\n ? options.profitColor || this.DEFAULT_PROFIT_COLOR\n : options.lossColor || this.DEFAULT_LOSS_COLOR\n : layout.secondaryColor;\n\n const fontSize =\n typeof options.data.position.ROI === \"undefined\"\n ? this._ratio(layout.fontSize as number)\n : this._ratio(layout.secondaryFontSize as number);\n\n prevElementBoundingBox = this._drawText(text, {\n color,\n left,\n top: this._ratio(top),\n fontSize,\n fontWeight,\n fontFamily: options.fontFamily,\n });\n }\n }\n\n private drawInformations(options: DrawOptions) {\n const layout = path<layoutInfo>(\n [\"layout\", \"informations\"],\n options\n ) as layoutInfo & {\n labelColor?: string;\n };\n const { position } = layout;\n\n const isVertical = (options.data?.position.informations.length ?? 0) === 2;\n\n options.data?.position.informations.forEach((info, index) => {\n // let cellWidth = this.positionInfoCellWidth;\n let left = position.left! + (index % 2) * this.positionInfoCellWidth;\n // let top = (position.top as number) + (index / 2) * 38 + this.transformTop;\n let top =\n (position.top as number) +\n Math.floor(index / 2) * 38 +\n this.transformTop;\n\n this._drawText(info.title, {\n left: this._ratio(left),\n top: this._ratio(top),\n fontSize: this._ratio(10),\n color: layout.labelColor,\n fontFamily: options.fontFamily,\n });\n\n this._drawText(info.value, {\n left: this._ratio(left),\n top: this._ratio(top + 17),\n fontSize: this._ratio(layout.fontSize as number),\n fontWeight: 500,\n color: layout.color as string,\n fontFamily: options.fontFamily,\n });\n });\n }\n\n private drawDomainUrl(options: DrawOptions, onlyMeasure: boolean = false) {\n const layout = path<layoutInfo>(\n [\"layout\", \"domain\"],\n options\n ) as layoutInfo;\n\n const hasReferral = this.hasReferral(options);\n\n const { position } = layout;\n const top = this.painter.height - position.bottom!;\n\n return this._drawText(\n options.data?.domain!,\n {\n left: !hasReferral\n ? this._ratio(position.left!)\n : this._ratio(this.painter.width - 20),\n top: !hasReferral\n ? this._ratio(top)\n : this._ratio(this.painter.height - 16),\n fontSize: this._ratio(layout.fontSize as number),\n color: options.brandColor ?? this.DEFAULT_PROFIT_COLOR,\n fontFamily: options.fontFamily,\n textBaseline: layout.textBaseline,\n textAlign: !hasReferral ? layout.textAlign : \"end\",\n fontWeight: 600,\n },\n onlyMeasure\n );\n }\n\n private drawPositionTime(options: DrawOptions) {\n const layout = path<layoutInfo>(\n [\"layout\", \"updateTime\"],\n options\n ) as layoutInfo;\n const { position } = layout;\n const hasReferral = this.hasReferral(options);\n\n let top = this.painter.height - position.bottom!;\n let left = this._ratio(position.left!);\n\n if (hasReferral) {\n const metrics = this.drawDomainUrl(options, true);\n // console.log(\"metrics\", metrics);\n left =\n this._ratio(this.painter.width) -\n metrics.width -\n this._ratio(8 + position.left!);\n top = this.painter.height - position.bottom!;\n // console.log(\"left\", left, top, metrics.width, this._ratio(top));\n }\n\n this._drawText(\n !hasReferral\n ? options.data?.updateTime!\n : `Share on ${options.data?.updateTime} |`,\n {\n left,\n top: this._ratio(top),\n // top: 536,\n fontSize: this._ratio(layout.fontSize as number),\n color: layout.color as string,\n // color: \"red\",\n textAlign: !hasReferral ? layout.textAlign : \"end\",\n fontFamily: options.fontFamily,\n textBaseline: layout.textBaseline,\n }\n );\n }\n\n private drawReferralCode(options: DrawOptions) {\n if (!options.data?.referral) {\n return;\n }\n\n const layout = path<layoutInfo>(\n [\"layout\", \"updateTime\"],\n options\n ) as layoutInfo;\n const { position } = layout;\n const top = this.painter.height - (position.bottom ?? 0);\n\n const messageLayout = path<layoutInfo>(\n [\"layout\", \"message\"],\n options\n ) as layoutInfo;\n\n const url = new URL(options.data.referral.link);\n\n const searchParams = url.searchParams;\n searchParams.append(\"ref\", options.data.referral.code);\n\n url.search = searchParams.toString();\n\n qrPaint(this.ctx, {\n size: this._ratio(this.QRCODE_SIZE),\n padding: this._ratio(2),\n left: this._ratio(position.left!),\n top: this._ratio(top - this.QRCODE_SIZE),\n data: `${url.toString()}`,\n });\n\n this._drawText(options.data.referral.slogan, {\n left: this._ratio(position.left! + 66),\n top: this._ratio(top - this.QRCODE_SIZE),\n fontSize: this._ratio(14),\n color: options.brandColor ?? this.DEFAULT_PROFIT_COLOR,\n fontFamily: options.fontFamily,\n textBaseline: \"top\",\n });\n\n this._drawText(\"Referral Code\", {\n left: this._ratio(position.left! + 66),\n top: this._ratio(top - 29),\n fontSize: this._ratio(12),\n color: layout.color as string,\n fontFamily: options.fontFamily,\n textBaseline: \"middle\",\n });\n\n this._drawText(options.data.referral.code, {\n left: this._ratio(position.left! + 66),\n top: this._ratio(top),\n fontSize: this._ratio(16),\n color: messageLayout.color as string,\n fontFamily: options.fontFamily,\n textBaseline: \"bottom\",\n });\n }\n\n private _drawText(\n str: string,\n options?: {\n left?: number;\n top?: number;\n fontSize?: number;\n fontFamily?: string;\n fontWeight?: number;\n color?: string;\n textBaseline?: CanvasTextBaseline;\n textAlign?: CanvasTextAlign;\n },\n onlyMeasure: boolean = false\n ): TextMetrics {\n let boundingBox: TextMetrics;\n const {\n left = 30,\n top = 30,\n fontSize = 13,\n fontWeight = 500,\n color = \"black\",\n textBaseline = \"middle\",\n textAlign = \"start\",\n } = options ?? {};\n\n this.ctx.save();\n // \"Nunito Sans\",-apple-system,\"San Francisco\",BlinkMacSystemFont,\"Segoe UI\",\"Helvetica Neue\",Helvetica,Arial,sans-serif\n this.ctx.font = `${fontWeight} ${fontSize}px ${options?.fontFamily}`;\n\n this.ctx.fillStyle = color;\n this.ctx.textBaseline = textBaseline;\n this.ctx.textAlign = textAlign;\n boundingBox = this.ctx.measureText(str);\n\n if (!onlyMeasure) {\n this.ctx.fillText(str, left, top);\n }\n this.ctx.restore();\n\n return boundingBox;\n }\n\n private hasReferral(options: DrawOptions): boolean {\n return typeof options.data?.referral !== \"undefined\";\n }\n\n private _ratio(num: number) {\n return num * this.painter.ratio;\n }\n}\n","//@ts-ignore\n// import QRious from \"./qrious\";\nimport { qrcode } from \"@akamfoad/qr\";\n\nexport const qrPaint = (\n ctx: CanvasRenderingContext2D,\n options: {\n size: number;\n padding: number;\n left: number;\n top: number;\n data: string;\n }\n) => {\n const { size, left, top, data, padding } = options;\n\n const qr = qrcode(data);\n const canvas = document.createElement(\"canvas\");\n canvas.width = size;\n canvas.height = size;\n const ctx2 = canvas.getContext(\"2d\");\n\n // const qr = new QRious({\n // value: data,\n // size: 200,\n // padding: 5,\n // level: \"L\",\n // });\n\n const cells = qr.modules;\n\n if (!cells) {\n return;\n }\n\n const tileW = size / cells.length;\n const tileH = size / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx2!.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx2!.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n\n ctx.save();\n ctx.fillStyle = \"#fff\";\n\n ctx.fillRect(\n left - padding,\n top - padding,\n size + padding * 2,\n size + padding * 2\n );\n ctx.restore();\n\n ctx.drawImage(canvas, left, top, size, size);\n};\n","import { BackgroundPaint } from \"./backgroundPaint\";\nimport { DrawOptions } from \"./basePaint\";\nimport { DataPaint } from \"./dataPaint\";\nexport class PosterPainter {\n private ctx: CanvasRenderingContext2D;\n width: number = 0;\n height: number = 0;\n ratio: number;\n // resourceManager: Resource;\n constructor(\n private canvas: HTMLCanvasElement,\n options?: {\n ratio: number;\n }\n ) {\n // console.log(\"PosterPainter constructor\");\n\n this.ctx = this.canvas.getContext(\"2d\")!;\n\n this.width = this.canvas.width;\n this.height = this.canvas.height;\n\n // this.ratio =\n // options?.ratio ||\n // (typeof window !== \"undefined\"\n // ? Math.ceil(window.devicePixelRatio)\n // : 1) ||\n // 1;\n\n this.ratio = Math.max(\n options?.ratio || 1,\n typeof window !== \"undefined\" ? Math.ceil(window.devicePixelRatio) : 1\n );\n\n // render to high resolution\n this.canvas.width = this.width * this.ratio;\n this.canvas.height = this.height * this.ratio;\n this.canvas.style.width = this.width + \"px\";\n this.canvas.style.height = this.height + \"px\";\n\n //\n }\n\n draw(options: DrawOptions) {\n requestAnimationFrame(() => this._draw.bind(this)(options));\n }\n\n async _draw(options: DrawOptions) {\n if (this.ctx === null) return;\n // console.log(\"============ DRAW ============\");\n // this.ctx.font = options.fontFamily!;\n // this.ctx.clearRect(0, 0, this.width * this.ratio, this.height * this.ratio);\n // start draw\n // background\n await new BackgroundPaint(this.ctx, this).draw(options);\n // data paint\n await new DataPaint(this.ctx, this).draw(options);\n }\n}\n","import { type PosterLayoutConfig } from \"./basePaint\";\n\nexport const DefaultLayoutConfig: PosterLayoutConfig = {\n domain: {\n fontSize: 13,\n // color: undefined,\n textBaseline: \"bottom\",\n position: {\n left: 20,\n bottom: 32,\n },\n },\n message: {\n fontSize: 20,\n color: \"rgba(255, 255, 255, 0.98)\",\n textBaseline: \"top\",\n position: {\n left: 20,\n top: 16,\n },\n },\n position: {\n fontSize: 14,\n color: \"rgba(255,255,255,0.98)\",\n position: {\n left: 20,\n top: 70,\n },\n },\n unrealizedPnl: {\n fontSize: 36,\n color: \"rgba(255,255,255,0.5)\",\n secondaryColor: \"rgba(255,255,255,0.54)\",\n secondaryFontSize: 20,\n position: {\n left: 20,\n top: 110,\n },\n },\n informations: {\n fontSize: 12,\n color: \"rgba(255, 255, 255, 0.8)\",\n labelColor: \"rgba(255,255,255,0.36)\",\n position: {\n left: 20,\n top: 150,\n },\n },\n\n updateTime: {\n fontSize: 10,\n color: \"rgba(255,255,255,0.3)\",\n textAlign: \"start\",\n textBaseline: \"bottom\",\n position: {\n left: 20,\n bottom: 17,\n },\n },\n};\n","export {\n findTPSLFromOrder,\n findTPSLFromOrders,\n findPositionTPSLFromOrders,\n} from \"../orderly/usePositionStream/utils\";\n\nexport { cleanStringStyle } from \"./orderEntryHelper\";\n\nexport { getPositionBySymbol } from \"./swr\";\n\nexport { priceToPnl } from \"../orderly/useTakeProfitAndStopLoss/utils\";\nexport { formatNumber } from \"./orderEntryHelper\";\nexport type { ValueOf } from \"./createGetter\";","import { useMemo } from \"react\";\nimport { useDistribution } from \"./useDistribution\";\nimport { useRefereeHistory } from \"./useRefereeHistory\";\n\nexport const useCommission = (options?: { size?: number }) => {\n\n const [referee, { refresh: refreshReferee, loadMore: loadMoreReferee, }] = useRefereeHistory({ size: options?.size });\n\n const [distribution, { refresh: refreshDistribution, loadMore: loadMoreDistribution, isLoading }] = useDistribution({ size: options?.size });\n\n const commissionData = useMemo(() => {\n\n return distribution?.map((item: any) => {\n\n if (\"updated_time\" in item) {\n const updateTime = new Date(item.updated_time);\n\n const index = referee?.findIndex((e: any) => {\n if (\"date\" in e) {\n return compareDate(updateTime, new Date(e.date));\n }\n return false;\n });\n if (index !== -1) {\n return { ...item, volume: referee?.[index].volume };\n }\n }\n return { ...item };\n\n });\n\n }, [referee, distribution]);\n\n const loadMore = () => {\n loadMoreReferee();\n loadMoreDistribution();\n }\n\n const refresh = () => {\n refreshReferee();\n refreshDistribution();\n }\n\n return [commissionData, {\n loadMore,\n refresh,\n isLoading\n }];\n}\n\n//** compare two date, yyyy-mm-dd */\nfunction compareDate(d1?: Date, d2?: Date) {\n const isEqual = d1 && d2 &&\n d1.getDay() === d2.getDay()\n && d1.getMonth() === d2.getMonth()\n && d1.getFullYear() === d2.getFullYear();\n\n\n return isEqual;\n}","export const generateKeyFun =\n (args: {\n path: string;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 100 */\n size?: number;\n page?: number;\n sort?: string;\n }) =>\n (pageIndex: number, previousPageData: any): string | null => {\n // reached the end\n if (previousPageData && !previousPageData.rows?.length) return null;\n\n const { path, startDate, endDate, size = 100, page, sort } = args;\n\n const search = new URLSearchParams([\n [\"size\", size.toString()],\n [\"page\", `${page || pageIndex + 1}`],\n ]);\n\n if (sort) {\n search.set(\"sort\", sort);\n }\n\n if (startDate) {\n search.set(`start_date`, startDate);\n }\n\n if (endDate) {\n search.set(`end_date`, endDate);\n }\n\n return `${path}?${search.toString()}`;\n };\n","import { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\nimport { RefferalAPI } from \"./api\";\nimport { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 1 */\n initialSize?: number;\n};\n\nexport const useDistribution = (params: Params): any => {\n const { size = 10, startDate, endDate, initialSize } = params;\n\n const ordersResponse: any = usePrivateInfiniteQuery(\n generateKeyFun({\n path: \"/v1/client/distribution_history\",\n size,\n startDate,\n endDate,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data: any) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n ordersResponse.setSize(ordersResponse.size + 1);\n };\n\n const total = useMemo(() => {\n return ordersResponse.data?.[0]?.meta?.total || 0;\n }, [ordersResponse.data?.[0]?.meta?.total]);\n\n const flattenOrders = useMemo((): RefferalAPI.Distribution[] | null => {\n if (!ordersResponse.data) {\n return null;\n }\n\n return (\n ordersResponse.data\n ?.map((item: any) => item.rows)\n ?.flat()\n /// TODO: next version will be remove this code\n .map((item: any) => {\n return {\n ...item,\n created_time: item.created_time - 86400000,\n updated_time: item.updated_time - 86400000,\n };\n })\n );\n }, [ordersResponse.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: ordersResponse.isLoading,\n refresh: ordersResponse.mutate,\n loadMore,\n },\n ] as const;\n};\n","import { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\nimport { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 1 */\n initialSize?: number;\n};\n\nexport const useRefereeHistory = (params: Params): any[] => {\n const { size = 10, startDate, endDate, initialSize } = params;\n\n const response: any = usePrivateInfiniteQuery(\n generateKeyFun({\n path: \"/v1/referral/referee_history\",\n size,\n startDate,\n endDate,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n response.setSize(response.size + 1);\n };\n\n const total = useMemo(() => {\n return response.data?.[0]?.meta?.total || 0;\n }, [response.data?.[0]?.meta?.total]);\n\n const flattenOrders = useMemo(() => {\n if (!response.data) {\n return null;\n }\n\n return response.data?.map((item: any) => item.rows)?.flat();\n }, [response.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n },\n ];\n};\n","import { max, min } from \"ramda\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { RefferalAPI } from \"./api\";\nimport { formatDate } from \"./format\";\nimport { getTimestamp } from \"@orderly.network/utils\";\nexport const useDaily = (options?: {\n //** default Date() - 30d */\n startDate?: Date;\n //** default Date() */\n endDate?: Date;\n}): {\n data?: RefferalAPI.DayliVolume[];\n mutate: any;\n} => {\n const path = \"/v1/volume/user/daily\";\n const endDate = options?.startDate || new Date();\n const startDate =\n options?.endDate || new Date(getTimestamp() - 86400000 * 30);\n\n const start_date = formatDate(startDate);\n const end_date = formatDate(endDate);\n\n const url = `${path}?start_date=${min(start_date, end_date)}&end_date=${max(\n start_date,\n end_date\n )}`;\n const { data: dailyVolume, mutate } = usePrivateQuery<\n RefferalAPI.DayliVolume[]\n >(url, {\n revalidateOnFocus: true,\n });\n\n return {\n data: dailyVolume,\n mutate,\n };\n};\n","export function formatDate(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n \n return `${year}-${month}-${day}`;\n }\n ","import { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\nimport { RefferalAPI } from \"./api\";\nimport { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n //** YYYY-MM-dd */\n startDate?: string;\n //** YYYY-MM-dd */\n endDate?: string;\n //** default is 1 */\n initialSize?: number;\n page?: number,\n};\n\nexport const useReferralRebateSummary = (params: Params) => {\n const { size = 10, startDate, endDate, initialSize, page, } = params;\n\n const response = usePrivateInfiniteQuery<any>(\n generateKeyFun({\n path: \"/v1/referral/rebate_summary\",\n size,\n startDate,\n endDate,\n page,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n response.setSize(response.size + 1);\n };\n \n const meta = useMemo(():\n | {\n total: number;\n records_per_page: number;\n current_page: number;\n }\n | undefined => {\n return response.data?.[0]?.meta;\n }, [response.data]);\n\n const total = useMemo(() => {\n return meta?.total || 0;\n }, [meta]);\n\n const flattenOrders = useMemo(():\n | RefferalAPI.ReferralRebateSummary[]\n | null => {\n if (!response.data) {\n return null;\n }\n\n return response.data?.map((item) => item.rows)?.flat();\n }, [response.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n meta\n },\n ] as const;\n};\n","import { generateKeyFun } from \"./swr\";\nimport { useMemo } from \"react\";\nimport { RefferalAPI } from \"./api\";\nimport { usePrivateInfiniteQuery } from \"../usePrivateInfiniteQuery\";\nimport { API } from \"@orderly.network/types\";\n\ntype Params = {\n //** default is 10 */\n size?: number;\n /**\n * @deprecated \n * YYYY-MM-dd */\n startDate?: string;\n /**\n * @deprecated \n * YYYY-MM-dd */\n endDate?: string;\n /** default is 1 */\n initialSize?: number;\n sort?:\n | \"ascending_code_binding_time\"\n | \"descending_code_binding_time\"\n | \"ascending_referral_rebate\"\n | \"descending_referral_rebate\"\n | \"ascending_volume\"\n | \"descending_volume\";\n page?: number;\n};\n\nexport const useRefereeInfo = (params: Params) => {\n const { size = 10, startDate, endDate, initialSize, page, sort } = params;\n\n const response = usePrivateInfiniteQuery<any>(\n generateKeyFun({\n path: \"/v1/referral/referee_info\",\n size,\n startDate,\n endDate,\n page,\n sort,\n }),\n {\n initialSize: initialSize,\n // revalidateFirstPage: false,\n // onError: (err) => {\n // console.error(\"fetch failed::::\", err);\n // },\n formatter: (data) => data,\n revalidateOnFocus: false,\n }\n );\n\n const loadMore = () => {\n response.setSize(response.size + 1);\n };\n\n const meta = useMemo(():\n | {\n total: number;\n records_per_page: number;\n current_page: number;\n }\n | undefined => {\n return response.data?.[0]?.meta;\n }, [response.data]);\n\n const total = useMemo(() => {\n return meta?.total || 0;\n }, [meta]);\n\n const flattenOrders = useMemo((): RefferalAPI.RefereeInfoItem[] | null => {\n if (!response.data) {\n return null;\n }\n\n return response.data?.map((item) => item.rows)?.flat();\n }, [response.data]);\n\n return [\n flattenOrders,\n {\n total,\n isLoading: response.isLoading,\n refresh: response.mutate,\n loadMore,\n meta,\n },\n ] as const;\n};\n","import { usePrivateQuery } from \"../usePrivateQuery\";\nimport { RefferalAPI } from \"./api\";\nimport { formatDate } from \"./format\";\n\ntype Params = {\n startDate?: Date,\n endDate?: Date\n}\n\nexport const useRefereeRebateSummary = (params: Params): {\n data?: RefferalAPI.RefereeRebateSummary[],\n mutate: any,\n isLoading: boolean,\n} => {\n const path = \"/v1/referral/referee_rebate_summary\";\n\n let url = path;\n if (typeof params.endDate !== 'undefined' && typeof params.startDate !== 'undefined') {\n\n const sDate = minDate(params.startDate, params.endDate);\n const eDate = maxDate(params.startDate, params.endDate);\n const search = new URLSearchParams([]);\n search.set(`start_date`, formatDate(sDate, ));\n search.set(`end_date`, formatDate(eDate,));\n const queryParams = search.toString() || \"\";\n url = `${path}?${queryParams}`;\n }\n const {\n data,\n mutate,\n isLoading,\n } = usePrivateQuery<RefferalAPI.RefereeRebateSummary[]>(url, {\n revalidateOnFocus: true\n });\n\n return {\n data,\n mutate,\n isLoading,\n }\n}\n\nfunction minDate(a: Date, b: Date) {\n return a < b ? a : b;\n}\n\nfunction maxDate(a: Date, b: Date) {\n return a > b ? a : b;\n}","import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\n\nexport type CheckReferralCodeReturns = {\n isExist?: boolean;\n error: any;\n isLoading: boolean;\n};\n\nexport const useCheckReferralCode = (\n code?: string\n): CheckReferralCodeReturns => {\n const { data, error, isLoading } = useQuery<{ exist?: boolean }>(\n typeof code === \"undefined\" || code?.length === 0\n ? null\n : `/v1/public/referral/verify_ref_code?referral_code=${code}`\n );\n\n if (typeof code === \"undefined\") {\n return {\n isExist: false,\n error: \"The code is undefined\",\n isLoading: false,\n };\n }\n\n return {\n isExist: data?.exist,\n error,\n isLoading,\n };\n};\n","import { useQuery } from \"../useQuery\";\n\nexport const useGetReferralCode = (\n accountId?: string\n): {\n referral_code?: string;\n error: any;\n isLoading: boolean;\n} => {\n const { data, error, isLoading } = useQuery<{ referral_code?: string }>(\n typeof accountId === \"undefined\" ? null : `/v1/public/referral/check_ref_code?account_id=${accountId}`\n );\n\n if (typeof accountId === \"undefined\") {\n return {\n referral_code: undefined,\n error: \"The account id is empty or undefined\",\n isLoading: false,\n };\n }\n\n return {\n referral_code: data?.referral_code,\n error,\n isLoading,\n };\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { RefferalAPI } from \"./api\";\nimport { useLocalStorage } from \"../useLocalStorage\";\n\nexport const useReferralInfo = ():{\n data?: RefferalAPI.ReferralInfo;\n isTrader?: boolean;\n isAffiliate?: boolean;\n error: any;\n isLoading: boolean;\n getFirstRefCode: () => RefferalAPI.ReferralCode | undefined;\n} => {\n const {\n data,\n mutate,\n isLoading,\n error,\n } = usePrivateQuery<RefferalAPI.ReferralInfo>(\"/v1/referral/info\", {\n revalidateOnFocus: true,\n });\n\n const isTrader = useMemo(() => {\n if (typeof data?.referee_info?.referer_code === 'undefined') return undefined;\n return (data?.referee_info?.referer_code?.length || 0) > 0;\n }, [data?.referee_info]);\n \n const isAffiliate = useMemo(() => {\n if (typeof data?.referrer_info?.referral_codes === 'undefined') return undefined;\n return (data?.referrer_info?.referral_codes?.length || 0) > 0;\n }, [data?.referrer_info]);\n\n\n const [pinCodes] = useLocalStorage<string[]>(\"orderly_referral_codes\", [] as string[]);\n\n const getFirstRefCode = useCallback(() : RefferalAPI.ReferralCode | undefined => {\n\n if (!data?.referrer_info.referral_codes) return undefined;\n const referralCodes = [...data?.referrer_info.referral_codes];\n\n const pinedItems: RefferalAPI.ReferralCode[] = [];\n\n for (let i = 0; i < pinCodes.length; i++) {\n const code = pinCodes[i];\n\n const index = referralCodes.findIndex((item) => item.code === code);\n if (index !== -1) {\n\n pinedItems.push({ ...referralCodes[index]});\n referralCodes.splice(index, 1);\n }\n\n }\n\n const newCodes = [...pinedItems, ...referralCodes];\n\n return newCodes?.[0];\n }, [pinCodes, data]);\n \n\n return {\n data,\n isTrader,\n isAffiliate,\n error,\n isLoading,\n getFirstRefCode,\n };\n};\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { TWType } from \"./types\";\nimport { useQuery } from \"../useQuery\";\nimport { getTimestamp } from \"@orderly.network/utils\";\n\nexport type EpochInfoItem = {\n epoch_id: number;\n start_time: number;\n end_time: number;\n // power_fees_paid_major: number;\n // power_fees_paid_alts: number;\n // power_staked_major: number;\n // power_staked_alts: number;\n epoch_token: string;\n max_reward_amount: number;\n // k_constant_major: number;\n // k_constant_alts: number;\n};\n\nexport type EpochInfoType = [\n data: EpochInfoItem[] | undefined,\n {\n isLoading: boolean;\n curEpochInfo: EpochInfoItem | undefined;\n isUnstart: boolean;\n refresh: () => void;\n }\n];\n\nexport const useEpochInfo = (type: TWType): EpochInfoType => {\n // const [data, setData] = useState<EpochInfoItem[] | undefined>(undefined);\n const [curEpochInfo, setCurEpochInfo] = useState<EpochInfoItem | undefined>(\n undefined\n );\n\n const path =\n type === TWType.normal\n ? \"/v1/public/trading_rewards/epoch_info\"\n : \"/v1/public/market_making_rewards/epoch_info\";\n const {\n data: epochInfo,\n error,\n isLoading,\n mutate: refresh,\n } = useQuery(path, {\n formatter: (res) => {\n if (typeof res === \"object\" && \"rows\" in res! && \"current_epoch\" in res) {\n const { rows, current_epoch } = res;\n if (Array.isArray(rows)) {\n const list: EpochInfoItem[] = rows.map(\n (e: any) => e as EpochInfoItem\n );\n list.sort((a, b) => b.end_time - a.end_time);\n const curEpochIndex = list?.findIndex(\n (item: any) => item.epoch_id === current_epoch\n );\n\n const epochOne = list.find((item) => item.epoch_id === 1);\n\n if (epochOne && epochOne?.start_time > getTimestamp()) {\n // not start\n setCurEpochInfo(epochOne);\n } else {\n setCurEpochInfo(\n curEpochIndex !== -1 ? list?.[curEpochIndex] : undefined\n );\n }\n\n return list;\n }\n }\n return [];\n },\n });\n\n const isUnstart = useMemo(() => {\n // if (curEpochInfo) {\n // return curEpochInfo?.start_time > Date.now();\n // }\n // return true;\n\n const epochOne = epochInfo?.find((item) => item.epoch_id === 1);\n if (epochOne) {\n return epochOne.start_time > getTimestamp();\n }\n return true;\n }, [epochInfo]);\n\n return [epochInfo, { isLoading, curEpochInfo, isUnstart, refresh }];\n};\n","export enum TWType {\n normal = \"normal\",\n mm = \"mm\",\n}\n","import { useQuery } from \"../useQuery\";\n\nexport type Brokers = {\n [key: string]: string;\n}\n\nexport const useAllBrokers = () => {\n\n const { data } = useQuery<Brokers | undefined>(\"/v1/public/broker/name\", {\n formatter: (res) => {\n const { rows } = res;\n\n return rows\n ?.map((item: any) => ({ [item.broker_id]: item.broker_name }))\n .reduce((acc: any, curr: any) => ({ ...acc, ...curr }), {});\n },\n });\n\n return [data] as const;\n};\n","\nimport { useEffect, useMemo, useState } from \"react\";\nimport { TWType } from \"./types\";\nimport { useAccount } from \"../useAccount\";\nimport { useWalletConnector } from \"../walletConnectorContext\";\nimport { useQuery } from \"../useQuery\";\nimport { useAllBrokers } from \"./useAllBrokers\";\n\nexport type CurrentEpochEstimateRow = {\n broker_id: string;\n est_r_account: number;\n /// front end added\n broker_name: string;\n};\n\nexport type CurrentEpochEstimate = {\n est_r_wallet: string;\n est_stake_boost?: number;\n est_avg_stake?: number;\n est_trading_volume: number;\n rows: CurrentEpochEstimateRow[];\n};\n\nexport const useCurEpochEstimate = (type: TWType) => {\n const [data, setData] = useState<CurrentEpochEstimate | undefined>(undefined);\n // const { address, brokers, isNotSupportChain } = useAppContext();\n const { account } = useAccount();\n\n const brokers = useAllBrokers();\n\n /// TODO: use right value\n const isNotSupportChain = false;\n\n const address = account.address;\n\n\n\n const path =\n type === TWType.normal\n ? `/v1/public/trading_rewards/current_epoch_estimate?address=${address}`\n : `/v1/public/market_making_rewards/current_epoch_estimate?address=${address}`;\n const { data: estimateData } = useQuery<CurrentEpochEstimate | undefined>(address !== undefined ? path : '', {\n formatter: (res: any) => {\n const data = {\n ...res,\n rows:\n res.rows?.map((item: any) => ({\n ...item,\n broker_name: item.broker_id,\n })) || [],\n est_trading_volume: res?.est_maker_volume || res?.est_trading_volume,\n };\n return data;\n }\n });\n \n\n\n const reuslt = useMemo(() => {\n if (estimateData) {\n const newData = { ...estimateData };\n newData.rows = newData.rows?.map((item: any) => ({\n ...item,\n broker_name: brokers[item.broker_id] || item.broker_id,\n }));\n\n return newData;\n }\n return data;\n }, [estimateData, brokers]);\n\n return [reuslt] as const;\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useAllBrokers } from \"./useAllBrokers\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\n// import { assert } from \"ethers\";\n\nexport type AccountRewardsHistoryRow = {\n broker_id: string;\n wallet_epoch_avg_staked?: number;\n trader_score_major?: number;\n trader_score_alts?: number;\n epoch_token?: string;\n reward_status?: string;\n r_major?: number;\n r_alts?: number;\n r_account?: number;\n broker_name?: string;\n};\n\nexport type AccountRewardsHistory = {\n epoch_id: number;\n broker: AccountRewardsHistoryRow[];\n};\n\nexport const useAccountRewardsHistory = (address?: string) => {\n const [brokers] = useAllBrokers();\n const { data } = usePrivateQuery<AccountRewardsHistory[] | undefined>(\n `/v1/public/trading_rewards/account_rewards_history?address=${\n address ?? \"\"\n }`,\n {\n revalidateOnFocus: false,\n formatter: (res) => {\n const data = res?.rows?.map((e: any) => {\n e.broker = e.broker.map((item: any) => ({\n ...item,\n broker_name: item?.broker_id,\n }));\n return {\n epoch_id: e.epoch_id,\n broker: e.broker,\n };\n });\n\n return data;\n },\n }\n );\n\n const result = useMemo(() => {\n if (data && brokers) {\n const newData = [...data];\n newData.forEach((data) => {\n const list = data.broker;\n for (let i = 0; i < list.length; i++) {\n const broker = list[i];\n\n const name = brokers[broker.broker_id];\n list[i].broker_name = name || list[i].broker_name;\n }\n });\n return newData;\n }\n return data;\n }, [data, brokers]);\n\n return { data: result };\n};\n","// import { ethers } from \"ethers\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { getContractByEnv } from \"./abis/contrast\";\nimport { toOrder } from \"./utils\";\nimport { useGetEnv } from \"./useGetEnv\";\nimport { useAccount } from \"../useAccount\";\n\nexport enum DistributionId {\n order = 0,\n esORder = 1,\n mmOrder = 2,\n mmEsOrder = 3,\n}\n\nexport const useGetClaimed = (\n id: DistributionId\n): [\n number | undefined,\n {\n refresh: () => void;\n }\n] => {\n const [data, setData] = useState<number | undefined>(0);\n const { account } = useAccount();\n // account.wallet?.callOnChain\n const address = account.address;\n // const rpc = useRef<string | undefined>(undefined);\n // const provider = useRef<ethers.AbstractProvider | undefined>(undefined);\n // const contract = useRef<ethers.Contract | undefined>(undefined);\n const env = useGetEnv();\n\n // useEffect(() => {\n // const params = getContractByEnv(env);\n // rpc.current = params.orderlyChainRpcUrl;\n // provider.current = ethers.getDefaultProvider(rpc.current);\n // contract.current = new ethers.Contract(\n // params.orderlyContract,\n // params.orderlyContractABI,\n // provider.current\n // );\n // }, []);\n\n const refresh = useCallback(() => {\n const params = getContractByEnv(env);\n if (\n typeof address === \"undefined\"\n // ||\n // typeof rpc.current === \"undefined\" ||\n // typeof provider.current === \"undefined\" ||\n // typeof contract.current === \"undefined\"\n )\n return;\n\n console.log(`get claimed(${id})`, [id, address]);\n account.walletAdapter\n ?.callOnChain(\n // @ts-ignore\n { public_rpc_url: params.orderlyChainRpcUrl },\n params.orderlyContract,\n \"getClaimed\",\n [id, address],\n {\n abi: params.orderlyContractABI,\n }\n )\n .catch((error: any) => {\n // const parsedEthersError = getParsedEthersError(error);\n // throw parsedEthersError;\n throw error;\n })\n .then((res: any) => {\n const resOrder = toOrder(res);\n // const resOrder = toOrder(BigInt(2921867952260000000000));\n console.log(`new get claimed(${id})`, resOrder);\n setData(resOrder);\n })\n .catch((error: any) => {});\n\n // contract.current[\"getClaimed\"]\n // .apply(null, [id, address])\n // .catch((error: any) => {\n // const parsedEthersError = getParsedEthersError(error);\n // throw parsedEthersError;\n // })\n // .then((res: any) => {\n // const resOrder = toOrder(res);\n // // const resOrder = toOrder(BigInt(2921867952260000000000));\n // console.log(`get claimed(${id})`, resOrder);\n // setData(resOrder);\n // })\n // .catch((error: any) => {});\n }, [address, env]);\n\n useEffect(() => {\n refresh();\n }, [env, id, address]);\n\n return [data, { refresh }];\n};\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDelegate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidEndpointCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidLocalDecimals\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"InvalidOptions\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LzTokenUnavailable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"NoPeer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"msgValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"NotEnoughNative\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"addr\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyEndpoint\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"OnlyPeer\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"OnlySelf\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"result\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"SimulationResult\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"SlippageExceeded\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"msgType\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct EnforcedOptionParam[]\",\n \"name\": \"_enforcedOptions\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"EnforcedOptionSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"inspector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MsgInspectorSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"toAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OFTReceived\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"fromAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountSentLD\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OFTSent\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"PeerSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"preCrimeAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"PreCrimeSet\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"SEND\",\n \"outputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"\",\n \"type\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SEND_AND_CALL\",\n \"outputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"\",\n \"type\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"origin\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"allowInitializePath\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"approvalRequired\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"_nonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_payloadHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"burnInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"_origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"clearInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"_msgType\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_extraOptions\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"combineOptions\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimalConversionRate\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"endpoint\",\n \"outputs\": [\n {\n \"internalType\": \"contract ILayerZeroEndpointV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"msgType\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"enforcedOptions\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"enforcedOption\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_lzEndpoint\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isComposeMsgSender\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"isPeer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"_origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_executor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"lzReceive\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"executor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct InboundPacket[]\",\n \"name\": \"_packets\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"lzReceiveAndRevert\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"internalType\": \"struct Origin\",\n \"name\": \"_origin\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_message\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_executor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_extraData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"lzReceiveSimulate\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"maxReceivedNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"msgInspector\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"nextNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"_nonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_payloadHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"nilifyInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"oApp\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"oAppVersion\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"senderVersion\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"receiverVersion\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"oftVersion\",\n \"outputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"orderedNonce\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"peers\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"preCrime\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"to\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraOptions\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"oftCmd\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct SendParam\",\n \"name\": \"_sendParam\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"quoteOFT\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxAmountLD\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct OFTLimit\",\n \"name\": \"oftLimit\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"feeAmountLD\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"description\",\n \"type\": \"string\"\n }\n ],\n \"internalType\": \"struct OFTFeeDetail[]\",\n \"name\": \"oftFeeDetails\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountSentLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct OFTReceipt\",\n \"name\": \"oftReceipt\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"to\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraOptions\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"oftCmd\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct SendParam\",\n \"name\": \"_sendParam\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"_payInLzToken\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"quoteSend\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nativeFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lzTokenFee\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MessagingFee\",\n \"name\": \"msgFee\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"dstEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"to\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minAmountLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"extraOptions\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"composeMsg\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"oftCmd\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct SendParam\",\n \"name\": \"_sendParam\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nativeFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lzTokenFee\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MessagingFee\",\n \"name\": \"_fee\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_refundAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"send\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"guid\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"nonce\",\n \"type\": \"uint64\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nativeFee\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lzTokenFee\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct MessagingFee\",\n \"name\": \"fee\",\n \"type\": \"tuple\"\n }\n ],\n \"internalType\": \"struct MessagingReceipt\",\n \"name\": \"msgReceipt\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountSentLD\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountReceivedLD\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct OFTReceipt\",\n \"name\": \"oftReceipt\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_delegate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setDelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"msgType\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"options\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct EnforcedOptionParam[]\",\n \"name\": \"_enforcedOptions\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"setEnforcedOptions\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_msgInspector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setMsgInspector\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_orderedNonce\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setOrderedNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_eid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_peer\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"setPeer\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_preCrime\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setPreCrime\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"sharedDecimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_srcEid\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_sender\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"_nonce\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"skipInboundNonce\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"token\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n]","[\n { \"type\": \"constructor\", \"inputs\": [], \"stateMutability\": \"nonpayable\" },\n { \"type\": \"receive\", \"stateMutability\": \"payable\" },\n {\n \"type\": \"function\",\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"string\", \"internalType\": \"string\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_msgPayload\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_msgReceipt\",\n \"inputs\": [],\n \"outputs\": [\n { \"name\": \"guid\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"nonce\", \"type\": \"uint64\", \"internalType\": \"uint64\" },\n {\n \"name\": \"fee\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MessagingFee\",\n \"components\": [\n { \"name\": \"nativeFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"lzTokenFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_oftReceipt\",\n \"inputs\": [],\n \"outputs\": [\n { \"name\": \"amountSentLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"amountReceivedLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"_options\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"chainId2Eid\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint32\", \"internalType\": \"uint32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"chainedEventId\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"claimReward\",\n \"inputs\": [\n { \"name\": \"distributionId\", \"type\": \"uint32\", \"internalType\": \"uint32\" },\n { \"name\": \"cumulativeAmount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"merkleProof\", \"type\": \"bytes32[]\", \"internalType\": \"bytes32[]\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"defaultOftGas\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint128\", \"internalType\": \"uint128\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"eid2ChainId\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint32\", \"internalType\": \"uint32\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getLzSendReceipt\",\n \"inputs\": [],\n \"outputs\": [\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MessagingReceipt\",\n \"components\": [\n { \"name\": \"guid\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"nonce\", \"type\": \"uint64\", \"internalType\": \"uint64\" },\n {\n \"name\": \"fee\",\n \"type\": \"tuple\",\n \"internalType\": \"struct MessagingFee\",\n \"components\": [\n { \"name\": \"nativeFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"lzTokenFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n }\n ]\n },\n {\n \"name\": \"\",\n \"type\": \"tuple\",\n \"internalType\": \"struct OFTReceipt\",\n \"components\": [\n { \"name\": \"amountSentLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"amountReceivedLD\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n },\n { \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"getRoleAdmin\",\n \"inputs\": [{ \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"grantRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"hasRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bool\", \"internalType\": \"bool\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"initialize\",\n \"inputs\": [\n { \"name\": \"_oft\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"_usdc\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"_owner\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ledgerAddr\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"ledgerChainId\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lzCompose\",\n \"inputs\": [\n { \"name\": \"from\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"_message\", \"type\": \"bytes\", \"internalType\": \"bytes\" },\n { \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"lzEndpoint\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"myChainId\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"orderTokenOft\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n { \"type\": \"function\", \"name\": \"pause\", \"inputs\": [], \"outputs\": [], \"stateMutability\": \"nonpayable\" },\n {\n \"type\": \"function\",\n \"name\": \"paused\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bool\", \"internalType\": \"bool\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payloadType2BackwardFee\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint8\", \"internalType\": \"uint8\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"payloadType2DstGas\",\n \"inputs\": [{ \"name\": \"\", \"type\": \"uint8\", \"internalType\": \"uint8\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint128\", \"internalType\": \"uint128\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"proxiableUUID\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteClaimReward\",\n \"inputs\": [\n { \"name\": \"distributionId\", \"type\": \"uint32\", \"internalType\": \"uint32\" },\n { \"name\": \"user\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"cumulativeAmount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"merkleProof\", \"type\": \"bytes32[]\", \"internalType\": \"bytes32[]\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteSendUserRequest\",\n \"inputs\": [\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"user\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"quoteStakeOrder\",\n \"inputs\": [\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"sender\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [{ \"name\": \"\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"function\",\n \"name\": \"renounceRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"callerConfirmation\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"revokeRole\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"sendUserRequest\",\n \"inputs\": [\n { \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setChainId2Eid\",\n \"inputs\": [\n { \"name\": \"chainId\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"eid\", \"type\": \"uint32\", \"internalType\": \"uint32\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setDefaultOftGas\",\n \"inputs\": [{ \"name\": \"_defaultOftGas\", \"type\": \"uint128\", \"internalType\": \"uint128\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setLedgerInfo\",\n \"inputs\": [\n { \"name\": \"_ledgerChainId\", \"type\": \"uint256\", \"internalType\": \"uint256\" },\n { \"name\": \"_ledgerAddr\", \"type\": \"address\", \"internalType\": \"address\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setLzEndpoint\",\n \"inputs\": [{ \"name\": \"_lzEndpoint\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setMyChainId\",\n \"inputs\": [{ \"name\": \"_myChainId\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setOrderTokenOft\",\n \"inputs\": [{ \"name\": \"_orderTokenOft\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPayloadType2BackwardFee\",\n \"inputs\": [\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" },\n { \"name\": \"backwardFee\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"setPayloadType2DstGas\",\n \"inputs\": [\n { \"name\": \"payloadType\", \"type\": \"uint8\", \"internalType\": \"uint8\" },\n { \"name\": \"dstGas\", \"type\": \"uint128\", \"internalType\": \"uint128\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"stakeOrder\",\n \"inputs\": [{ \"name\": \"amount\", \"type\": \"uint256\", \"internalType\": \"uint256\" }],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"supportsInterface\",\n \"inputs\": [{ \"name\": \"interfaceId\", \"type\": \"bytes4\", \"internalType\": \"bytes4\" }],\n \"outputs\": [{ \"name\": \"\", \"type\": \"bool\", \"internalType\": \"bool\" }],\n \"stateMutability\": \"view\"\n },\n { \"type\": \"function\", \"name\": \"unpause\", \"inputs\": [], \"outputs\": [], \"stateMutability\": \"nonpayable\" },\n {\n \"type\": \"function\",\n \"name\": \"upgradeToAndCall\",\n \"inputs\": [\n { \"name\": \"newImplementation\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"data\", \"type\": \"bytes\", \"internalType\": \"bytes\" }\n ],\n \"outputs\": [],\n \"stateMutability\": \"payable\"\n },\n {\n \"type\": \"function\",\n \"name\": \"usdcAddr\",\n \"inputs\": [],\n \"outputs\": [{ \"name\": \"\", \"type\": \"address\", \"internalType\": \"address\" }],\n \"stateMutability\": \"view\"\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimRewardTokenTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimUsdcRevenueTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"ClaimVestingRequestTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Initialized\",\n \"inputs\": [{ \"name\": \"version\", \"type\": \"uint64\", \"indexed\": false, \"internalType\": \"uint64\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Paused\",\n \"inputs\": [{ \"name\": \"account\", \"type\": \"address\", \"indexed\": false, \"internalType\": \"address\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleAdminChanged\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"previousAdminRole\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"newAdminRole\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleGranted\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"sender\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"RoleRevoked\",\n \"inputs\": [\n { \"name\": \"role\", \"type\": \"bytes32\", \"indexed\": true, \"internalType\": \"bytes32\" },\n { \"name\": \"account\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"sender\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" }\n ],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Unpaused\",\n \"inputs\": [{ \"name\": \"account\", \"type\": \"address\", \"indexed\": false, \"internalType\": \"address\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"Upgraded\",\n \"inputs\": [{ \"name\": \"implementation\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" }],\n \"anonymous\": false\n },\n {\n \"type\": \"event\",\n \"name\": \"WithdrawOrderTokenTransferred\",\n \"inputs\": [\n { \"name\": \"user\", \"type\": \"address\", \"indexed\": true, \"internalType\": \"address\" },\n { \"name\": \"amount\", \"type\": \"uint256\", \"indexed\": false, \"internalType\": \"uint256\" }\n ],\n \"anonymous\": false\n },\n { \"type\": \"error\", \"name\": \"AccessControlBadConfirmation\", \"inputs\": [] },\n {\n \"type\": \"error\",\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"inputs\": [\n { \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" },\n { \"name\": \"neededRole\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }\n ]\n },\n { \"type\": \"error\", \"name\": \"AddressEmptyCode\", \"inputs\": [{ \"name\": \"target\", \"type\": \"address\", \"internalType\": \"address\" }] },\n { \"type\": \"error\", \"name\": \"AddressInsufficientBalance\", \"inputs\": [{ \"name\": \"account\", \"type\": \"address\", \"internalType\": \"address\" }] },\n {\n \"type\": \"error\",\n \"name\": \"ERC1967InvalidImplementation\",\n \"inputs\": [{ \"name\": \"implementation\", \"type\": \"address\", \"internalType\": \"address\" }]\n },\n { \"type\": \"error\", \"name\": \"ERC1967NonPayable\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"EnforcedPause\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"ExpectedPause\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"FailedInnerCall\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"InvalidInitialization\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"InvalidOptionType\", \"inputs\": [{ \"name\": \"optionType\", \"type\": \"uint16\", \"internalType\": \"uint16\" }] },\n { \"type\": \"error\", \"name\": \"NotInitializing\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"ReentrancyGuardReentrantCall\", \"inputs\": [] },\n {\n \"type\": \"error\",\n \"name\": \"SafeCastOverflowedUintDowncast\",\n \"inputs\": [\n { \"name\": \"bits\", \"type\": \"uint8\", \"internalType\": \"uint8\" },\n { \"name\": \"value\", \"type\": \"uint256\", \"internalType\": \"uint256\" }\n ]\n },\n { \"type\": \"error\", \"name\": \"SafeERC20FailedOperation\", \"inputs\": [{ \"name\": \"token\", \"type\": \"address\", \"internalType\": \"address\" }] },\n { \"type\": \"error\", \"name\": \"UUPSUnauthorizedCallContext\", \"inputs\": [] },\n { \"type\": \"error\", \"name\": \"UUPSUnsupportedProxiableUUID\", \"inputs\": [{ \"name\": \"slot\", \"type\": \"bytes32\", \"internalType\": \"bytes32\" }] }\n]","[\n {\n \"inputs\": [],\n \"name\": \"AccessControlBadConfirmation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"neededRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"AccessControlUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressInsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AmountIsGreaterThanCollectedValor\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"AmountIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BatchIsNotCreatedYet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BatchIsNotFinished\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BatchValorToUsdcRateIsNotFixed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"CannotUpdateRoot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderDeposited\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderRequested\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DepositNotEnough\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DistributionAlreadyExists\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"DistributionNotFound\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedInnerCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidMerkleProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoActiveMerkleRoot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NoPendingUnstakeRequest\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"NothingToClaim\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProposedMerkleRootIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"RedemptionAmountIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"StakingBalanceInsufficient\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"StartTimestampIsInThePast\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ThisMerkleRootIsAlreadyProposed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TokenIsNotSupportedForDistribution\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TooEarlyUsdcNetFeeRevenueUpdate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UUPSUnauthorizedCallContext\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"slot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"UUPSUnsupportedProxiableUUID\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnlockTimeNotPassedYet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedPayloadType\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_requestId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UserDontHaveVestingRequest\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ValorPerSecondExceedsMaxValue\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingAmountIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingLinearPeriodIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingLockPeriodIsZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingLockPeriodNotPassed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"VestingPeriodIsOutOfRange\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint16\",\n \"name\": \"batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"BatchPreparedToClaim\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint16\",\n \"name\": \"batchId\",\n \"type\": \"uint16\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"fixedValorToUsdcRate\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"BatchValorToUsdcRateIsFixed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"timestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"usdcNetFeeRevenue\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"totalUsdcInTreasure\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"totalValorAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"valorToUsdcRateScaled\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DailyUsdcNetFeeRevenueUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"eventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"DistributionCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"EsOrderUnstake\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"totalUnstakedAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderUnstakeAmount\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"pendingOrderAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderUnstakeCancelled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderUnstakeRequested\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"OrderWithdrawn\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"RewardsClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"eventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"RootProposed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"eventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint32\",\n \"name\": \"distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"RootUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainedEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"staker\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Staked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"usdcAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"UsdcRevenueClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint16\",\n \"name\": \"batchId\",\n \"type\": \"uint16\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"valorAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ValorRedeemed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderStakedBack\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"VestingCanceled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderBurned\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountOrderVested\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"vestedPeriod\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"VestingClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainEventId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amountEsorderRequested\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"VestingRequested\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"ROOT_UPDATER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TREASURE_UPDATER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALOR_TO_USDC_RATE_PRECISION\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"accValorPerShareScaled\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"batchPreparedToClaim\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"batches\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"claimable\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"redeemedValorAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fixedValorToUsdcRateScaled\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_requestId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"calculateVestingOrderAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"canUpdateRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"collectedValor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"_token\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"createDistribution\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_usdcNetFeeRevenue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"dailyUsdcNetFeeRevenue\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"fixBatchValorToUsdcRate\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"getBatchChainedValorAmount\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Revenue.ChainedAmount[]\",\n \"name\": \"\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"getBatchInfo\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"batchStartTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"batchEndTime\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"claimable\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"redeemedValorAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"fixedValorToUsdcRateScaled\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getClaimed\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getCurrentBatchId\",\n \"outputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"\",\n \"type\": \"uint16\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getDistribution\",\n \"outputs\": [\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getOrderAvailableToWithdraw\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"orderAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getProposedRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getStakingInfo\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"orderBalance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"esOrderBalance\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n }\n ],\n \"name\": \"getUsdcAmountForBatch\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Revenue.ChainedAmount[]\",\n \"name\": \"chainedUsdcAmount\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint16\",\n \"name\": \"_batchId\",\n \"type\": \"uint16\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_chainId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getUserRedeemedValorAmountForBatchAndChain\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getUserValor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getUserVestingRequests\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"requestId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"esOrderAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Vesting.VestingRequest[]\",\n \"name\": \"\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"hasPendingRoot\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_occAdaptor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_orderCollector\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IOFT\",\n \"name\": \"_orderTokenOft\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_valorPerSecond\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_maximumValorEmission\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"isDistributionRecordBased\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"lastUsdcNetFeeRevenueUpdateTimestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"lastValorUpdateTimestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"srcChainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"enum LedgerToken\",\n \"name\": \"token\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"payloadType\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"payload\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct OCCVaultMessage\",\n \"name\": \"message\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"ledgerRecvFromVault\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maximumValorEmission\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"occAdaptor\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"orderCollector\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"orderTokenOft\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"_merkleRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_startTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"_ipfsCid\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"proposeRoot\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"proxiableUUID\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"callerConfirmation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_occAdaptor\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOccAdaptor\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_orderCollector\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOrderCollector\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IOFT\",\n \"name\": \"_orderTokenOft\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setOrderTokenOft\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_valorPerSecond\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setValorPerSecond\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"srcChainIdToEventId\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"startTimestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalStakedAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalUsdcInTreasure\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalValorAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalValorEmitted\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unstakeLockPeriod\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"_distributionId\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"updateRoot\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"updateValorVars\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newImplementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeToAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"userPendingUnstake\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"balanceOrder\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"unlockTimestamp\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"userTotalStakingBalance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"valorPerSecond\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"valorToUsdcRateScaled\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"vestingLinearPeriod\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"vestingLockPeriod\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n]\n","import { useContext } from \"react\";\nimport { OrderlyContext } from \"../orderlyContext\";\n\nexport enum ENVType {\n prod = 'prod',\n staging = 'staging',\n qa = 'qa',\n dev = 'dev',\n}\n\nexport const useGetEnv = (): ENVType => {\n const { configStore } = useContext(OrderlyContext);\n const baseUrl =\n configStore.get(\"apiBaseUrl\") || \"https://api-evm.orderly.org\";\n switch (baseUrl) {\n case \"https://testnet-api-evm.orderly.org\":\n return ENVType.staging;\n case \"https://dev-api-iap-v2.orderly.org\":\n return ENVType.dev;\n case \"https://qa-api-evm.orderly.org\":\n return ENVType.qa;\n default:\n return ENVType.prod;\n }\n};\n","import orderTokenAbi from './orderTokenAbi.json';\nimport contractABI from \"./proxyLedgerAbi.json\";\nimport omnichainLedgerV1ABI from \"./OmnichainLedgerV1ABI.json\";\nimport { ENVType } from \"../useGetEnv\";\n\nexport const orderlySepolia = \"0x1cB262C876AE47A75Ec354D89766593839681C29\";\nexport const arbitrumSepolia = \"0x13b2d9219e4afb48c085e60a9cfacbc193a61f43\";\n\n\n/**\n * 1. orderlyTokenAdress :\n * ETH L1 : ORDER Token\n * Other chains : ORDER Token\n * 2. orderlyContract : Ledger Test Address\n * 3. contract : Ledger Proxy\n */\ninterface ContractDataInterface {\n\n orderTokenAddress: string,\n orderTokenAddressOnEthereum: string;\n orderTokenAbi: Object,\n orderlyContract: string,\n orderlyContractABI: any,\n contract: string,\n contractABI: any,\n orderlyChainRpcUrl: string;\n}\n\nexport function getOrderlyChainRPC(env: ENVType) {\n if (env === ENVType.prod) {\n return \"https://rpc.orderly.network\";\n }\n return \"https://testnet-rpc.orderly.org\";\n}\n\nexport const getContractByEnv = (env: ENVType): ContractDataInterface => {\n const data = {\n orderTokenAddress: '',\n orderTokenAddressOnEthereum: '',\n orderTokenAbi,\n orderlyContract: orderlySepolia,\n orderlyContractABI: omnichainLedgerV1ABI,\n contract: arbitrumSepolia,\n contractABI: contractABI,\n orderlyChainRpcUrl: getOrderlyChainRPC(env),\n\n }\n\n // only order token address and orderlyContract split dev and qa, other use qa.\n if (env === ENVType.dev) {\n\n data.orderTokenAddress = '0xe2eB2df1CA9D90c8501049bAEEEf57f111782903';\n data.orderTokenAddressOnEthereum = '0x4cdE8A33afbb7f0F80841d9AE3Ada59fA1413F38';\n data.orderlyContract = '0x741a48F39683c345Ff37A86791537154869C77D4';\n data.contract = '0x0180107E72FB14a22a776913063b8a4081E9dc94';\n }\n if (env === ENVType.qa) {\n data.orderTokenAddress = '0x562874e9fcb02Ae6164781EcFb4AeAa169E99B18';\n data.orderTokenAddressOnEthereum = '0x8F7c2c827f0E9248CB5cf81fE732FDa62207F09c';\n data.orderlyContract = '0xf4EFdE916687eFBa271b1eDf436B206b285bc478';\n data.contract = '0xB20A18d8A53Ea23A5E8da32465De374f942693D7';\n\n }\n if (env === ENVType.staging) {\n data.orderTokenAddress = '0x5f11B4510BC50EfB82Fb55D7839a46e9b621f8C2';\n data.orderTokenAddressOnEthereum = '0x48465104e96AEE47bdD0E40dD40b1DFE1a66e232';\n data.orderlyContract = '0xAFEabBA48Aa0D33267a4ADf92a63C3E1A1284AB5';\n data.contract = '0x912196EB2583A2f0a18FaD632ee5dB65B8C93EEf';\n }\n if (env === ENVType.prod) {\n data.orderTokenAddress = '0x4E200fE2f3eFb977d5fd9c430A41531FB04d97B8';\n data.orderTokenAddressOnEthereum = '0xABD4C63d2616A5201454168269031355f4764337';\n data.orderlyContract = '0x7819704B69a38fD63Cc768134b8410dc08B987D0';\n data.contract = '0xC8A8Ce0Ab010E499ca57477AC031358febCbbF17'; \n }\n\n return data;\n}","import { Decimal } from \"@orderly.network/utils\";\n\n// input a bigint, return value/(10^18) number\nexport function toOrder(value?: bigint): number | undefined {\n if (value === null || value === BigInt(0)) {\n return value === BigInt(0) ? 0 : undefined;\n }\n \n const decimalValue = new Decimal(value!.toString()).div(1e18); \n return Number(decimalValue.toFixed(18));\n }\n \n // input a number | string, return value*(10^18) string\n export function toUint(value?: number | string) : string | undefined {\n if (typeof value === 'undefined') return undefined;\n // 创建 Decimal 对象\n const decimalValue = new Decimal(value);\n \n // 计算 value * (10^18)\n const result = decimalValue.mul(new Decimal('1e18'));\n \n // 将结果转换为字符串并返回\n return result.toFixed(0);\n }","import { TWType } from \"./types\";\nimport { useAccount } from \"../useAccount\";\nimport { useQuery } from \"../useQuery\";\n\nexport type WalletRewardsItem = {\n epoch_id: number;\n wallet_epoch_avg_staked: number;\n epoch_token: string;\n max_reward_amount: number;\n reward_status: string;\n r_wallet: number;\n};\n\nexport type WalletRewards = {\n wallet_lifetime_trading_rewards_order: string;\n wallet_lifetime_trading_rewards_escrow: string;\n rows: WalletRewardsItem[];\n};\n\nexport type WalletRewardsHisotryReturns = [\n WalletRewards | undefined,\n {\n refresh: () => void;\n error?: any;\n }\n];\n\nexport const useWalletRewardsHistory = (type: TWType): WalletRewardsHisotryReturns => {\n const { account } = useAccount();\n\n const address = account.address;\n const isNotSupportChain = false;\n\n const path =\n type === TWType.normal\n ? `/v1/public/trading_rewards/wallet_rewards_history?address=${address}`\n : `/v1/public/market_making_rewards/group_rewards_history?address=${address}`;\n\n const {\n data,\n mutate: refresh,\n error,\n } = useQuery(address !== undefined ? path : \"\", {\n formatter: (res) => {\n return {\n wallet_lifetime_trading_rewards_order:\n res?.group_lifetime_mm_rewards_order ||\n res?.wallet_lifetime_trading_rewards_order ||\n 0,\n wallet_lifetime_trading_rewards_escrow:\n res?.group_lifetime_mm_rewards_escrow ||\n res?.wallet_lifetime_trading_rewards_escrow ||\n 0,\n rows: (res?.rows || []).map((item: any) => ({\n ...item,\n r_wallet: item?.total_reward || item?.r_wallet,\n })),\n } as WalletRewards;\n },\n });\n return [data, { refresh, error }];\n};\n","import { useCallback } from \"react\";\nimport { useMutation } from \"../useMutation\";\nimport { useAccount } from \"../useAccount\";\nimport { usePrivateQuery } from \"../usePrivateQuery\";\n\nexport type APIKeyItem = {\n orderly_key: string;\n key_status: string;\n ip_restriction_list: string[];\n ip_restricion_status: string;\n expiration: number;\n tag?: any;\n scope?: string;\n};\n\nexport enum ScopeType {\n trade = \"trade\",\n trading = \"trading\",\n tradeAndTrading = \"trade,trading\",\n}\n\nexport const useApiKeyManager = (queryParams?: {\n keyInfo?: {\n page?: number;\n size?: number;\n keyStatus?: string;\n };\n}) => {\n const { account } = useAccount();\n const { keyInfo } = queryParams || {};\n\n const keyInfoPrams = getQueryParamsFromObject(keyInfo);\n\n const { data, mutate, error, isLoading } = usePrivateQuery<APIKeyItem[]>(\n `/v1/client/key_info${keyInfoPrams.length > 0 ? `?${keyInfoPrams}` : ''}`,\n {\n formatter: (data) => data?.rows,\n }\n );\n\n const [doIPRestriction] = useMutation(\n \"/v1/client/set_orderly_key_ip_restriction\",\n \"POST\"\n );\n\n const [doRemoveOrderKey] = useMutation(\n \"/v1/client/remove_orderly_key\",\n \"POST\"\n );\n\n const [doResetIPRestriction] = useMutation(\n '/v1/client/reset_orderly_key_ip_restriction',\n \"POST\",\n );\n\n /** ip_restriction_list is [\"192.168.1.1\", \"192.168.1.2\"].join(\",\") */\n const setIPRestriction = useCallback(\n (orderly_key: string, ip_restriction_list: string): Promise<any> => {\n return doIPRestriction({\n orderly_key,\n ip_restriction_list,\n });\n },\n []\n );\n\n const removeOrderkyKey = useCallback((orderly_key: string): Promise<any> => {\n return doRemoveOrderKey({\n orderly_key,\n });\n }, []);\n\n const generateOrderlyKey = (\n scope?: ScopeType\n ): Promise<{\n key: string;\n secretKey: string;\n }> => {\n return account?.createApiKey(365, {\n tag: \"manualCreated\",\n scope,\n });\n };\n\n\n const resetOrderlyKeyIPRestriction = (orderlyKey: string, mode: \"ALLOW_ALL_IPS\" | \"DISALLOW_ALL_IPS\") => {\n return doResetIPRestriction({\n orderly_key: orderlyKey,\n reset_mode: mode,\n });\n };\n return [\n data,\n {\n refresh: mutate,\n error,\n isLoading,\n generateOrderlyKey,\n setIPRestriction,\n removeOrderkyKey,\n resetOrderlyKeyIPRestriction,\n },\n ] as const;\n};\n\n\nfunction getQueryParamsFromObject(obj?: Record<string, any>): string {\n if (typeof obj === 'undefined') return '';\n const queryParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n value.forEach((item) => {\n queryParams.append(key, item.toString());\n });\n } else {\n queryParams.set(key, value.toString());\n }\n }\n }\n\n return queryParams.toString();\n}"]}
|