@instadapp/interop-x 0.0.0-dev.c696e38 → 0.0.0-dev.cb34b2e

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 (92) hide show
  1. package/dist/package.json +9 -2
  2. package/dist/src/abi/aaveV2Resolver.json +832 -0
  3. package/dist/src/abi/balanceResolver.json +211 -0
  4. package/dist/src/abi/index.js +6 -0
  5. package/dist/src/abi/instList.json +232 -0
  6. package/dist/src/api/index.js +7 -0
  7. package/dist/src/constants/addresses.js +7 -1
  8. package/dist/src/constants/capPerChain.js +8 -0
  9. package/dist/src/constants/index.js +2 -0
  10. package/dist/src/constants/tokens.js +44 -44
  11. package/dist/src/constants/wrappedNativeToken.js +8 -0
  12. package/dist/src/crons/index.js +3 -0
  13. package/dist/src/crons/prices.js +16 -0
  14. package/dist/src/db/models/transaction.js +4 -0
  15. package/dist/src/errors/index.js +30 -0
  16. package/dist/src/gnosis/actions/aaveV2/source.js +2 -1
  17. package/dist/src/gnosis/actions/aaveV2/target.js +5 -3
  18. package/dist/src/index.js +2 -1
  19. package/dist/src/providers/index.js +17 -0
  20. package/dist/src/providers/retry-provider.js +45 -0
  21. package/dist/src/services/Prices.js +74 -0
  22. package/dist/src/services/index.js +8 -0
  23. package/dist/src/tasks/InteropX/{ProcessSubmitSubmitEvents.js → ProcessSubmitEvents.js} +106 -14
  24. package/dist/src/tasks/InteropX/ProcessValidateEvents.js +30 -10
  25. package/dist/src/tasks/InteropX/SyncLogExecuteEvents.js +113 -0
  26. package/dist/src/tasks/InteropX/SyncLogSubmitEvents.js +2 -1
  27. package/dist/src/tasks/InteropX/SyncLogValidateEvents.js +5 -4
  28. package/dist/src/tasks/index.js +7 -5
  29. package/dist/src/typechain/AaveV2Resolver.js +2 -0
  30. package/dist/src/typechain/BalanceResolver.js +2 -0
  31. package/dist/src/typechain/InstList.js +2 -0
  32. package/dist/src/typechain/factories/AaveV2Resolver__factory.js +1191 -0
  33. package/dist/src/typechain/factories/BalanceResolver__factory.js +228 -0
  34. package/dist/src/typechain/factories/InstList__factory.js +249 -0
  35. package/dist/src/typechain/factories/index.js +7 -1
  36. package/dist/src/typechain/index.js +7 -1
  37. package/dist/src/utils/async.js +18 -0
  38. package/dist/src/utils/dsa.js +24 -0
  39. package/dist/src/utils/formatting.js +67 -0
  40. package/dist/src/utils/gnosis.js +87 -0
  41. package/dist/src/utils/http.js +10 -0
  42. package/dist/src/utils/index.js +22 -220
  43. package/dist/src/utils/interop.js +16 -0
  44. package/dist/src/utils/tokens.js +22 -0
  45. package/dist/src/utils/validate.js +111 -0
  46. package/dist/src/utils/web3.js +93 -0
  47. package/package.json +9 -2
  48. package/src/abi/aaveV2Resolver.json +832 -0
  49. package/src/abi/balanceResolver.json +211 -0
  50. package/src/abi/index.ts +6 -0
  51. package/src/abi/instList.json +232 -0
  52. package/src/api/index.ts +8 -0
  53. package/src/constants/addresses.ts +18 -2
  54. package/src/constants/capPerChain.ts +5 -0
  55. package/src/constants/index.ts +2 -0
  56. package/src/constants/tokens.ts +44 -44
  57. package/src/constants/wrappedNativeToken.ts +5 -0
  58. package/src/crons/index.ts +1 -0
  59. package/src/crons/prices.ts +12 -0
  60. package/src/db/models/transaction.ts +21 -0
  61. package/src/errors/index.ts +26 -0
  62. package/src/gnosis/actions/aaveV2/source.ts +2 -1
  63. package/src/gnosis/actions/aaveV2/target.ts +13 -3
  64. package/src/index.ts +1 -0
  65. package/src/providers/index.ts +1 -0
  66. package/src/providers/retry-provider.ts +51 -0
  67. package/src/services/Prices.ts +89 -0
  68. package/src/services/index.ts +1 -0
  69. package/src/tasks/InteropX/{ProcessSubmitSubmitEvents.ts → ProcessSubmitEvents.ts} +133 -20
  70. package/src/tasks/InteropX/ProcessValidateEvents.ts +42 -19
  71. package/src/tasks/InteropX/SyncLogExecuteEvents.ts +161 -0
  72. package/src/tasks/InteropX/SyncLogSubmitEvents.ts +5 -6
  73. package/src/tasks/InteropX/SyncLogValidateEvents.ts +8 -9
  74. package/src/tasks/index.ts +8 -5
  75. package/src/typechain/AaveV2Resolver.ts +1017 -0
  76. package/src/typechain/BalanceResolver.ts +266 -0
  77. package/src/typechain/InstList.ts +402 -0
  78. package/src/typechain/factories/AaveV2Resolver__factory.ts +1198 -0
  79. package/src/typechain/factories/BalanceResolver__factory.ts +235 -0
  80. package/src/typechain/factories/InstList__factory.ts +253 -0
  81. package/src/typechain/factories/index.ts +3 -0
  82. package/src/typechain/index.ts +6 -0
  83. package/src/utils/async.ts +22 -0
  84. package/src/utils/dsa.ts +30 -0
  85. package/src/utils/formatting.ts +68 -0
  86. package/src/utils/gnosis.ts +166 -0
  87. package/src/utils/http.ts +6 -0
  88. package/src/utils/index.ts +9 -365
  89. package/src/utils/interop.ts +28 -0
  90. package/src/utils/tokens.ts +21 -0
  91. package/src/utils/validate.ts +174 -0
  92. package/src/utils/web3.ts +132 -0
