@reclaimprotocol/attestor-core 3.0.1

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 (204) hide show
  1. package/README.md +39 -0
  2. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  3. package/lib/avs/abis/avsDirectoryABI.js +344 -0
  4. package/lib/avs/abis/delegationABI.d.ts +126 -0
  5. package/lib/avs/abis/delegationABI.js +5 -0
  6. package/lib/avs/abis/registryABI.d.ts +136 -0
  7. package/lib/avs/abis/registryABI.js +729 -0
  8. package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
  9. package/lib/avs/client/create-claim-on-avs.js +147 -0
  10. package/lib/avs/config.d.ts +7 -0
  11. package/lib/avs/config.js +24 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
  13. package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
  14. package/lib/avs/contracts/common.d.ts +21 -0
  15. package/lib/avs/contracts/common.js +3 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
  18. package/lib/avs/contracts/factories/index.d.ts +1 -0
  19. package/lib/avs/contracts/factories/index.js +9 -0
  20. package/lib/avs/contracts/index.d.ts +3 -0
  21. package/lib/avs/contracts/index.js +30 -0
  22. package/lib/avs/tests/test.operator.d.ts +11 -0
  23. package/lib/avs/tests/test.operator.js +313 -0
  24. package/lib/avs/tests/utils.d.ts +2 -0
  25. package/lib/avs/tests/utils.js +50 -0
  26. package/lib/avs/types/index.d.ts +55 -0
  27. package/lib/avs/types/index.js +3 -0
  28. package/lib/avs/utils/contracts.d.ts +21 -0
  29. package/lib/avs/utils/contracts.js +38 -0
  30. package/lib/avs/utils/register.d.ts +27 -0
  31. package/lib/avs/utils/register.js +76 -0
  32. package/lib/avs/utils/tasks.d.ts +22 -0
  33. package/lib/avs/utils/tasks.js +45 -0
  34. package/lib/client/create-claim.d.ts +5 -0
  35. package/lib/client/create-claim.js +357 -0
  36. package/lib/client/index.d.ts +3 -0
  37. package/lib/client/index.js +20 -0
  38. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  39. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
  40. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
  41. package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
  42. package/lib/client/utils/attestor-pool.d.ts +6 -0
  43. package/lib/client/utils/attestor-pool.js +28 -0
  44. package/lib/client/utils/client-socket.d.ts +9 -0
  45. package/lib/client/utils/client-socket.js +77 -0
  46. package/lib/client/utils/message-handler.d.ts +4 -0
  47. package/lib/client/utils/message-handler.js +93 -0
  48. package/lib/config/index.d.ts +23 -0
  49. package/lib/config/index.js +35 -0
  50. package/lib/index.d.ts +9 -0
  51. package/lib/index.js +39 -0
  52. package/lib/proto/api.d.ts +414 -0
  53. package/lib/proto/api.js +2756 -0
  54. package/lib/providers/http/index.d.ts +3 -0
  55. package/lib/providers/http/index.js +472 -0
  56. package/lib/providers/http/utils.d.ts +44 -0
  57. package/lib/providers/http/utils.js +302 -0
  58. package/lib/providers/index.d.ts +4 -0
  59. package/lib/providers/index.js +11 -0
  60. package/lib/scripts/check-avs-registration.d.ts +1 -0
  61. package/lib/scripts/check-avs-registration.js +28 -0
  62. package/lib/scripts/generate-provider-types.d.ts +5 -0
  63. package/lib/scripts/generate-provider-types.js +82 -0
  64. package/lib/scripts/generate-receipt.d.ts +9 -0
  65. package/lib/scripts/generate-receipt.js +93 -0
  66. package/lib/scripts/register-avs-operator.d.ts +1 -0
  67. package/lib/scripts/register-avs-operator.js +6 -0
  68. package/lib/scripts/start-server.d.ts +1 -0
  69. package/lib/scripts/start-server.js +6 -0
  70. package/lib/scripts/verify-root-ca.d.ts +1 -0
  71. package/lib/scripts/verify-root-ca.js +51 -0
  72. package/lib/server/create-server.d.ts +7 -0
  73. package/lib/server/create-server.js +85 -0
  74. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  75. package/lib/server/handlers/claimTunnel.js +55 -0
  76. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  77. package/lib/server/handlers/completeClaimOnChain.js +28 -0
  78. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  79. package/lib/server/handlers/createClaimOnChain.js +31 -0
  80. package/lib/server/handlers/createTunnel.d.ts +2 -0
  81. package/lib/server/handlers/createTunnel.js +65 -0
  82. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  83. package/lib/server/handlers/disconnectTunnel.js +10 -0
  84. package/lib/server/handlers/index.d.ts +4 -0
  85. package/lib/server/handlers/index.js +18 -0
  86. package/lib/server/handlers/init.d.ts +2 -0
  87. package/lib/server/handlers/init.js +21 -0
  88. package/lib/server/index.d.ts +4 -0
  89. package/lib/server/index.js +21 -0
  90. package/lib/server/socket.d.ts +11 -0
  91. package/lib/server/socket.js +95 -0
  92. package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
  93. package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
  94. package/lib/server/utils/apm.d.ts +11 -0
  95. package/lib/server/utils/apm.js +39 -0
  96. package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
  97. package/lib/server/utils/assert-valid-claim-request.js +189 -0
  98. package/lib/server/utils/config-env.d.ts +1 -0
  99. package/lib/server/utils/config-env.js +7 -0
  100. package/lib/server/utils/generics.d.ts +22 -0
  101. package/lib/server/utils/generics.js +59 -0
  102. package/lib/server/utils/iso.d.ts +1 -0
  103. package/lib/server/utils/iso.js +260 -0
  104. package/lib/server/utils/keep-alive.d.ts +7 -0
  105. package/lib/server/utils/keep-alive.js +42 -0
  106. package/lib/server/utils/process-handshake.d.ts +13 -0
  107. package/lib/server/utils/process-handshake.js +179 -0
  108. package/lib/server/utils/verify-server-certificates.d.ts +7 -0
  109. package/lib/server/utils/verify-server-certificates.js +102 -0
  110. package/lib/tests/describe-with-server.d.ts +21 -0
  111. package/lib/tests/describe-with-server.js +67 -0
  112. package/lib/tests/mock-provider-server.d.ts +13 -0
  113. package/lib/tests/mock-provider-server.js +65 -0
  114. package/lib/tests/mocks.d.ts +4 -0
  115. package/lib/tests/mocks.js +23 -0
  116. package/lib/tests/test.claim-creation.d.ts +1 -0
  117. package/lib/tests/test.claim-creation.js +187 -0
  118. package/lib/tests/test.http-parser.d.ts +1 -0
  119. package/lib/tests/test.http-parser.js +118 -0
  120. package/lib/tests/test.http-provider-utils.d.ts +1 -0
  121. package/lib/tests/test.http-provider-utils.js +1932 -0
  122. package/lib/tests/test.http-provider.d.ts +1 -0
  123. package/lib/tests/test.http-provider.js +43 -0
  124. package/lib/tests/test.rpc-communication.d.ts +1 -0
  125. package/lib/tests/test.rpc-communication.js +64 -0
  126. package/lib/tests/test.rpc-tunnel.d.ts +1 -0
  127. package/lib/tests/test.rpc-tunnel.js +168 -0
  128. package/lib/tests/test.signatures.d.ts +1 -0
  129. package/lib/tests/test.signatures.js +24 -0
  130. package/lib/tests/test.tcp-tunnel.d.ts +1 -0
  131. package/lib/tests/test.tcp-tunnel.js +64 -0
  132. package/lib/tests/test.zk.d.ts +1 -0
  133. package/lib/tests/test.zk.js +169 -0
  134. package/lib/tests/utils.d.ts +12 -0
  135. package/lib/tests/utils.js +49 -0
  136. package/lib/types/claims.d.ts +64 -0
  137. package/lib/types/claims.js +3 -0
  138. package/lib/types/client.d.ts +136 -0
  139. package/lib/types/client.js +3 -0
  140. package/lib/types/general.d.ts +39 -0
  141. package/lib/types/general.js +3 -0
  142. package/lib/types/handlers.d.ts +10 -0
  143. package/lib/types/handlers.js +3 -0
  144. package/lib/types/index.d.ts +9 -0
  145. package/lib/types/index.js +26 -0
  146. package/lib/types/providers.d.ts +135 -0
  147. package/lib/types/providers.gen.d.ts +414 -0
  148. package/lib/types/providers.gen.js +14 -0
  149. package/lib/types/providers.js +3 -0
  150. package/lib/types/rpc.d.ts +35 -0
  151. package/lib/types/rpc.js +3 -0
  152. package/lib/types/signatures.d.ts +28 -0
  153. package/lib/types/signatures.js +3 -0
  154. package/lib/types/tunnel.d.ts +18 -0
  155. package/lib/types/tunnel.js +3 -0
  156. package/lib/types/zk.d.ts +16 -0
  157. package/lib/types/zk.js +3 -0
  158. package/lib/utils/benchmark.d.ts +1 -0
  159. package/lib/utils/benchmark.js +70 -0
  160. package/lib/utils/claims.d.ts +33 -0
  161. package/lib/utils/claims.js +112 -0
  162. package/lib/utils/env.d.ts +3 -0
  163. package/lib/utils/env.js +20 -0
  164. package/lib/utils/error.d.ts +27 -0
  165. package/lib/utils/error.js +43 -0
  166. package/lib/utils/generics.d.ts +112 -0
  167. package/lib/utils/generics.js +348 -0
  168. package/lib/utils/http-parser.d.ts +55 -0
  169. package/lib/utils/http-parser.js +249 -0
  170. package/lib/utils/index.d.ts +10 -0
  171. package/lib/utils/index.js +27 -0
  172. package/lib/utils/logger.d.ts +13 -0
  173. package/lib/utils/logger.js +100 -0
  174. package/lib/utils/prepare-packets.d.ts +16 -0
  175. package/lib/utils/prepare-packets.js +61 -0
  176. package/lib/utils/redactions.d.ts +41 -0
  177. package/lib/utils/redactions.js +111 -0
  178. package/lib/utils/retries.d.ts +12 -0
  179. package/lib/utils/retries.js +28 -0
  180. package/lib/utils/signatures/eth.d.ts +2 -0
  181. package/lib/utils/signatures/eth.js +33 -0
  182. package/lib/utils/signatures/index.d.ts +5 -0
  183. package/lib/utils/signatures/index.js +11 -0
  184. package/lib/utils/socket-base.d.ts +21 -0
  185. package/lib/utils/socket-base.js +89 -0
  186. package/lib/utils/tls.d.ts +2 -0
  187. package/lib/utils/tls.js +32 -0
  188. package/lib/utils/validation.d.ts +2 -0
  189. package/lib/utils/validation.js +46 -0
  190. package/lib/utils/ws.d.ts +12 -0
  191. package/lib/utils/ws.js +21 -0
  192. package/lib/utils/zk.d.ts +50 -0
  193. package/lib/utils/zk.js +282 -0
  194. package/lib/window-rpc/index.d.ts +3 -0
  195. package/lib/window-rpc/index.js +20 -0
  196. package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
  197. package/lib/window-rpc/setup-window-rpc.js +239 -0
  198. package/lib/window-rpc/types.d.ts +184 -0
  199. package/lib/window-rpc/types.js +3 -0
  200. package/lib/window-rpc/utils.d.ts +13 -0
  201. package/lib/window-rpc/utils.js +76 -0
  202. package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
  203. package/lib/window-rpc/window-rpc-zk.js +72 -0
  204. package/package.json +117 -0
