@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.
- package/README.md +39 -0
- package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
- package/lib/avs/abis/avsDirectoryABI.js +344 -0
- package/lib/avs/abis/delegationABI.d.ts +126 -0
- package/lib/avs/abis/delegationABI.js +5 -0
- package/lib/avs/abis/registryABI.d.ts +136 -0
- package/lib/avs/abis/registryABI.js +729 -0
- package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
- package/lib/avs/client/create-claim-on-avs.js +147 -0
- package/lib/avs/config.d.ts +7 -0
- package/lib/avs/config.js +24 -0
- package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
- package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
- package/lib/avs/contracts/common.d.ts +21 -0
- package/lib/avs/contracts/common.js +3 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
- package/lib/avs/contracts/factories/index.d.ts +1 -0
- package/lib/avs/contracts/factories/index.js +9 -0
- package/lib/avs/contracts/index.d.ts +3 -0
- package/lib/avs/contracts/index.js +30 -0
- package/lib/avs/tests/test.operator.d.ts +11 -0
- package/lib/avs/tests/test.operator.js +313 -0
- package/lib/avs/tests/utils.d.ts +2 -0
- package/lib/avs/tests/utils.js +50 -0
- package/lib/avs/types/index.d.ts +55 -0
- package/lib/avs/types/index.js +3 -0
- package/lib/avs/utils/contracts.d.ts +21 -0
- package/lib/avs/utils/contracts.js +38 -0
- package/lib/avs/utils/register.d.ts +27 -0
- package/lib/avs/utils/register.js +76 -0
- package/lib/avs/utils/tasks.d.ts +22 -0
- package/lib/avs/utils/tasks.js +45 -0
- package/lib/client/create-claim.d.ts +5 -0
- package/lib/client/create-claim.js +357 -0
- package/lib/client/index.d.ts +3 -0
- package/lib/client/index.js +20 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
- package/lib/client/utils/attestor-pool.d.ts +6 -0
- package/lib/client/utils/attestor-pool.js +28 -0
- package/lib/client/utils/client-socket.d.ts +9 -0
- package/lib/client/utils/client-socket.js +77 -0
- package/lib/client/utils/message-handler.d.ts +4 -0
- package/lib/client/utils/message-handler.js +93 -0
- package/lib/config/index.d.ts +23 -0
- package/lib/config/index.js +35 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +39 -0
- package/lib/proto/api.d.ts +414 -0
- package/lib/proto/api.js +2756 -0
- package/lib/providers/http/index.d.ts +3 -0
- package/lib/providers/http/index.js +472 -0
- package/lib/providers/http/utils.d.ts +44 -0
- package/lib/providers/http/utils.js +302 -0
- package/lib/providers/index.d.ts +4 -0
- package/lib/providers/index.js +11 -0
- package/lib/scripts/check-avs-registration.d.ts +1 -0
- package/lib/scripts/check-avs-registration.js +28 -0
- package/lib/scripts/generate-provider-types.d.ts +5 -0
- package/lib/scripts/generate-provider-types.js +82 -0
- package/lib/scripts/generate-receipt.d.ts +9 -0
- package/lib/scripts/generate-receipt.js +93 -0
- package/lib/scripts/register-avs-operator.d.ts +1 -0
- package/lib/scripts/register-avs-operator.js +6 -0
- package/lib/scripts/start-server.d.ts +1 -0
- package/lib/scripts/start-server.js +6 -0
- package/lib/scripts/verify-root-ca.d.ts +1 -0
- package/lib/scripts/verify-root-ca.js +51 -0
- package/lib/server/create-server.d.ts +7 -0
- package/lib/server/create-server.js +85 -0
- package/lib/server/handlers/claimTunnel.d.ts +2 -0
- package/lib/server/handlers/claimTunnel.js +55 -0
- package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/completeClaimOnChain.js +28 -0
- package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/createClaimOnChain.js +31 -0
- package/lib/server/handlers/createTunnel.d.ts +2 -0
- package/lib/server/handlers/createTunnel.js +65 -0
- package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
- package/lib/server/handlers/disconnectTunnel.js +10 -0
- package/lib/server/handlers/index.d.ts +4 -0
- package/lib/server/handlers/index.js +18 -0
- package/lib/server/handlers/init.d.ts +2 -0
- package/lib/server/handlers/init.js +21 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.js +21 -0
- package/lib/server/socket.d.ts +11 -0
- package/lib/server/socket.js +95 -0
- package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
- package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
- package/lib/server/utils/apm.d.ts +11 -0
- package/lib/server/utils/apm.js +39 -0
- package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
- package/lib/server/utils/assert-valid-claim-request.js +189 -0
- package/lib/server/utils/config-env.d.ts +1 -0
- package/lib/server/utils/config-env.js +7 -0
- package/lib/server/utils/generics.d.ts +22 -0
- package/lib/server/utils/generics.js +59 -0
- package/lib/server/utils/iso.d.ts +1 -0
- package/lib/server/utils/iso.js +260 -0
- package/lib/server/utils/keep-alive.d.ts +7 -0
- package/lib/server/utils/keep-alive.js +42 -0
- package/lib/server/utils/process-handshake.d.ts +13 -0
- package/lib/server/utils/process-handshake.js +179 -0
- package/lib/server/utils/verify-server-certificates.d.ts +7 -0
- package/lib/server/utils/verify-server-certificates.js +102 -0
- package/lib/tests/describe-with-server.d.ts +21 -0
- package/lib/tests/describe-with-server.js +67 -0
- package/lib/tests/mock-provider-server.d.ts +13 -0
- package/lib/tests/mock-provider-server.js +65 -0
- package/lib/tests/mocks.d.ts +4 -0
- package/lib/tests/mocks.js +23 -0
- package/lib/tests/test.claim-creation.d.ts +1 -0
- package/lib/tests/test.claim-creation.js +187 -0
- package/lib/tests/test.http-parser.d.ts +1 -0
- package/lib/tests/test.http-parser.js +118 -0
- package/lib/tests/test.http-provider-utils.d.ts +1 -0
- package/lib/tests/test.http-provider-utils.js +1932 -0
- package/lib/tests/test.http-provider.d.ts +1 -0
- package/lib/tests/test.http-provider.js +43 -0
- package/lib/tests/test.rpc-communication.d.ts +1 -0
- package/lib/tests/test.rpc-communication.js +64 -0
- package/lib/tests/test.rpc-tunnel.d.ts +1 -0
- package/lib/tests/test.rpc-tunnel.js +168 -0
- package/lib/tests/test.signatures.d.ts +1 -0
- package/lib/tests/test.signatures.js +24 -0
- package/lib/tests/test.tcp-tunnel.d.ts +1 -0
- package/lib/tests/test.tcp-tunnel.js +64 -0
- package/lib/tests/test.zk.d.ts +1 -0
- package/lib/tests/test.zk.js +169 -0
- package/lib/tests/utils.d.ts +12 -0
- package/lib/tests/utils.js +49 -0
- package/lib/types/claims.d.ts +64 -0
- package/lib/types/claims.js +3 -0
- package/lib/types/client.d.ts +136 -0
- package/lib/types/client.js +3 -0
- package/lib/types/general.d.ts +39 -0
- package/lib/types/general.js +3 -0
- package/lib/types/handlers.d.ts +10 -0
- package/lib/types/handlers.js +3 -0
- package/lib/types/index.d.ts +9 -0
- package/lib/types/index.js +26 -0
- package/lib/types/providers.d.ts +135 -0
- package/lib/types/providers.gen.d.ts +414 -0
- package/lib/types/providers.gen.js +14 -0
- package/lib/types/providers.js +3 -0
- package/lib/types/rpc.d.ts +35 -0
- package/lib/types/rpc.js +3 -0
- package/lib/types/signatures.d.ts +28 -0
- package/lib/types/signatures.js +3 -0
- package/lib/types/tunnel.d.ts +18 -0
- package/lib/types/tunnel.js +3 -0
- package/lib/types/zk.d.ts +16 -0
- package/lib/types/zk.js +3 -0
- package/lib/utils/benchmark.d.ts +1 -0
- package/lib/utils/benchmark.js +70 -0
- package/lib/utils/claims.d.ts +33 -0
- package/lib/utils/claims.js +112 -0
- package/lib/utils/env.d.ts +3 -0
- package/lib/utils/env.js +20 -0
- package/lib/utils/error.d.ts +27 -0
- package/lib/utils/error.js +43 -0
- package/lib/utils/generics.d.ts +112 -0
- package/lib/utils/generics.js +348 -0
- package/lib/utils/http-parser.d.ts +55 -0
- package/lib/utils/http-parser.js +249 -0
- package/lib/utils/index.d.ts +10 -0
- package/lib/utils/index.js +27 -0
- package/lib/utils/logger.d.ts +13 -0
- package/lib/utils/logger.js +100 -0
- package/lib/utils/prepare-packets.d.ts +16 -0
- package/lib/utils/prepare-packets.js +61 -0
- package/lib/utils/redactions.d.ts +41 -0
- package/lib/utils/redactions.js +111 -0
- package/lib/utils/retries.d.ts +12 -0
- package/lib/utils/retries.js +28 -0
- package/lib/utils/signatures/eth.d.ts +2 -0
- package/lib/utils/signatures/eth.js +33 -0
- package/lib/utils/signatures/index.d.ts +5 -0
- package/lib/utils/signatures/index.js +11 -0
- package/lib/utils/socket-base.d.ts +21 -0
- package/lib/utils/socket-base.js +89 -0
- package/lib/utils/tls.d.ts +2 -0
- package/lib/utils/tls.js +32 -0
- package/lib/utils/validation.d.ts +2 -0
- package/lib/utils/validation.js +46 -0
- package/lib/utils/ws.d.ts +12 -0
- package/lib/utils/ws.js +21 -0
- package/lib/utils/zk.d.ts +50 -0
- package/lib/utils/zk.js +282 -0
- package/lib/window-rpc/index.d.ts +3 -0
- package/lib/window-rpc/index.js +20 -0
- package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
- package/lib/window-rpc/setup-window-rpc.js +239 -0
- package/lib/window-rpc/types.d.ts +184 -0
- package/lib/window-rpc/types.js +3 -0
- package/lib/window-rpc/utils.d.ts +13 -0
- package/lib/window-rpc/utils.js +76 -0
- package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
- package/lib/window-rpc/window-rpc-zk.js +72 -0
- 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,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5vcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdnMvdGVzdHMvdGVzdC5vcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7OztBQUVILG1DQUErQjtBQUMvQiw0Q0FBMkM7QUFDM0MsOERBQWdDO0FBQ2hDLDRFQUFxRTtBQUVyRSwrQ0FBcUU7QUFDckUsdURBQXNEO0FBQ3RELHFEQUF5RDtBQUN6RCwrQ0FBa0U7QUFFbEUseUVBQW1FO0FBRW5FLHFDQUF3SDtBQUV4SCxNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFZLEdBQUUsQ0FBQTtBQUVoQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQU0sQ0FBQyxDQUFBO0FBRXZCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO0lBRTFCLElBQUksYUFBeUIsQ0FBQTtJQUM3QixJQUFJLFNBQVMsR0FHUCxFQUFFLENBQUE7SUFDUixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUczQixHQUFHLEVBQUU7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLENBQUE7SUFFRixJQUFJLHVCQUF1QixHQUFHLEtBQUssQ0FBQTtJQUNuQyxJQUFJLHdCQUF3QixHQUFHLEtBQUssQ0FBQTtJQUVwQyxTQUFTLENBQUMsS0FBSyxJQUFHLEVBQUU7UUFDbkIsYUFBYSxHQUFHLE1BQU0sSUFBQSxxQkFBYSxHQUFFLENBQUE7UUFDckMsU0FBUyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU8sRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO1FBRXBFLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUMsRUFDdEMsZUFBZSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQzFELEVBQUUsRUFBRTtZQUNKLElBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFDbEMsQ0FBQztZQUVELE1BQU0sRUFBRSxHQUFHLFNBQVM7aUJBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQzlDLElBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDUixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNyRCxDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFNLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUVsRSxNQUFNLElBQUksR0FBRyxJQUFBLDhCQUFzQixFQUFDO2dCQUNuQyxRQUFRLEVBQUUsSUFBSTtnQkFDZCxVQUFVLEVBQUUsSUFBQSwwQkFBa0IsRUFBQyxNQUFNLENBQUM7Z0JBQ3RDLE9BQU8sRUFBRSxPQUFPO29CQUNmLENBQUMsQ0FBQyxJQUFBLDBCQUFrQixFQUFDLE9BQU8sQ0FBQztvQkFDN0IsQ0FBQyxDQUFDLEVBQUU7Z0JBQ0wsVUFBVSxFQUFFLFVBQVc7Z0JBQ3ZCLEtBQUssRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDekIsS0FBSyxFQUFFLENBQUM7YUFDUixDQUFDLENBQUE7WUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2xELE1BQU0sU0FBUyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQTtZQUVwQyxPQUFPO2dCQUNOLFVBQVUsRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUU7YUFDbEMsQ0FBQTtRQUNULENBQUMsQ0FBQyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixRQUFRLENBQUMsS0FBSyxJQUFHLEVBQUU7UUFDbEIsTUFBTSxDQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsRUFBSSxDQUFBLENBQUE7SUFDeEIsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFHLEVBQUU7UUFDdkUsTUFBTSxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUE7UUFDekIsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUE7UUFDOUIsTUFBTSxJQUFBLHdCQUFnQixFQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVsQywwREFBMEQ7UUFDMUQsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQztZQUNKLE1BQU0sSUFBQSwyQkFBZ0IsRUFBQztnQkFDdEIsTUFBTSxFQUFFLEVBQUU7Z0JBQ1YsYUFBYSxFQUFFLEdBQUc7YUFDbEIsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFBQyxPQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUN4RCxDQUFDO0lBQ0YsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNERBQTRELEVBQUUsS0FBSyxJQUFHLEVBQUU7UUFDMUUsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUE7UUFDL0IsTUFBTSxJQUFBLHdCQUFnQixFQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUV4QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUVyRCxNQUFNLEdBQUcsR0FBRztZQUNYLEdBQUcsRUFBRSxDQUFDLENBQ0wsUUFBUSxDQUFDLDBCQUEwQixDQUNsQyxRQUFRLENBQUMsT0FBTyxFQUNoQixJQUFJLENBQ0osQ0FDRDtZQUNELEdBQUcsRUFBRSxDQUFDLENBQ0wsUUFBUSxDQUFDLDBCQUEwQixDQUFDO2dCQUNuQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN2QixnQkFBZ0IsRUFBRSxFQUFFO2dCQUNwQixxQkFBcUIsRUFBRSxDQUFDO2FBQ3hCLENBQUMsQ0FDRjtTQUNELENBQUE7UUFFRCxLQUFJLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQztnQkFDSixNQUFNLEVBQUUsRUFBRSxDQUFBO2dCQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtZQUMvQyxDQUFDO1lBQUMsT0FBTSxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBQ25ELENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFHLEVBQUU7UUFDckQsTUFBTSxxQkFBcUIsRUFBRSxDQUFBO0lBQzlCLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEtBQUssSUFBRyxFQUFFO1FBQ2xFLE1BQU0scUJBQXFCLEVBQUUsQ0FBQTtRQUM3QixNQUFNLElBQUEsMkJBQWdCLEdBQUUsQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLElBQUcsRUFBRTtRQUNsRCxNQUFNLHFCQUFxQixFQUFFLENBQUE7UUFDN0IsTUFBTSxzQkFBc0IsRUFBRSxDQUFBO0lBQy9CLENBQUMsQ0FBQyxDQUFBO0lBRUYsUUFBUSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUU7UUFFMUIsSUFBSSxVQUFrQixDQUFBO1FBQ3RCLElBQUksR0FBOEIsQ0FBQTtRQUVsQyxTQUFTLENBQUMsS0FBSyxJQUFHLEVBQUU7WUFDbkIsTUFBTSxxQkFBcUIsRUFBRSxDQUFBO1lBQzdCLE1BQU0sc0JBQXNCLEVBQUUsQ0FBQTtZQUU5QixVQUFVLEdBQUcsWUFBWSxFQUFFLENBQUE7WUFDM0IsTUFBTSxJQUFBLHdCQUFnQixFQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQTtRQUVGLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUcsRUFBRTtZQUNwQyxHQUFHLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDdEMsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFHLEVBQUU7WUFDL0MsSUFBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULEdBQUcsR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUN0QyxDQUFDO1lBRUQsTUFBTSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDM0MsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQUMseUNBQXlDLEVBQUUsS0FBSyxJQUFHLEVBQUU7WUFDdkQsTUFBTSxXQUFXLEdBQUcsWUFBWSxFQUFFLENBQUE7WUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3pELHFCQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDakUsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUEseUNBQWtCLEVBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDeEQsU0FBUyxDQUFDLEtBQUssSUFBRyxFQUFFO1lBQ25CLE1BQU0scUJBQXFCLEVBQUUsQ0FBQTtZQUM3QixNQUFNLHNCQUFzQixFQUFFLENBQUE7UUFDL0IsQ0FBQyxDQUFDLENBQUE7UUFFRixFQUFFLENBQ0QsNENBQTRDLEVBQzVDLGdCQUFnQixDQUNoQixDQUFBO1FBRUQsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssSUFBRyxFQUFFO1lBQ2xELE1BQU0sVUFBVSxHQUFHLFlBQVksRUFBRSxDQUFBO1lBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNDQUFnQixFQUFDO2dCQUMvQyxlQUFlLEVBQUUsVUFBVSxDQUFDLFVBQVU7Z0JBQ3RDLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRTtvQkFDUCxHQUFHLEVBQUUscUJBQXFCO29CQUMxQixNQUFNLEVBQUUsS0FBSztvQkFDYixrQkFBa0IsRUFBRSxFQUFFO29CQUN0QixlQUFlLEVBQUU7d0JBQ2hCOzRCQUNDLElBQUksRUFBRSxVQUFVOzRCQUNoQixLQUFLLEVBQUUsTUFBTTt5QkFDYjtxQkFDRDtpQkFDRDtnQkFDRCxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ25DLHFCQUFxQixFQUFFLGFBQWE7YUFDcEMsQ0FBQyxDQUFBO1lBRUYscUJBQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDckUsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLEtBQUssVUFBVSxxQkFBcUI7UUFDbkMsSUFBRyx1QkFBdUIsRUFBRSxDQUFDO1lBQzVCLE9BQU07UUFDUCxDQUFDO1FBRUQsbURBQW1EO1FBQ25ELE1BQU0sZUFBZSxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU8sQ0FBQyxPQUFPLENBQUE7UUFDdkQsTUFBTSxJQUFBLHdCQUFnQixFQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXZDLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FDbEQsZUFBZSxFQUNmLElBQUksQ0FDSixDQUFBO1FBRUQsTUFBTSxJQUFBLDJCQUFnQixFQUFDO1lBQ3RCLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUMzQixhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7U0FDL0IsQ0FBQyxDQUFBO1FBRUYscUJBQU0sQ0FBQyxXQUFXLENBQ2pCLE1BQU0sU0FBUyxDQUFDLGdCQUFnQjthQUM5QixrQkFBa0IsQ0FBQyxlQUFlLENBQUMsRUFDckMsSUFBSSxDQUNKLENBQUE7UUFFRCxNQUFNLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDMUQscUJBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUU1Qyx1QkFBdUIsR0FBRyxJQUFJLENBQUE7SUFDL0IsQ0FBQztJQUVELEtBQUssVUFBVSxzQkFBc0I7UUFDcEMsSUFBRyx3QkFBd0IsRUFBRSxDQUFDO1lBQzdCLE9BQU07UUFDUCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFFLENBQUE7UUFDOUIsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLENBQUE7UUFDOUIsTUFBTSxJQUFBLHdCQUFnQixFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUV2QyxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQ2xELE9BQU8sQ0FBQyxPQUFPLEVBQ2YsSUFBSSxDQUNKLENBQUE7UUFHRCxNQUFNLElBQUEsMkJBQWdCLEVBQUM7WUFDdEIsTUFBTSxFQUFFLE9BQU87WUFDZixhQUFhLEVBQUUsR0FBRztTQUNsQixDQUFDLENBQUE7UUFFRixNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQUE7UUFFckMscUJBQU0sQ0FBQyxXQUFXLENBQ2pCLE1BQU0sU0FBUyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUM1RCxJQUFJLENBQ0osQ0FBQTtRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVE7YUFDbkMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDakMscUJBQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNqQyxxQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRXRDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFFeEMsd0JBQXdCLEdBQUcsSUFBSSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxLQUFLLFVBQVUsYUFBYSxDQUMzQixVQUFrQixFQUNsQixVQUFVLEdBQUcsVUFBVTs7UUFFdkIsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQTtRQUN6QyxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFBLG9DQUE0QixFQUFDO1lBQ25ELE9BQU8sRUFBRTtnQkFDUixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLFdBQVcsRUFBRSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLFNBQVMsRUFBRSxJQUFBLGtDQUEwQixFQUFDLE1BQU0sQ0FBQztnQkFDN0MsV0FBVyxFQUFFLElBQUEsNEJBQW9CLEdBQUU7YUFDbkM7WUFDRCxLQUFLLEVBQUUsVUFBVTtZQUNqQixLQUFLLEVBQUUsVUFBVTtTQUNqQixDQUFDLENBQUE7UUFDRixxQkFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2hDLHFCQUFNLENBQUMsS0FBSyxDQUFDLE1BQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBSSwwQ0FBRSxPQUFPLDBDQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFNUQsT0FBTyxJQUFJLENBQUE7SUFDWixDQUFDO0lBRUQsS0FBSyxVQUFVLG1CQUFtQixDQUNqQyxVQUFrQixFQUNsQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQTZCOztRQUU5QyxxQkFBTSxDQUFDLEVBQUUsQ0FDUixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ3pCLG9DQUFvQyxDQUNwQyxDQUFBO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQTtRQUN4QixNQUFNLFFBQVEsR0FBRyxJQUFBLDhCQUFzQixFQUFDO1lBQ3ZDLFVBQVUsRUFBRSxHQUFHLENBQUMsU0FBUztZQUN6QixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUN0QyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUMsT0FBTztZQUMvQixLQUFLLEVBQUUsQ0FBQztTQUNSLENBQUMsQ0FBQTtRQUNGLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQTtRQUMvQixLQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFBO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTO2lCQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFBO1lBQ2hDLElBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsU0FBUTtZQUNULENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFFBQVE7aUJBQzlCLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN2QixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzNCLENBQUM7UUFFRCxxQkFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUQsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsUUFBUTthQUNqQyxPQUFPLENBQUMsVUFBVSxDQUFDO2FBQ25CLGFBQWEsQ0FDYixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFDcEIsU0FBUyxDQUNULENBQUE7UUFDRixNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQzFCLE1BQU0sR0FBRyxHQUFHLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFHLENBQUMsQ0FBQywwQ0FBRSxJQUEyQyxDQUFBO1FBQ3BFLHFCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFckMscUJBQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxLQUFLLFVBQVUsZ0JBQWdCO1FBQzlCLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQztZQUM5RCxvQkFBb0IsRUFBRSxDQUFDO1lBQ3ZCLGdCQUFnQixFQUFFLENBQUM7WUFDbkIscUJBQXFCLEVBQUUsQ0FBQztTQUN4QixDQUFDLENBQUE7UUFDRixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUVoQyxNQUFNLFVBQVUsR0FBRyxZQUFZLEVBQUUsQ0FBQTtRQUNqQyxNQUFNLElBQUEsd0JBQWdCLEVBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNDQUFnQixFQUFDO1lBQy9DLGVBQWUsRUFBRSxVQUFVLENBQUMsVUFBVTtZQUN0QyxJQUFJLEVBQUUsTUFBTTtZQUNaLE1BQU0sRUFBRTtnQkFDUCxHQUFHLEVBQUUscUJBQXFCO2dCQUMxQixNQUFNLEVBQUUsS0FBSztnQkFDYixrQkFBa0IsRUFBRSxFQUFFO2dCQUN0QixlQUFlLEVBQUU7b0JBQ2hCO3dCQUNDLElBQUksRUFBRSxVQUFVO3dCQUNoQixLQUFLLEVBQUUsTUFBTTtxQkFDYjtpQkFDRDthQUNEO1lBQ0QsWUFBWSxFQUFFLEVBQUU7WUFDaEIscUJBQXFCLEVBQUUsYUFBYTtTQUNwQyxDQUFDLENBQUE7UUFFRixxQ0FBcUM7UUFDckMscUJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNoRCxxQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN0MsQ0FBQztBQUNGLENBQUMsQ0FBQyxDQUFBO0FBRUYsU0FBUyxZQUFZO0lBQ3BCLE9BQU8sZUFBTSxDQUFDLFlBQVksRUFBRTtTQUMxQixPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQzlCLENBQUM7QUFFRCxTQUFTLHdCQUF3QjtJQUNoQyxPQUFPO1FBQ04sUUFBUSxFQUFFLE1BQU07UUFDaEIsVUFBVSxFQUFFLElBQUEsMEJBQWtCLEVBQUM7WUFDOUIsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixNQUFNLEVBQUUsS0FBSztZQUNiLGtCQUFrQixFQUFFLEVBQUU7WUFDdEIsZUFBZSxFQUFFO2dCQUNoQjtvQkFDQyxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsS0FBSyxFQUFFLE1BQU07aUJBQ2I7YUFDRDtTQUNELENBQUM7UUFDRixPQUFPLEVBQUUsRUFBRTtLQUNYLENBQUE7QUFDRixDQUFDIn0=
|
|
@@ -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 {};
|