@dodoex/widgets 2.3.4 → 2.3.5-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/608a45433384d12e.png +0 -0
  2. package/dist/b08d68f421a81726.png +0 -0
  3. package/dist/cjs/608a45433384d12e.png +0 -0
  4. package/dist/cjs/b08d68f421a81726.png +0 -0
  5. package/dist/cjs/e63d558f5364d137.svg +10 -0
  6. package/dist/cjs/index.cjs +9 -8
  7. package/dist/cjs/locales/en-US.js +1 -1
  8. package/dist/cjs/src/components/Bridge/BridgeRouteShortCard.d.ts +6 -0
  9. package/dist/cjs/src/components/Bridge/BridgeSummaryDialog/BridgeSummaryDetail.d.ts +5 -0
  10. package/dist/cjs/src/components/Bridge/BridgeSummaryDialog/index.d.ts +17 -0
  11. package/dist/cjs/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/CrossStep.d.ts +16 -0
  12. package/dist/cjs/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/EtherscanLinkButton.d.ts +6 -0
  13. package/dist/cjs/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/RouteSteps.d.ts +6 -0
  14. package/dist/cjs/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/SwapStep.d.ts +14 -0
  15. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/BridgeLogo.d.ts +10 -0
  16. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/DirectionLine.d.ts +4 -0
  17. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/RouteCard.d.ts +21 -0
  18. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/RouteTagList.d.ts +12 -0
  19. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/TokenWithChain.d.ts +11 -0
  20. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/index.d.ts +9 -0
  21. package/dist/cjs/src/components/Bridge/SelectBridgeDialog/productList.d.ts +5 -0
  22. package/dist/cjs/src/components/ErrorMessageDialog.d.ts +5 -0
  23. package/dist/cjs/src/components/Swap/components/SettingsDialog/index.d.ts +2 -1
  24. package/dist/cjs/src/components/Swap/components/TokenCard/TokenLogoCollapse.d.ts +2 -1
  25. package/dist/cjs/src/components/Swap/components/TokenCard/TokenPickerDialog.d.ts +2 -1
  26. package/dist/cjs/src/components/Swap/components/TokenCard/index.d.ts +4 -1
  27. package/dist/cjs/src/components/SwitchChainDialog/index.d.ts +7 -0
  28. package/dist/cjs/src/components/TokenLogo.d.ts +2 -1
  29. package/dist/cjs/src/components/TokenPicker/SelectChainItem.d.ts +7 -0
  30. package/dist/cjs/src/components/TokenPicker/index.d.ts +2 -1
  31. package/dist/cjs/src/constants/api.d.ts +3 -0
  32. package/dist/cjs/src/constants/chainList.d.ts +10 -0
  33. package/dist/cjs/src/constants/chains.d.ts +5 -70
  34. package/dist/cjs/src/constants/localstorage.d.ts +2 -0
  35. package/dist/cjs/src/constants/swap.d.ts +1 -0
  36. package/dist/cjs/src/hooks/Bridge/createBridgeOrder.d.ts +24 -0
  37. package/dist/cjs/src/hooks/Bridge/index.d.ts +4 -0
  38. package/dist/cjs/src/hooks/Bridge/useExecuteBridgeRoute.d.ts +6 -0
  39. package/dist/cjs/src/hooks/Bridge/useFetchRoutePriceBridge.d.ts +101 -0
  40. package/dist/cjs/src/hooks/Bridge/useFetchRoutePriceBridge.test.d.ts +1 -0
  41. package/dist/cjs/src/hooks/Bridge/useSendRoute.d.ts +16 -0
  42. package/dist/cjs/src/hooks/Bridge/useSwitchBridgeOrSwapSlippage.d.ts +1 -0
  43. package/dist/cjs/src/hooks/ConnectWallet/useSwitchChain.d.ts +10 -0
  44. package/dist/cjs/src/hooks/Submission/types.d.ts +2 -1
  45. package/dist/cjs/src/hooks/Submission/useExecution.d.ts +1 -1
  46. package/dist/cjs/src/hooks/Token/type.d.ts +1 -3
  47. package/dist/cjs/src/hooks/Token/useFetchTokenAllowance.d.ts +13 -0
  48. package/dist/cjs/src/hooks/Token/useGetCGTokenList.d.ts +6 -4
  49. package/dist/cjs/src/hooks/Token/useInitTokenList.d.ts +1 -1
  50. package/dist/cjs/src/hooks/Token/useSelectChainList.d.ts +77 -0
  51. package/dist/cjs/src/hooks/Token/useSelectChainList.test.d.ts +1 -0
  52. package/dist/cjs/src/hooks/Token/useTokenList.d.ts +5 -1
  53. package/dist/cjs/src/hooks/Token/useTokenListFetchBalance.d.ts +9 -0
  54. package/dist/cjs/src/hooks/Widget/useInitPropsToRedux.d.ts +1 -1
  55. package/dist/cjs/src/hooks/contract/contractConfig.d.ts +1 -26
  56. package/dist/cjs/src/hooks/contract/index.d.ts +1 -0
  57. package/dist/cjs/src/hooks/contract/token.d.ts +10 -0
  58. package/dist/cjs/src/hooks/contract/useFetchETHBalance.d.ts +1 -1
  59. package/dist/cjs/src/hooks/contract/useFetchTokens.d.ts +3 -1
  60. package/dist/cjs/src/hooks/contract/useMultiContract.d.ts +1 -21
  61. package/dist/cjs/src/store/actions/globals.d.ts +1 -0
  62. package/dist/cjs/src/store/actions/token.d.ts +1 -1
  63. package/dist/cjs/src/store/reducers/globals.d.ts +2 -0
  64. package/dist/cjs/src/store/reducers/token.d.ts +3 -1
  65. package/dist/cjs/src/store/selectors/globals.d.ts +1 -0
  66. package/dist/cjs/src/store/selectors/token.d.ts +3 -1
  67. package/dist/cjs/src/utils/address.d.ts +7 -0
  68. package/dist/cjs/src/utils/formatter.d.ts +2 -0
  69. package/dist/cjs/src/utils/time.d.ts +9 -0
  70. package/dist/cjs/src/utils/time.test.d.ts +1 -0
  71. package/dist/e63d558f5364d137.svg +10 -0
  72. package/dist/index.js +9 -8
  73. package/dist/locales/en-US.js +1 -1
  74. package/dist/src/components/Bridge/BridgeRouteShortCard.d.ts +6 -0
  75. package/dist/src/components/Bridge/BridgeSummaryDialog/BridgeSummaryDetail.d.ts +5 -0
  76. package/dist/src/components/Bridge/BridgeSummaryDialog/index.d.ts +17 -0
  77. package/dist/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/CrossStep.d.ts +16 -0
  78. package/dist/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/EtherscanLinkButton.d.ts +6 -0
  79. package/dist/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/RouteSteps.d.ts +6 -0
  80. package/dist/src/components/Bridge/BridgeSummaryDialog/orderInfoModal/SwapStep.d.ts +14 -0
  81. package/dist/src/components/Bridge/SelectBridgeDialog/BridgeLogo.d.ts +10 -0
  82. package/dist/src/components/Bridge/SelectBridgeDialog/DirectionLine.d.ts +4 -0
  83. package/dist/src/components/Bridge/SelectBridgeDialog/RouteCard.d.ts +21 -0
  84. package/dist/src/components/Bridge/SelectBridgeDialog/RouteTagList.d.ts +12 -0
  85. package/dist/src/components/Bridge/SelectBridgeDialog/TokenWithChain.d.ts +11 -0
  86. package/dist/src/components/Bridge/SelectBridgeDialog/index.d.ts +9 -0
  87. package/dist/src/components/Bridge/SelectBridgeDialog/productList.d.ts +5 -0
  88. package/dist/src/components/ErrorMessageDialog.d.ts +5 -0
  89. package/dist/src/components/Swap/components/SettingsDialog/index.d.ts +2 -1
  90. package/dist/src/components/Swap/components/TokenCard/TokenLogoCollapse.d.ts +2 -1
  91. package/dist/src/components/Swap/components/TokenCard/TokenPickerDialog.d.ts +2 -1
  92. package/dist/src/components/Swap/components/TokenCard/index.d.ts +4 -1
  93. package/dist/src/components/SwitchChainDialog/index.d.ts +7 -0
  94. package/dist/src/components/TokenLogo.d.ts +2 -1
  95. package/dist/src/components/TokenPicker/SelectChainItem.d.ts +7 -0
  96. package/dist/src/components/TokenPicker/index.d.ts +2 -1
  97. package/dist/src/constants/api.d.ts +3 -0
  98. package/dist/src/constants/chainList.d.ts +10 -0
  99. package/dist/src/constants/chains.d.ts +5 -70
  100. package/dist/src/constants/localstorage.d.ts +2 -0
  101. package/dist/src/constants/swap.d.ts +1 -0
  102. package/dist/src/hooks/Bridge/createBridgeOrder.d.ts +24 -0
  103. package/dist/src/hooks/Bridge/index.d.ts +4 -0
  104. package/dist/src/hooks/Bridge/useExecuteBridgeRoute.d.ts +6 -0
  105. package/dist/src/hooks/Bridge/useFetchRoutePriceBridge.d.ts +101 -0
  106. package/dist/src/hooks/Bridge/useFetchRoutePriceBridge.test.d.ts +1 -0
  107. package/dist/src/hooks/Bridge/useSendRoute.d.ts +16 -0
  108. package/dist/src/hooks/Bridge/useSwitchBridgeOrSwapSlippage.d.ts +1 -0
  109. package/dist/src/hooks/ConnectWallet/useSwitchChain.d.ts +10 -0
  110. package/dist/src/hooks/Submission/types.d.ts +2 -1
  111. package/dist/src/hooks/Submission/useExecution.d.ts +1 -1
  112. package/dist/src/hooks/Token/type.d.ts +1 -3
  113. package/dist/src/hooks/Token/useFetchTokenAllowance.d.ts +13 -0
  114. package/dist/src/hooks/Token/useGetCGTokenList.d.ts +6 -4
  115. package/dist/src/hooks/Token/useInitTokenList.d.ts +1 -1
  116. package/dist/src/hooks/Token/useSelectChainList.d.ts +77 -0
  117. package/dist/src/hooks/Token/useSelectChainList.test.d.ts +1 -0
  118. package/dist/src/hooks/Token/useTokenList.d.ts +5 -1
  119. package/dist/src/hooks/Token/useTokenListFetchBalance.d.ts +9 -0
  120. package/dist/src/hooks/Widget/useInitPropsToRedux.d.ts +1 -1
  121. package/dist/src/hooks/contract/contractConfig.d.ts +1 -26
  122. package/dist/src/hooks/contract/index.d.ts +1 -0
  123. package/dist/src/hooks/contract/token.d.ts +10 -0
  124. package/dist/src/hooks/contract/useFetchETHBalance.d.ts +1 -1
  125. package/dist/src/hooks/contract/useFetchTokens.d.ts +3 -1
  126. package/dist/src/hooks/contract/useMultiContract.d.ts +1 -21
  127. package/dist/src/store/actions/globals.d.ts +1 -0
  128. package/dist/src/store/actions/token.d.ts +1 -1
  129. package/dist/src/store/reducers/globals.d.ts +2 -0
  130. package/dist/src/store/reducers/token.d.ts +3 -1
  131. package/dist/src/store/selectors/globals.d.ts +1 -0
  132. package/dist/src/store/selectors/token.d.ts +3 -1
  133. package/dist/src/utils/address.d.ts +7 -0
  134. package/dist/src/utils/formatter.d.ts +2 -0
  135. package/dist/src/utils/time.d.ts +9 -0
  136. package/dist/src/utils/time.test.d.ts +1 -0
  137. package/package.json +4 -4
