@instadapp/interop-x 0.0.0-dev.d71f27e → 0.0.0-dev.e33810b

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.
@@ -13,6 +13,12 @@ const _abi = [
13
13
  {
14
14
  anonymous: false,
15
15
  inputs: [
16
+ {
17
+ indexed: false,
18
+ internalType: "string",
19
+ name: "actionId",
20
+ type: "string",
21
+ },
16
22
  {
17
23
  indexed: true,
18
24
  internalType: "address",
@@ -102,6 +108,12 @@ const _abi = [
102
108
  {
103
109
  anonymous: false,
104
110
  inputs: [
111
+ {
112
+ indexed: false,
113
+ internalType: "string",
114
+ name: "actionId",
115
+ type: "string",
116
+ },
105
117
  {
106
118
  indexed: true,
107
119
  internalType: "address",
@@ -197,6 +209,12 @@ const _abi = [
197
209
  {
198
210
  anonymous: false,
199
211
  inputs: [
212
+ {
213
+ indexed: false,
214
+ internalType: "string",
215
+ name: "actionId",
216
+ type: "string",
217
+ },
200
218
  {
201
219
  indexed: true,
202
220
  internalType: "address",
@@ -280,6 +298,12 @@ const _abi = [
280
298
  {
281
299
  anonymous: false,
282
300
  inputs: [
301
+ {
302
+ indexed: false,
303
+ internalType: "string",
304
+ name: "actionId",
305
+ type: "string",
306
+ },
283
307
  {
284
308
  indexed: true,
285
309
  internalType: "address",
@@ -367,20 +391,12 @@ const _abi = [
367
391
  type: "event",
368
392
  },
369
393
  {
370
- inputs: [],
371
- name: "_vnonce",
372
- outputs: [
394
+ inputs: [
373
395
  {
374
- internalType: "uint256",
375
- name: "",
376
- type: "uint256",
396
+ internalType: "string",
397
+ name: "actionId",
398
+ type: "string",
377
399
  },
378
- ],
379
- stateMutability: "view",
380
- type: "function",
381
- },
382
- {
383
- inputs: [
384
400
  {
385
401
  internalType: "address",
386
402
  name: "to_",
@@ -403,7 +419,7 @@ const _abi = [
403
419
  },
404
420
  {
405
421
  internalType: "uint32",
406
- name: "targetChainId_",
422
+ name: "sourceChainId_",
407
423
  type: "uint32",
408
424
  },
409
425
  {
@@ -424,6 +440,47 @@ const _abi = [
424
440
  },
425
441
  {
426
442
  inputs: [
443
+ {
444
+ internalType: "address",
445
+ name: "user",
446
+ type: "address",
447
+ },
448
+ {
449
+ internalType: "address[]",
450
+ name: "tokens",
451
+ type: "address[]",
452
+ },
453
+ ],
454
+ name: "getBridgeAmounts",
455
+ outputs: [
456
+ {
457
+ components: [
458
+ {
459
+ internalType: "uint256",
460
+ name: "deposit",
461
+ type: "uint256",
462
+ },
463
+ {
464
+ internalType: "uint256",
465
+ name: "withdraw",
466
+ type: "uint256",
467
+ },
468
+ ],
469
+ internalType: "struct InteropXContractBeta.UserData[]",
470
+ name: "userData",
471
+ type: "tuple[]",
472
+ },
473
+ ],
474
+ stateMutability: "view",
475
+ type: "function",
476
+ },
477
+ {
478
+ inputs: [
479
+ {
480
+ internalType: "string",
481
+ name: "actionId",
482
+ type: "string",
483
+ },
427
484
  {
428
485
  internalType: "address",
429
486
  name: "sourceToken_",
@@ -455,6 +512,24 @@ const _abi = [
455
512
  stateMutability: "nonpayable",
456
513
  type: "function",
457
514
  },
515
+ {
516
+ inputs: [
517
+ {
518
+ internalType: "address",
519
+ name: "token",
520
+ type: "address",
521
+ },
522
+ {
523
+ internalType: "bool",
524
+ name: "toggle",
525
+ type: "bool",
526
+ },
527
+ ],
528
+ name: "toggleWhitelist",
529
+ outputs: [],
530
+ stateMutability: "nonpayable",
531
+ type: "function",
532
+ },
458
533
  {
459
534
  inputs: [
460
535
  {
@@ -462,20 +537,54 @@ const _abi = [
462
537
  name: "",
463
538
  type: "address",
464
539
  },
540
+ {
541
+ internalType: "address",
542
+ name: "",
543
+ type: "address",
544
+ },
465
545
  ],
466
- name: "whitelistedMapping",
546
+ name: "userMapping",
467
547
  outputs: [
468
548
  {
469
549
  internalType: "uint256",
470
- name: "",
550
+ name: "deposit",
471
551
  type: "uint256",
472
552
  },
553
+ {
554
+ internalType: "uint256",
555
+ name: "withdraw",
556
+ type: "uint256",
557
+ },
558
+ ],
559
+ stateMutability: "view",
560
+ type: "function",
561
+ },
562
+ {
563
+ inputs: [
564
+ {
565
+ internalType: "address",
566
+ name: "",
567
+ type: "address",
568
+ },
569
+ ],
570
+ name: "whitelistedTokens",
571
+ outputs: [
572
+ {
573
+ internalType: "bool",
574
+ name: "",
575
+ type: "bool",
576
+ },
473
577
  ],
474
578
  stateMutability: "view",
475
579
  type: "function",
476
580
  },
477
581
  {
478
582
  inputs: [
583
+ {
584
+ internalType: "string",
585
+ name: "actionId",
586
+ type: "string",
587
+ },
479
588
  {
480
589
  internalType: "address",
481
590
  name: "user_",
@@ -7,6 +7,8 @@ import { addresses } from '@/constants';
7
7
  import { ChainId } from '@/types'
8
8
  import { ethers } from 'ethers';
9
9
  import { GnosisSafe } from '@/typechain';
10
+ import retry from 'async-retry'
11
+
10
12
  export const http = axios.create();
11
13
 
12
14
  axiosRetry(http, { retries: 3, retryDelay: axiosRetry.exponentialDelay });
@@ -131,9 +133,9 @@ export const asyncCallWithTimeout = async <T>(asyncPromise: Promise<T>, timeout:
131
133
  }
132
134
 
133
135
 
134
- export const generateInteropTransactionHash = (data: { action: string, bridger: string, requestTransactionHash: string, sourceChainId: string | number, targetChainId: string | number }) => {
136
+ export const generateInteropTransactionHash = (data: { actionId: string, bridger: string, requestTransactionHash: string, sourceChainId: string | number, targetChainId: string | number }) => {
135
137
  return ethers.utils.solidityKeccak256(['string', 'string', 'string', 'string', 'string'], [
136
- String(data.action),
138
+ String(data.actionId),
137
139
  String(data.bridger),
138
140
  String(data.requestTransactionHash),
139
141
  String(data.sourceChainId),
@@ -141,6 +143,13 @@ export const generateInteropTransactionHash = (data: { action: string, bridger:
141
143
  ]);
142
144
  }
143
145
 
146
+
147
+ export class ContractError extends Error {
148
+ method: string;
149
+ address: string;
150
+ args: any[];
151
+ }
152
+
144
153
  export function getContract<TContract extends ethers.Contract>(address: string, contractInterface: ethers.ContractInterface | any, signerOrProvider?: ethers.Signer | ethers.providers.Provider) {
145
154
  if (!ethers.utils.getAddress(address) || address === ethers.constants.AddressZero) {
146
155
  throw Error(`Invalid 'address' parameter '${address}'.`)
@@ -164,11 +173,24 @@ export function getContract<TContract extends ethers.Contract>(address: string,
164
173
  const value = Reflect.get(target, prop, receiver);
165
174
 
166
175
  if (typeof value === 'function' && (contract.functions.hasOwnProperty(prop) || ['queryFilter'].includes(String(prop)))) {
176
+ let isConstant = false;
177
+
178
+ try {
179
+ isConstant = contract.interface.getFunction(String(prop)).constant
180
+ } catch (error) {
181
+ }
182
+
167
183
  return async (...args: any[]) => {
168
184
  try {
169
- return await value.bind(contract)(...args);
185
+ return await retry(async () => await value.bind(contract)(...args), { retries: isConstant ? 1 : 3 });
170
186
  } catch (error) {
171
- throw new Error(`Error calling "${String(prop)}" on "${address}": ${error.reason || error.message}`)
187
+ const err = new ContractError(`Error calling "${String(prop)}" on "${address}": ${error.reason || error.message}`)
188
+
189
+ err.method = String(prop)
190
+ err.address = address
191
+ err.args = [...args]
192
+
193
+ throw err
172
194
  }
173
195
  }
174
196
  }
@@ -184,9 +206,15 @@ export function getContract<TContract extends ethers.Contract>(address: string,
184
206
  if (typeof value === 'function') {
185
207
  return async (...args: any[]) => {
186
208
  try {
187
- return await value.bind(contract)(...args);
209
+ return await retry(async () => await value.bind(contract)(...args), { retries: parentProp === 'callStatic' ? 3 : 1 });
188
210
  } catch (error) {
189
- throw new Error(`Error calling "${String(prop)}" using "${parentProp}" on "${address}": ${error.reason || error.message}`)
211
+ const err = new ContractError(`Error calling "${String(prop)}" using "${parentProp}" on "${address}": ${error.reason || error.message}`)
212
+
213
+ err.method = String(prop)
214
+ err.address = address
215
+ err.args = [...args]
216
+
217
+ throw err
190
218
  }
191
219
  }
192
220
  }
@@ -203,37 +231,37 @@ export const generateGnosisTransaction = async (transactionData: any, safeContra
203
231
  console.log(transactionData);
204
232
 
205
233
  let isExecuted = await safeContract.dataHashes(
206
- await safeContract.getTransactionHash(
207
- transactionData.to,
208
- transactionData.value,
209
- transactionData.data,
210
- transactionData.operation,
211
- transactionData.safeTxGas,
212
- transactionData.baseGas,
213
- transactionData.gasPrice,
214
- transactionData.gasToken,
215
- transactionData.refundReceiver,
216
- transactionData.nonce
217
- )
234
+ await safeContract.getTransactionHash(
235
+ transactionData.to,
236
+ transactionData.value,
237
+ transactionData.data,
238
+ transactionData.operation,
239
+ transactionData.safeTxGas,
240
+ transactionData.baseGas,
241
+ transactionData.gasPrice,
242
+ transactionData.gasToken,
243
+ transactionData.refundReceiver,
244
+ transactionData.nonce
245
+ )
218
246
  )
219
247
 
220
248
  while (isExecuted == 1) {
221
- transactionData.safeTxGas = ethers.BigNumber.from(String(transactionData.safeTxGas)).add(1).toString()
222
-
223
- isExecuted = await safeContract.dataHashes(
224
- await safeContract.getTransactionHash(
225
- transactionData.to,
226
- transactionData.value,
227
- transactionData.data,
228
- transactionData.operation,
229
- transactionData.safeTxGas,
230
- transactionData.baseGas,
231
- transactionData.gasPrice,
232
- transactionData.gasToken,
233
- transactionData.refundReceiver,
234
- transactionData.nonce
235
- )
249
+ transactionData.safeTxGas = ethers.BigNumber.from(String(transactionData.safeTxGas)).add(1).toString()
250
+
251
+ isExecuted = await safeContract.dataHashes(
252
+ await safeContract.getTransactionHash(
253
+ transactionData.to,
254
+ transactionData.value,
255
+ transactionData.data,
256
+ transactionData.operation,
257
+ transactionData.safeTxGas,
258
+ transactionData.baseGas,
259
+ transactionData.gasPrice,
260
+ transactionData.gasToken,
261
+ transactionData.refundReceiver,
262
+ transactionData.nonce
236
263
  )
264
+ )
237
265
  }
238
266
 
239
267
  return transactionData