@instadapp/avocado-base 0.0.0-dev.02731e3 → 0.0.0-dev.0841bfc

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 (77) hide show
  1. package/abi/forwarder.json +1253 -149
  2. package/app.vue +7 -0
  3. package/assets/images/icons/arrow-left.svg +5 -0
  4. package/assets/images/icons/arrow-right.svg +5 -0
  5. package/assets/images/icons/avocado.svg +4 -0
  6. package/assets/images/icons/bridge-2.svg +3 -0
  7. package/assets/images/icons/bridge.svg +7 -0
  8. package/assets/images/icons/calendar.svg +8 -0
  9. package/assets/images/icons/change-threshold.svg +4 -0
  10. package/assets/images/icons/check-circle.svg +4 -0
  11. package/assets/images/icons/chevron-down.svg +4 -0
  12. package/assets/images/icons/clipboard.svg +7 -0
  13. package/assets/images/icons/clock-circle.svg +5 -0
  14. package/assets/images/icons/copy.svg +5 -0
  15. package/assets/images/icons/cross-transfer.svg +7 -0
  16. package/assets/images/icons/dapp.svg +4 -0
  17. package/assets/images/icons/deploy.svg +12 -0
  18. package/assets/images/icons/error-circle.svg +6 -0
  19. package/assets/images/icons/exclamation-circle.svg +13 -0
  20. package/assets/images/icons/exclamation-octagon.svg +13 -0
  21. package/assets/images/icons/exclamation-triangle.svg +5 -0
  22. package/assets/images/icons/external-link.svg +6 -0
  23. package/assets/images/icons/eye.svg +4 -0
  24. package/assets/images/icons/flowers.svg +8 -0
  25. package/assets/images/icons/gas-emoji.svg +193 -0
  26. package/assets/images/icons/gas.svg +14 -0
  27. package/assets/images/icons/gift.svg +153 -0
  28. package/assets/images/icons/globe.svg +110 -0
  29. package/assets/images/icons/hamburger.svg +6 -0
  30. package/assets/images/icons/instadapp-pro.svg +4 -0
  31. package/assets/images/icons/logout.svg +3 -0
  32. package/assets/images/icons/moon.svg +3 -0
  33. package/assets/images/icons/multi-send.svg +7 -0
  34. package/assets/images/icons/network.svg +13 -0
  35. package/assets/images/icons/options.svg +5 -0
  36. package/assets/images/icons/permit-sign.svg +11 -0
  37. package/assets/images/icons/plus-circle.svg +6 -0
  38. package/assets/images/icons/plus.svg +5 -0
  39. package/assets/images/icons/power-off-bg.svg +24 -0
  40. package/assets/images/icons/power-off.svg +19 -0
  41. package/assets/images/icons/power-on.svg +19 -0
  42. package/assets/images/icons/qr.svg +20 -0
  43. package/assets/images/icons/question-circle.svg +14 -0
  44. package/assets/images/icons/refresh.svg +6 -0
  45. package/assets/images/icons/reject-proposal.svg +6 -0
  46. package/assets/images/icons/search.svg +12 -0
  47. package/assets/images/icons/sun.svg +3 -0
  48. package/assets/images/icons/transfer.svg +5 -0
  49. package/assets/images/icons/trash-2.svg +8 -0
  50. package/assets/images/icons/upgrade.svg +4 -0
  51. package/assets/images/icons/wave.svg +214 -0
  52. package/assets/images/icons/x.svg +5 -0
  53. package/components/ActionLogo.vue +38 -0
  54. package/components/ActionMetadata.vue +72 -0
  55. package/components/AuthorityAvatar.vue +26 -0
  56. package/components/ChainLogo.vue +5 -563
  57. package/components/CopyClipboard.vue +64 -0
  58. package/components/metadata/Bridge.vue +59 -0
  59. package/components/metadata/CrossTransfer.vue +71 -0
  60. package/components/metadata/GasTopup.vue +39 -0
  61. package/components/metadata/Permit2.vue +42 -0
  62. package/components/metadata/Signers.vue +45 -0
  63. package/components/metadata/Swap.vue +74 -0
  64. package/components/metadata/Transfer.vue +50 -0
  65. package/components.d.ts +13 -0
  66. package/contracts/Forwarder.ts +856 -2
  67. package/contracts/factories/Forwarder__factory.ts +816 -16
  68. package/nuxt.config.ts +17 -1
  69. package/package.json +9 -4
  70. package/utils/avocado.ts +2 -0
  71. package/utils/bignumber.ts +20 -0
  72. package/utils/formatter.ts +1 -1
  73. package/utils/helper.ts +19 -0
  74. package/utils/metadata.ts +314 -148
  75. package/utils/network.ts +136 -90
  76. package/utils/services.ts +21 -0
  77. package/utils/utils.d.ts +128 -107