@@ -0,0 +1,10 @@
1
+ import { ChainId } from '../../constants/chains';
2
+ /**
3
+ * switch wallet chain
4
+ * @see https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
5
+ */
6
+ export declare function registerNetworkWithMetamask({ chainId, provider, }: {
7
+ chainId: ChainId;
8
+ provider?: any;
9
+ }): Promise<boolean>;
10
+ export declare function useSwitchChain(chainId?: ChainId): (() => Promise<boolean>) | undefined;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { Step as StepSpec } from './spec';
3
+ import { ExecutionProps } from './useExecution';
3
4
  export declare enum State {
4
5
  Running = 0,
5
6
  Success = 1,
@@ -35,7 +36,7 @@ export declare type ExecutionCtx = {
35
36
  * @param mixpanelProps: mixpanel properties
36
37
  * @param submittedConfirmBack: dismiss callback
37
38
  */
38
- execute: (brief: string, spec: StepSpec, subtitle?: string | React.ReactNode | null, early?: boolean, submittedBack?: () => void, mixpanelProps?: Record<string, any>, submittedConfirmBack?: () => void, successBack?: (tx: string) => void) => Promise<ExecutionResult>;
39
+ execute: (brief: string, spec: StepSpec, subtitle?: string | React.ReactNode | null, early?: boolean, submittedBack?: () => void, mixpanelProps?: Record<string, any>, submittedConfirmBack?: () => void, successBack?: (tx: string, callback?: ExecutionProps['onTxSuccess']) => void) => Promise<ExecutionResult>;
39
40
  /**
40
41
  * order
41
42
  */
@@ -14,7 +14,7 @@ export default function useExecution({ onTxFail, onTxSubmit, onTxSuccess, }?: Ex
14
14
  setErrorMessage: import("react").Dispatch<import("react").SetStateAction<string | null>>;
15
15
  closeShowing: () => void;
16
16
  ctxVal: {
17
- execute: (brief: string, spec: StepSpec, subtitle?: string | React.ReactNode | null, early?: boolean, submittedBack?: () => void, mixpanelProps?: Record<string, any>, submittedConfirmBack?: () => void, successBack?: ((tx: string) => void) | undefined) => Promise<ExecutionResult.Failed | ExecutionResult.Success | ExecutionResult.Submitted>;
17
+ execute: (brief: string, spec: StepSpec, subtitle?: string | React.ReactNode | null, early?: boolean, submittedBack?: () => void, mixpanelProps?: Record<string, any>, submittedConfirmBack?: () => void, successBack?: ((tx: string, callback?: ExecutionProps['onTxSuccess']) => void) | undefined) => Promise<ExecutionResult.Failed | ExecutionResult.Success | ExecutionResult.Submitted>;
18
18
  requests: Map<string, [Request, State]>;
19
19
  setShowing: import("react").Dispatch<import("react").SetStateAction<Showing | null>>;
20
20
  waitingSubmit: boolean;
@@ -14,9 +14,7 @@ export interface DefaultTokenInfo extends TokenInfo {
14
14
  }
15
15
  export declare type TokenList = TokenInfo[];
16
16
  export declare enum TokenListType {
17
- All = "all",
18
- Default = "default",
19
- Coingecko = "coingecko"
17
+ All = "all"
20
18
  }
21
19
  export declare enum ApprovalState {
22
20
  Loading = "Loading",
@@ -0,0 +1,13 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { TokenInfo } from './type';
3
+ export declare function useFetchTokenAllowance({ chainId, account, token, proxyContractAddress, }: {
4
+ chainId?: number;
5
+ account?: string;
6
+ token?: TokenInfo;
7
+ proxyContractAddress: string;
8
+ }): {
9
+ allowance: BigNumber | null;
10
+ loading: boolean;
11
+ error: boolean;
12
+ refetch: () => Promise<void>;
13
+ };
@@ -1,13 +1,15 @@
1
- import { List } from 'immutable';
2
- import { TokenInfo } from './type';
1
+ import { TokenList } from './type';
3
2
  export declare enum FetchStatus {
4
3
  Initial = "Initial",
5
4
  Loading = "Loading",
6
5
  Failed = "Failed",
7
6
  Success = "Success"
8
7
  }
9
- export declare function useGetCGTokenList(): {
10
- cgTokenList: List<TokenInfo>;
8
+ export declare function useGetCGTokenList({ chainId, skip, }: {
9
+ chainId: number;
10
+ skip?: boolean;
11
+ }): {
12
+ cgTokenList: TokenList;
11
13
  loading: boolean;
12
14
  refetch: () => Promise<void>;
13
15
  };
@@ -3,4 +3,4 @@ export interface InitTokenListProps {
3
3
  tokenList?: TokenList | TokenListType;
4
4
  popularTokenList?: TokenList;
5
5
  }
6
- export default function useInitTokenList({ tokenList, popularTokenList: popularTokenListProps, }: InitTokenListProps): void;
6
+ export default function useInitTokenList({ tokenList, popularTokenList, }: InitTokenListProps): void;
@@ -0,0 +1,77 @@
1
+ /// <reference types="react" />
2
+ import { ChainId } from '../../constants/chains';
3
+ export declare function useSelectChainList(): {
4
+ chainList: ({
5
+ chainId: ChainId;
6
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
7
+ title?: string | undefined;
8
+ }>;
9
+ name: string;
10
+ mainnet?: ChainId | undefined;
11
+ } | {
12
+ chainId: ChainId;
13
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
14
+ title?: string | undefined;
15
+ }>;
16
+ name: string;
17
+ mainnet?: ChainId | undefined;
18
+ } | {
19
+ chainId: ChainId;
20
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
21
+ title?: string | undefined;
22
+ }>;
23
+ name: string;
24
+ mainnet?: ChainId | undefined;
25
+ } | {
26
+ chainId: ChainId;
27
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
28
+ title?: string | undefined;
29
+ }>;
30
+ name: string;
31
+ mainnet?: ChainId | undefined;
32
+ } | {
33
+ chainId: ChainId;
34
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
35
+ title?: string | undefined;
36
+ }>;
37
+ name: string;
38
+ mainnet?: ChainId | undefined;
39
+ } | {
40
+ chainId: ChainId;
41
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
42
+ title?: string | undefined;
43
+ }>;
44
+ name: string;
45
+ mainnet?: ChainId | undefined;
46
+ } | {
47
+ chainId: ChainId;
48
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
49
+ title?: string | undefined;
50
+ }>;
51
+ name: string;
52
+ mainnet?: ChainId | undefined;
53
+ } | {
54
+ chainId: ChainId;
55
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
56
+ title?: string | undefined;
57
+ }>;
58
+ name: string;
59
+ mainnet?: ChainId | undefined;
60
+ } | {
61
+ chainId: ChainId;
62
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
63
+ title?: string | undefined;
64
+ }>;
65
+ name: string;
66
+ mainnet?: ChainId | undefined;
67
+ } | {
68
+ chainId: ChainId;
69
+ logo: import("react").FunctionComponent<import("react").SVGProps<SVGSVGElement> & {
70
+ title?: string | undefined;
71
+ }>;
72
+ name: string;
73
+ mainnet?: ChainId | undefined;
74
+ })[];
75
+ selectChainId: number;
76
+ setSelectChainId: import("react").Dispatch<import("react").SetStateAction<number | undefined>>;
77
+ };
@@ -3,7 +3,7 @@ import { TokenInfo, TokenList } from './type';
3
3
  export declare const getFuzzySearchTokenSort: (token: TokenInfo, search: string, { matchAddress, }?: {
4
4
  matchAddress?: boolean | undefined;
5
5
  }) => number;
