@swapkit/helpers 4.0.0-beta.33 → 4.0.0-beta.35

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 (251) hide show
  1. package/dist/api/index.js +2 -2
  2. package/dist/api/index.js.map +1 -1
  3. package/dist/{chunk-ganzk321.js → chunk-hm14bfyg.js} +3 -3
  4. package/dist/{chunk-fazw0jvt.js.map → chunk-hm14bfyg.js.map} +1 -1
  5. package/dist/chunk-vb4wtm2w.js +4 -0
  6. package/dist/{chunk-ganzk321.js.map → chunk-vb4wtm2w.js.map} +1 -1
  7. package/dist/contracts.cjs +4 -0
  8. package/dist/contracts.cjs.map +10 -0
  9. package/dist/contracts.js +4 -0
  10. package/dist/contracts.js.map +10 -0
  11. package/dist/index.cjs +3 -3
  12. package/dist/index.cjs.map +9 -9
  13. package/dist/index.js +3 -3
  14. package/dist/index.js.map +9 -9
  15. package/dist/tokens.cjs +4 -0
  16. package/dist/tokens.cjs.map +10 -0
  17. package/dist/tokens.js +4 -0
  18. package/dist/tokens.js.map +10 -0
  19. package/dist/types/api/index.d.ts +238 -0
  20. package/dist/types/api/index.d.ts.map +1 -0
  21. package/dist/types/api/microgard/endpoints.d.ts +25 -0
  22. package/dist/types/api/microgard/endpoints.d.ts.map +1 -0
  23. package/dist/types/api/microgard/types.d.ts +56 -0
  24. package/dist/types/api/microgard/types.d.ts.map +1 -0
  25. package/dist/types/api/midgard/endpoints.d.ts +35 -0
  26. package/dist/types/api/midgard/endpoints.d.ts.map +1 -0
  27. package/dist/types/api/midgard/types.d.ts +102 -0
  28. package/dist/types/api/midgard/types.d.ts.map +1 -0
  29. package/dist/types/api/swapkitApi/endpoints.d.ts +194 -0
  30. package/dist/types/api/swapkitApi/endpoints.d.ts.map +1 -0
  31. package/dist/types/api/swapkitApi/types.d.ts +7238 -0
  32. package/dist/types/api/swapkitApi/types.d.ts.map +1 -0
  33. package/dist/types/api/thornode/endpoints.d.ts +31 -0
  34. package/dist/types/api/thornode/endpoints.d.ts.map +1 -0
  35. package/dist/types/api/thornode/types.d.ts +264 -0
  36. package/dist/types/api/thornode/types.d.ts.map +1 -0
  37. package/dist/types/api/thorswapStatic/endpoints.d.ts +7 -0
  38. package/dist/types/api/thorswapStatic/endpoints.d.ts.map +1 -0
  39. package/dist/types/api/thorswapStatic/types.d.ts +22 -0
  40. package/dist/types/api/thorswapStatic/types.d.ts.map +1 -0
  41. package/dist/types/contracts.d.ts +2 -0
  42. package/dist/types/contracts.d.ts.map +1 -0
  43. package/{src/index.ts → dist/types/index.d.ts} +3 -4
  44. package/dist/types/index.d.ts.map +1 -0
  45. package/dist/types/modules/assetValue.d.ts +71 -0
  46. package/dist/types/modules/assetValue.d.ts.map +1 -0
  47. package/dist/types/modules/bigIntArithmetics.d.ts +56 -0
  48. package/dist/types/modules/bigIntArithmetics.d.ts.map +1 -0
  49. package/dist/types/modules/feeMultiplier.d.ts +45 -0
  50. package/dist/types/modules/feeMultiplier.d.ts.map +1 -0
  51. package/dist/types/modules/requestClient.d.ts +22 -0
  52. package/dist/types/modules/requestClient.d.ts.map +1 -0
  53. package/dist/types/modules/swapKitConfig.d.ts +98 -0
  54. package/dist/types/modules/swapKitConfig.d.ts.map +1 -0
  55. package/dist/types/modules/swapKitError.d.ts +829 -0
  56. package/dist/types/modules/swapKitError.d.ts.map +1 -0
  57. package/dist/types/modules/swapKitNumber.d.ts +7 -0
  58. package/dist/types/modules/swapKitNumber.d.ts.map +1 -0
  59. package/dist/types/tokens.d.ts +2 -0
  60. package/dist/types/tokens.d.ts.map +1 -0
  61. package/dist/types/types/chains.d.ts +187 -0
  62. package/dist/types/types/chains.d.ts.map +1 -0
  63. package/dist/types/types/commonTypes.d.ts +37 -0
  64. package/dist/types/types/commonTypes.d.ts.map +1 -0
  65. package/dist/types/types/derivationPath.d.ts +17 -0
  66. package/dist/types/types/derivationPath.d.ts.map +1 -0
  67. package/dist/types/types/errors/apiV1.d.ts +2 -0
  68. package/dist/types/types/errors/apiV1.d.ts.map +1 -0
  69. package/{src/types/index.ts → dist/types/types/index.d.ts} +1 -1
  70. package/dist/types/types/index.d.ts.map +1 -0
  71. package/dist/types/types/quotes.d.ts +170 -0
  72. package/dist/types/types/quotes.d.ts.map +1 -0
  73. package/dist/types/types/radix.d.ts +15 -0
  74. package/dist/types/types/radix.d.ts.map +1 -0
  75. package/dist/types/types/sdk.d.ts +35 -0
  76. package/dist/types/types/sdk.d.ts.map +1 -0
  77. package/dist/types/types/wallet.d.ts +122 -0
  78. package/dist/types/types/wallet.d.ts.map +1 -0
  79. package/dist/types/utils/asset.d.ts +40 -0
  80. package/dist/types/utils/asset.d.ts.map +1 -0
  81. package/dist/types/utils/derivationPath.d.ts +19 -0
  82. package/dist/types/utils/derivationPath.d.ts.map +1 -0
  83. package/dist/types/utils/explorerUrls.d.ts +10 -0
  84. package/dist/types/utils/explorerUrls.d.ts.map +1 -0
  85. package/dist/types/utils/liquidity.d.ts +59 -0
  86. package/dist/types/utils/liquidity.d.ts.map +1 -0
  87. package/dist/types/utils/memo.d.ts +65 -0
  88. package/dist/types/utils/memo.d.ts.map +1 -0
  89. package/dist/types/utils/others.d.ts +9 -0
  90. package/dist/types/utils/others.d.ts.map +1 -0
  91. package/dist/types/utils/validators.d.ts +3 -0
  92. package/dist/types/utils/validators.d.ts.map +1 -0
  93. package/dist/types/utils/wallets.d.ts +32 -0
  94. package/dist/types/utils/wallets.d.ts.map +1 -0
  95. package/package.json +14 -15
  96. package/dist/chunk-06q78xy3.js +0 -4
  97. package/dist/chunk-06q78xy3.js.map +0 -10
  98. package/dist/chunk-0q5vvg5c.js +0 -5
  99. package/dist/chunk-0q5vvg5c.js.map +0 -10
  100. package/dist/chunk-18bxh1n7.js +0 -5
  101. package/dist/chunk-18bxh1n7.js.map +0 -10
  102. package/dist/chunk-3qya5ng9.js +0 -4
  103. package/dist/chunk-3qya5ng9.js.map +0 -10
  104. package/dist/chunk-4yqymkbp.js +0 -5
  105. package/dist/chunk-4yqymkbp.js.map +0 -10
  106. package/dist/chunk-50gpwcq9.js +0 -4
  107. package/dist/chunk-50gpwcq9.js.map +0 -10
  108. package/dist/chunk-6atq9cs7.js +0 -4
  109. package/dist/chunk-6atq9cs7.js.map +0 -10
  110. package/dist/chunk-6m0d5pv4.js +0 -5
  111. package/dist/chunk-6m0d5pv4.js.map +0 -10
  112. package/dist/chunk-8x46g3wq.js +0 -5
  113. package/dist/chunk-8x46g3wq.js.map +0 -10
  114. package/dist/chunk-92sk0g47.js +0 -5
  115. package/dist/chunk-92sk0g47.js.map +0 -10
  116. package/dist/chunk-9f2b3enk.js +0 -5
  117. package/dist/chunk-9f2b3enk.js.map +0 -10
  118. package/dist/chunk-adrafsdk.js +0 -5
  119. package/dist/chunk-adrafsdk.js.map +0 -10
  120. package/dist/chunk-b1hang9z.js +0 -5
  121. package/dist/chunk-b1hang9z.js.map +0 -10
  122. package/dist/chunk-becdmywt.js +0 -4
  123. package/dist/chunk-becdmywt.js.map +0 -10
  124. package/dist/chunk-ehz0t9d1.js +0 -4
  125. package/dist/chunk-ehz0t9d1.js.map +0 -10
  126. package/dist/chunk-fazw0jvt.js +0 -4
  127. package/dist/chunk-fm9ycn0h.js +0 -5
  128. package/dist/chunk-fm9ycn0h.js.map +0 -10
  129. package/dist/chunk-g67e2r57.js +0 -4
  130. package/dist/chunk-g67e2r57.js.map +0 -10
  131. package/dist/chunk-he3vy8gt.js +0 -4
  132. package/dist/chunk-he3vy8gt.js.map +0 -10
  133. package/dist/chunk-jjayk2y5.js +0 -4
  134. package/dist/chunk-jjayk2y5.js.map +0 -10
  135. package/dist/chunk-mmyv2vsv.js +0 -5
  136. package/dist/chunk-mmyv2vsv.js.map +0 -10
  137. package/dist/chunk-phev7aw7.js +0 -4
  138. package/dist/chunk-phev7aw7.js.map +0 -10
  139. package/dist/chunk-rhqk87p2.js +0 -5
  140. package/dist/chunk-rhqk87p2.js.map +0 -10
  141. package/dist/chunk-rnv7fdjk.js +0 -4
  142. package/dist/chunk-rnv7fdjk.js.map +0 -10
  143. package/dist/chunk-rwh98p1c.js +0 -4
  144. package/dist/chunk-rwh98p1c.js.map +0 -10
  145. package/dist/chunk-v9zj2gsj.js +0 -5
  146. package/dist/chunk-v9zj2gsj.js.map +0 -10
  147. package/dist/chunk-vv5bgsn8.js +0 -4
  148. package/dist/chunk-vv5bgsn8.js.map +0 -10
  149. package/dist/chunk-vwh9jfxn.js +0 -5
  150. package/dist/chunk-vwh9jfxn.js.map +0 -10
  151. package/dist/chunk-x0rqy75t.js +0 -4
  152. package/dist/chunk-x0rqy75t.js.map +0 -10
  153. package/dist/contracts/index.cjs +0 -4
  154. package/dist/contracts/index.cjs.map +0 -38
  155. package/dist/contracts/index.js +0 -4
  156. package/dist/contracts/index.js.map +0 -38
  157. package/dist/tokens/index.cjs +0 -4
  158. package/dist/tokens/index.cjs.map +0 -10
  159. package/dist/tokens/index.js +0 -4
  160. package/dist/tokens/index.js.map +0 -10
  161. package/src/api/index.ts +0 -19
  162. package/src/api/microgard/endpoints.ts +0 -83
  163. package/src/api/microgard/types.ts +0 -57
  164. package/src/api/midgard/endpoints.ts +0 -90
  165. package/src/api/midgard/types.ts +0 -106
  166. package/src/api/swapkitApi/endpoints.ts +0 -193
  167. package/src/api/swapkitApi/types.ts +0 -635
  168. package/src/api/thornode/endpoints.ts +0 -116
  169. package/src/api/thornode/types.ts +0 -276
  170. package/src/api/thorswapStatic/endpoints.ts +0 -46
  171. package/src/api/thorswapStatic/types.ts +0 -18
  172. package/src/contracts/abis/avaxGeneric.ts +0 -92
  173. package/src/contracts/abis/avaxWoofi.ts +0 -145
  174. package/src/contracts/abis/bscGeneric.ts +0 -106
  175. package/src/contracts/abis/chainflipGateway.ts +0 -330
  176. package/src/contracts/abis/erc20.ts +0 -99
  177. package/src/contracts/abis/ethGeneric.ts +0 -92
  178. package/src/contracts/abis/mayaEvmVaults.ts +0 -331
  179. package/src/contracts/abis/pancakeV2.ts +0 -145
  180. package/src/contracts/abis/pangolin.ts +0 -120
  181. package/src/contracts/abis/sushiswap.ts +0 -120
  182. package/src/contracts/abis/tcEthVault.ts +0 -650
  183. package/src/contracts/abis/traderJoe.ts +0 -120
  184. package/src/contracts/abis/uniswapV2.ts +0 -120
  185. package/src/contracts/abis/uniswapV2Leg.ts +0 -128
  186. package/src/contracts/abis/uniswapV3_100.ts +0 -128
  187. package/src/contracts/abis/uniswapV3_10000.ts +0 -128
  188. package/src/contracts/abis/uniswapV3_3000.ts +0 -128
  189. package/src/contracts/abis/uniswapV3_500.ts +0 -128
  190. package/src/contracts/index.ts +0 -95
  191. package/src/contracts/routers/index.ts +0 -58
  192. package/src/contracts/routers/kyber.ts +0 -402
  193. package/src/contracts/routers/oneinch.ts +0 -2188
  194. package/src/contracts/routers/pancakeswap.ts +0 -340
  195. package/src/contracts/routers/pangolin.ts +0 -340
  196. package/src/contracts/routers/sushiswap.ts +0 -340
  197. package/src/contracts/routers/traderJoe.ts +0 -340
  198. package/src/contracts/routers/uniswapv2.ts +0 -340
  199. package/src/contracts/routers/uniswapv3.ts +0 -254
  200. package/src/contracts/routers/woofi.ts +0 -171
  201. package/src/modules/__tests__/assetValue.test.ts +0 -877
  202. package/src/modules/__tests__/bigIntArithmetics.test.ts +0 -30
  203. package/src/modules/__tests__/swapKitConfig.test.ts +0 -37
  204. package/src/modules/__tests__/swapKitNumber.test.ts +0 -560
  205. package/src/modules/assetValue.ts +0 -387
  206. package/src/modules/bigIntArithmetics.ts +0 -436
  207. package/src/modules/feeMultiplier.ts +0 -87
  208. package/src/modules/requestClient.ts +0 -83
  209. package/src/modules/swapKitConfig.ts +0 -143
  210. package/src/modules/swapKitError.ts +0 -442
  211. package/src/modules/swapKitNumber.ts +0 -16
  212. package/src/tokens/index.ts +0 -15
  213. package/src/tokens/lists/camelot_v3.ts +0 -16060
  214. package/src/tokens/lists/caviar_v1.ts +0 -1704
  215. package/src/tokens/lists/chainflip.ts +0 -104
  216. package/src/tokens/lists/index.ts +0 -14
  217. package/src/tokens/lists/jupiter.ts +0 -33563
  218. package/src/tokens/lists/mayachain.ts +0 -509
  219. package/src/tokens/lists/near.ts +0 -458
  220. package/src/tokens/lists/oneinch.ts +0 -15006
  221. package/src/tokens/lists/openocean_v2.ts +0 -12434
  222. package/src/tokens/lists/pancakeswap.ts +0 -6136
  223. package/src/tokens/lists/pangolin_v1.ts +0 -75
  224. package/src/tokens/lists/sushiswap_v2.ts +0 -595
  225. package/src/tokens/lists/thorchain.ts +0 -748
  226. package/src/tokens/lists/traderjoe_v2.ts +0 -594
  227. package/src/tokens/lists/uniswap_v2.ts +0 -11484
  228. package/src/tokens/lists/uniswap_v3.ts +0 -19424
  229. package/src/types/chains.ts +0 -555
  230. package/src/types/commonTypes.ts +0 -58
  231. package/src/types/derivationPath.ts +0 -58
  232. package/src/types/errors/apiV1.ts +0 -0
  233. package/src/types/quotes.ts +0 -172
  234. package/src/types/radix.ts +0 -14
  235. package/src/types/sdk.ts +0 -42
  236. package/src/types/tokens.ts +0 -17
  237. package/src/types/wallet.ts +0 -166
  238. package/src/utils/__tests__/asset.test.ts +0 -193
  239. package/src/utils/__tests__/derivationPath.test.ts +0 -16
  240. package/src/utils/__tests__/memo.test.ts +0 -103
  241. package/src/utils/__tests__/others.test.ts +0 -88
  242. package/src/utils/__tests__/validators.test.ts +0 -24
  243. package/src/utils/asset.ts +0 -231
  244. package/src/utils/derivationPath.ts +0 -98
  245. package/src/utils/liquidity.ts +0 -179
  246. package/src/utils/memo.ts +0 -143
  247. package/src/utils/others.ts +0 -86
  248. package/src/utils/plugin.ts +0 -13
  249. package/src/utils/tokens.ts +0 -73
  250. package/src/utils/validators.ts +0 -32
  251. package/src/utils/wallets.ts +0 -276