package/utils/network.ts CHANGED
@@ -1,30 +1,18 @@
1
1
  import { ethers } from "ethers";
2
+ import {
3
+ AVO_PROD_CHAIN_NAME,
4
+ AVO_PROD_CHAIN_ID,
5
+ AVO_PROD_RPC_URL,
6
+ AVO_PROD_EXPLORER_URL,
7
+ AVO_STAGING_CHAIN_NAME,
8
+ AVO_STAGING_CHAIN_ID,
9
+ AVO_STAGING_RPC_URL,
10
+ AVO_STAGING_EXPLORER_URL,
11
+ } from './avocado'
2
12
 
3
13
  export const bridgeDisabledNetworks = [1101];
4
14
 
5
15
  export const networks: Network[] = [
6
- {
7
- name: "Mainnet",
8
- debankName: "eth",
9
- ankrName: "eth",
10
- zerionName: "ethereum",
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",
19
- params: {
20
- rpcUrls: ["https://rpc.ankr.com/eth"],
21
- nativeCurrency: {
22
- name: "Ethereum",
23
- symbol: "ETH",
24
- decimals: 18,
25
- },
26
- },
27
- },
28
16
  {
29
17
  name: "Polygon",
30
18
  debankName: "matic",
@@ -71,6 +59,48 @@ export const networks: Network[] = [
71
59
  rpcUrls: ["https://arb1.arbitrum.io/rpc"],
72
60
  },
73
61
  },
62
+ {
63
+ name: "Ethereum",
64
+ debankName: "eth",
65
+ ankrName: "eth",
66
+ zerionName: "ethereum",
67
+ chainId: 1,
68
+ explorerUrl: "https://etherscan.io",
69
+ color: "#5D5FEF",
70
+ get serverRpcUrl() {
71
+ return process.env?.MAINNET_RPC_URL || this.params.rpcUrls[0];
72
+ },
73
+ balanceResolverAddress: "0x5b7D61b389D12e1f5873d0cCEe7E675915AB5F43",
74
+ usdcAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
75
+ params: {
76
+ rpcUrls: ["https://rpc.ankr.com/eth"],
77
+ nativeCurrency: {
78
+ name: "Ethereum",
79
+ symbol: "ETH",
80
+ decimals: 18,
81
+ },
82
+ },
83
+ },
84
+ {
85
+ name: 'Base',
86
+ chainId: 8453,
87
+ color: '#1E2024',
88
+ explorerUrl: 'https://basescan.org',
89
+ get serverRpcUrl() {
90
+ return process.env?.BASE_RPC_URL || this.params.rpcUrls[0];
91
+ },
92
+ usdcAddress: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA',
93
+ balanceResolverAddress: '0x23c8EAb8a4373dD16b0947Ebe8bf76Ff7A49d13C',
94
+ params: {
95
+ rpcUrls: ['https://rpc.ankr.com/base'],
96
+ chainName: "Base",
97
+ nativeCurrency: {
98
+ name: "Ethereum",
99
+ symbol: "ETH",
100
+ decimals: 18,
101
+ },
102
+ }
103
+ },
74
104
  {
75
105
  name: "Optimism",
76
106
  debankName: "op",
@@ -95,26 +125,23 @@ export const networks: Network[] = [
95
125
  },
96
126
  },
97
127
  {
98
- name: "Avalanche",
99
- debankName: "avax",
100
- ankrName: "avalanche",
101
- zerionName: "avalanche",
102
- color: "#EB5757",
103
- chainId: 43114,
104
- usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
105
- balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
106
- explorerUrl: "https://snowtrace.io",
128
+ name: "Polygon zkEVM",
129
+ chainId: 1101,
130
+ color: "#8544f6",
131
+ explorerUrl: "https://zkevm.polygonscan.com",
132
+ balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
133
+ usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
107
134
  get serverRpcUrl() {
108
- return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
135
+ return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
109
136
  },
110
137
  params: {
111
- chainName: "Avalanche Network",
138
+ chainName: "polygon zkEVM",
139
+ rpcUrls: ["https://zkevm-rpc.com"],
112
140
  nativeCurrency: {
113
- name: "Avalanche",
114
- symbol: "AVAX",
141
+ name: "Ethereum",
142
+ symbol: "ETH",
115
143
  decimals: 18,
116
144
  },
117
- rpcUrls: ["https://api.avax.network/ext/bc/C/rpc"],
118
145
  },
119
146
  },
120
147
  {
@@ -141,68 +168,28 @@ export const networks: Network[] = [
141
168
  },
142
169
  },
143
170
  {
144
- name: "Gnosis",
145
- debankName: "xdai",
146
- zerionName: "xdai",
147
- color: "#04795C",
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
- },
155
- params: {
156
- chainName: "Gnosis Safe",
157
- rpcUrls: ["https://rpc.ankr.com/gnosis"],
158
- nativeCurrency: {
159
- name: "xdaistable",
160
- symbol: "xDAI",
161
- decimals: 18,
162
- },
163
- },
164
- },
165
- {
166
- name: "Polygon zkEVM",
167
- chainId: 1101,
168
- color: "#8544f6",
169
- explorerUrl: "https://zkevm.polygonscan.com",
170
- balanceResolverAddress: "0x48D1Fa5Ee6691a1E0B45d2B515650997BEA27a01",
171
- usdcAddress: "0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035",
171
+ name: "Avalanche",
172
+ debankName: "avax",
173
+ ankrName: "avalanche",
174
+ zerionName: "avalanche",
175
+ color: "#EB5757",
176
+ chainId: 43114,
177
+ usdcAddress: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e",
178
+ balanceResolverAddress: "0x63009f31D054E0ac9F321Cf0D642375236A4Bf1E",
179
+ explorerUrl: "https://snowtrace.io",
172
180
  get serverRpcUrl() {
173
- return process.env?.POLYGON_ZKEVM_RPC_URL || this.params.rpcUrls[0];
181
+ return process.env?.AVALANCHE_RPC_URL || this.params.rpcUrls[0];
174
182
  },
175
183
  params: {
176
- chainName: "polygon zkEVM",
177
- rpcUrls: ["https://rpc.ankr.com/polygon_zkevm"],
178
-
184
+ chainName: "Avalanche Network",
179
185
  nativeCurrency: {
180
- name: "Ethereum",
181
- symbol: "ETH",
186
+ name: "Avalanche",
187
+ symbol: "AVAX",
182
188
  decimals: 18,
183
189
  },
190
+ rpcUrls: ["https://rpc.ankr.com/avalanche"],
184
191
  },
185
192
  },