6
- export default function useTokenList({ value, onChange, occupiedAddrs, hiddenAddrs, showAddrs, side, }: {
6
+ export default function useTokenList({ value, onChange, occupiedAddrs, hiddenAddrs, showAddrs, side, chainId: chainIdProps, visible, defaultLoadBalance, }: {
7
7
  value?: TokenInfo | null;
8
8
  onChange: (token: TokenInfo, isOccupied: boolean) => void;
9
9
  /** token pair usage */
@@ -14,6 +14,10 @@ export default function useTokenList({ value, onChange, occupiedAddrs, hiddenAdd
14
14
  showAddrs?: string[];
15
15
  /** token field control */
16
16
  side?: 'from' | 'to';
17
+ chainId?: number;
18
+ /** Token Picker visible */
19
+ visible?: boolean;
20
+ defaultLoadBalance?: boolean;
17
21
  }): {
18
22
  filter: string;
19
23
  setFilter: import("react").Dispatch<import("react").SetStateAction<string>>;
@@ -0,0 +1,9 @@
1
+ import { TokenInfo, TokenList } from './type';
2
+ export default function useTokenListFetchBalance({ chainId, value, tokenList, popularTokenList, visible, defaultLoadBalance, }: {
3
+ chainId: number;
4
+ value?: TokenInfo | null;
5
+ tokenList: TokenList;
6
+ popularTokenList?: TokenList;
7
+ visible?: boolean;
8
+ defaultLoadBalance?: boolean;
9
+ }): void;
@@ -1,2 +1,2 @@
1
1
  import { WidgetProps } from '../../components/Widget/';
2
- export declare function useInitPropsToRedux({ width, height, feeRate, rebateTo, colorMode, apikey, defaultChainId, defaultToToken, defaultFromToken }: WidgetProps): void;
2
+ export declare function useInitPropsToRedux({ width, height, feeRate, rebateTo, colorMode, apikey, defaultChainId, defaultToToken, defaultFromToken, jsonRpcUrlMap, }: WidgetProps): void;
@@ -4,11 +4,6 @@ declare const _default: {
4
4
  DODO_APPROVE: string;
5
5
  ERC20_HELPER: string;
6
6
  };
7
- 4: {
8
- MULTI_CALL: string;
9
- DODO_APPROVE: string;
10
- ERC20_HELPER: string;
11
- };
12
7
  5: {
13
8
  MULTI_CALL: string;
14
9
  DODO_APPROVE: string;
@@ -19,11 +14,6 @@ declare const _default: {
19
14
  DODO_APPROVE: string;
20
15
  ERC20_HELPER: string;
21
16
  };
22
- 128: {
23
- MULTI_CALL: string;
24
- DODO_APPROVE: string;
25
- ERC20_HELPER: string;
26
- };
27
17
  137: {
28
18
  MULTI_CALL: string;
29
19
  DODO_APPROVE: string;
@@ -34,21 +24,11 @@ declare const _default: {
34
24
  DODO_APPROVE: string;
35
25
  ERC20_HELPER: string;
36
26
  };
37
- 421611: {
38
- MULTI_CALL: string;
39
- DODO_APPROVE: string;
40
- ERC20_HELPER: string;
41
- };
42
27
  1313161554: {
43
28
  MULTI_CALL: string;
44
29
  DODO_APPROVE: string;
45
30
  ERC20_HELPER: string;
46
31
  };
47
- 1285: {
48
- MULTI_CALL: string;
49
- DODO_APPROVE: string;
50
- ERC20_HELPER: string;
51
- };
52
32
  66: {
53
33
  MULTI_CALL: string;
54
34
  DODO_APPROVE: string;
@@ -59,17 +39,12 @@ declare const _default: {
59
39
  DODO_APPROVE: string;
60
40
  ERC20_HELPER: string;
61
41
  };
62
- 288: {
63
- MULTI_CALL: string;
64
- DODO_APPROVE: string;
65
- ERC20_HELPER: string;
66
- };
67
42
  43114: {
68
43
  MULTI_CALL: string;
69
44
  DODO_APPROVE: string;
70
45
  ERC20_HELPER: string;
71
46
  };
72
- 25: {
47
+ 1030: {
73
48
  MULTI_CALL: string;
74
49
  DODO_APPROVE: string;
75
50
  ERC20_HELPER: string;
@@ -2,3 +2,4 @@ export { default as useMultiContract, getContract } from './useMultiContract';
2
2
  export { default as useFetchTokens } from './useFetchTokens';
3
3
  export { default as useFetchETHBalance } from './useFetchETHBalance';
4
4
  export { default as useFetchBlockNumber } from './useFetchBlockNumber';
5
+ export * from './token';
@@ -0,0 +1,10 @@
1
+ import { JsonRpcProvider } from '@ethersproject/providers';
2
+ import BigNumber from 'bignumber.js';
3
+ export declare function fetchTokenAllowance({ account, tokenAddress, tokenDecimals, chainId, approveAddress, provider, }: {
4
+ account?: string;
5
+ tokenAddress: string;
6
+ tokenDecimals: number;
7
+ chainId: number;
8
+ approveAddress?: string;
9
+ provider: JsonRpcProvider;
10
+ }): Promise<BigNumber | undefined>;
@@ -1 +1 @@
1
- export default function useFetchETHBalance(): void;
1
+ export default function useFetchETHBalance(chainId?: number): void;
@@ -8,10 +8,12 @@ declare type TokenResult = {
8
8
  symbol?: string;
9
9
  name?: string;
10
10
  };
11
- export default function useFetchTokens({ tokenList, addresses: addressesProps, blockNumber, }: {
11
+ export default function useFetchTokens({ tokenList, addresses: addressesProps, blockNumber, chainId, skip, }: {
12
12
  tokenList?: TokenList;
13
13
  addresses?: string[];
14
14
  blockNumber?: number;
15
+ chainId?: number;
16
+ skip?: boolean;
15
17
  }): {
16
18
  data: TokenResult[] | undefined;
17
19
  };
@@ -2,7 +2,7 @@ import { Contract } from '@ethersproject/contracts';
2
2
  import { JsonRpcProvider } from '@ethersproject/providers';
3
3
  import { BatchThunk } from './batch';
4
4
  export declare function getContract(address: string, ABI: any, provider: JsonRpcProvider, account?: string): Contract;
5
- export default function useMultiContract(): {
5
+ export default function useMultiContract(chainIdProps?: number): {
6
6
  getContract: (contractAddress: string, ABI: any) => Contract | undefined;
7
7
  contractConfig: {
8
8
  MULTI_CALL: string;
@@ -44,26 +44,6 @@ export default function useMultiContract(): {
44
44
  MULTI_CALL: string;
45
45
  DODO_APPROVE: string;
46
46
  ERC20_HELPER: string;
47
- } | {
48
- MULTI_CALL: string;
49
- DODO_APPROVE: string;
50
- ERC20_HELPER: string;
51
- } | {
52
- MULTI_CALL: string;
53
- DODO_APPROVE: string;
54
- ERC20_HELPER: string;
55
- } | {
56
- MULTI_CALL: string;
57
- DODO_APPROVE: string;
58
- ERC20_HELPER: string;
59
- } | {
60
- MULTI_CALL: string;
61
- DODO_APPROVE: string;
62
- ERC20_HELPER: string;
63
- } | {
64
- MULTI_CALL: string;
65
- DODO_APPROVE: string;
66
- ERC20_HELPER: string;
67
47
  };
68
48
  call: <T>(thunk: BatchThunk<T>) => Promise<unknown[] | undefined> | undefined;
69
49
  loading: boolean;
@@ -1,3 +1,4 @@
1
1
  import { AppThunkAction } from '.';
2
2
  import { State } from '../reducers/globals';
3
3
  export declare const setGlobalProps: (globalProps: Partial<State>) => AppThunkAction;
4
+ export declare const setAutoConnectLoading: (loading: boolean) => AppThunkAction;
@@ -7,7 +7,7 @@ export declare const setPopularTokenList: (popularTokenList: TokenList) => AppTh
7
7
  export declare const setSlippageWithTokens: (slippageWithTokens: SlippageWithToken[]) => AppThunkAction;
8
8
  export declare const setDefaultFromToken: (token: TokenInfo) => AppThunkAction;
9
9
  export declare const setDefaultToToken: (token: TokenInfo) => AppThunkAction;
10
- export declare const setEthBalance: (balance: BigNumber) => AppThunkAction;
10
+ export declare const setEthBalance: (chainId: number, balance: BigNumber) => AppThunkAction;
11
11
  export declare const setTokenBalances: (accountBalances: AccountBalances) => AppThunkAction;
12
12
  export declare const setTokenAllowances: (allowance: BigNumber) => AppThunkAction;
13
13
  export declare const setBalanceLoadings: (balanceLoadings: {
@@ -10,6 +10,8 @@ export declare enum ContractStatus {
10
10
  export interface State extends SwapWidgetProps {
11
11
  isReverseRouting?: boolean;
12
12
  contractStatus?: ContractStatus;
13
+ autoConnectLoading?: boolean;
14
+ showCoingecko?: boolean;
13
15
  }
14
16
  export declare const initialState: State;
15
17
  declare const _default: (state: State | undefined, action: AnyAction) => State;
@@ -15,7 +15,9 @@ export declare type SlippageWithToken = {
15
15
  export declare type State = {
16
16
  tokenList: TokenList;
17
17
  popularTokenList: TokenList;
18
- ethBalance?: BigNumber;
18
+ ethBalance: {
19
+ [key: number]: BigNumber;
20
+ };
19
21
  accountBalances: AccountBalances;
20
22
  balanceLoadings: {
21
23
  [key in string]: boolean;
@@ -1,2 +1,3 @@
1
1
  import { RootState } from '../reducers';
2
2
  export declare const getGlobalProps: (state?: RootState) => import("../reducers/globals").State;
3
+ export declare const getAutoConnectLoading: (state?: RootState) => boolean | undefined;
@@ -6,7 +6,9 @@ export declare const getTokenList: (state?: RootState) => import("../../hooks/To
6
6
  export declare const getPopularTokenList: (chainId: ChainId, state?: RootState) => import("../../hooks/Token").TokenInfo[];
7
7
  export declare const getSlippageWithTokens: (state?: RootState) => import("../reducers/token").SlippageWithToken[];
8
8
  export declare const getAccountBalances: (state?: RootState) => import("../reducers/token").AccountBalances;
9
- export declare const getEthBalance: (state?: RootState) => BigNumber;
9
+ export declare const getEthBalance: (state?: RootState) => {
10
+ [key: number]: BigNumber;
11
+ };
10
12
  export declare const getDefaultFromToken: (state?: RootState) => DefaultTokenInfo | undefined;
11
13
  export declare const getDefaultToToken: (state?: RootState) => DefaultTokenInfo | undefined;
12
14
  export declare const getTokenBalance: (tokenAddress: string, state?: RootState) => BigNumber;
@@ -1,3 +1,4 @@
1
+ import { ChainId } from '../constants/chains';
1
2
  export declare const isSameAddress: (tokenAddress1: string, tokenAddress2: string) => boolean;
2
3
  export declare function isAddress(value: any): string | false;
3
4
  export declare function isETHAddress(addr: string): boolean;
@@ -6,3 +7,9 @@ export declare function isETHAddress(addr: string): boolean;
6
7
  * @param hexNumberString
7
8
  */
8
9
  export default function isZero(hexNumberString: string): boolean;
10
+ /**
11
+ * truncate pool address: 0xeBa959390016dd81419A189e5ef6F3B6720e5A90 => 0xeBa9...5A90
12
+ * @param address pool address
13
+ */
14
+ export declare function truncatePoolAddress(address: string): string;
15
+ export declare function getEtherscanPage(path: string | undefined, chainId: ChainId): string;
@@ -20,4 +20,6 @@ export declare function formatTokenAmountNumber({ input, decimals, showPrecision
20
20
  export declare const fixedString: (raw: string | number | BigNumber, showDecimals?: number) => string;
21
21
  export declare const fixedInputStringToFormattedNumber: (inputValue: string, inputTokenShowDecimals: number) => string | null;
22
22
  export declare const toWei: (amount: BigNumber | string | number, decimals: number, notDp?: boolean) => BigNumber;
23
+ export declare const byWei: (amount: BigNumber | string | number, decimals: number) => BigNumber;
23
24
  export declare const getDecimalLimit: (decimals: number | undefined | null) => number;
25
+ export declare function getIntegerNumber(v: number): number;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * time formatter
3
+ * output => 17mins54s or 17 Minutes
4
+ */
5
+ export declare function formatReadableTimeDuration({ start, end, showSecondUnit, }: {
6
+ start?: number;
7
+ end?: number;
8
+ showSecondUnit?: boolean;
9
+ }): string | null;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
2
+ <path d="M0 8C0 3.58172 3.58172 0 8 0H24C28.4183 0 32 3.58172 32 8V24C32 28.4183 28.4183 32 24 32H8C3.58172 32 0 28.4183 0 24V8Z" fill="black"/>
3
+ <rect x="7" y="7" width="18" height="18" fill="url(#pattern0)"/>
4
+ <defs>
5
+ <pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
6
+ <use xlink:href="#image0_3224_127284" transform="scale(0.00520833)"/>
7
+ </pattern>
8
+ <image id="image0_3224_127284" width="192" height="192" xlink:href="data:image/png;base64,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"/>
9
+ </defs>
10
+ </svg>