@instadapp/interop-x 0.0.0-dev.bfeca30 → 0.0.0-dev.c279cb8
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 +4 -2
- 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 -2
- package/dist/src/abi/interopX.json +1436 -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 -0
- package/dist/src/constants/tokens.js +44 -51
- package/dist/src/db/models/transaction.js +11 -9
- package/dist/src/gnosis/actions/aaveV2/index.js +11 -0
- package/dist/src/gnosis/actions/aaveV2/source.js +75 -0
- package/dist/src/gnosis/actions/aaveV2/target.js +8 -0
- package/dist/src/gnosis/actions/index.js +2 -2
- package/dist/src/index.js +1 -1
- package/dist/src/net/protocol/dial/SignatureDialProtocol.js +2 -2
- package/dist/src/tasks/InteropX/ProcessSubmitSubmitEvents.js +180 -0
- package/dist/src/tasks/{InteropXContract/SyncBridgeRequestEvents.js → InteropX/SyncLogSubmitEvents.js} +23 -15
- package/dist/src/tasks/Transactions/SyncTransactionStatusTask.js +6 -3
- package/dist/src/tasks/index.js +9 -13
- package/dist/src/typechain/{InteropXContract.js → InteropX.js} +0 -0
- package/dist/src/typechain/factories/InteropX__factory.js +1928 -0
- package/dist/src/typechain/factories/index.js +3 -3
- package/dist/src/typechain/index.js +3 -3
- package/dist/src/utils/index.js +68 -31
- package/package.json +4 -2
- 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 -5
- package/src/abi/interopX.json +1436 -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 -0
- package/src/constants/tokens.ts +44 -51
- package/src/db/models/transaction.ts +28 -37
- package/src/gnosis/actions/aaveV2/index.ts +9 -0
- package/src/gnosis/actions/aaveV2/source.ts +120 -0
- package/src/gnosis/actions/aaveV2/target.ts +13 -0
- package/src/gnosis/actions/index.ts +2 -2
- package/src/net/protocol/dial/SignatureDialProtocol.ts +3 -2
- package/src/tasks/InteropX/ProcessSubmitSubmitEvents.ts +270 -0
- package/src/tasks/InteropX/SyncLogSubmitEvents.ts +138 -0
- package/src/tasks/Transactions/SyncTransactionStatusTask.ts +6 -3
- package/src/tasks/index.ts +8 -15
- package/src/typechain/InteropX.ts +1216 -0
- package/src/typechain/factories/InteropX__factory.ts +1932 -0
- package/src/typechain/factories/index.ts +1 -1
- package/src/typechain/index.ts +2 -2
- package/src/utils/index.ts +185 -88
- package/dist/src/abi/interopXContract.json +0 -454
- package/dist/src/gnosis/actions/withdraw/index.js +0 -55
- package/dist/src/tasks/InteropXContract/ProcessBridgeRequestEvents.js +0 -152
- package/dist/src/tasks/InteropXContract/SyncBridgeCommittedEvents.js +0 -92
- package/dist/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.js +0 -90
- package/dist/src/typechain/factories/InteropXContract__factory.js +0 -635
- package/src/abi/interopXContract.json +0 -454
- package/src/gnosis/actions/withdraw/index.ts +0 -77
- package/src/tasks/InteropXContract/ProcessBridgeRequestEvents.ts +0 -216
- package/src/tasks/InteropXContract/SyncBridgeCommittedEvents.ts +0 -124
- package/src/tasks/InteropXContract/SyncBridgeRequestEvents.ts +0 -115
- package/src/tasks/InteropXContract/SyncBridgeRequestSentEvents.ts +0 -121
- package/src/typechain/InteropXContract.ts +0 -680
- package/src/typechain/factories/InteropXContract__factory.ts +0 -642
package/src/typechain/index.ts
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
/* eslint-disable */
|
4
4
|
export type { Erc20 } from "./Erc20";
|
5
5
|
export type { GnosisSafe } from "./GnosisSafe";
|
6
|
-
export type {
|
6
|
+
export type { InteropX } from "./InteropX";
|
7
7
|
export * as factories from "./factories";
|
8
8
|
export { Erc20__factory } from "./factories/Erc20__factory";
|
9
9
|
export { GnosisSafe__factory } from "./factories/GnosisSafe__factory";
|
10
|
-
export {
|
10
|
+
export { InteropX__factory } from "./factories/InteropX__factory";
|
package/src/utils/index.ts
CHANGED
@@ -1,19 +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
|
9
|
-
import { GnosisSafe } from
|
10
|
-
import retry 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";
|
11
13
|
|
12
14
|
export const http = axios.create();
|
13
15
|
|
14
16
|
axiosRetry(http, { retries: 3, retryDelay: axiosRetry.exponentialDelay });
|
15
17
|
|
16
|
-
|
17
18
|
export function shortenHash(hash: string, length: number = 4) {
|
18
19
|
if (!hash) return;
|
19
20
|
|
@@ -27,22 +28,25 @@ export function shortenHash(hash: string, length: number = 4) {
|
|
27
28
|
}
|
28
29
|
|
29
30
|
export function short(buffer: Buffer): string {
|
30
|
-
return buffer.toString(
|
31
|
+
return buffer.toString("hex").slice(0, 8) + "...";
|
31
32
|
}
|
32
33
|
|
33
|
-
export const signGnosisSafeTx = async (
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
+
) => {
|
46
50
|
const gnosisSafe = addresses[chainId].gnosisSafe;
|
47
51
|
|
48
52
|
const domain = {
|
@@ -52,16 +56,16 @@ export const signGnosisSafeTx = async ({
|
|
52
56
|
|
53
57
|
const types = {
|
54
58
|
SafeTx: [
|
55
|
-
{ type:
|
56
|
-
{ type:
|
57
|
-
{ type:
|
58
|
-
{ type:
|
59
|
-
{ type:
|
60
|
-
{ type:
|
61
|
-
{ type:
|
62
|
-
{ type:
|
63
|
-
{ type:
|
64
|
-
{ 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" },
|
65
69
|
],
|
66
70
|
};
|
67
71
|
|
@@ -79,21 +83,21 @@ export const signGnosisSafeTx = async ({
|
|
79
83
|
value,
|
80
84
|
};
|
81
85
|
|
82
|
-
return await signer._signTypedData(domain, types, message)
|
86
|
+
return await signer._signTypedData(domain, types, message);
|
83
87
|
};
|
84
88
|
|
85
89
|
export const getRpcProviderUrl = (chainId: ChainId) => {
|
86
90
|
switch (chainId) {
|
87
91
|
case 1:
|
88
|
-
return
|
92
|
+
return "https://rpc.ankr.com/eth";
|
89
93
|
case 137:
|
90
|
-
return
|
94
|
+
return "https://rpc.ankr.com/polygon";
|
91
95
|
case 43114:
|
92
|
-
return
|
96
|
+
return "https://rpc.ankr.com/avalanche";
|
93
97
|
default:
|
94
98
|
throw new Error(`Unknown chainId: ${chainId}`);
|
95
99
|
}
|
96
|
-
}
|
100
|
+
};
|
97
101
|
|
98
102
|
export interface Signature {
|
99
103
|
signer: string;
|
@@ -116,33 +120,51 @@ export const buildSignatureBytes = (signatures: Signature[]): string => {
|
|
116
120
|
* Call an async function with a maximum time limit (in milliseconds) for the timeout
|
117
121
|
* Resolved promise for async function call, or an error if time limit reached
|
118
122
|
*/
|
119
|
-
export const asyncCallWithTimeout = async <T>(
|
123
|
+
export const asyncCallWithTimeout = async <T>(
|
124
|
+
asyncPromise: Promise<T>,
|
125
|
+
timeout: number
|
126
|
+
) => {
|
120
127
|
let timeoutHandle;
|
121
128
|
|
122
129
|
const timeoutPromise = new Promise((_resolve, reject) => {
|
123
130
|
timeoutHandle = setTimeout(
|
124
|
-
() => reject(new Error(
|
131
|
+
() => reject(new Error("Async call timeout limit reached")),
|
125
132
|
timeout
|
126
133
|
);
|
127
134
|
});
|
128
135
|
|
129
|
-
return Promise.race([asyncPromise, timeoutPromise]).then(result => {
|
136
|
+
return Promise.race([asyncPromise, timeoutPromise]).then((result) => {
|
130
137
|
clearTimeout(timeoutHandle);
|
131
138
|
return result;
|
132
|
-
}) as Promise<T
|
133
|
-
}
|
134
|
-
|
139
|
+
}) as Promise<T>;
|
140
|
+
};
|
135
141
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
}
|
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
|
+
};
|
145
151
|
|
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
|
+
};
|
146
168
|
|
147
169
|
export class ContractError extends Error {
|
148
170
|
method: string;
|
@@ -150,76 +172,109 @@ export class ContractError extends Error {
|
|
150
172
|
args: any[];
|
151
173
|
}
|
152
174
|
|
153
|
-
export function getContract<TContract extends ethers.Contract>(
|
154
|
-
|
155
|
-
|
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}'.`);
|
156
185
|
}
|
157
186
|
|
158
187
|
const contract = new ethers.Contract(
|
159
188
|
address,
|
160
189
|
contractInterface,
|
161
190
|
signerOrProvider
|
162
|
-
) as TContract
|
191
|
+
) as TContract;
|
163
192
|
|
164
193
|
// Make sure the contract properties is writable
|
165
|
-
const desc = Object.getOwnPropertyDescriptor(contract,
|
194
|
+
const desc = Object.getOwnPropertyDescriptor(contract, "functions");
|
166
195
|
|
167
196
|
if (!desc || desc.writable !== true) {
|
168
|
-
return contract
|
197
|
+
return contract;
|
169
198
|
}
|
170
199
|
|
171
200
|
return new Proxy(contract, {
|
172
201
|
get(target, prop, receiver) {
|
173
202
|
const value = Reflect.get(target, prop, receiver);
|
174
203
|
|
175
|
-
if (
|
204
|
+
if (
|
205
|
+
typeof value === "function" &&
|
206
|
+
(contract.functions.hasOwnProperty(prop) ||
|
207
|
+
["queryFilter"].includes(String(prop)))
|
208
|
+
) {
|
176
209
|
let isConstant = false;
|
177
210
|
|
178
211
|
try {
|
179
|
-
isConstant = contract.interface.getFunction(String(prop)).constant
|
180
|
-
} catch (error) {
|
181
|
-
}
|
212
|
+
isConstant = contract.interface.getFunction(String(prop)).constant;
|
213
|
+
} catch (error) {}
|
182
214
|
|
183
215
|
return async (...args: any[]) => {
|
184
216
|
try {
|
185
|
-
return await retry(
|
217
|
+
return await retry(
|
218
|
+
async () => await value.bind(contract)(...args),
|
219
|
+
{ retries: isConstant ? 1 : 3 }
|
220
|
+
);
|
186
221
|
} catch (error) {
|
187
|
-
const err = new ContractError(
|
222
|
+
const err = new ContractError(
|
223
|
+
`Error calling "${String(prop)}" on "${address}": ${
|
224
|
+
error.reason || error.message
|
225
|
+
}`
|
226
|
+
);
|
188
227
|
|
189
|
-
err.method = String(prop)
|
190
|
-
err.address = address
|
191
|
-
err.args = [...args]
|
228
|
+
err.method = String(prop);
|
229
|
+
err.address = address;
|
230
|
+
err.args = [...args];
|
192
231
|
|
193
|
-
throw err
|
232
|
+
throw err;
|
194
233
|
}
|
195
|
-
}
|
234
|
+
};
|
196
235
|
}
|
197
236
|
|
198
|
-
|
199
|
-
|
237
|
+
if (
|
238
|
+
typeof value === "object" &&
|
239
|
+
[
|
240
|
+
"populateTransaction",
|
241
|
+
"estimateGas",
|
242
|
+
"functions",
|
243
|
+
"callStatic",
|
244
|
+
].includes(String(prop))
|
245
|
+
) {
|
200
246
|
const parentProp = String(prop);
|
201
247
|
|
202
248
|
return new Proxy(value, {
|
203
249
|
get(target, prop, receiver) {
|
204
250
|
const value = Reflect.get(target, prop, receiver);
|
205
251
|
|
206
|
-
if (typeof value ===
|
252
|
+
if (typeof value === "function") {
|
207
253
|
return async (...args: any[]) => {
|
208
254
|
try {
|
209
|
-
return await retry(
|
255
|
+
return await retry(
|
256
|
+
async () => await value.bind(contract)(...args),
|
257
|
+
{ retries: parentProp === "callStatic" ? 3 : 1 }
|
258
|
+
);
|
210
259
|
} catch (error) {
|
211
|
-
const err = new ContractError(
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
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;
|
218
273
|
}
|
219
|
-
}
|
274
|
+
};
|
220
275
|
}
|
221
|
-
}
|
222
|
-
})
|
276
|
+
},
|
277
|
+
});
|
223
278
|
}
|
224
279
|
|
225
280
|
return value;
|
@@ -227,7 +282,10 @@ export function getContract<TContract extends ethers.Contract>(address: string,
|
|
227
282
|
});
|
228
283
|
}
|
229
284
|
|
230
|
-
export const generateGnosisTransaction = async (
|
285
|
+
export const generateGnosisTransaction = async (
|
286
|
+
transactionData: any,
|
287
|
+
safeContract: GnosisSafe
|
288
|
+
) => {
|
231
289
|
console.log(transactionData);
|
232
290
|
|
233
291
|
let isExecuted = await safeContract.dataHashes(
|
@@ -243,10 +301,14 @@ export const generateGnosisTransaction = async (transactionData: any, safeContra
|
|
243
301
|
transactionData.refundReceiver,
|
244
302
|
transactionData.nonce
|
245
303
|
)
|
246
|
-
)
|
304
|
+
);
|
247
305
|
|
248
306
|
while (isExecuted == 1) {
|
249
|
-
transactionData.safeTxGas = ethers.BigNumber.from(
|
307
|
+
transactionData.safeTxGas = ethers.BigNumber.from(
|
308
|
+
String(transactionData.safeTxGas)
|
309
|
+
)
|
310
|
+
.add(1)
|
311
|
+
.toString();
|
250
312
|
|
251
313
|
isExecuted = await safeContract.dataHashes(
|
252
314
|
await safeContract.getTransactionHash(
|
@@ -261,8 +323,43 @@ export const generateGnosisTransaction = async (transactionData: any, safeContra
|
|
261
323
|
transactionData.refundReceiver,
|
262
324
|
transactionData.nonce
|
263
325
|
)
|
264
|
-
)
|
326
|
+
);
|
265
327
|
}
|
266
328
|
|
267
|
-
return transactionData
|
268
|
-
}
|
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
|
+
};
|