186
- // {
187
- // name: "Aurora",
188
- // chainId: 1313161554,
189
- // zerionName: "aurora",
190
- // explorerUrl: "https://explorer.mainnet.aurora.dev",
191
- // get serverRpcUrl() {
192
- // return process.env?.AURORA_RPC_URL || this.params.rpcUrls[0];
193
- // },
194
- // usdcAddress: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802",
195
- // balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
196
- // params: {
197
- // rpcUrls: ["https://mainnet.aurora.dev"],
198
- // chainName: "Aurora",
199
- // nativeCurrency: {
200
- // decimals: 18,
201
- // name: "Aurora ETH",
202
- // symbol: "AETH",
203
- // },
204
- // },
205
- // },
206
193
  {
207
194
  name: "Fantom",
208
195
  chainId: 250,
@@ -225,6 +212,49 @@ export const networks: Network[] = [
225
212
  },
226
213
  },
227
214
  },
215
+ {
216
+ name: "Gnosis",
217
+ debankName: "xdai",
218
+ zerionName: "xdai",
219
+ color: "#04795C",
220
+ chainId: 100,
221
+ balanceResolverAddress: "0xfaa244e276b1597f663975ed007ee4ff70d27849",
222
+ explorerUrl: "https://gnosisscan.io",
223
+ usdcAddress: "0xddafbb505ad214d7b80b1f830fccc89b60fb7a83",
224
+ get serverRpcUrl() {
225
+ return process.env?.GNOSIS_RPC_URL || this.params.rpcUrls[0];
226
+ },
227
+ params: {
228
+ chainName: "Gnosis Safe",
229
+ rpcUrls: ["https://rpc.ankr.com/gnosis"],
230
+ nativeCurrency: {
231
+ name: "xdaistable",
232
+ symbol: "xDAI",
233
+ decimals: 18,
234
+ },
235
+ },
236
+ },
237
+ {
238
+ name: "Aurora",
239
+ chainId: 1313161554,
240
+ zerionName: "aurora",
241
+ color: "#78d64b",
242
+ explorerUrl: "https://explorer.mainnet.aurora.dev",
243
+ get serverRpcUrl() {
244
+ return process.env?.AURORA_RPC_URL || this.params.rpcUrls[0];
245
+ },
246
+ usdcAddress: "0xB12BFcA5A55806AaF64E99521918A4bf0fC40802",
247
+ balanceResolverAddress: "0xdF19Da523DA64bBE82eE0E4DFf00d676A8386474",
248
+ params: {
249
+ rpcUrls: ["https://mainnet.aurora.dev"],
250
+ chainName: "Aurora",
251
+ nativeCurrency: {
252
+ decimals: 18,
253
+ name: "Aurora ETH",
254
+ symbol: "AETH",
255
+ },
256
+ },
257
+ },
228
258
  {
229
259
  name: AVO_PROD_CHAIN_NAME,
230
260
  chainId: AVO_PROD_CHAIN_ID,
@@ -267,6 +297,22 @@ export const networks: Network[] = [
267
297
  },
268
298
  ];
