@instadapp/interop-x 0.0.0-dev.9e91661 → 0.0.0-dev.a145c8e
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/.github/workflows/ci.yml +19 -0
- package/dist/package.json +16 -13
- package/dist/src/abi/connectors/index.js +36 -0
- package/dist/src/abi/connectors/v1/aave.js +148 -0
- package/dist/src/abi/connectors/v1/aave_claim.js +4 -0
- package/dist/src/abi/connectors/v1/aave_migrate.js +109 -0
- package/dist/src/abi/connectors/v1/aave_polygon_migrate.js +110 -0
- package/dist/src/abi/connectors/v1/aave_stake.js +4 -0
- package/dist/src/abi/connectors/v1/aave_v1_import.js +54 -0
- package/dist/src/abi/connectors/v1/aave_v2.js +230 -0
- package/dist/src/abi/connectors/v1/aave_v2_import.js +59 -0
- package/dist/src/abi/connectors/v1/authority.js +100 -0
- package/dist/src/abi/connectors/v1/basic.js +136 -0
- package/dist/src/abi/connectors/v1/chi.js +36 -0
- package/dist/src/abi/connectors/v1/comp.js +4 -0
- package/dist/src/abi/connectors/v1/compound.js +4 -0
- package/dist/src/abi/connectors/v1/compoundImport.js +69 -0
- package/dist/src/abi/connectors/v1/compoundImport_v2.js +4 -0
- package/dist/src/abi/connectors/v1/compound_old.js +448 -0
- package/dist/src/abi/connectors/v1/curve.js +140 -0
- package/dist/src/abi/connectors/v1/curve_claim.js +63 -0
- package/dist/src/abi/connectors/v1/curve_gauge.js +158 -0
- package/dist/src/abi/connectors/v1/curve_sbtc.js +140 -0
- package/dist/src/abi/connectors/v1/curve_susd.js +140 -0
- package/dist/src/abi/connectors/v1/curve_three.js +79 -0
- package/dist/src/abi/connectors/v1/curve_y.js +140 -0
- package/dist/src/abi/connectors/v1/dsa_migrate_v1_to_v2.js +4 -0
- package/dist/src/abi/connectors/v1/dydx.js +148 -0
- package/dist/src/abi/connectors/v1/dydx_flash.js +52 -0
- package/dist/src/abi/connectors/v1/fee.js +50 -0
- package/dist/src/abi/connectors/v1/gelato.js +1138 -0
- package/dist/src/abi/connectors/v1/index.js +58 -0
- package/dist/src/abi/connectors/v1/instapool.js +439 -0
- package/dist/src/abi/connectors/v1/instapool_v2.js +126 -0
- package/dist/src/abi/connectors/v1/kyber.js +117 -0
- package/dist/src/abi/connectors/v1/maker.js +480 -0
- package/dist/src/abi/connectors/v1/maker_old.js +300 -0
- package/dist/src/abi/connectors/v1/math.js +43 -0
- package/dist/src/abi/connectors/v1/migrate.js +46 -0
- package/dist/src/abi/connectors/v1/oasis.js +198 -0
- package/dist/src/abi/connectors/v1/oneInch.js +160 -0
- package/dist/src/abi/connectors/v1/polygon_bridge.js +4 -0
- package/dist/src/abi/connectors/v1/refinance.js +4 -0
- package/dist/src/abi/connectors/v1/staking.js +220 -0
- package/dist/src/abi/connectors/v1/swerve.js +179 -0
- package/dist/src/abi/connectors/v1/uniswap.js +297 -0
- package/dist/src/abi/connectors/v2/1INCH-A.js +4 -0
- package/dist/src/abi/connectors/v2/1INCH-B.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-CLAIM-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-CLAIM-B.js +166 -0
- package/dist/src/abi/connectors/v2/AAVE-STAKE-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-V1-A.js +130 -0
- package/dist/src/abi/connectors/v2/AAVE-V1-IMPORT-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-V2-A.js +230 -0
- package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-A.js +4 -0
- package/dist/src/abi/connectors/v2/AAVE-V2-IMPORT-B.js +225 -0
- package/dist/src/abi/connectors/v2/AUTHORITY-A.js +100 -0
- package/dist/src/abi/connectors/v2/B-COMPOUND-A.js +4 -0
- package/dist/src/abi/connectors/v2/B-LIQUITY-A.js +4 -0
- package/dist/src/abi/connectors/v2/B-MAKERDAO-A.js +4 -0
- package/dist/src/abi/connectors/v2/BASIC-A.js +136 -0
- package/dist/src/abi/connectors/v2/BASIC-B.js +4 -0
- package/dist/src/abi/connectors/v2/BASIC-C.js +4 -0
- package/dist/src/abi/connectors/v2/COMP-A.js +4 -0
- package/dist/src/abi/connectors/v2/COMPOUND-A.js +4 -0
- package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-A.js +4 -0
- package/dist/src/abi/connectors/v2/COMPOUND-IMPORT-B.js +195 -0
- package/dist/src/abi/connectors/v2/G-UNISWAP-A.js +4 -0
- package/dist/src/abi/connectors/v2/GELATO-AAVE-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-LM-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-STAKING-A.js +4 -0
- package/dist/src/abi/connectors/v2/INST-STAKING-B.js +4 -0
- package/dist/src/abi/connectors/v2/INSTAPOOL-A.js +4 -0
- package/dist/src/abi/connectors/v2/LIQUITY-A.js +4 -0
- package/dist/src/abi/connectors/v2/MAKERDAO-A.js +4 -0
- package/dist/src/abi/connectors/v2/MAKERDAO-CLAIM-A.js +136 -0
- package/dist/src/abi/connectors/v2/PARASWAP-A.js +4 -0
- package/dist/src/abi/connectors/v2/POLYGON-BRIDGE-A.js +4 -0
- package/dist/src/abi/connectors/v2/REFINANCE-A.js +4 -0
- package/dist/src/abi/connectors/v2/REFLEXER-A.js +4 -0
- package/dist/src/abi/connectors/v2/STAKE-ERC20-A.js +4 -0
- package/dist/src/abi/connectors/v2/UNISWAP-A.js +297 -0
- package/dist/src/abi/connectors/v2/UNISWAP-V2-A.js +4 -0
- package/dist/src/abi/connectors/v2/UNISWAP-V3-A.js +4 -0
- package/dist/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.js +4 -0
- package/dist/src/abi/connectors/v2/WETH-A.js +4 -0
- package/dist/src/abi/connectors/v2/YEARN-VAULT-A.js +4 -0
- package/dist/src/abi/connectors/v2/index.js +89 -0
- package/dist/src/abi/index.js +4 -4
- package/dist/src/abi/interopX.json +1436 -0
- package/dist/src/alias.js +10 -0
- package/dist/src/api/index.js +1 -1
- package/dist/src/constants/addresses.js +4 -7
- package/dist/src/constants/blockConfirmations.js +8 -0
- package/dist/src/constants/index.js +1 -1
- package/dist/src/constants/tokens.js +62 -39
- package/dist/src/db/models/transaction.js +37 -15
- package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
- package/dist/src/gnosis/actions/aaveV2/source.js +73 -0
- package/dist/src/gnosis/actions/aaveV2/target.js +85 -0
- package/dist/src/gnosis/actions/index.js +2 -4
- package/dist/src/gnosis/index.js +11 -7
- package/dist/src/index.js +7 -18
- package/dist/src/net/protocol/dial/SignatureDialProtocol.js +8 -3
- package/dist/src/net/protocol/dial/TransactionStatusDialProtocol.js +2 -0
- package/dist/src/net/protocol/index.js +11 -1
- package/dist/src/tasks/InteropX/ProcessSubmitSubmitEvents.js +179 -0
- package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +87 -0
- package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +105 -0
- package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +8 -3
- package/dist/src/tasks/index.js +14 -29
- package/dist/src/typechain/{InteropBridgeToken.js → InteropX.js} +0 -0
- package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
- package/dist/src/typechain/factories/index.js +3 -5
- package/dist/src/typechain/index.js +3 -5
- package/dist/src/utils/index.js +97 -31
- package/package.json +16 -13
- package/src/abi/connectors/index.ts +14 -0
- package/src/abi/connectors/v1/aave.ts +147 -0
- package/src/abi/connectors/v1/aave_claim.ts +3 -0
- package/src/abi/connectors/v1/aave_migrate.ts +108 -0
- package/src/abi/connectors/v1/aave_polygon_migrate.ts +109 -0
- package/src/abi/connectors/v1/aave_stake.ts +3 -0
- package/src/abi/connectors/v1/aave_v1_import.ts +53 -0
- package/src/abi/connectors/v1/aave_v2.ts +229 -0
- package/src/abi/connectors/v1/aave_v2_import.ts +58 -0
- package/src/abi/connectors/v1/authority.ts +99 -0
- package/src/abi/connectors/v1/basic.ts +135 -0
- package/src/abi/connectors/v1/chi.ts +35 -0
- package/src/abi/connectors/v1/comp.ts +3 -0
- package/src/abi/connectors/v1/compound.ts +3 -0
- package/src/abi/connectors/v1/compoundImport.ts +68 -0
- package/src/abi/connectors/v1/compoundImport_v2.ts +3 -0
- package/src/abi/connectors/v1/compound_old.ts +447 -0
- package/src/abi/connectors/v1/curve.ts +139 -0
- package/src/abi/connectors/v1/curve_claim.ts +62 -0
- package/src/abi/connectors/v1/curve_gauge.ts +157 -0
- package/src/abi/connectors/v1/curve_sbtc.ts +139 -0
- package/src/abi/connectors/v1/curve_susd.ts +139 -0
- package/src/abi/connectors/v1/curve_three.ts +78 -0
- package/src/abi/connectors/v1/curve_y.ts +139 -0
- package/src/abi/connectors/v1/dsa_migrate_v1_to_v2.ts +3 -0
- package/src/abi/connectors/v1/dydx.ts +147 -0
- package/src/abi/connectors/v1/dydx_flash.ts +51 -0
- package/src/abi/connectors/v1/fee.ts +49 -0
- package/src/abi/connectors/v1/gelato.ts +1137 -0
- package/src/abi/connectors/v1/index.ts +42 -0
- package/src/abi/connectors/v1/instapool.ts +438 -0
- package/src/abi/connectors/v1/instapool_v2.ts +125 -0
- package/src/abi/connectors/v1/kyber.ts +116 -0
- package/src/abi/connectors/v1/maker.ts +479 -0
- package/src/abi/connectors/v1/maker_old.ts +299 -0
- package/src/abi/connectors/v1/math.ts +42 -0
- package/src/abi/connectors/v1/migrate.ts +45 -0
- package/src/abi/connectors/v1/oasis.ts +197 -0
- package/src/abi/connectors/v1/oneInch.ts +159 -0
- package/src/abi/connectors/v1/polygon_bridge.ts +3 -0
- package/src/abi/connectors/v1/refinance.ts +3 -0
- package/src/abi/connectors/v1/staking.ts +219 -0
- package/src/abi/connectors/v1/swerve.ts +178 -0
- package/src/abi/connectors/v1/uniswap.ts +297 -0
- package/src/abi/connectors/v2/1INCH-A.ts +3 -0
- package/src/abi/connectors/v2/1INCH-B.ts +3 -0
- package/src/abi/connectors/v2/AAVE-CLAIM-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-CLAIM-B.ts +165 -0
- package/src/abi/connectors/v2/AAVE-STAKE-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-V1-A.ts +130 -0
- package/src/abi/connectors/v2/AAVE-V1-IMPORT-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-V2-A.ts +229 -0
- package/src/abi/connectors/v2/AAVE-V2-IMPORT-A.ts +3 -0
- package/src/abi/connectors/v2/AAVE-V2-IMPORT-B.ts +224 -0
- package/src/abi/connectors/v2/AUTHORITY-A.ts +99 -0
- package/src/abi/connectors/v2/B-COMPOUND-A.ts +3 -0
- package/src/abi/connectors/v2/B-LIQUITY-A.ts +3 -0
- package/src/abi/connectors/v2/B-MAKERDAO-A.ts +3 -0
- package/src/abi/connectors/v2/BASIC-A.ts +135 -0
- package/src/abi/connectors/v2/BASIC-B.ts +3 -0
- package/src/abi/connectors/v2/BASIC-C.ts +3 -0
- package/src/abi/connectors/v2/COMP-A.ts +3 -0
- package/src/abi/connectors/v2/COMPOUND-A.ts +3 -0
- package/src/abi/connectors/v2/COMPOUND-IMPORT-A.ts +3 -0
- package/src/abi/connectors/v2/COMPOUND-IMPORT-B.ts +194 -0
- package/src/abi/connectors/v2/G-UNISWAP-A.ts +3 -0
- package/src/abi/connectors/v2/GELATO-AAVE-A.ts +3 -0
- package/src/abi/connectors/v2/INST-A.ts +3 -0
- package/src/abi/connectors/v2/INST-LM-A.ts +3 -0
- package/src/abi/connectors/v2/INST-STAKING-A.ts +3 -0
- package/src/abi/connectors/v2/INST-STAKING-B.ts +3 -0
- package/src/abi/connectors/v2/INSTAPOOL-A.ts +3 -0
- package/src/abi/connectors/v2/LIQUITY-A.ts +3 -0
- package/src/abi/connectors/v2/MAKERDAO-A.ts +3 -0
- package/src/abi/connectors/v2/MAKERDAO-CLAIM-A.ts +135 -0
- package/src/abi/connectors/v2/PARASWAP-A.ts +3 -0
- package/src/abi/connectors/v2/POLYGON-BRIDGE-A.ts +3 -0
- package/src/abi/connectors/v2/REFINANCE-A.ts +3 -0
- package/src/abi/connectors/v2/REFLEXER-A.ts +3 -0
- package/src/abi/connectors/v2/STAKE-ERC20-A.ts +3 -0
- package/src/abi/connectors/v2/UNISWAP-A.ts +297 -0
- package/src/abi/connectors/v2/UNISWAP-V2-A.ts +3 -0
- package/src/abi/connectors/v2/UNISWAP-V3-A.ts +3 -0
- package/src/abi/connectors/v2/UNISWAP-V3-STAKE-A.ts +3 -0
- package/src/abi/connectors/v2/WETH-A.ts +3 -0
- package/src/abi/connectors/v2/YEARN-VAULT-A.ts +3 -0
- package/src/abi/connectors/v2/index.ts +87 -0
- package/src/abi/index.ts +7 -7
- package/src/abi/interopX.json +1436 -0
- package/src/alias.ts +6 -0
- package/src/api/index.ts +1 -1
- package/src/constants/addresses.ts +5 -8
- package/src/constants/blockConfirmations.ts +5 -0
- package/src/constants/index.ts +1 -1
- package/src/constants/tokens.ts +63 -40
- package/src/db/models/transaction.ts +138 -65
- package/src/gnosis/actions/aaveV2/index.ts +9 -0
- package/src/gnosis/actions/aaveV2/source.ts +118 -0
- package/src/gnosis/actions/aaveV2/target.ts +132 -0
- package/src/gnosis/actions/index.ts +2 -4
- package/src/gnosis/index.ts +11 -5
- package/src/index.ts +6 -17
- package/src/net/protocol/dial/SignatureDialProtocol.ts +11 -5
- package/src/net/protocol/dial/TransactionStatusDialProtocol.ts +3 -1
- package/src/net/protocol/index.ts +13 -3
- package/src/tasks/InteropX/ProcessSubmitSubmitEvents.ts +269 -0
- package/src/tasks/InteropX/SyncLogSubmitEvents.ts +139 -0
- package/src/tasks/InteropX/SyncLogValidateEvents.ts +152 -0
- package/src/tasks/Transactions/SyncTransactionStatusTask.ts +8 -3
- package/src/tasks/index.ts +16 -37
- package/src/typechain/InteropX.ts +1216 -0
- package/src/typechain/factories/InteropX__factory.ts +1932 -0
- package/src/typechain/factories/index.ts +1 -2
- package/src/typechain/index.ts +2 -4
- package/src/utils/index.ts +232 -65
- package/tsconfig.json +7 -2
- package/dist/src/abi/interopBridgeToken.json +0 -298
- package/dist/src/abi/interopXGateway.json +0 -184
- package/dist/src/constants/itokens.js +0 -13
- package/dist/src/gnosis/actions/deposit.js +0 -40
- package/dist/src/gnosis/actions/withdraw.js +0 -45
- package/dist/src/tasks/InteropBridge/ProcessWithdrawEvents.js +0 -147
- package/dist/src/tasks/InteropBridge/SyncBurnEvents.js +0 -71
- package/dist/src/tasks/InteropBridge/SyncMintEvents.js +0 -67
- package/dist/src/tasks/InteropXGateway/ProcessDepositEvents.js +0 -163
- package/dist/src/tasks/InteropXGateway/SyncDepositEvents.js +0 -74
- package/dist/src/tasks/InteropXGateway/SyncWithdrawtEvents.js +0 -72
- package/dist/src/typechain/InteropXGateway.js +0 -2
- package/dist/src/typechain/factories/InteropBridgeToken__factory.js +0 -471
- package/dist/src/typechain/factories/InteropXGateway__factory.js +0 -265
- package/src/abi/interopBridgeToken.json +0 -298
- package/src/abi/interopXGateway.json +0 -184
- package/src/constants/itokens.ts +0 -10
- package/src/gnosis/actions/deposit.ts +0 -54
- package/src/gnosis/actions/withdraw.ts +0 -61
- package/src/tasks/InteropBridge/ProcessWithdrawEvents.ts +0 -232
- package/src/tasks/InteropBridge/SyncBurnEvents.ts +0 -121
- package/src/tasks/InteropBridge/SyncMintEvents.ts +0 -99
- package/src/tasks/InteropXGateway/ProcessDepositEvents.ts +0 -258
- package/src/tasks/InteropXGateway/SyncDepositEvents.ts +0 -124
- package/src/tasks/InteropXGateway/SyncWithdrawtEvents.ts +0 -105
- package/src/typechain/InteropBridgeToken.ts +0 -692
- package/src/typechain/InteropXGateway.ts +0 -407
- package/src/typechain/factories/InteropBridgeToken__factory.ts +0 -478
- package/src/typechain/factories/InteropXGateway__factory.ts +0 -272
@@ -3,5 +3,4 @@
|
|
3
3
|
/* eslint-disable */
|
4
4
|
export { Erc20__factory } from "./Erc20__factory";
|
5
5
|
export { GnosisSafe__factory } from "./GnosisSafe__factory";
|
6
|
-
export {
|
7
|
-
export { InteropXGateway__factory } from "./InteropXGateway__factory";
|
6
|
+
export { InteropX__factory } from "./InteropX__factory";
|
package/src/typechain/index.ts
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
/* eslint-disable */
|
4
4
|
export type { Erc20 } from "./Erc20";
|
5
5
|
export type { GnosisSafe } from "./GnosisSafe";
|
6
|
-
export type {
|
7
|
-
export type { InteropXGateway } from "./InteropXGateway";
|
6
|
+
export type { InteropX } from "./InteropX";
|
8
7
|
export * as factories from "./factories";
|
9
8
|
export { Erc20__factory } from "./factories/Erc20__factory";
|
10
9
|
export { GnosisSafe__factory } from "./factories/GnosisSafe__factory";
|
11
|
-
export {
|
12
|
-
export { InteropXGateway__factory } from "./factories/InteropXGateway__factory";
|
10
|
+
export { InteropX__factory } from "./factories/InteropX__factory";
|
package/src/utils/index.ts
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
/**
|
2
2
|
* @module util
|
3
3
|
*/
|
4
|
-
import axios from
|
4
|
+
import axios from "axios";
|
5
5
|
import axiosRetry from "axios-retry";
|
6
|
-
import { addresses } from
|
7
|
-
import { ChainId } from
|
8
|
-
import { ethers } from
|
6
|
+
import { addresses } from "@/constants";
|
7
|
+
import { ChainId } from "@/types";
|
8
|
+
import { ethers } from "ethers";
|
9
|
+
import { GnosisSafe } from "@/typechain";
|
10
|
+
import retry from "async-retry";
|
11
|
+
import { connectors } from "@/abi/connectors";
|
12
|
+
import Web3EthAbi from "web3-eth-abi";
|
13
|
+
|
9
14
|
export const http = axios.create();
|
10
15
|
|
11
16
|
axiosRetry(http, { retries: 3, retryDelay: axiosRetry.exponentialDelay });
|
12
17
|
|
13
|
-
|
14
18
|
export function shortenHash(hash: string, length: number = 4) {
|
15
19
|
if (!hash) return;
|
16
20
|
|
@@ -24,22 +28,25 @@ export function shortenHash(hash: string, length: number = 4) {
|
|
24
28
|
}
|
25
29
|
|
26
30
|
export function short(buffer: Buffer): string {
|
27
|
-
return buffer.toString(
|
31
|
+
return buffer.toString("hex").slice(0, 8) + "...";
|
28
32
|
}
|
29
33
|
|
30
|
-
export const signGnosisSafeTx = async (
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
export const signGnosisSafeTx = async (
|
35
|
+
{
|
36
|
+
to,
|
37
|
+
data = null as any,
|
38
|
+
value = "0",
|
39
|
+
operation = "1",
|
40
|
+
baseGas = "0",
|
41
|
+
gasPrice = "0",
|
42
|
+
gasToken = "0x0000000000000000000000000000000000000000",
|
43
|
+
refundReceiver = "0x0000000000000000000000000000000000000000",
|
44
|
+
safeTxGas = "79668" as string | number,
|
45
|
+
nonce = "0",
|
46
|
+
chainId = 137 as ChainId,
|
47
|
+
},
|
48
|
+
{ signer }
|
49
|
+
) => {
|
43
50
|
const gnosisSafe = addresses[chainId].gnosisSafe;
|
44
51
|
|
45
52
|
const domain = {
|
@@ -49,16 +56,16 @@ export const signGnosisSafeTx = async ({
|
|
49
56
|
|
50
57
|
const types = {
|
51
58
|
SafeTx: [
|
52
|
-
{ type:
|
53
|
-
{ type:
|
54
|
-
{ type:
|
55
|
-
{ type:
|
56
|
-
{ type:
|
57
|
-
{ type:
|
58
|
-
{ type:
|
59
|
-
{ type:
|
60
|
-
{ type:
|
61
|
-
{ type:
|
59
|
+
{ type: "address", name: "to" },
|
60
|
+
{ type: "uint256", name: "value" },
|
61
|
+
{ type: "bytes", name: "data" },
|
62
|
+
{ type: "uint8", name: "operation" },
|
63
|
+
{ type: "uint256", name: "safeTxGas" },
|
64
|
+
{ type: "uint256", name: "baseGas" },
|
65
|
+
{ type: "uint256", name: "gasPrice" },
|
66
|
+
{ type: "address", name: "gasToken" },
|
67
|
+
{ type: "address", name: "refundReceiver" },
|
68
|
+
{ type: "uint256", name: "nonce" },
|
62
69
|
],
|
63
70
|
};
|
64
71
|
|
@@ -76,21 +83,21 @@ export const signGnosisSafeTx = async ({
|
|
76
83
|
value,
|
77
84
|
};
|
78
85
|
|
79
|
-
return await signer._signTypedData(domain, types, message)
|
86
|
+
return await signer._signTypedData(domain, types, message);
|
80
87
|
};
|
81
88
|
|
82
89
|
export const getRpcProviderUrl = (chainId: ChainId) => {
|
83
90
|
switch (chainId) {
|
84
91
|
case 1:
|
85
|
-
return
|
92
|
+
return "https://rpc.ankr.com/eth";
|
86
93
|
case 137:
|
87
|
-
return
|
94
|
+
return "https://rpc.ankr.com/polygon";
|
88
95
|
case 43114:
|
89
|
-
return
|
96
|
+
return "https://rpc.ankr.com/avalanche";
|
90
97
|
default:
|
91
98
|
throw new Error(`Unknown chainId: ${chainId}`);
|
92
99
|
}
|
93
|
-
}
|
100
|
+
};
|
94
101
|
|
95
102
|
export interface Signature {
|
96
103
|
signer: string;
|
@@ -113,86 +120,246 @@ export const buildSignatureBytes = (signatures: Signature[]): string => {
|
|
113
120
|
* Call an async function with a maximum time limit (in milliseconds) for the timeout
|
114
121
|
* Resolved promise for async function call, or an error if time limit reached
|
115
122
|
*/
|
116
|
-
export const asyncCallWithTimeout = async <T>(
|
123
|
+
export const asyncCallWithTimeout = async <T>(
|
124
|
+
asyncPromise: Promise<T>,
|
125
|
+
timeout: number
|
126
|
+
) => {
|
117
127
|
let timeoutHandle;
|
118
128
|
|
119
129
|
const timeoutPromise = new Promise((_resolve, reject) => {
|
120
130
|
timeoutHandle = setTimeout(
|
121
|
-
() => reject(new Error(
|
131
|
+
() => reject(new Error("Async call timeout limit reached")),
|
122
132
|
timeout
|
123
133
|
);
|
124
134
|
});
|
125
135
|
|
126
|
-
return Promise.race([asyncPromise, timeoutPromise]).then(result => {
|
136
|
+
return Promise.race([asyncPromise, timeoutPromise]).then((result) => {
|
127
137
|
clearTimeout(timeoutHandle);
|
128
138
|
return result;
|
129
|
-
}) as Promise<T
|
130
|
-
}
|
139
|
+
}) as Promise<T>;
|
140
|
+
};
|
131
141
|
|
142
|
+
type GenerateInteropTransactionHashParam = {
|
143
|
+
actionId: string;
|
144
|
+
vnonce: string;
|
145
|
+
sourceSender: string;
|
146
|
+
sourceChainId: string | number;
|
147
|
+
sourceDsaId: string;
|
148
|
+
targetChainId: string | number;
|
149
|
+
targetDsaId: string;
|
150
|
+
};
|
132
151
|
|
133
|
-
export const generateInteropTransactionHash = (
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
152
|
+
export const generateInteropTransactionHash = (
|
153
|
+
data: GenerateInteropTransactionHashParam
|
154
|
+
) => {
|
155
|
+
return ethers.utils.solidityKeccak256(
|
156
|
+
Array.from({ length: 7 }, () => "string"),
|
157
|
+
[
|
158
|
+
String(data.actionId),
|
159
|
+
String(data.vnonce),
|
160
|
+
String(data.sourceSender),
|
161
|
+
String(data.sourceChainId),
|
162
|
+
String(data.sourceDsaId),
|
163
|
+
String(data.targetChainId),
|
164
|
+
String(data.targetDsaId),
|
165
|
+
]
|
166
|
+
);
|
167
|
+
};
|
168
|
+
|
169
|
+
export class ContractError extends Error {
|
170
|
+
method: string;
|
171
|
+
address: string;
|
172
|
+
args: any[];
|
140
173
|
}
|
141
174
|
|
142
|
-
export function getContract<TContract extends ethers.Contract>(
|
143
|
-
|
144
|
-
|
175
|
+
export function getContract<TContract extends ethers.Contract>(
|
176
|
+
address: string,
|
177
|
+
contractInterface: ethers.ContractInterface | any,
|
178
|
+
signerOrProvider?: ethers.Signer | ethers.providers.Provider
|
179
|
+
) {
|
180
|
+
if (
|
181
|
+
!ethers.utils.getAddress(address) ||
|
182
|
+
address === ethers.constants.AddressZero
|
183
|
+
) {
|
184
|
+
throw Error(`Invalid 'address' parameter '${address}'.`);
|
145
185
|
}
|
146
186
|
|
147
187
|
const contract = new ethers.Contract(
|
148
188
|
address,
|
149
189
|
contractInterface,
|
150
190
|
signerOrProvider
|
151
|
-
) as TContract
|
191
|
+
) as TContract;
|
152
192
|
|
153
193
|
// Make sure the contract properties is writable
|
154
|
-
const desc = Object.getOwnPropertyDescriptor(contract,
|
194
|
+
const desc = Object.getOwnPropertyDescriptor(contract, "functions");
|
155
195
|
|
156
196
|
if (!desc || desc.writable !== true) {
|
157
|
-
return contract
|
197
|
+
return contract;
|
158
198
|
}
|
159
199
|
|
160
200
|
return new Proxy(contract, {
|
161
201
|
get(target, prop, receiver) {
|
162
202
|
const value = Reflect.get(target, prop, receiver);
|
163
203
|
|
164
|
-
if (
|
204
|
+
if (
|
205
|
+
typeof value === "function" &&
|
206
|
+
(contract.functions.hasOwnProperty(prop) ||
|
207
|
+
["queryFilter"].includes(String(prop)))
|
208
|
+
) {
|
209
|
+
let isConstant = false;
|
210
|
+
|
211
|
+
try {
|
212
|
+
isConstant = contract.interface.getFunction(String(prop)).constant;
|
213
|
+
} catch (error) {}
|
214
|
+
|
165
215
|
return async (...args: any[]) => {
|
166
216
|
try {
|
167
|
-
return await
|
217
|
+
return await retry(
|
218
|
+
async () => await value.bind(contract)(...args),
|
219
|
+
{ retries: isConstant ? 1 : 3 }
|
220
|
+
);
|
168
221
|
} catch (error) {
|
169
|
-
|
222
|
+
const err = new ContractError(
|
223
|
+
`Error calling "${String(prop)}" on "${address}": ${
|
224
|
+
error.reason || error.message
|
225
|
+
}`
|
226
|
+
);
|
227
|
+
|
228
|
+
err.method = String(prop);
|
229
|
+
err.address = address;
|
230
|
+
err.args = [...args];
|
231
|
+
|
232
|
+
throw err;
|
170
233
|
}
|
171
|
-
}
|
234
|
+
};
|
172
235
|
}
|
173
236
|
|
174
|
-
|
175
|
-
|
237
|
+
if (
|
238
|
+
typeof value === "object" &&
|
239
|
+
[
|
240
|
+
"populateTransaction",
|
241
|
+
"estimateGas",
|
242
|
+
"functions",
|
243
|
+
"callStatic",
|
244
|
+
].includes(String(prop))
|
245
|
+
) {
|
176
246
|
const parentProp = String(prop);
|
177
247
|
|
178
248
|
return new Proxy(value, {
|
179
249
|
get(target, prop, receiver) {
|
180
250
|
const value = Reflect.get(target, prop, receiver);
|
181
251
|
|
182
|
-
if (typeof value ===
|
252
|
+
if (typeof value === "function") {
|
183
253
|
return async (...args: any[]) => {
|
184
254
|
try {
|
185
|
-
return await
|
255
|
+
return await retry(
|
256
|
+
async () => await value.bind(contract)(...args),
|
257
|
+
{ retries: parentProp === "callStatic" ? 3 : 1 }
|
258
|
+
);
|
186
259
|
} catch (error) {
|
187
|
-
|
260
|
+
const err = new ContractError(
|
261
|
+
`Error calling "${String(
|
262
|
+
prop
|
263
|
+
)}" using "${parentProp}" on "${address}": ${
|
264
|
+
error.reason || error.message
|
265
|
+
}`
|
266
|
+
);
|
267
|
+
|
268
|
+
err.method = String(prop);
|
269
|
+
err.address = address;
|
270
|
+
err.args = [...args];
|
271
|
+
|
272
|
+
throw err;
|
188
273
|
}
|
189
|
-
}
|
274
|
+
};
|
190
275
|
}
|
191
|
-
}
|
192
|
-
})
|
276
|
+
},
|
277
|
+
});
|
193
278
|
}
|
194
279
|
|
195
280
|
return value;
|
196
281
|
},
|
197
282
|
});
|
198
|
-
}
|
283
|
+
}
|
284
|
+
|
285
|
+
export const generateGnosisTransaction = async (
|
286
|
+
transactionData: any,
|
287
|
+
safeContract: GnosisSafe
|
288
|
+
) => {
|
289
|
+
console.log(transactionData);
|
290
|
+
|
291
|
+
let isExecuted = await safeContract.dataHashes(
|
292
|
+
await safeContract.getTransactionHash(
|
293
|
+
transactionData.to,
|
294
|
+
transactionData.value,
|
295
|
+
transactionData.data,
|
296
|
+
transactionData.operation,
|
297
|
+
transactionData.safeTxGas,
|
298
|
+
transactionData.baseGas,
|
299
|
+
transactionData.gasPrice,
|
300
|
+
transactionData.gasToken,
|
301
|
+
transactionData.refundReceiver,
|
302
|
+
transactionData.nonce
|
303
|
+
)
|
304
|
+
);
|
305
|
+
|
306
|
+
while (isExecuted == 1) {
|
307
|
+
transactionData.safeTxGas = ethers.BigNumber.from(
|
308
|
+
String(transactionData.safeTxGas)
|
309
|
+
)
|
310
|
+
.add(1)
|
311
|
+
.toString();
|
312
|
+
|
313
|
+
isExecuted = await safeContract.dataHashes(
|
314
|
+
await safeContract.getTransactionHash(
|
315
|
+
transactionData.to,
|
316
|
+
transactionData.value,
|
317
|
+
transactionData.data,
|
318
|
+
transactionData.operation,
|
319
|
+
transactionData.safeTxGas,
|
320
|
+
transactionData.baseGas,
|
321
|
+
transactionData.gasPrice,
|
322
|
+
transactionData.gasToken,
|
323
|
+
transactionData.refundReceiver,
|
324
|
+
transactionData.nonce
|
325
|
+
)
|
326
|
+
);
|
327
|
+
}
|
328
|
+
|
329
|
+
return transactionData;
|
330
|
+
};
|
331
|
+
|
332
|
+
export class LiquidityError extends Error {
|
333
|
+
constructor(message?: string) {
|
334
|
+
super(message || "Not enough liquidity");
|
335
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
export const encodeConnectorMethod = (params: {
|
340
|
+
connector: string;
|
341
|
+
method: string;
|
342
|
+
args: string[];
|
343
|
+
}) => {
|
344
|
+
const connectorInterface = getInterface(
|
345
|
+
connectors.versions[2][params.connector],
|
346
|
+
params.method
|
347
|
+
);
|
348
|
+
|
349
|
+
if (!connectorInterface)
|
350
|
+
throw new Error(`ConnectorInterface '${params.method}' not found`);
|
351
|
+
|
352
|
+
//@ts-ignore
|
353
|
+
return Web3EthAbi.encodeFunctionCall(connectorInterface, params.args);
|
354
|
+
};
|
355
|
+
|
356
|
+
const getInterface = (abiItems: any[], method: string) => {
|
357
|
+
const abiItem = abiItems.find((abiItem) => abiItem.name === method);
|
358
|
+
|
359
|
+
if (!abiItem) {
|
360
|
+
console.error(`${method} is an invalid method.`);
|
361
|
+
return;
|
362
|
+
}
|
363
|
+
|
364
|
+
return abiItem;
|
365
|
+
};
|