@instadapp/avocado-base 0.0.0-dev.c8c43bc → 0.0.0-dev.ca74133
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/abi/forwarder.json +1253 -149
- package/app.vue +27 -0
- package/assets/images/icons/arrow-left.svg +5 -0
- package/assets/images/icons/arrow-right.svg +5 -0
- package/assets/images/icons/avocado.svg +4 -0
- package/assets/images/icons/bridge-2.svg +3 -0
- package/assets/images/icons/bridge.svg +7 -0
- package/assets/images/icons/calendar.svg +8 -0
- package/assets/images/icons/change-threshold.svg +4 -0
- package/assets/images/icons/check-circle.svg +4 -0
- package/assets/images/icons/chevron-down.svg +4 -0
- package/assets/images/icons/clipboard.svg +7 -0
- package/assets/images/icons/clock-circle.svg +5 -0
- package/assets/images/icons/copy.svg +5 -0
- package/assets/images/icons/cross-transfer.svg +7 -0
- package/assets/images/icons/dapp.svg +4 -0
- package/assets/images/icons/deploy.svg +12 -0
- package/assets/images/icons/error-circle.svg +6 -0
- package/assets/images/icons/exclamation-circle.svg +13 -0
- package/assets/images/icons/exclamation-octagon.svg +13 -0
- package/assets/images/icons/exclamation-triangle.svg +5 -0
- package/assets/images/icons/external-link.svg +6 -0
- package/assets/images/icons/eye.svg +4 -0
- package/assets/images/icons/flowers.svg +8 -0
- package/assets/images/icons/gas-emoji.svg +193 -0
- package/assets/images/icons/gas.svg +14 -0
- package/assets/images/icons/gift.svg +153 -0
- package/assets/images/icons/globe.svg +110 -0
- package/assets/images/icons/hamburger.svg +6 -0
- package/assets/images/icons/instadapp-pro.svg +4 -0
- package/assets/images/icons/logout.svg +3 -0
- package/assets/images/icons/moon.svg +3 -0
- package/assets/images/icons/multi-send.svg +7 -0
- package/assets/images/icons/network.svg +13 -0
- package/assets/images/icons/options.svg +5 -0
- package/assets/images/icons/permit-sign.svg +11 -0
- package/assets/images/icons/plus-circle.svg +6 -0
- package/assets/images/icons/plus.svg +5 -0
- package/assets/images/icons/power-off-bg.svg +24 -0
- package/assets/images/icons/power-off.svg +19 -0
- package/assets/images/icons/power-on.svg +19 -0
- package/assets/images/icons/qr.svg +20 -0
- package/assets/images/icons/question-circle.svg +14 -0
- package/assets/images/icons/refresh.svg +6 -0
- package/assets/images/icons/reject-proposal.svg +6 -0
- package/assets/images/icons/search.svg +12 -0
- package/assets/images/icons/sun.svg +3 -0
- package/assets/images/icons/transfer.svg +5 -0
- package/assets/images/icons/trash-2.svg +8 -0
- package/assets/images/icons/upgrade.svg +4 -0
- package/assets/images/icons/wave.svg +214 -0
- package/assets/images/icons/x.svg +5 -0
- package/components/ActionLogo.vue +38 -0
- package/components/ActionMetadata.vue +73 -0
- package/components/ChainLogo.vue +141 -1
- package/components/metadata/Bridge.vue +39 -0
- package/components/metadata/CrossTransfer.vue +67 -0
- package/components/metadata/GasTopup.vue +33 -0
- package/components/metadata/Permit2.vue +37 -0
- package/components/metadata/Swap.vue +67 -0
- package/components/metadata/Transfer.vue +46 -0
- package/components.d.ts +13 -0
- package/contracts/Forwarder.ts +856 -2
- package/contracts/factories/Forwarder__factory.ts +816 -16
- package/nuxt.config.ts +18 -2
- package/package.json +7 -3
- package/server/utils/index.ts +2 -0
- package/utils/avocado.ts +2 -0
- package/utils/bignumber.ts +51 -0
- package/utils/formatter.ts +94 -0
- package/utils/helper.ts +33 -0
- package/utils/metadata.ts +343 -134
- package/utils/network.ts +145 -67
- package/utils/services.ts +14 -0
- package/utils/utils.d.ts +123 -80
- package/utils/index.ts +0 -93
package/utils/network.ts
CHANGED
|
@@ -4,18 +4,20 @@ export const bridgeDisabledNetworks = [1101];
|
|
|
4
4
|
|
|
5
5
|
export const networks: Network[] = [
|
|
6
6
|
{
|
|
7
|
-
name: "
|
|
7
|
+
name: "Ethereum",
|
|
8
8
|
debankName: "eth",
|
|
9
9
|
ankrName: "eth",
|
|
10
|
+
zerionName: "ethereum",
|
|
10
11
|
chainId: 1,
|
|
12
|
+
explorerUrl: "https://etherscan.io",
|
|
13
|
+
color: "#5D5FEF",
|
|
14
|
+
get serverRpcUrl() {
|
|
15
|
+
return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
|
|
16
|
+
},
|
|
17
|
+
balanceResolverAddress: "0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43",
|
|
18
|
+
usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
|
|
11
19
|
params: {
|
|
12
20
|
rpcUrls: ["https://rpc.ankr.com/eth"],
|
|
13
|
-
explorerUrl: "https://etherscan.io",
|
|
14
|
-
get serverRpcUrl() {
|
|
15
|
-
return process.env?.MAINNET_RPC_URL || this.rpcUrls[0];
|
|
16
|
-
},
|
|
17
|
-
balanceResolverAddress: "0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43",
|
|
18
|
-
usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
|
|
19
21
|
nativeCurrency: {
|
|
20
22
|
name: "Ethereum",
|
|
21
23
|
symbol: "ETH",
|
|
@@ -27,7 +29,15 @@ export const networks: Network[] = [
|
|
|
27
29
|
name: "Polygon",
|
|
28
30
|
debankName: "matic",
|
|
29
31
|
ankrName: "polygon",
|
|
32
|
+
zerionName: "polygon",
|
|
33
|
+
color: "#7A4ADD",
|
|
30
34
|
chainId: 137,
|
|
35
|
+
balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
|
|
36
|
+
usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
|
|
37
|
+
explorerUrl: "https://polygonscan.com",
|
|
38
|
+
get serverRpcUrl() {
|
|
39
|
+
return process.env?.POLYGON_RPC_URL || this.params.rpcUrls[0];
|
|
40
|
+
},
|
|
31
41
|
params: {
|
|
32
42
|
chainName: "Matic(Polygon) Mainnet",
|
|
33
43
|
nativeCurrency: {
|
|
@@ -35,20 +45,22 @@ export const networks: Network[] = [
|
|
|
35
45
|
symbol: "MATIC",
|
|
36
46
|
decimals: 18,
|
|
37
47
|
},
|
|
38
|
-
balanceResolverAddress: "0x58632D23120b20650262b8A629a14e4F4043E0D9",
|
|
39
|
-
usdcAddress: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
|
|
40
48
|
rpcUrls: ["https://polygon-rpc.com"],
|
|
41
|
-
get serverRpcUrl() {
|
|
42
|
-
return process.env?.POLYGON_RPC_URL || this.rpcUrls[0];
|
|
43
|
-
},
|
|
44
|
-
explorerUrl: "https://polygonscan.com",
|
|
45
49
|
},
|
|
46
50
|
},
|
|
47
51
|
{
|
|
48
52
|
name: "Arbitrum",
|
|
49
53
|
debankName: "arb",
|
|
50
54
|
ankrName: "arbitrum",
|
|
55
|
+
zerionName: "arbitrum",
|
|
56
|
+
color: "#2D374B",
|
|
51
57
|
chainId: 42161,
|
|
58
|
+
usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
|
|
59
|
+
balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
|
|
60
|
+
explorerUrl: "https://arbiscan.io",
|
|
61
|
+
get serverRpcUrl() {
|
|
62
|
+
return process.env?.ARBITRUM_RPC_URL || this.params.rpcUrls[0];
|
|
63
|
+
},
|
|
52
64
|
params: {
|
|
53
65
|
chainName: "Arbitrum One",
|
|
54
66
|
nativeCurrency: {
|
|
@@ -56,20 +68,22 @@ export const networks: Network[] = [
|
|
|
56
68
|
symbol: "ETH",
|
|
57
69
|
decimals: 18,
|
|
58
70
|
},
|
|
59
|
-
usdcAddress: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
|
|
60
|
-
balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
|
|
61
|
-
get serverRpcUrl() {
|
|
62
|
-
return process.env?.ARBITRUM_RPC_URL || this.rpcUrls[0];
|
|
63
|
-
},
|
|
64
71
|
rpcUrls: ["https://arb1.arbitrum.io/rpc"],
|
|
65
|
-
explorerUrl: "https://arbiscan.io",
|
|
66
72
|
},
|
|
67
73
|
},
|
|
68
74
|
{
|
|
69
75
|
name: "Optimism",
|
|
70
76
|
debankName: "op",
|
|
71
77
|
ankrName: "optimism",
|
|
78
|
+
zerionName: "optimism",
|
|
79
|
+
color: "#FF0420",
|
|
72
80
|
chainId: 10,
|
|
81
|
+
usdcAddress: "0x7f5c764cbc14f9669b88837ca1490cca17c31607",
|
|
82
|
+
balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
|
|
83
|
+
explorerUrl: "https://optimistic.etherscan.io",
|
|
84
|
+
get serverRpcUrl() {
|
|
85
|
+
return process.env?.OPTIMISM_RPC_URL || this.params.rpcUrls[0];
|
|
86
|
+
},
|
|
73
87
|
params: {
|
|
74
88
|
chainName: "Optimistic Ethereum",
|
|
75
89
|
nativeCurrency: {
|
|
@@ -77,50 +91,48 @@ export const networks: Network[] = [
|
|
|
77
91
|
symbol: "ETH",
|
|
78
92
|
decimals: 18,
|
|
79
93
|
},
|
|
80
|
-
|
|
81
|
-
balanceResolverAddress: "0xca5f37e6D8bB24c5A7958d5eccE7Bd9Aacc944f2",
|
|
82
|
-
get serverRpcUrl() {
|
|
83
|
-
return process.env?.OPTIMISM_RPC_URL || this.rpcUrls[0];
|
|
84
|
-
},
|
|
85
|
-
rpcUrls: ["https://mainnet.optimism.io"],
|
|
86
|
-
explorerUrl: "https://optimistic.etherscan.io",
|
|
94
|
+
rpcUrls: ["https://rpc.ankr.com/optimism"],
|
|
87
95
|
},
|
|
88
96
|
},
|
|
89
97
|
{
|
|
90
98
|
name: "Avalanche",
|
|
91
99
|
debankName: "avax",
|
|
92
100
|
ankrName: "avalanche",
|
|
101
|
+
zerionName: "avalanche",
|
|
102
|
+
color: "#EB5757",
|
|
93
103
|
chainId: 43114,
|
|
104
|
+
usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
|
|
105
|
+
balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
|
|
106
|
+
explorerUrl: "https://snowtrace.io",
|
|
107
|
+
get serverRpcUrl() {
|
|
108
|
+
return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
|
|
109
|
+
},
|
|
94
110
|
params: {
|
|
95
111
|
chainName: "Avalanche Network",
|
|
96
|
-
get serverRpcUrl() {
|
|
97
|
-
return process.env?.AVALANCHE_RPC_URL || this.rpcUrls[0];
|
|
98
|
-
},
|
|
99
112
|
nativeCurrency: {
|
|
100
113
|
name: "Avalanche",
|
|
101
114
|
symbol: "AVAX",
|
|
102
115
|
decimals: 18,
|
|
103
116
|
},
|
|
104
|
-
|
|
105
|
-
balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
|
|
106
|
-
rpcUrls: ["https://api.avax.network/ext/bc/C/rpc"],
|
|
107
|
-
explorerUrl: "https://snowtrace.io",
|
|
117
|
+
rpcUrls: ["https://rpc.ankr.com/avalanche"],
|
|
108
118
|
},
|
|
109
119
|
},
|
|
110
120
|
{
|
|
111
121
|
name: "BSC",
|
|
112
122
|
debankName: "bsc",
|
|
113
123
|
ankrName: "bsc",
|
|
124
|
+
zerionName: "binance-smart-chain",
|
|
125
|
+
color: "#F3BA2F",
|
|
114
126
|
chainId: 56,
|
|
127
|
+
explorerUrl: "https://bscscan.com",
|
|
128
|
+
usdcAddress: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
|
|
129
|
+
balanceResolverAddress: "0xb808cff38706e267067b0af427726aa099f69f89",
|
|
130
|
+
get serverRpcUrl() {
|
|
131
|
+
return process.env?.BSC_RPC_URL || this.params.rpcUrls[0];
|
|
132
|
+
},
|
|
115
133
|
params: {
|
|
116
134
|
chainName: "Binance Smart Chain",
|
|
117
|
-
explorerUrl: "https://bscscan.com",
|
|
118
135
|
rpcUrls: ["https://rpc.ankr.com/bsc"],
|
|
119
|
-
get serverRpcUrl() {
|
|
120
|
-
return process.env?.BSC_RPC_URL || this.rpcUrls[0];
|
|
121
|
-
},
|
|
122
|
-
usdcAddress: "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
|
|
123
|
-
balanceResolverAddress: "0xb808cff38706e267067b0af427726aa099f69f89",
|
|
124
136
|
nativeCurrency: {
|
|
125
137
|
name: "Binance Coin",
|
|
126
138
|
symbol: "BNB",
|
|
@@ -131,17 +143,18 @@ export const networks: Network[] = [
|
|
|
131
143
|
{
|
|
132
144
|
name: "Gnosis",
|
|
133
145
|
debankName: "xdai",
|
|
134
|
-
|
|
146
|
+
zerionName: "xdai",
|
|
147
|
+
color: "#04795C",
|
|
135
148
|
chainId: 100,
|
|
149
|
+
balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
|
|
150
|
+
explorerUrl: "https://gnosisscan.io",
|
|
151
|
+
usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
|
|
152
|
+
get serverRpcUrl() {
|
|
153
|
+
return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0];
|
|
154
|
+
},
|
|
136
155
|
params: {
|
|
137
156
|
chainName: "Gnosis Safe",
|
|
138
|
-
explorerUrl: "https://gnosisscan.io",
|
|
139
157
|
rpcUrls: ["https://rpc.ankr.com/gnosis"],
|
|
140
|
-
get serverRpcUrl() {
|
|
141
|
-
return process.env?.GNOSIS_RPC_URL || this.rpcUrls[0];
|
|
142
|
-
},
|
|
143
|
-
balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
|
|
144
|
-
usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
|
|
145
158
|
nativeCurrency: {
|
|
146
159
|
name: "xdaistable",
|
|
147
160
|
symbol: "xDAI",
|
|
@@ -152,15 +165,17 @@ export const networks: Network[] = [
|
|
|
152
165
|
{
|
|
153
166
|
name: "Polygon zkEVM",
|
|
154
167
|
chainId: 1101,
|
|
168
|
+
color: "#8544f6",
|
|
169
|
+
explorerUrl: "https://zkevm.polygonscan.com",
|
|
170
|
+
balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
|
|
171
|
+
usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
|
|
172
|
+
get serverRpcUrl() {
|
|
173
|
+
return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
|
|
174
|
+
},
|
|
155
175
|
params: {
|
|
156
176
|
chainName: "polygon zkEVM",
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
get serverRpcUrl() {
|
|
160
|
-
return process.env?.POLYGON_ZKEVM_RPC_URL || this.rpcUrls[0];
|
|
161
|
-
},
|
|
162
|
-
balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
|
|
163
|
-
usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
|
|
177
|
+
rpcUrls: ["https://zkevm-rpc.com"],
|
|
178
|
+
|
|
164
179
|
nativeCurrency: {
|
|
165
180
|
name: "Ethereum",
|
|
166
181
|
symbol: "ETH",
|
|
@@ -168,10 +183,58 @@ export const networks: Network[] = [
|
|
|
168
183
|
},
|
|
169
184
|
},
|
|
170
185
|
},
|
|
186
|
+
{
|
|
187
|
+
name: "Aurora",
|
|
188
|
+
chainId: 1313161554,
|
|
189
|
+
zerionName: "aurora",
|
|
190
|
+
color: "#78d64b",
|
|
191
|
+
explorerUrl: "https://explorer.mainnet.aurora.dev",
|
|
192
|
+
get serverRpcUrl() {
|
|
193
|
+
return process.env?.AURORA_RPC_URL || this.params.rpcUrls[0];
|
|
194
|
+
},
|
|
195
|
+
usdcAddress: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802",
|
|
196
|
+
balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
|
|
197
|
+
params: {
|
|
198
|
+
rpcUrls: ["https://mainnet.aurora.dev"],
|
|
199
|
+
chainName: "Aurora",
|
|
200
|
+
nativeCurrency: {
|
|
201
|
+
decimals: 18,
|
|
202
|
+
name: "Aurora ETH",
|
|
203
|
+
symbol: "AETH",
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
name: "Fantom",
|
|
209
|
+
chainId: 250,
|
|
210
|
+
zerionName: "fantom",
|
|
211
|
+
explorerUrl: "https://ftmscan.com",
|
|
212
|
+
ankrName: "fantom",
|
|
213
|
+
color: "#1969ff",
|
|
214
|
+
get serverRpcUrl() {
|
|
215
|
+
return process.env?.FANTOM_RPC_URL || this.params.rpcUrls[0];
|
|
216
|
+
},
|
|
217
|
+
usdcAddress: "0x04068da6c83afcfa0e13ba15a6696662335d5b75",
|
|
218
|
+
balanceResolverAddress: "0x929376c77a2fb8152375a089a4fccf84ff481479",
|
|
219
|
+
params: {
|
|
220
|
+
rpcUrls: ["https://rpc.ankr.com/fantom"],
|
|
221
|
+
chainName: "Fantom",
|
|
222
|
+
nativeCurrency: {
|
|
223
|
+
name: "Fantom",
|
|
224
|
+
symbol: "FTM",
|
|
225
|
+
decimals: 18,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
171
229
|
{
|
|
172
230
|
name: AVO_PROD_CHAIN_NAME,
|
|
173
231
|
chainId: AVO_PROD_CHAIN_ID,
|
|
174
232
|
isAvocado: true,
|
|
233
|
+
balanceResolverAddress: "",
|
|
234
|
+
color: "#16A34A",
|
|
235
|
+
usdcAddress: "",
|
|
236
|
+
serverRpcUrl: AVO_PROD_RPC_URL,
|
|
237
|
+
explorerUrl: AVO_PROD_EXPLORER_URL,
|
|
175
238
|
params: {
|
|
176
239
|
chainName: AVO_PROD_CHAIN_NAME,
|
|
177
240
|
nativeCurrency: {
|
|
@@ -180,17 +243,18 @@ export const networks: Network[] = [
|
|
|
180
243
|
decimals: 18,
|
|
181
244
|
},
|
|
182
245
|
iconUrls: ["https://avocado.instadapp.io/logo.svg"],
|
|
183
|
-
balanceResolverAddress: "",
|
|
184
|
-
usdcAddress: "",
|
|
185
|
-
serverRpcUrl: AVO_PROD_RPC_URL,
|
|
186
246
|
rpcUrls: [AVO_PROD_RPC_URL],
|
|
187
|
-
explorerUrl: AVO_PROD_EXPLORER_URL,
|
|
188
247
|
},
|
|
189
248
|
},
|
|
190
249
|
{
|
|
191
250
|
name: AVO_STAGING_CHAIN_NAME,
|
|
192
251
|
chainId: AVO_STAGING_CHAIN_ID,
|
|
252
|
+
serverRpcUrl: AVO_STAGING_RPC_URL,
|
|
253
|
+
color: "#16A34A",
|
|
254
|
+
explorerUrl: AVO_STAGING_EXPLORER_URL,
|
|
193
255
|
isAvocado: true,
|
|
256
|
+
balanceResolverAddress: "",
|
|
257
|
+
usdcAddress: "",
|
|
194
258
|
params: {
|
|
195
259
|
chainName: AVO_STAGING_CHAIN_NAME,
|
|
196
260
|
nativeCurrency: {
|
|
@@ -198,16 +262,27 @@ export const networks: Network[] = [
|
|
|
198
262
|
symbol: "USDC",
|
|
199
263
|
decimals: 18,
|
|
200
264
|
},
|
|
201
|
-
serverRpcUrl: AVO_STAGING_RPC_URL,
|
|
202
|
-
balanceResolverAddress: "",
|
|
203
|
-
usdcAddress: "",
|
|
204
265
|
iconUrls: ["https://avocado.instadapp.io/logo.svg"],
|
|
205
266
|
rpcUrls: [AVO_STAGING_RPC_URL],
|
|
206
|
-
explorerUrl: AVO_STAGING_EXPLORER_URL,
|
|
207
267
|
},
|
|
208
268
|
},
|
|
209
269
|
];
|
|
210
270
|
|
|
271
|
+
export const chainUsdcAddresses = [
|
|
272
|
+
{ chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' },
|
|
273
|
+
{ chainId: 10, address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607' },
|
|
274
|
+
{ chainId: 56, address: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' },
|
|
275
|
+
{ chainId: 100, address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83' },
|
|
276
|
+
{ chainId: 137, address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' },
|
|
277
|
+
{ chainId: 250, address: '0x04068da6c83afcfa0e13ba15a6696662335d5b75' },
|
|
278
|
+
{ chainId: 42161, address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' },
|
|
279
|
+
{ chainId: 42161, address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831' },
|
|
280
|
+
{ chainId: 43114, address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e' },
|
|
281
|
+
{ chainId: 43114, address: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' },
|
|
282
|
+
{ chainId: 1101, address: '0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035' },
|
|
283
|
+
{ chainId: 1313161554, address: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802' },
|
|
284
|
+
];
|
|
285
|
+
|
|
211
286
|
export const getNetworkByChainId = (
|
|
212
287
|
chainId: ChainId | number | string
|
|
213
288
|
): Network => {
|
|
@@ -235,14 +310,17 @@ export const RPCMap = networks.reduce((acc, network) => {
|
|
|
235
310
|
|
|
236
311
|
export const networkIds = networks.map((network) => network.chainId);
|
|
237
312
|
|
|
238
|
-
const rpcInstances: Record<string, ethers.providers.
|
|
239
|
-
const serverRpcInstances: Record<
|
|
313
|
+
const rpcInstances: Record<string, ethers.providers.StaticJsonRpcProvider> = {};
|
|
314
|
+
const serverRpcInstances: Record<
|
|
315
|
+
string,
|
|
316
|
+
ethers.providers.StaticJsonRpcProvider
|
|
317
|
+
> = {};
|
|
240
318
|
|
|
241
319
|
export const getServerRpcProvider = (chainId: number | string) => {
|
|
242
320
|
if (!rpcInstances[chainId]) {
|
|
243
321
|
const network = networks.find((n) => n.chainId == chainId);
|
|
244
|
-
serverRpcInstances[chainId] = new ethers.providers.
|
|
245
|
-
network?.
|
|
322
|
+
serverRpcInstances[chainId] = new ethers.providers.StaticJsonRpcProvider(
|
|
323
|
+
network?.serverRpcUrl
|
|
246
324
|
);
|
|
247
325
|
}
|
|
248
326
|
|
|
@@ -251,7 +329,7 @@ export const getServerRpcProvider = (chainId: number | string) => {
|
|
|
251
329
|
|
|
252
330
|
export const getRpcProvider = (chainId: number | string) => {
|
|
253
331
|
if (!rpcInstances[chainId]) {
|
|
254
|
-
rpcInstances[chainId] = new ethers.providers.
|
|
332
|
+
rpcInstances[chainId] = new ethers.providers.StaticJsonRpcProvider(
|
|
255
333
|
getRpcURLByChainId(Number(chainId))
|
|
256
334
|
);
|
|
257
335
|
}
|
|
@@ -264,5 +342,5 @@ export const getExplorerUrl = (
|
|
|
264
342
|
suffix: `/${string}` = "/"
|
|
265
343
|
) => {
|
|
266
344
|
const network = getNetworkByChainId(chainId);
|
|
267
|
-
return `${network.
|
|
345
|
+
return `${network.explorerUrl}${suffix}`;
|
|
268
346
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const fetchTokenByAddress = async (
|
|
2
|
+
address: string,
|
|
3
|
+
chainId: string | number
|
|
4
|
+
) => {
|
|
5
|
+
if (!address || !chainId) return null;
|
|
6
|
+
const [token] = (await $fetch(`${blockQueryURL}/${chainId}/tokens`, {
|
|
7
|
+
params: {
|
|
8
|
+
sparkline: false,
|
|
9
|
+
"addresses[]": [address],
|
|
10
|
+
},
|
|
11
|
+
})) as ITokenPrice[];
|
|
12
|
+
|
|
13
|
+
return token;
|
|
14
|
+
};
|
package/utils/utils.d.ts
CHANGED
|
@@ -1,88 +1,131 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
declare global {
|
|
2
|
+
type ChainId =
|
|
3
|
+
| 1
|
|
4
|
+
| 137
|
|
5
|
+
| 42161
|
|
6
|
+
| 10
|
|
7
|
+
| 56
|
|
8
|
+
| 43114
|
|
9
|
+
| 100
|
|
10
|
+
| 1101
|
|
11
|
+
| 250
|
|
12
|
+
| 634
|
|
13
|
+
| 1313161554
|
|
14
|
+
| 63400;
|
|
15
|
+
|
|
16
|
+
type ISlackMessageType = "danger" | "error" | "success" | "banner";
|
|
17
|
+
|
|
18
|
+
type MetadataTypes = keyof typeof MetadataEnums;
|
|
19
|
+
|
|
20
|
+
type PayloadFunction = (data: any, type: MetadataTypes) => any;
|
|
21
|
+
|
|
22
|
+
type IPayload = Record<MetadataTypes, PayloadFunction>;
|
|
23
|
+
|
|
24
|
+
interface Network {
|
|
25
|
+
name: string;
|
|
26
|
+
debankName?: string;
|
|
27
|
+
ankrName?: string;
|
|
28
|
+
zerionName?: string;
|
|
29
|
+
chainId: ChainId;
|
|
30
|
+
color: string;
|
|
31
|
+
isAvocado?: boolean;
|
|
14
32
|
serverRpcUrl: string | undefined;
|
|
15
33
|
balanceResolverAddress?: string;
|
|
16
34
|
usdcAddress: string;
|
|
17
35
|
explorerUrl: string;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
36
|
+
params: {
|
|
37
|
+
chainName?: string;
|
|
38
|
+
iconUrls?: string[];
|
|
39
|
+
rpcUrls: string[];
|
|
40
|
+
nativeCurrency?: {
|
|
41
|
+
name: string;
|
|
42
|
+
symbol: string;
|
|
43
|
+
decimals: number;
|
|
44
|
+
};
|
|
23
45
|
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
type SignMetadataProps = {
|
|
49
|
+
token: string;
|
|
50
|
+
spender: string;
|
|
51
|
+
amount: string;
|
|
52
|
+
expiration: string;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
type DappMetadataProps = {
|
|
56
|
+
name: string;
|
|
57
|
+
url: string;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
type SendMetadataProps = {
|
|
61
|
+
token: string;
|
|
62
|
+
amount: string;
|
|
63
|
+
receiver: string;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
type CrossSendMetadataProps = {
|
|
67
|
+
fromToken: string;
|
|
68
|
+
toToken: string;
|
|
69
|
+
toChainId: string;
|
|
70
|
+
amount: string;
|
|
71
|
+
receiver: string;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
type AuthMetadataProps = {
|
|
75
|
+
address: string;
|
|
76
|
+
chainId: string;
|
|
77
|
+
remove: boolean;
|
|
24
78
|
};
|
|
79
|
+
|
|
80
|
+
type UpgradeMetadataProps = {
|
|
81
|
+
version: string;
|
|
82
|
+
walletImpl: string;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
type TopupMetadataProps = {
|
|
86
|
+
amount: string;
|
|
87
|
+
token: string;
|
|
88
|
+
onBehalf: string;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
type BridgeMetadataProps = {
|
|
92
|
+
amount: string;
|
|
93
|
+
receiver: string;
|
|
94
|
+
fromToken: string;
|
|
95
|
+
toToken: string;
|
|
96
|
+
toChainId: string;
|
|
97
|
+
bridgeFee: string;
|
|
98
|
+
nativeToken: string;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
type SwapMetadataProps = {
|
|
102
|
+
sellToken: string;
|
|
103
|
+
buyToken: string;
|
|
104
|
+
sellAmount: string;
|
|
105
|
+
buyAmount: string;
|
|
106
|
+
receiver: string;
|
|
107
|
+
protocol?: string;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
type MetadataProps = {
|
|
111
|
+
type: MetadataTypes,
|
|
112
|
+
encodedData: string;
|
|
113
|
+
version?: string;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
interface ITokenPrice {
|
|
117
|
+
address: string;
|
|
118
|
+
chain_id: string;
|
|
119
|
+
name: string;
|
|
120
|
+
symbol: string;
|
|
121
|
+
decimals: number;
|
|
122
|
+
logo_url: string;
|
|
123
|
+
price: string;
|
|
124
|
+
coingecko_id: string;
|
|
125
|
+
sparkline_price_7d: number[];
|
|
126
|
+
}
|
|
127
|
+
|
|
25
128
|
}
|
|
26
129
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
spender: string;
|
|
30
|
-
amount: string;
|
|
31
|
-
expiration: string;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
type DappMetadataProps = {
|
|
35
|
-
name: string;
|
|
36
|
-
url: string;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
type SendMetadataProps = {
|
|
40
|
-
token: string;
|
|
41
|
-
amount: string;
|
|
42
|
-
receiver: string;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
type UpgradeMetadataProps = {
|
|
46
|
-
version: string;
|
|
47
|
-
walletImpl: string;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
type TopupMetadataProps = {
|
|
51
|
-
amount: string;
|
|
52
|
-
token: string;
|
|
53
|
-
onBehalf: string;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
type BridgeMetadataProps = {
|
|
57
|
-
amount: string;
|
|
58
|
-
receiver: string;
|
|
59
|
-
fromToken: string;
|
|
60
|
-
toToken: string;
|
|
61
|
-
toChainId: string;
|
|
62
|
-
bridgeFee: string;
|
|
63
|
-
nativeToken: string;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
type SwapMetadataProps = {
|
|
67
|
-
sellToken: string;
|
|
68
|
-
buyToken: string;
|
|
69
|
-
sellAmount: string;
|
|
70
|
-
buyAmount: string;
|
|
71
|
-
receiver: string;
|
|
72
|
-
protocol?: string;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
type MetadataProps = {
|
|
76
|
-
type:
|
|
77
|
-
| "transfer"
|
|
78
|
-
| "bridge"
|
|
79
|
-
| "swap"
|
|
80
|
-
| "multi"
|
|
81
|
-
| "gas-topup"
|
|
82
|
-
| "upgrade"
|
|
83
|
-
| "dapp"
|
|
84
|
-
| "deploy"
|
|
85
|
-
| "permit2";
|
|
86
|
-
encodedData: string;
|
|
87
|
-
version?: string;
|
|
88
|
-
};
|
|
130
|
+
export { }
|
|
131
|
+
|
package/utils/index.ts
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { BigNumber } from "bignumber.js";
|
|
2
|
-
import { BigNumber as BN } from "ethers";
|
|
3
|
-
|
|
4
|
-
export function shortenHash(hash: string, length: number = 4) {
|
|
5
|
-
if (!hash) return;
|
|
6
|
-
if (hash.length < 12) return hash;
|
|
7
|
-
const beginningChars = hash.startsWith("0x") ? length + 2 : length;
|
|
8
|
-
const shortened =
|
|
9
|
-
hash.substr(0, beginningChars) + "..." + hash.substr(-length);
|
|
10
|
-
return shortened;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const toBN = (value: BigNumber.Value | BN) =>
|
|
14
|
-
new BigNumber(BN.isBigNumber(value) ? value.toString() : value);
|
|
15
|
-
export const isZero = (value: BigNumber.Value | BN) => toBN(value).isZero();
|
|
16
|
-
export const times = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
17
|
-
toBN(a).times(toBN(b));
|
|
18
|
-
export const minus = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
19
|
-
toBN(a).minus(toBN(b));
|
|
20
|
-
export const plus = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
21
|
-
toBN(a).plus(toBN(b));
|
|
22
|
-
export const lte = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
23
|
-
toBN(a).lte(toBN(b));
|
|
24
|
-
export const gte = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
25
|
-
toBN(a).gte(toBN(b));
|
|
26
|
-
export const div = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
27
|
-
toBN(a).div(toBN(b));
|
|
28
|
-
export const lt = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
29
|
-
toBN(a).lt(toBN(b));
|
|
30
|
-
export const gt = (a: BigNumber.Value | BN, b: BigNumber.Value | BN) =>
|
|
31
|
-
toBN(a).gt(toBN(b));
|
|
32
|
-
export const ensureValue = (value: any) => {
|
|
33
|
-
if (!value) return toBN("0");
|
|
34
|
-
if (toBN(value).isNaN()) return toBN("0");
|
|
35
|
-
|
|
36
|
-
return toBN(value);
|
|
37
|
-
};
|
|
38
|
-
export const max = (...args: BigNumber.Value[]) => {
|
|
39
|
-
return BigNumber.max(...args);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export function onImageError(this: HTMLImageElement) {
|
|
43
|
-
const parentElement = this.parentElement;
|
|
44
|
-
this.onerror = null;
|
|
45
|
-
this.remove();
|
|
46
|
-
|
|
47
|
-
if (parentElement) {
|
|
48
|
-
parentElement.classList.add("bg-gray-300");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const locale = "en-US";
|
|
53
|
-
|
|
54
|
-
export function formatUsd(value: any, fractionDigits = 2) {
|
|
55
|
-
const formatter = new Intl.NumberFormat(locale, {
|
|
56
|
-
style: "currency",
|
|
57
|
-
currency: "USD",
|
|
58
|
-
minimumFractionDigits: fractionDigits,
|
|
59
|
-
maximumFractionDigits: fractionDigits,
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
return formatter.format(value);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function cloneDeep<T>(value: T): T {
|
|
66
|
-
return JSON.parse(JSON.stringify(value));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function signedNumber(numb: string | number) {
|
|
70
|
-
return new Intl.NumberFormat("en-US", {
|
|
71
|
-
signDisplay: "exceptZero",
|
|
72
|
-
}).format(toBN(numb).toNumber());
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export function formatDecimal(value: string | number, decimalPlaces = 5) {
|
|
76
|
-
if (!value) {
|
|
77
|
-
value = "0";
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
return toBN(value).decimalPlaces(decimalPlaces).toFormat();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export function filterArray(array: any, filters: any) {
|
|
84
|
-
const filterKeys = Object.keys(filters);
|
|
85
|
-
return array.filter((item: any) => {
|
|
86
|
-
// validates all filter criteria
|
|
87
|
-
return filterKeys.every((key) => {
|
|
88
|
-
// ignores non-function predicates
|
|
89
|
-
if (typeof filters[key] !== "function") return true;
|
|
90
|
-
return filters[key](item[key], item);
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
}
|