@@ -0,0 +1 @@
1
+ export { ReclaimServiceManager__factory } from "./ReclaimServiceManager__factory";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReclaimServiceManager__factory = void 0;
4
+ /* Autogenerated file. Do not edit manually. */
5
+ /* tslint:disable */
6
+ /* eslint-disable */
7
+ var ReclaimServiceManager__factory_1 = require("./ReclaimServiceManager__factory");
8
+ Object.defineProperty(exports, "ReclaimServiceManager__factory", { enumerable: true, get: function () { return ReclaimServiceManager__factory_1.ReclaimServiceManager__factory; } });
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXZzL2NvbnRyYWN0cy9mYWN0b3JpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQStDO0FBQy9DLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDcEIsbUZBQWtGO0FBQXpFLGdKQUFBLDhCQUE4QixPQUFBIn0=
@@ -0,0 +1,3 @@
1
+ export type { ReclaimServiceManager } from "./ReclaimServiceManager";
2
+ export * as factories from "./factories";
3
+ export { ReclaimServiceManager__factory } from "./factories/ReclaimServiceManager__factory";
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ReclaimServiceManager__factory = exports.factories = void 0;
27
+ exports.factories = __importStar(require("./factories"));
28
+ var ReclaimServiceManager__factory_1 = require("./factories/ReclaimServiceManager__factory");
29
+ Object.defineProperty(exports, "ReclaimServiceManager__factory", { enumerable: true, get: function () { return ReclaimServiceManager__factory_1.ReclaimServiceManager__factory; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL2NvbnRyYWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBLHlEQUF5QztBQUN6Qyw2RkFBNEY7QUFBbkYsZ0pBQUEsOEJBQThCLE9BQUEifQ==
@@ -0,0 +1,11 @@
1
+ /**
2
+ * This file tests the operator registration and task creation.
3
+ * The tests were initially written using Node's own testing framework, but
4
+ * later switched to Jest. Thus, the tests were initially written in a nested
5
+ * format, but were later refactored to use Jest's `describe` and `it` functions.
6
+ * Apologies for the hence resulting inconsistency in the code style.
7
+ *
8
+ * The nesting of tests is helpful as the tests logically depend on each other,
9
+ * and the nesting helps save time by not repeating the same setup code.
10
+ */
11
+ export {};
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ /**
3
+ * This file tests the operator registration and task creation.
4
+ * The tests were initially written using Node's own testing framework, but
5
+ * later switched to Jest. Thus, the tests were initially written in a nested
6
+ * format, but were later refactored to use Jest's `describe` and `it` functions.
7
+ * Apologies for the hence resulting inconsistency in the code style.
8
+ *
9
+ * The nesting of tests is helpful as the tests logically depend on each other,
10
+ * and the nesting helps save time by not repeating the same setup code.
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const ethers_1 = require("ethers");
17
+ const utils_1 = require("ethers/lib/utils");
18
+ const node_assert_1 = __importDefault(require("node:assert"));
19
+ const create_claim_on_avs_1 = require("src/avs/client/create-claim-on-avs");
20
+ const utils_2 = require("src/avs/tests/utils");
21
+ const contracts_1 = require("src/avs/utils/contracts");
22
+ const register_1 = require("src/avs/utils/register");
23
+ const tasks_1 = require("src/avs/utils/tasks");
24
+ const describe_with_server_1 = require("src/tests/describe-with-server");
25
+ const utils_3 = require("src/utils");
26
+ const contracts = (0, contracts_1.getContracts)();
27
+ jest.setTimeout(60000);
28
+ describe('Operators', () => {
29
+ let shutdownChain;
30
+ let operators = [];
31
+ const createClaimFn = jest.fn(() => {
32
+ throw new Error('Not implemented');
33
+ });
34
+ let registeredFirstOperator = false;
35
+ let registeredSecondOperator = false;
36
+ beforeAll(async () => {
37
+ shutdownChain = await (0, utils_2.runFreshChain)();
38
+ operators = [{ wallet: contracts.wallet, url: 'ws://example.com' }];
39
+ createClaimFn.mockImplementation(async ({ ownerPrivateKey, name, params, context, client, timestampS }) => {
40
+ if (!('url' in client)) {
41
+ throw new Error('Invalid client');
42
+ }
43
+ const op = operators
44
+ .find(op => op.url === client.url.toString());
45
+ if (!op) {
46
+ throw new Error('Operator not found: ' + client.url);
47
+ }
48
+ const userWallet = new ethers_1.Wallet(ownerPrivateKey, contracts.provider);
49
+ const data = (0, utils_3.createSignDataForClaim)({
50
+ provider: name,
51
+ parameters: (0, utils_3.canonicalStringify)(params),
52
+ context: context
53
+ ? (0, utils_3.canonicalStringify)(context)
54
+ : '',
55
+ timestampS: timestampS,
56
+ owner: userWallet.address,
57
+ epoch: 1
58
+ });
59
+ const signData = await op.wallet.signMessage(data);
60
+ const signArray = (0, utils_1.arrayify)(signData);
61
+ return {
62
+ signatures: { claimSignature: signArray }
63
+ };
64
+ });
65
+ });
66
+ afterAll(async () => {
67
+ await (shutdownChain === null || shutdownChain === void 0 ? void 0 : shutdownChain());
68
+ });
69
+ it('should prevent registration of non-whitelisted operator', async () => {
70
+ const op = randomWallet();
71
+ const url = 'ws://abcd.com/ws';
72
+ await (0, utils_2.sendGasToAddress)(op.address);
73
+ // using try-catch since jest.rejects.toMatchObject wasn't
74
+ // working as expected
75
+ try {
76
+ await (0, register_1.registerOperator)({
77
+ wallet: op,
78
+ reclaimRpcUrl: url
79
+ });
80
+ throw new Error('Should have thrown an error');
81
+ }
82
+ catch (err) {
83
+ expect(err.message).toMatch(/Operator not whitelisted/);
84
+ }
85
+ });
86
+ it('should prevent non-admins from modifying internal settings', async () => {
87
+ const nonAdmin = randomWallet();
88
+ await (0, utils_2.sendGasToAddress)(nonAdmin.address);
89
+ const contract = contracts.contract.connect(nonAdmin);
90
+ const OPS = [
91
+ () => (contract.whitelistAddressAsOperator(nonAdmin.address, true)),
92
+ () => (contract.updateTaskCreationMetadata({
93
+ minSignaturesPerTask: 2,
94
+ maxTaskLifetimeS: 10,
95
+ maxTaskCreationDelayS: 0
96
+ }))
97
+ ];
98
+ for (const op of OPS) {
99
+ try {
100
+ await op();
101
+ throw new Error('Should have thrown an error');
102
+ }
103
+ catch (err) {
104
+ expect(err.message).toMatch(/Caller is not admin/);
105
+ }
106
+ }
107
+ });
108
+ it('should register the operator on chain', async () => {
109
+ await registerFirstOperator();
110
+ });
111
+ it('should not throw an error on repeated registration', async () => {
112
+ await registerFirstOperator();
113
+ await (0, register_1.registerOperator)();
114
+ });
115
+ it('should register multiple operators', async () => {
116
+ await registerFirstOperator();
117
+ await registerSecondOperator();
118
+ });
119
+ describe('With Task', () => {
120
+ let userWallet;
121
+ let arg;
122
+ beforeAll(async () => {
123
+ await registerFirstOperator();
124
+ await registerSecondOperator();
125
+ userWallet = randomWallet();
126
+ await (0, utils_2.sendGasToAddress)(userWallet.address);
127
+ });
128
+ it('should create a task', async () => {
129
+ arg = await createNewTask(userWallet);
130
+ });
131
+ it('should mark a task as completed', async () => {
132
+ if (!arg) {
133
+ arg = await createNewTask(userWallet);
134
+ }
135
+ await markTaskAsCompleted(userWallet, arg);
136
+ });
137
+ it('should create a task for another wallet', async () => {
138
+ const ownerWallet = randomWallet();
139
+ const rslt = await createNewTask(userWallet, ownerWallet);
140
+ node_assert_1.default.strictEqual(rslt.task.request.owner, ownerWallet.address);
141
+ });
142
+ });
143
+ (0, describe_with_server_1.describeWithServer)('With Task & Attestor Server', opts => {
144
+ beforeAll(async () => {
145
+ await registerFirstOperator();
146
+ await registerSecondOperator();
147
+ });
148
+ it('should create claim via createClaimOnChain', createClaimViaFn);
149
+ it('should make attestor pay for claim', async () => {
150
+ const userWallet = randomWallet();
151
+ const { object: rslt } = await (0, create_claim_on_avs_1.createClaimOnAvs)({
152
+ ownerPrivateKey: userWallet.privateKey,
153
+ name: 'http',
154
+ params: {
155
+ url: 'https://example.com',
156
+ method: 'GET',
157
+ responseRedactions: [],
158
+ responseMatches: [
159
+ {
160
+ type: 'contains',
161
+ value: 'test'
162
+ }
163
+ ]
164
+ },
165
+ secretParams: {},
166
+ payer: { attestor: opts.serverUrl },
167
+ createClaimOnAttestor: createClaimFn
168
+ });
169
+ node_assert_1.default.strictEqual(rslt.task.task.request.owner, userWallet.address);
170
+ });
171
+ });
172
+ async function registerFirstOperator() {
173
+ if (registeredFirstOperator) {
174
+ return;
175
+ }
176
+ // fetch address from the env variable, PRIVATE_KEY
177
+ const operatorAddress = await contracts.wallet.address;
178
+ await (0, utils_2.sendGasToAddress)(operatorAddress);
179
+ await contracts.contract.whitelistAddressAsOperator(operatorAddress, true);
180
+ await (0, register_1.registerOperator)({
181
+ wallet: operators[0].wallet,
182
+ reclaimRpcUrl: operators[0].url
183
+ });
184
+ node_assert_1.default.strictEqual(await contracts.registryContract
185
+ .operatorRegistered(operatorAddress), true);
186
+ const op = await contracts.contract.registeredOperators(0);
187
+ node_assert_1.default.strictEqual(op.addr, operatorAddress);
188
+ registeredFirstOperator = true;
189
+ }
190
+ async function registerSecondOperator() {
191
+ if (registeredSecondOperator) {
192
+ return;
193
+ }
194
+ const wallet2 = randomWallet();
195
+ const url = 'ws://abcd.com/ws';
196
+ await (0, utils_2.sendGasToAddress)(wallet2.address);
197
+ await contracts.contract.whitelistAddressAsOperator(wallet2.address, true);
198
+ await (0, register_1.registerOperator)({
199
+ wallet: wallet2,
200
+ reclaimRpcUrl: url
201
+ });
202
+ const newAddr = await wallet2.address;
203
+ node_assert_1.default.strictEqual(await contracts.registryContract.operatorRegistered(newAddr), true);
204
+ const meta = await contracts.contract
205
+ .getMetadataForOperator(newAddr);
206
+ node_assert_1.default.strictEqual(meta.url, url);
207
+ node_assert_1.default.strictEqual(meta.addr, newAddr);
208
+ operators.push({ wallet: wallet2, url });
209
+ registeredSecondOperator = true;
210
+ }
211
+ async function createNewTask(userWallet, claimOwner = userWallet) {
212
+ var _a, _b;
213
+ const params = makeNewCreateClaimParams();
214
+ const { task } = await (0, tasks_1.createNewClaimRequestOnChain)({
215
+ request: {
216
+ provider: params.provider,
217
+ claimUserId: new Uint8Array(32),
218
+ claimHash: (0, utils_3.getIdentifierFromClaimInfo)(params),
219
+ requestedAt: (0, utils_3.unixTimestampSeconds)(),
220
+ },
221
+ payer: userWallet,
222
+ owner: claimOwner
223
+ });
224
+ node_assert_1.default.strictEqual(!!task, true);
225
+ node_assert_1.default.equal((_b = (_a = task === null || task === void 0 ? void 0 : task.task) === null || _a === void 0 ? void 0 : _a.request) === null || _b === void 0 ? void 0 : _b.provider, params.provider);
226
+ return task;
227
+ }
228
+ async function markTaskAsCompleted(userWallet, { task, taskIndex }) {
229
+ var _a;
230
+ node_assert_1.default.ok(task.operators.length > 0, 'No operators selected for the task');
231
+ const req = task.request;
232
+ const signData = (0, utils_3.createSignDataForClaim)({
233
+ identifier: req.claimHash,
234
+ timestampS: +task.createdAt.toString(),
235
+ owner: await userWallet.address,
236
+ epoch: 1
237
+ });
238
+ const signatures = [];
239
+ for (const { wallet: operator } of operators) {
240
+ const opAddr = await operator.address;
241
+ const selectedOp = task.operators
242
+ .some(op => op.addr === opAddr);
243
+ if (!selectedOp) {
244
+ continue;
245
+ }
246
+ const signature = await operator
247
+ .signMessage(signData);
248
+ signatures.push(signature);
249
+ }
250
+ node_assert_1.default.strictEqual(signatures.length, task.operators.length);
251
+ const tx = await contracts.contract
252
+ .connect(userWallet)
253
+ .taskCompleted({ task, signatures }, taskIndex);
254
+ const rslt = await tx.wait();
255
+ const events = rslt.events;
256
+ const arg = (_a = events === null || events === void 0 ? void 0 : events[0]) === null || _a === void 0 ? void 0 : _a.args;
257
+ node_assert_1.default.strictEqual(events === null || events === void 0 ? void 0 : events.length, 1);
258
+ node_assert_1.default.ok(arg.task);
259
+ }
260
+ async function createClaimViaFn() {
261
+ const tx = await contracts.contract.updateTaskCreationMetadata({
262
+ minSignaturesPerTask: 2,
263
+ maxTaskLifetimeS: 0,
264
+ maxTaskCreationDelayS: 0
265
+ });
266
+ await tx.wait();
267
+ console.log('min sigs set to 2');
268
+ const userWallet = randomWallet();
269
+ await (0, utils_2.sendGasToAddress)(userWallet.address);
270
+ const { object: rslt } = await (0, create_claim_on_avs_1.createClaimOnAvs)({
271
+ ownerPrivateKey: userWallet.privateKey,
272
+ name: 'http',
273
+ params: {
274
+ url: 'https://example.com',
275
+ method: 'GET',
276
+ responseRedactions: [],
277
+ responseMatches: [
278
+ {
279
+ type: 'contains',
280
+ value: 'test'
281
+ }
282
+ ]
283
+ },
284
+ secretParams: {},
285
+ createClaimOnAttestor: createClaimFn
286
+ });
287
+ // ensure two operators were selected
288
+ node_assert_1.default.equal(rslt.task.task.operators.length, 2);
289
+ node_assert_1.default.equal(rslt.task.signatures.length, 2);
290
+ }
291
+ });
292
+ function randomWallet() {
293
+ return ethers_1.Wallet.createRandom()
294
+ .connect(contracts.provider);
295
+ }
296
+ function makeNewCreateClaimParams() {
297
+ return {
298
+ provider: 'http',
299
+ parameters: (0, utils_3.canonicalStringify)({
300
+ url: 'https://example.com',
301
+ method: 'GET',
302
+ responseRedactions: [],
303
+ responseMatches: [
304
+ {
305
+ type: 'contains',
306
+ value: 'test'
307
+ }
308
+ ]
309
+ }),
310
+ context: ''
311
+ };
312
+ }
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5vcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdnMvdGVzdHMvdGVzdC5vcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7OztBQUVILG1DQUErQjtBQUMvQiw0Q0FBMkM7QUFDM0MsOERBQWdDO0FBQ2hDLDRFQUFxRTtBQUVyRSwrQ0FBcUU7QUFDckUsdURBQXNEO0FBQ3RELHFEQUF5RDtBQUN6RCwrQ0FBa0U7QUFFbEUseUVBQW1FO0FBRW5FLHFDQUF3SDtBQUV4SCxNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFZLEdBQUUsQ0FBQTtBQUVoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQU0sQ0FBQyxDQUFBO0FBRXZCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBRTFCLElBQUksYUFBeUIsQ0FBQTtJQUM3QixJQUFJLFNBQVMsR0FHUCxFQUFFLENBQUE7SUFDUixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUczQixHQUFHLEVBQUU7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLHVCQUF1QixHQUFHLEtBQUssQ0FBQTtJQUNuQyxJQUFJLHdCQUF3QixHQUFHLEtBQUssQ0FBQTtJQUVwQyxTQUFTLENBQUMsS0FBSyxJQUFHLEVBQUU7UUFDbkIsYUFBYSxHQUFHLE1BQU0sSUFBQSxxQkFBYSxHQUFFLENBQUE7UUFDckMsU0FBUyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU8sRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBRXBFLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUMsRUFDdEMsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQzFE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
@@ -0,0 +1,2 @@
1
+ export declare function runFreshChain(): Promise<() => Promise<void>>;
2
+ export declare function sendGasToAddress(address: string): Promise<void>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runFreshChain = runFreshChain;
4
+ exports.sendGasToAddress = sendGasToAddress;
5
+ const child_process_1 = require("child_process");
6
+ async function runFreshChain() {
7
+ const task = (0, child_process_1.spawn)('npm', ['run', 'start:chain']);
8
+ task.stderr.pipe(process.stderr);
9
+ await new Promise((resolve, reject) => {
10
+ task.stdout.on('data', (data) => {
11
+ if (data.toString().includes('advancing chain...')) {
12
+ resolve();
13
+ }
14
+ });
15
+ task.on('exit', (code) => {
16
+ reject(`Exited with code ${code || 0}`);
17
+ });
18
+ });
19
+ console.log('Anvil chain booted');
20
+ return async () => {
21
+ process.kill(task.pid, 'SIGTERM');
22
+ await new Promise((resolve) => {
23
+ task.on('exit', resolve);
24
+ });
25
+ console.log('Chain shutdown');
26
+ };
27
+ }
28
+ async function sendGasToAddress(address) {
29
+ const task = (0, child_process_1.spawn)('cast', [
30
+ 'send',
31
+ address,
32
+ '--value',
33
+ '10ether',
34
+ '--private-key',
35
+ '0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6'
36
+ ]);
37
+ task.stdout.pipe(process.stdout);
38
+ task.stderr.pipe(process.stderr);
39
+ await new Promise((resolve, reject) => {
40
+ task.on('exit', (code) => {
41
+ if (code === 0) {
42
+ resolve();
43
+ }
44
+ else {
45
+ reject(`Gas add process exited with code ${code || 0}`);
46
+ }
47
+ });
48
+ });
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL3Rlc3RzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsc0NBd0JDO0FBRUQsNENBc0JDO0FBbERELGlEQUFxQztBQUU5QixLQUFLLFVBQVUsYUFBYTtJQUNsQyxNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFLLEVBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUE7SUFDakQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2hDLE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxFQUFFLENBQUE7WUFDVixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEMsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUVqQyxPQUFPLEtBQUssSUFBRyxFQUFFO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUksRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUNsQyxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDekIsQ0FBQyxDQUFDLENBQUE7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFBO0FBQ0YsQ0FBQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxPQUFlO0lBQ3JELE1BQU0sSUFBSSxHQUFHLElBQUEscUJBQUssRUFBQyxNQUFNLEVBQUU7UUFDMUIsTUFBTTtRQUNOLE9BQU87UUFDUCxTQUFTO1FBQ1QsU0FBUztRQUNULGVBQWU7UUFDZixvRUFBb0U7S0FDcEUsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUVoQyxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEIsSUFBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxFQUFFLENBQUE7WUFDVixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLG9DQUFvQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN4RCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNILENBQUMifQ==
@@ -0,0 +1,55 @@
1
+ import type { NewTaskCreatedEventObject } from 'src/avs/contracts/ReclaimServiceManager';
2
+ import type { createClaimOnAttestor } from 'src/client';
3
+ import type { ClaimTunnelResponse } from 'src/proto/api';
4
+ import type { CreateClaimOnAttestorOpts, ProofGenerationStep, ProviderName } from 'src/types';
5
+ export type ChainConfig = {
6
+ rpcUrl: string;
7
+ /**
8
+ * Reclaim AVS contract address
9
+ */
10
+ contractAddress: string;
11
+ delegationManagerAddress: string;
12
+ stakeRegistryAddress: string;
13
+ avsDirectoryAddress: string;
14
+ };
15
+ export type CreateClaimOnAvsStep = {
16
+ type: 'taskCreated';
17
+ data: NewTaskCreatedEventObject;
18
+ } | {
19
+ type: 'attestorStep';
20
+ data: {
21
+ operatorAddress: string;
22
+ step: ProofGenerationStep;
23
+ };
24
+ } | {
25
+ type: 'attestorDone';
26
+ data: {
27
+ task: NewTaskCreatedEventObject;
28
+ /**
29
+ * Index of the operator in the task
30
+ * that has finished the proof generation
31
+ */
32
+ responsesDone: ClaimTunnelResponse[];
33
+ };
34
+ };
35
+ export type CreateClaimOnAvsOpts<N extends ProviderName> = (Omit<CreateClaimOnAttestorOpts<N>, 'onStep' | 'client'>) & {
36
+ /**
37
+ * Chain ID to use for the claim
38
+ * @default -- env variable CHAIN_ID
39
+ */
40
+ chainId?: string;
41
+ /**
42
+ * Who will pay for the claim creation, including gas
43
+ * costs. Note: the attestor can choose to reject the
44
+ * claim if 'attestor' is chosen.
45
+ * @default undefined (owner of the claim)
46
+ */
47
+ payer?: {
48
+ attestor: string;
49
+ };
50
+ onStep?(step: CreateClaimOnAvsStep): void;
51
+ /**
52
+ * Override the default createClaimOnAttestor function
53
+ */
54
+ createClaimOnAttestor?: typeof createClaimOnAttestor;
55
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZzL3R5cGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,21 @@
1
+ import { ethers } from 'ethers';
2
+ import { ChainConfig } from 'src/avs/types';
3
+ /**
4
+ * get the contracts for the given chain ID
5
+ */
6
+ export declare function getContracts(chainId?: string): {
7
+ provider: ethers.providers.JsonRpcProvider;
8
+ wallet: ethers.Wallet | undefined;
9
+ delegationManager: ethers.Contract;
10
+ contract: import("src/avs/contracts").ReclaimServiceManager;
11
+ registryContract: ethers.Contract;
12
+ avsDirectory: ethers.Contract;
13
+ };
14
+ export declare function initialiseContracts({ rpcUrl, stakeRegistryAddress, avsDirectoryAddress, contractAddress, delegationManagerAddress, }: ChainConfig, privateKey?: string | undefined): {
15
+ provider: ethers.providers.JsonRpcProvider;
16
+ wallet: ethers.Wallet | undefined;
17
+ delegationManager: ethers.Contract;
18
+ contract: import("src/avs/contracts").ReclaimServiceManager;
19
+ registryContract: ethers.Contract;
20
+ avsDirectory: ethers.Contract;
21
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getContracts = getContracts;
4
+ exports.initialiseContracts = initialiseContracts;
5
+ const ethers_1 = require("ethers");
6
+ const avsDirectoryABI_1 = require("src/avs/abis/avsDirectoryABI");
7
+ const delegationABI_1 = require("src/avs/abis/delegationABI");
8
+ const registryABI_1 = require("src/avs/abis/registryABI");
9
+ const config_1 = require("src/avs/config");
10
+ const contracts_1 = require("src/avs/contracts");
11
+ const configs = {};
12
+ /**
13
+ * get the contracts for the given chain ID
14
+ */
15
+ function getContracts(chainId = config_1.SELECTED_CHAIN_ID) {
16
+ const config = config_1.CHAIN_CONFIGS[chainId];
17
+ if (!config) {
18
+ throw new Error(`No config found for chain ID: ${chainId}`);
19
+ }
20
+ configs[chainId] || (configs[chainId] = initialiseContracts(config));
21
+ return configs[chainId];
22
+ }
23
+ function initialiseContracts({ rpcUrl, stakeRegistryAddress, avsDirectoryAddress, contractAddress, delegationManagerAddress, }, privateKey = config_1.PRIVATE_KEY) {
24
+ const provider = new ethers_1.ethers.providers.JsonRpcProvider(rpcUrl);
25
+ const wallet = privateKey
26
+ ? new ethers_1.ethers.Wallet(privateKey, provider)
27
+ : undefined;
28
+ return {
29
+ provider,
30
+ wallet,
31
+ delegationManager: new ethers_1.ethers.Contract(delegationManagerAddress, delegationABI_1.delegationABI, wallet || provider),
32
+ // eslint-disable-next-line camelcase
33
+ contract: contracts_1.ReclaimServiceManager__factory.connect(contractAddress, wallet || provider),
34
+ registryContract: new ethers_1.ethers.Contract(stakeRegistryAddress, registryABI_1.registryABI, wallet || provider),
35
+ avsDirectory: new ethers_1.ethers.Contract(avsDirectoryAddress, avsDirectoryABI_1.avsDirectoryABI, wallet || provider),
36
+ };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F2cy91dGlscy9jb250cmFjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFlQSxvQ0FRQztBQUVELGtEQXVDQztBQWhFRCxtQ0FBK0I7QUFDL0Isa0VBQThEO0FBQzlELDhEQUEwRDtBQUMxRCwwREFBc0Q7QUFDdEQsMkNBQThFO0FBQzlFLGlEQUFrRTtBQUtsRSxNQUFNLE9BQU8sR0FBaUMsRUFBRSxDQUFBO0FBRWhEOztHQUVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLFVBQVUsMEJBQWtCO0lBQ3hELE1BQU0sTUFBTSxHQUFHLHNCQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckMsSUFBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQU8sTUFBZixPQUFPLENBQUMsT0FBTyxJQUFNLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFBO0lBQ2hELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3hCLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FDbEMsRUFDQyxNQUFNLEVBQ04sb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysd0JBQXdCLEdBQ1gsRUFDZCxhQUFpQyxvQkFBVztJQUU1QyxNQUFNLFFBQVEsR0FBRyxJQUFJLGVBQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzdELE1BQU0sTUFBTSxHQUFHLFVBQVU7UUFDeEIsQ0FBQyxDQUFDLElBQUksZUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFFWixPQUFPO1FBQ04sUUFBUTtRQUNSLE1BQU07UUFDTixpQkFBaUIsRUFBRSxJQUFJLGVBQU0sQ0FBQyxRQUFRLENBQ3JDLHdCQUF3QixFQUN4Qiw2QkFBYSxFQUNiLE1BQU0sSUFBSSxRQUFRLENBQ2xCO1FBQ0QscUNBQXFDO1FBQ3JDLFFBQVEsRUFBRSwwQ0FBOEIsQ0FBQyxPQUFPLENBQy9DLGVBQWUsRUFDZixNQUFNLElBQUksUUFBUSxDQUNsQjtRQUNELGdCQUFnQixFQUFFLElBQUksZUFBTSxDQUFDLFFBQVEsQ0FDcEMsb0JBQW9CLEVBQ3BCLHlCQUFXLEVBQ1gsTUFBTSxJQUFJLFFBQVEsQ0FDbEI7UUFDRCxZQUFZLEVBQUUsSUFBSSxlQUFNLENBQUMsUUFBUSxDQUNoQyxtQkFBbUIsRUFDbkIsaUNBQWUsRUFDZixNQUFNLElBQUksUUFBUSxDQUNsQjtLQUNELENBQUE7QUFDRixDQUFDIn0=
@@ -0,0 +1,27 @@
1
+ import { ethers } from 'ethers';
2
+ import { logger as LOGGER } from 'src/utils';
3
+ type RegisterOpts = {
4
+ logger?: typeof LOGGER;
5
+ /**
6
+ * What chain to register the operator on
7
+ * @default -- env variable CHAIN_ID
8
+ */
9
+ chainId?: string;
10
+ /**
11
+ * wallet of the operator.
12
+ * @default -- wallet specified in the contracts
13
+ * fetched by the chainId
14
+ */
15
+ wallet?: ethers.Wallet;
16
+ /**
17
+ * URL of the Reclaim RPC server.
18
+ * @default -- env variable RECLAIM_PUBLIC_URL
19
+ */
20
+ reclaimRpcUrl?: string;
21
+ };
22
+ /**
23
+ * Registers the operator on the chain, if required.
24
+ * If already registered -- will just pass through
25
+ */
26
+ export declare function registerOperator({ logger, chainId, wallet, reclaimRpcUrl }?: RegisterOpts): Promise<void>;
27
+ export {};