269
299
 
300
+ export const chainUsdcAddresses = [
301
+ { chainId: 1, address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' },
302
+ { chainId: 10, address: '0x7f5c764cbc14f9669b88837ca1490cca17c31607' },
303
+ { chainId: 56, address: '0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d' },
304
+ { chainId: 100, address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83' },
305
+ { chainId: 137, address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174' },
306
+ { chainId: 250, address: '0x04068da6c83afcfa0e13ba15a6696662335d5b75' },
307
+ { chainId: 42161, address: '0xff970a61a04b1ca14834a43f5de4533ebddb5cc8' },
308
+ { chainId: 42161, address: '0xaf88d065e77c8cc2239327c5edb3a432268e5831' },
309
+ { chainId: 43114, address: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e' },
310
+ { chainId: 43114, address: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664' },
311
+ { chainId: 1101, address: '0xa8ce8aee21bc2a48a5ef670afcc9274c7bbbc035' },
312
+ { chainId: 1313161554, address: '0xB12BFcA5A55806AaF64E99521918A4bf0fC40802' },
313
+ { chainId: 8453, address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA'}
314
+ ];
315
+
270
316
  export const getNetworkByChainId = (
271
317
  chainId: ChainId | number | string
272
318
  ): Network => {
@@ -0,0 +1,21 @@
1
+ export const fetchTokenByAddress = async (
2
+ address: string,
3
+ chainId: string | number,
4
+ tokens?: ITokenPrice[]
5
+ ) => {
6
+ if (!address || !chainId) return null;
7
+
8
+ if (tokens?.length) {
9
+ const token = tokens.find((token) => token.address?.toLocaleLowerCase() === address?.toLocaleLowerCase() && token.chain_id == chainId);
10
+ if (token) return token;
11
+ }
12
+
13
+ const [token] = (await $fetch(`${blockQueryURL}/${chainId}/tokens`, {
14
+ params: {
15
+ sparkline: false,
16
+ "addresses[]": [address],
17
+ },
18
+ })) as ITokenPrice[];
19
+
20
+ return token;
21
+ };
package/utils/utils.d.ts CHANGED
@@ -1,111 +1,132 @@
1
- type ChainId =
2
- | 1
3
- | 137
4
- | 42161
5
- | 10
6
- | 56
7
- | 43114
8
- | 100
9
- | 1101
10
- | 250
11
- | 634
12
- | 1313161554
13
- | 63400;
14
-
15
- type ISlackMessageType = "danger" | "error" | "success" | "banner";
16
-
17
- interface Network {
18
- name: string;
19
- debankName?: string;
20
- ankrName?: string;
21
- zerionName?: string;
22
- chainId: ChainId;
23
- color: string;
24
- isAvocado?: boolean;
25
- serverRpcUrl: string | undefined;
26
- balanceResolverAddress?: string;
27
- usdcAddress: string;
28
- explorerUrl: string;
29
- params: {
30
- chainName?: string;
31
- iconUrls?: string[];
32
- rpcUrls: string[];
33
- nativeCurrency?: {
34
- name: string;
35
- symbol: string;
36
- decimals: number;
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
+ | 8453
15
+ | 63400;
16
+
17
+ type ISlackMessageType = "danger" | "error" | "success" | "banner";
18
+
19
+ type MetadataTypes = keyof typeof MetadataEnums;
20
+
21
+ type PayloadFunction = (data: any, type: MetadataTypes) => any;
22
+
23
+ type IPayload = Record<MetadataTypes, PayloadFunction>;
24
+
25
+ interface Network {
26
+ name: string;
27
+ debankName?: string;
28
+ ankrName?: string;
29
+ zerionName?: string;
30
+ chainId: ChainId;
31
+ color: string;
32
+ isAvocado?: boolean;
33
+ serverRpcUrl: string | undefined;
34
+ balanceResolverAddress?: string;
35
+ usdcAddress: string;
36
+ explorerUrl: string;
37
+ params: {
38
+ chainName?: string;
39
+ iconUrls?: string[];
40
+ rpcUrls: string[];
41
+ nativeCurrency?: {
42
+ name: string;
43
+ symbol: string;
44
+ decimals: number;
45
+ };
37
46
  };
47
+ }
48
+
49
+ type SignMetadataProps = {
50
+ token: string;
51
+ spender: string;
52
+ amount: string;
53
+ expiration: string;
54
+ };
55
+
56
+ type DappMetadataProps = {
57
+ name: string;
58
+ url: string;
59
+ };
60
+
61
+ type SendMetadataProps = {
62
+ token: string;
63
+ amount: string;
64
+ receiver: string;
65
+ };
66
+
67
+ type CrossSendMetadataProps = {
68
+ fromToken: string;
69
+ toToken: string;
70
+ toChainId: string;
71
+ amount: string;
72
+ receiver: string;
73
+ };
74
+
75
+ type AuthMetadataProps = {
76
+ address: string;
77
+ chainId: string;
78
+ remove: boolean;
38
79
  };
80
+
81
+ type UpgradeMetadataProps = {
82
+ version: string;
83
+ walletImpl: string;
84
+ };
85
+
86
+ type TopupMetadataProps = {
87
+ amount: string;
88
+ token: string;
89
+ onBehalf: string;
90
+ };
91
+
92
+ type BridgeMetadataProps = {
93
+ amount: string;
94
+ receiver: string;
95
+ fromToken: string;
96
+ toToken: string;
97
+ toChainId: string;
98
+ bridgeFee: string;
99
+ nativeToken: string;
100
+ };
101
+
102
+ type SwapMetadataProps = {
103
+ sellToken: string;
104
+ buyToken: string;
105
+ sellAmount: string;
106
+ buyAmount: string;
107
+ receiver: string;
108
+ protocol?: string;
109
+ };
110
+
111
+ type MetadataProps = {
112
+ type: MetadataTypes,
113
+ encodedData: string;
114
+ version?: string;
115
+ };
116
+
117
+ interface ITokenPrice {
118
+ address: string;
119
+ chain_id: string;
120
+ name: string;
121
+ symbol: string;
122
+ decimals: number;
123
+ logo_url: string;
124
+ price: string;
125
+ coingecko_id: string;
126
+ sparkline_price_7d: number[];
127
+ }
128
+
39
129
  }
40
130
 
41
- type SignMetadataProps = {
42
- token: string;
43
- spender: string;
44
- amount: string;
45
- expiration: string;
46
- };
47
-
48
- type DappMetadataProps = {
49
- name: string;
50
- url: string;
51
- };
52
-
53
- type SendMetadataProps = {
54
- token: string;
55
- amount: string;
56
- receiver: string;
57
- };
58
-
59
- type CrossSendMetadataProps = {
60
- fromToken: string;
61
- toToken: string;
62
- toChainId: string;
63
- amount: string;
64
- receiver: string;
65
- };
66
-
67
- type UpgradeMetadataProps = {
68
- version: string;
69
- walletImpl: string;
70
- };
71
-
72
- type TopupMetadataProps = {
73
- amount: string;
74
- token: string;
75
- onBehalf: string;
76
- };
77
-
78
- type BridgeMetadataProps = {
79
- amount: string;
80
- receiver: string;
81
- fromToken: string;
82
- toToken: string;
83
- toChainId: string;
84
- bridgeFee: string;
85
- nativeToken: string;
86
- };
87
-
88
- type SwapMetadataProps = {
89
- sellToken: string;
90
- buyToken: string;
91
- sellAmount: string;
92
- buyAmount: string;
93
- receiver: string;
94
- protocol?: string;
95
- };
96
-
97
- type MetadataProps = {
98
- type:
99
- | "transfer"
100
- | "bridge"
101
- | "swap"
102
- | "multi"
103
- | "gas-topup"
104
- | "upgrade"
105
- | "dapp"
106
- | "deploy"
107
- | "permit2"
108
- | "cross-transfer";
109
- encodedData: string;
110
- version?: string;
111
- };
131
+ export { }
132
+