@@ -0,0 +1,161 @@
1
+ import { BaseTask } from "../BaseTask";
2
+ import Logger from "@/logger";
3
+ import { ethers } from "ethers";
4
+ import abi from "@/abi";
5
+ import { Transaction } from "@/db";
6
+ import {
7
+ generateInteropTransactionHash,
8
+ getContract,
9
+ getRpcProviderUrl,
10
+ } from "@/utils";
11
+ import { addresses } from "@/constants";
12
+ import { ChainId } from "@/types";
13
+ import config from "@/config";
14
+ import { InteropX } from "@/typechain";
15
+ import { Op } from "sequelize";
16
+ import { JsonRpcRetryProvider } from "@/providers";
17
+
18
+ export default class SyncLogExecuteEvents extends BaseTask {
19
+ contractAddress: string;
20
+ provider: JsonRpcRetryProvider;
21
+ contract: InteropX;
22
+ targetChainId: ChainId;
23
+
24
+ constructor({ targetChainId }: { targetChainId: ChainId }) {
25
+ super({
26
+ logger: new Logger("InteropX::SyncLogExecuteEvents"),
27
+ });
28
+ this.targetChainId = targetChainId;
29
+ }
30
+
31
+ async pollHandler() {
32
+ const currentBlock = await this.provider.getBlockNumber();
33
+
34
+ const events = await this.contract.queryFilter(
35
+ this.contract.filters.LogExecute(),
36
+ currentBlock - 2000,
37
+ currentBlock
38
+ );
39
+
40
+ let processedEvents = 0;
41
+
42
+ for (const event of events) {
43
+ try {
44
+ if (!event.args) {
45
+ continue;
46
+ }
47
+
48
+ const {
49
+ sourceSpells,
50
+ targetSpells,
51
+ position,
52
+ actionId,
53
+ actionIdHash,
54
+ sourceSender,
55
+ sourceDsaId,
56
+ targetDsaId,
57
+ sourceChainId,
58
+ targetChainId,
59
+ vnonce,
60
+ metadata,
61
+ } = event.args;
62
+
63
+ const uniqueIdentifier = {
64
+ actionId,
65
+ vnonce: vnonce.toString(),
66
+ sourceSender: sourceSender.toString(),
67
+ sourceChainId: sourceChainId.toNumber(),
68
+ targetChainId: targetChainId.toNumber(),
69
+ sourceDsaId: sourceDsaId.toString(),
70
+ targetDsaId: targetDsaId.toString(),
71
+ };
72
+
73
+ let transactionHash = generateInteropTransactionHash(uniqueIdentifier);
74
+
75
+ const transaction = await Transaction.findOne({
76
+ where: {
77
+ transactionHash,
78
+ executeEvent: { [Op.eq]: null },
79
+ },
80
+ });
81
+
82
+ if (!transaction) {
83
+ continue;
84
+ }
85
+
86
+ if (transaction.targetStatus != "success") {
87
+ transaction.targetStatus = "success";
88
+ }
89
+
90
+ if (transaction.status != "success") {
91
+ transaction.status = "success";
92
+ }
93
+
94
+ if (!transaction.targetCreatedAt) {
95
+ transaction.targetCreatedAt = new Date();
96
+ }
97
+
98
+ transaction.targetTransactionHash = event.transactionHash;
99
+ transaction.targetBlockNumber = event.blockNumber;
100
+ transaction.targetLogs = [];
101
+ transaction.executeEvent = {
102
+ actionId,
103
+ actionIdHashHash: actionIdHash,
104
+ actionIdHash,
105
+ vnonce: vnonce.toString(),
106
+ sourceSpells: sourceSpells.map(({ connector, data }) => ({
107
+ connector,
108
+ data,
109
+ })),
110
+ targetSpells: targetSpells.map(({ connector, data }) => ({
111
+ connector,
112
+ data,
113
+ })),
114
+ position: {
115
+ withdraw: position.withdraw.map((v) => ({
116
+ sourceToken: v.sourceToken,
117
+ targetToken: v.targetToken,
118
+ amount: v.amount.toString(),
119
+ })),
120
+ supply: position.supply.map((v) => ({
121
+ sourceToken: v.sourceToken,
122
+ targetToken: v.targetToken,
123
+ amount: v.amount.toString(),
124
+ })),
125
+ },
126
+ sourceChainId: sourceChainId.toNumber(),
127
+ targetChainId: targetChainId.toNumber(),
128
+ sourceSender,
129
+ sourceDsaId: sourceDsaId.toString(),
130
+ targetDsaId: targetDsaId.toString(),
131
+ metadata,
132
+ };
133
+
134
+ await transaction.save();
135
+
136
+ this.logger.info(`New InteropX tranaction: ${transactionHash} `);
137
+ } catch (error) {
138
+ this.logger.error(error);
139
+ }
140
+ }
141
+
142
+ if (processedEvents > 0)
143
+ this.logger.info(`${processedEvents} events processed`);
144
+ }
145
+
146
+ async start(): Promise<void> {
147
+ this.contractAddress = addresses[this.targetChainId].interopX;
148
+
149
+ this.provider = new JsonRpcRetryProvider(
150
+ getRpcProviderUrl(this.targetChainId)
151
+ );
152
+
153
+ this.contract = getContract<InteropX>(
154
+ this.contractAddress,
155
+ abi.interopX,
156
+ new ethers.Wallet(config.privateKey!, this.provider)
157
+ );
158
+
159
+ await super.start();
160
+ }
161
+ }
@@ -12,10 +12,11 @@ import { addresses } from "@/constants";
12
12
  import { ChainId } from "@/types";