@@ -1,276 +0,0 @@
1
- import type { getEvmToolbox } from "@swapkit/toolboxes/evm";
2
- import type { BrowserProvider, JsonRpcProvider } from "ethers";
3
- import { SwapKitError } from "../modules/swapKitError";
4
- import {
5
- type AddChainType,
6
- type Chain,
7
- ChainToHexChainId,
8
- type EIP6963AnnounceProviderEvent,
9
- type EIP6963Provider,
10
- type EthereumWindowProvider,
11
- type NetworkParams,
12
- WalletOption,
13
- } from "../types";
14
- import { warnOnce } from "./others";
15
-
16
- declare const window: {
17
- ethereum: EthereumWindowProvider;
18
- trustwallet: EthereumWindowProvider;
19
- coinbaseWalletExtension: EthereumWindowProvider;
20
- braveSolana: any;
21
- bitkeep?: { ethereum: EthereumWindowProvider };
22
- xfi?: { ethereum: EthereumWindowProvider };
23
- $onekey?: { ethereum: EthereumWindowProvider };
24
- vultisig?: { ethereum: EthereumWindowProvider };
25
- } & Window;
26
-
27
- export function isWeb3Detected() {
28
- return typeof window.ethereum !== "undefined";
29
- }
30
-
31
- export function isDetected(walletOption: WalletOption) {
32
- return listWeb3EVMWallets().includes(walletOption);
33
- }
34
-
35
- export function listWeb3EVMWallets() {
36
- const metamaskEnabled = window?.ethereum && !window.ethereum?.isBraveWallet;
37
- // @ts-ignore that should be implemented in ctrl and hooked up via swapkit core
38
- const ctrlEnabled = window?.xfi || window?.ethereum?.__XDEFI;
39
- const vultisigEnabled = window?.vultisig;
40
- const braveEnabled = window?.ethereum?.isBraveWallet;
41
- const trustEnabled = window?.ethereum?.isTrust || window?.trustwallet;
42
- const coinbaseEnabled =
43
- (window?.ethereum?.overrideIsMetaMask &&
44
- window?.ethereum?.selectedProvider?.isCoinbaseWallet) ||
45
- window?.coinbaseWalletExtension;
46
- const bitgetEnabled = window?.bitkeep?.ethereum;
47
- const onekeyEnabled = window?.$onekey?.ethereum;
48
-
49
- const wallets = [];
50
- if (metamaskEnabled) wallets.push(WalletOption.METAMASK);
51
- if (ctrlEnabled) wallets.push(WalletOption.CTRL);
52
- if (vultisigEnabled) wallets.push(WalletOption.VULTISIG);
53
- if (braveEnabled) wallets.push(WalletOption.BRAVE);
54
- if (trustEnabled) wallets.push(WalletOption.TRUSTWALLET_WEB);
55
- if (coinbaseEnabled) wallets.push(WalletOption.COINBASE_WEB);
56
- if (okxMobileEnabled()) wallets.push(WalletOption.OKX_MOBILE);
57
- if (bitgetEnabled) wallets.push(WalletOption.BITGET);
58
- if (onekeyEnabled) wallets.push(WalletOption.ONEKEY);
59
-
60
- return wallets;
61
- }
62
-
63
- export async function switchEVMWalletNetwork(
64
- provider: BrowserProvider,
65
- chain: Chain,
66
- networkParams?: NetworkParams,
67
- ) {
68
- try {
69
- await providerRequest({
70
- provider,
71
- method: "wallet_switchEthereumChain",
72
- params: [{ chainId: ChainToHexChainId[chain] }],
73
- });
74
- } catch (error) {
75
- if (!networkParams) {
76
- throw new SwapKitError("helpers_failed_to_switch_network", {
77
- error: error,
78
- reason: "networkParams not provided",
79
- });
80
- }
81
- await addEVMWalletNetwork(provider, networkParams);
82
- }
83
- }
84
-
85
- export function filterSupportedChains<T extends string[]>({
86
- chains,
87
- supportedChains,
88
- walletType,
89
- }: { chains: Chain[]; supportedChains: T; walletType?: WalletOption }) {
90
- const supported = chains.filter((chain) => !chain || supportedChains.includes(chain));
91
-
92
- if (supported.length === 0) {
93
- throw new SwapKitError("wallet_chain_not_supported", {
94
- wallet: walletType,
95
- chain: chains.join(", "),
96
- });
97
- }
98
-
99
- const unsupported = chains.filter((chain) => !supportedChains.includes(chain));
100
-
101
- warnOnce(
102
- unsupported.length > 0,
103
- `${walletType} wallet does not support the following chains: ${unsupported.join(
104
- ", ",
105
- )}. These chains will be ignored.`,
106
- );
107
-
108
- return supported as T;
109
- }
110
-
111
- export function wrapMethodWithNetworkSwitch<T extends (...args: any[]) => any>(
112
- func: T,
113
- provider: BrowserProvider,
114
- chain: Chain,
115
- ) {
116
- return (async (...args: any[]) => {
117
- try {
118
- await switchEVMWalletNetwork(provider, chain);
119
- } catch (error) {
120
- throw new SwapKitError({
121
- errorKey: "helpers_failed_to_switch_network",
122
- info: { error },
123
- });
124
- }
125
- return func(...args);
126
- }) as unknown as T;
127
- }
128
-
129
- export function prepareNetworkSwitch<
130
- T extends Awaited<ReturnType<typeof getEvmToolbox>>,
131
- M extends keyof T,
132
- >({
133
- toolbox,
134
- chain,
135
- provider = window.ethereum,
136
- methodNames = [],
137
- }: { toolbox: T; chain: Chain; provider?: BrowserProvider | JsonRpcProvider; methodNames?: M[] }) {
138
- const methodsToWrap = [
139
- ...methodNames,
140
- "approve",
141
- "approvedAmount",
142
- "call",
143
- "sendTransaction",
144
- "transfer",
145
- "isApproved",
146
- "approvedAmount",
147
- "EIP1193SendTransaction",
148
- "getFeeData",
149
- "broadcastTransaction",
150
- "estimateCall",
151
- "estimateGasLimit",
152
- "estimateGasPrices",
153
- "createContractTxObject",
154
- ] as M[];
155
- const wrappedMethods = methodsToWrap.reduce((object, methodName) => {
156
- if (!toolbox[methodName]) return object;
157
-
158
- const method = toolbox[methodName];
159
-
160
- if (typeof method !== "function") return object;
161
-
162
- // @ts-expect-error
163
- const wrappedMethod = wrapMethodWithNetworkSwitch(method, provider, chain);
164
-
165
- // biome-ignore lint/performance/noAccumulatingSpread: valid use case
166
- return { ...object, [methodName]: wrappedMethod };
167
- }, {});
168
-
169
- return { ...toolbox, ...wrappedMethods };
170
- }
171
-
172
- export function addEVMWalletNetwork(provider: BrowserProvider, networkParams: NetworkParams) {
173
- return providerRequest({ provider, method: "wallet_addEthereumChain", params: [networkParams] });
174
- }
175
-
176
- export function addAccountsChangedCallback(callback: () => void) {
177
- window.ethereum?.on("accountsChanged", () => callback());
178
- window.xfi?.ethereum.on("accountsChanged", () => callback());
179
- }
180
-
181
- export function getETHDefaultWallet() {
182
- const { isTrust, isBraveWallet, __XDEFI, overrideIsMetaMask, selectedProvider } =
183
- window?.ethereum || {};
184
- if (isTrust) return WalletOption.TRUSTWALLET_WEB;
185
- if (isBraveWallet) return WalletOption.BRAVE;
186
- if (overrideIsMetaMask && selectedProvider?.isCoinbaseWallet) return WalletOption.COINBASE_WEB;
187
- if (__XDEFI) WalletOption.CTRL;
188
- if (window?.$onekey?.ethereum) return WalletOption.ONEKEY;
189
- return WalletOption.METAMASK;
190
- }
191
-
192
- export function getEIP6963Wallets() {
193
- const providers: EIP6963Provider[] = [];
194
-
195
- function onAnnouncement(event: EIP6963AnnounceProviderEvent) {
196
- if (providers.map((p) => p.info.uuid).includes(event.detail.info.uuid)) return;
197
- providers.push(event.detail);
198
- }
199
-
200
- window.addEventListener("eip6963:announceProvider", onAnnouncement);
201
- window.dispatchEvent(new Event("eip6963:requestProvider"));
202
-
203
- function removeEIP6963EventListener() {
204
- window.removeEventListener("eip6963:announceProvider", onAnnouncement);
205
- }
206
-
207
- return { providers, removeEIP6963EventListener };
208
- }
209
-
210
- export function okxMobileEnabled() {
211
- const ua = navigator.userAgent;
212
- const isIOS = /iphone|ipad|ipod|ios/i.test(ua);
213
- const isAndroid = /android|XiaoMi|MiuiBrowser/i.test(ua);
214
- const isMobile = isIOS || isAndroid;
215
- const isOKApp = /OKApp/i.test(ua);
216
-
217
- return isMobile && isOKApp;
218
- }
219
-
220
- export function createWallet<
221
- ConnectParams extends any[],
222
- SupportedChains extends Chain[],
223
- const Name extends string,
224
- WalletType extends WalletOption,
225
- >({
226
- connect,
227
- name,
228
- supportedChains,
229
- walletType,
230
- }: {
231
- connect: (connectParams: {
232
- addChain: AddChainType;
233
- walletType: WalletType;
234
- supportedChains: SupportedChains;
235
- }) => (...params: ConnectParams) => Promise<boolean>;
236
- name: Name;
237
- supportedChains: SupportedChains;
238
- walletType?: WalletType | string;
239
- }) {
240
- function connectWallet(connectParams: {
241
- addChain: AddChainType;
242
- }) {
243
- return connect({ ...connectParams, walletType: walletType as WalletType, supportedChains });
244
- }
245
-
246
- return {
247
- [name]: { supportedChains, connectWallet },
248
- } as unknown as {
249
- [key in Name]: {
250
- connectWallet: typeof connectWallet;
251
- supportedChains: SupportedChains;
252
- };
253
- };
254
- }
255
-
256
- export function providerRequest({
257
- provider,
258
- params,
259
- method,
260
- }: {
261
- provider?: BrowserProvider;
262
- params?: any;
263
- method:
264
- | "wallet_addEthereumChain"
265
- | "wallet_switchEthereumChain"
266
- | "eth_requestAccounts"
267
- | "eth_sendTransaction"
268
- | "eth_signTransaction";
269
- }) {
270
- if (!provider?.send) {
271
- throw new SwapKitError("helpers_not_found_provider");
272
- }
273
-
274
- const providerParams = params ? (Array.isArray(params) ? params : [params]) : [];
275
- return provider.send(method, providerParams);
276
- }