13
13
  import config from "@/config";
14
14
  import { InteropX } from "@/typechain";
15
+ import { JsonRpcRetryProvider } from "@/providers";
15
16
 
16
- class SyncLogSubmitEvents extends BaseTask {
17
+ export default class SyncLogSubmitEvents extends BaseTask {
17
18
  contractAddress: string;
18
- provider: ethers.providers.JsonRpcProvider;
19
+ provider: JsonRpcRetryProvider;
19
20
  contract: InteropX;
20
21
  chainId: ChainId;
21
22
 
@@ -122,7 +123,7 @@ class SyncLogSubmitEvents extends BaseTask {
122
123
  async start(): Promise<void> {
123
124
  this.contractAddress = addresses[this.chainId].interopX;
124
125
 
125
- this.provider = new ethers.providers.JsonRpcProvider(
126
+ this.provider = new JsonRpcRetryProvider(
126
127
  getRpcProviderUrl(this.chainId)
127
128
  );
128
129
 
@@ -134,6 +135,4 @@ class SyncLogSubmitEvents extends BaseTask {
134
135
 
135
136
  await super.start();
136
137
  }
137
- }
138
-
139
- export default SyncLogSubmitEvents;
138
+ }
@@ -13,10 +13,11 @@ import { ChainId } from "@/types";
13
13
  import config from "@/config";
14
14
  import { InteropX } from "@/typechain";
15
15
  import { Op } from "sequelize";
16
+ import { JsonRpcRetryProvider } from "@/providers";
16
17
 
17
- class SyncLogValidateEvents extends BaseTask {
18
+ export default class SyncLogValidateEvents extends BaseTask {
18
19
  contractAddress: string;
19
- provider: ethers.providers.JsonRpcProvider;
20
+ provider: JsonRpcRetryProvider;
20
21
  contract: InteropX;
21
22
  chainId: ChainId;
22
23
 
@@ -92,7 +93,7 @@ class SyncLogValidateEvents extends BaseTask {
92
93
  transaction.sourceTransactionHash = event.transactionHash;
93
94
  transaction.sourceBlockNumber = event.blockNumber;
94
95
  transaction.sourceLogs = [];
95
- (transaction.validateEvent = {
96
+ transaction.validateEvent = {
96
97
  actionId,
97
98
  actionIdHashHash: actionIdHash,
98
99
  actionIdHash,
@@ -119,8 +120,8 @@ class SyncLogValidateEvents extends BaseTask {
119
120
  sourceDsaId: sourceDsaId.toString(),
120
121
  targetDsaId: targetDsaId.toString(),
121
122
  metadata,
122
- }),
123
- await transaction.save();
123
+ }
124
+ await transaction.save();
124
125
 
125
126
  this.logger.info(`New InteropX tranaction: ${transactionHash} `);
126
127
  } catch (error) {
@@ -135,7 +136,7 @@ class SyncLogValidateEvents extends BaseTask {
135
136
  async start(): Promise<void> {
136
137
  this.contractAddress = addresses[this.chainId].interopX;
137
138
 
138
- this.provider = new ethers.providers.JsonRpcProvider(
139
+ this.provider = new JsonRpcRetryProvider(
139
140
  getRpcProviderUrl(this.chainId)
140
141
  );
141
142
 
@@ -147,6 +148,4 @@ class SyncLogValidateEvents extends BaseTask {
147
148
 
148
149
  await super.start();
149
150
  }
150
- }
151
-
152
- export default SyncLogValidateEvents;
151
+ }
@@ -6,22 +6,22 @@ import SyncTransactionStatusTask from "./Transactions/SyncTransactionStatusTask"
6
6
  import AutoUpdateTask from "./AutoUpdateTask";
7
7
 
8
8
  import SyncLogSubmitEvents from "./InteropX/SyncLogSubmitEvents";
9
- import ProcessSubmitSubmitEvents from "./InteropX/ProcessSubmitSubmitEvents";
9
+ import ProcessSubmitEvents from "./InteropX/ProcessSubmitEvents";
10
10
  import SyncLogValidateEvents from "./InteropX/SyncLogValidateEvents";
11
11
  import ProcessValidateEvents from "./InteropX/ProcessValidateEvents";
12
+ import SyncLogExecuteEvents from "./InteropX/SyncLogExecuteEvents";
12
13
 
13
14
  export class Tasks {
14
15
 
15
16
  tasks: BaseTask[] = [
16
- // new SyncTransactionStatusTask(),
17
17
  new AutoUpdateTask(),
18
18
 
19
19
  // InteropX
20
20
  new SyncLogSubmitEvents({ chainId: 137 }),
21
21
  new SyncLogSubmitEvents({ chainId: 43114 }),
22
22
 
23
- new ProcessSubmitSubmitEvents({ chainId: 137 }),
24
- new ProcessSubmitSubmitEvents({ chainId: 43114 }),
23
+ new ProcessSubmitEvents({ chainId: 137 }),
24
+ new ProcessSubmitEvents({ chainId: 43114 }),
25
25
 
26
26
  new SyncLogValidateEvents({ chainId: 137 }),
27
27
  new SyncLogValidateEvents({ chainId: 43114 }),
@@ -29,6 +29,9 @@ export class Tasks {
29
29
  new ProcessValidateEvents({ chainId: 137 }),
30
30
  new ProcessValidateEvents({ chainId: 43114 }),
31
31
 
32
+ new SyncLogExecuteEvents({ targetChainId: 137 }),
33
+ new SyncLogExecuteEvents({ targetChainId: 43114 }),
34
+
32
35
  new SyncTransactionStatusTask(),
33
36
  ];
34
37
 
@@ -36,7 +39,7 @@ export class Tasks {
36
39
  for (const task of this.tasks) {
37
40
  try {
38
41
  task.start();
39
- await wait(1000)
42
+ await wait(300)
40
43
  } catch (error) {
41
44
  console.error(`Error starting task: ${task.constructor.name}`);
42
45
  }