@reclaimprotocol/attestor-core 5.0.4 → 5.0.5
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/LICENSE +660 -660
- package/browser/resources/attestor-browser.min.mjs +31 -31
- package/lib/server/tee/acme-http-server.d.ts +13 -0
- package/lib/server/tee/attestation-generate.d.ts +29 -0
- package/lib/server/tee/bootstrap.d.ts +11 -0
- package/lib/server/tee/cert-manager.d.ts +24 -0
- package/lib/server/tee/cloud-logging.d.ts +23 -0
- package/lib/server/tee/secret-loader.d.ts +10 -0
- package/lib/server/tee/secret-manager.d.ts +3 -0
- package/lib/utils/gcp-attestation.d.ts +23 -0
- package/package.json +3 -3
- package/lib/avs/abis/avsDirectoryABI.js +0 -340
- package/lib/avs/abis/delegationABI.js +0 -1
- package/lib/avs/abis/registryABI.js +0 -725
- package/lib/avs/client/create-claim-on-avs.js +0 -138
- package/lib/avs/config.js +0 -20
- package/lib/avs/contracts/ReclaimServiceManager.js +0 -1
- package/lib/avs/contracts/common.js +0 -1
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +0 -1169
- package/lib/avs/contracts/factories/index.js +0 -4
- package/lib/avs/contracts/index.js +0 -2
- package/lib/avs/types/index.js +0 -1
- package/lib/avs/utils/contracts.js +0 -33
- package/lib/avs/utils/register.js +0 -78
- package/lib/avs/utils/tasks.js +0 -40
- package/lib/client/create-claim.js +0 -433
- package/lib/client/index.js +0 -3
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +0 -51
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +0 -131
- package/lib/client/utils/attestor-pool.js +0 -25
- package/lib/client/utils/client-socket.js +0 -98
- package/lib/client/utils/message-handler.js +0 -87
- package/lib/config/index.js +0 -44
- package/lib/external-rpc/benchmark.js +0 -69
- package/lib/external-rpc/event-bus.js +0 -14
- package/lib/external-rpc/handle-incoming-msg.js +0 -233
- package/lib/external-rpc/jsc-polyfills/1.js +0 -82
- package/lib/external-rpc/jsc-polyfills/2.js +0 -20
- package/lib/external-rpc/jsc-polyfills/event.js +0 -14
- package/lib/external-rpc/jsc-polyfills/index.js +0 -2
- package/lib/external-rpc/jsc-polyfills/ws.js +0 -81
- package/lib/external-rpc/setup-browser.js +0 -33
- package/lib/external-rpc/setup-jsc.js +0 -22
- package/lib/external-rpc/types.js +0 -1
- package/lib/external-rpc/utils.js +0 -100
- package/lib/external-rpc/zk.js +0 -63
- package/lib/mechain/abis/governanceABI.js +0 -458
- package/lib/mechain/abis/taskABI.js +0 -509
- package/lib/mechain/client/create-claim-on-mechain.js +0 -28
- package/lib/mechain/client/index.js +0 -1
- package/lib/mechain/constants/index.js +0 -3
- package/lib/mechain/index.js +0 -2
- package/lib/mechain/types/index.js +0 -1
- package/lib/proto/api.js +0 -4273
- package/lib/proto/tee-bundle.js +0 -1316
- package/lib/providers/http/index.js +0 -658
- package/lib/providers/http/patch-parse5-tree.js +0 -33
- package/lib/providers/http/utils.js +0 -324
- package/lib/providers/index.js +0 -4
- package/lib/scripts/fetch-ec2-metadata.d.ts +0 -1
- package/lib/server/create-server.js +0 -103
- package/lib/server/handlers/claimTeeBundle.js +0 -252
- package/lib/server/handlers/claimTunnel.js +0 -73
- package/lib/server/handlers/completeClaimOnChain.js +0 -22
- package/lib/server/handlers/createClaimOnChain.js +0 -26
- package/lib/server/handlers/createTaskOnMechain.js +0 -47
- package/lib/server/handlers/createTunnel.js +0 -93
- package/lib/server/handlers/disconnectTunnel.js +0 -5
- package/lib/server/handlers/fetchCertificateBytes.js +0 -41
- package/lib/server/handlers/index.js +0 -22
- package/lib/server/handlers/init.js +0 -32
- package/lib/server/handlers/toprf.js +0 -16
- package/lib/server/index.js +0 -4
- package/lib/server/socket.js +0 -109
- package/lib/server/tunnels/make-tcp-tunnel.js +0 -177
- package/lib/server/utils/apm.js +0 -36
- package/lib/server/utils/assert-valid-claim-request.js +0 -204
- package/lib/server/utils/config-env.js +0 -4
- package/lib/server/utils/dns.js +0 -18
- package/lib/server/utils/gcp-attestation.js +0 -289
- package/lib/server/utils/generics.js +0 -51
- package/lib/server/utils/iso.js +0 -256
- package/lib/server/utils/keep-alive.js +0 -38
- package/lib/server/utils/nitro-attestation.js +0 -325
- package/lib/server/utils/process-handshake.js +0 -215
- package/lib/server/utils/proxy-session.js +0 -6
- package/lib/server/utils/tee-oprf-mpc-verification.js +0 -90
- package/lib/server/utils/tee-oprf-verification.js +0 -174
- package/lib/server/utils/tee-transcript-reconstruction.js +0 -187
- package/lib/server/utils/tee-verification.js +0 -421
- package/lib/server/utils/validation.js +0 -38
- package/lib/types/bgp.js +0 -1
- package/lib/types/claims.js +0 -1
- package/lib/types/client.js +0 -1
- package/lib/types/general.js +0 -1
- package/lib/types/handlers.js +0 -1
- package/lib/types/index.js +0 -10
- package/lib/types/providers.gen.js +0 -10
- package/lib/types/providers.js +0 -1
- package/lib/types/rpc.js +0 -1
- package/lib/types/signatures.js +0 -1
- package/lib/types/tunnel.js +0 -1
- package/lib/types/zk.js +0 -1
- package/lib/utils/auth.js +0 -59
- package/lib/utils/b64-json.js +0 -17
- package/lib/utils/bgp-listener.js +0 -119
- package/lib/utils/claims.js +0 -99
- package/lib/utils/env.js +0 -15
- package/lib/utils/error.js +0 -50
- package/lib/utils/generics.js +0 -317
- package/lib/utils/http-parser.js +0 -246
- package/lib/utils/index.js +0 -13
- package/lib/utils/logger.js +0 -91
- package/lib/utils/prepare-packets.js +0 -62
- package/lib/utils/redactions.js +0 -148
- package/lib/utils/retries.js +0 -24
- package/lib/utils/signatures/eth.js +0 -29
- package/lib/utils/signatures/index.js +0 -7
- package/lib/utils/socket-base.js +0 -90
- package/lib/utils/tls.js +0 -58
- package/lib/utils/ws.js +0 -22
- package/lib/utils/zk.js +0 -577
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ephemeral HTTP server that answers ACME HTTP-01 challenges. Started right
|
|
3
|
+
* before an order is placed and stopped as soon as the order is finalized,
|
|
4
|
+
* so the attestor does not keep port 80 bound during normal operation.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AcmeChallengeServer {
|
|
7
|
+
private readonly tokens;
|
|
8
|
+
private server?;
|
|
9
|
+
add(token: string, keyAuthorization: string): void;
|
|
10
|
+
remove(token: string): void;
|
|
11
|
+
start(port: number): Promise<void>;
|
|
12
|
+
stop(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AttestationReport } from '#src/proto/tee-bundle.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Requests a custom attestation token from the Confidential Space launcher
|
|
4
|
+
* over the unix domain socket. Mirrors reclaim-tee's shared/gcp_attestation.go.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateAttestationJwt(nonces: string[]): Promise<Uint8Array>;
|
|
7
|
+
export interface AttestationContext {
|
|
8
|
+
attestorAddress: string;
|
|
9
|
+
tlsCertSha256Hex: () => string | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Starts the background attestation refresh loop. The first attestation is
|
|
13
|
+
* generated synchronously so getCachedAttestationJwt() is ready by the time
|
|
14
|
+
* the server begins handling claims.
|
|
15
|
+
*/
|
|
16
|
+
export declare function startAttestationRefresh(ctx: AttestationContext): Promise<void>;
|
|
17
|
+
export declare function stopAttestationRefresh(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the currently-cached attestation JWT bytes, or undefined if no
|
|
20
|
+
* attestation has been generated yet or the cache has expired without a
|
|
21
|
+
* successful refresh.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCachedAttestationJwt(): Uint8Array | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Returns an AttestationReport ready to embed in a claim response, or
|
|
26
|
+
* undefined when no attestation is available (i.e. attestor is not running
|
|
27
|
+
* inside a TEE, or the refresh loop has not produced one yet).
|
|
28
|
+
*/
|
|
29
|
+
export declare function makeClaimAttestation(): AttestationReport | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brings the attestor up in TEE mode:
|
|
3
|
+
* 1. Pull signing/OPRF secrets from GCP Secret Manager into process.env.
|
|
4
|
+
* 2. Load (or obtain via ACME) the TLS cert and start the renewal loop.
|
|
5
|
+
* 3. Start the attestation refresh loop, with the public key + cert hash
|
|
6
|
+
* as nonces.
|
|
7
|
+
*
|
|
8
|
+
* Must run before #src/server/index.ts is imported, since modules in that
|
|
9
|
+
* tree read PRIVATE_KEY at module load.
|
|
10
|
+
*/
|
|
11
|
+
export declare function bootstrapTee(): Promise<void>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import tls from 'tls';
|
|
2
|
+
export interface CertManagerConfig {
|
|
3
|
+
projectId: string;
|
|
4
|
+
domain: string;
|
|
5
|
+
email: string;
|
|
6
|
+
directoryUrl: string;
|
|
7
|
+
httpChallengePort: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ActiveCertificate {
|
|
10
|
+
certPem: string;
|
|
11
|
+
keyPem: string;
|
|
12
|
+
notAfter: Date;
|
|
13
|
+
sha256Hex: string;
|
|
14
|
+
secureContext: tls.SecureContext;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Bootstraps the TLS certificate. Tries Secret Manager first; if absent or
|
|
18
|
+
* expiring within the renewal window, runs ACME against the configured
|
|
19
|
+
* directory URL and persists the result.
|
|
20
|
+
*/
|
|
21
|
+
export declare function bootstrapCertificate(cfg: CertManagerConfig): Promise<ActiveCertificate>;
|
|
22
|
+
export declare function startRenewalLoop(cfg: CertManagerConfig): void;
|
|
23
|
+
export declare function stopRenewalLoop(): void;
|
|
24
|
+
export declare function getActiveCertificate(): ActiveCertificate | undefined;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { LogLevel } from '#src/types/index.ts';
|
|
2
|
+
interface CloudLoggingOptions {
|
|
3
|
+
projectId: string;
|
|
4
|
+
logName: string;
|
|
5
|
+
level?: LogLevel;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Replaces the default pino logger with one that forwards every log line
|
|
9
|
+
* to GCP Cloud Logging under the given log name. Idempotent.
|
|
10
|
+
*
|
|
11
|
+
* Probes the Cloud Logging client first by writing a no-op entry; if
|
|
12
|
+
* authentication or transport fails, leaves the default stdout logger in
|
|
13
|
+
* place rather than crashing the process. On Confidential Space VMs the
|
|
14
|
+
* launcher's `tee-container-log-redirect` ships stdout to Cloud Logging
|
|
15
|
+
* anyway, so the worst case is logs appear under
|
|
16
|
+
* `confidential-space-launcher` rather than the configured `logName`.
|
|
17
|
+
*
|
|
18
|
+
* We also install a process-wide `unhandledRejection` filter that
|
|
19
|
+
* swallows errors originating in `@google-cloud/logging`, since the SDK
|
|
20
|
+
* has internal lazy gRPC init that escapes our local `.catch()`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function installCloudLogging(opts: CloudLoggingOptions): void;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetches the attestor's signing key and OPRF key material from GCP
|
|
3
|
+
* Secret Manager and writes them into process.env, so that the rest of
|
|
4
|
+
* the server (which reads these via getEnvVariable at module load) sees
|
|
5
|
+
* them as if they had been set in the environment.
|
|
6
|
+
*
|
|
7
|
+
* Must be called before any module that reads PRIVATE_KEY / TOPRF_* is
|
|
8
|
+
* imported, otherwise the reads happen before the values are populated.
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadSecretsIntoEnv(projectId: string): Promise<void>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function accessLatestSecret(projectId: string, secretId: string): Promise<Uint8Array>;
|
|
2
|
+
export declare function createSecretIfNotExists(projectId: string, secretId: string): Promise<void>;
|
|
3
|
+
export declare function addSecretVersion(projectId: string, secretId: string, payload: Uint8Array): Promise<void>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GCP attestation validation utilities.
|
|
3
|
+
*
|
|
4
|
+
* Validates JWT attestation tokens from GCP Confidential Computing
|
|
5
|
+
* (Confidential Space). Browser-safe: uses `@peculiar/x509` for chain
|
|
6
|
+
* verification and `globalThis.crypto.subtle` for JWT signature
|
|
7
|
+
* verification. Both are available in Node 19+ and modern browsers.
|
|
8
|
+
*/
|
|
9
|
+
import type { Logger } from '#src/types/general.ts';
|
|
10
|
+
export interface GcpValidationResult {
|
|
11
|
+
isValid: boolean;
|
|
12
|
+
errors: string[];
|
|
13
|
+
ethAddress?: Uint8Array;
|
|
14
|
+
userDataType?: string;
|
|
15
|
+
pcr0?: string;
|
|
16
|
+
envVars?: Record<string, string>;
|
|
17
|
+
}
|
|
18
|
+
export declare function validateGcpAttestationAndExtractKey(attestation: Uint8Array | string, logger?: Logger): Promise<GcpValidationResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Extracts the container image digest from a previously-validated GCP
|
|
21
|
+
* attestation token. Re-validates the JWT before reading.
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractImageDigestFromGCPAttestation(token: Uint8Array | string, logger?: Logger): Promise<string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reclaimprotocol/attestor-core",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"imports": {
|
|
@@ -105,9 +105,9 @@
|
|
|
105
105
|
"parse5": "^8.0.0",
|
|
106
106
|
"parse5-htmlparser2-tree-adapter": "^8.0.0",
|
|
107
107
|
"pino": "^9.14.0",
|
|
108
|
-
"re2": "^1.
|
|
108
|
+
"re2": "^1.23.3",
|
|
109
109
|
"serve-static": "^1.16.3",
|
|
110
|
-
"snarkjs": "
|
|
110
|
+
"snarkjs": "^0.7.6",
|
|
111
111
|
"ws": "^8.20.0",
|
|
112
112
|
"xpath": "^0.0.34"
|
|
113
113
|
},
|
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
export const avsDirectoryABI = [
|
|
2
|
-
{
|
|
3
|
-
type: "constructor",
|
|
4
|
-
inputs: [
|
|
5
|
-
{
|
|
6
|
-
name: "_delegation",
|
|
7
|
-
type: "address",
|
|
8
|
-
internalType: "contract IDelegationManager",
|
|
9
|
-
},
|
|
10
|
-
],
|
|
11
|
-
stateMutability: "nonpayable",
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
type: "function",
|
|
15
|
-
name: "DOMAIN_TYPEHASH",
|
|
16
|
-
inputs: [],
|
|
17
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
18
|
-
stateMutability: "view",
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
type: "function",
|
|
22
|
-
name: "OPERATOR_AVS_REGISTRATION_TYPEHASH",
|
|
23
|
-
inputs: [],
|
|
24
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
25
|
-
stateMutability: "view",
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
type: "function",
|
|
29
|
-
name: "avsOperatorStatus",
|
|
30
|
-
inputs: [
|
|
31
|
-
{ name: "", type: "address", internalType: "address" },
|
|
32
|
-
{ name: "", type: "address", internalType: "address" },
|
|
33
|
-
],
|
|
34
|
-
outputs: [
|
|
35
|
-
{
|
|
36
|
-
name: "",
|
|
37
|
-
type: "uint8",
|
|
38
|
-
internalType: "enum IAVSDirectory.OperatorAVSRegistrationStatus",
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
stateMutability: "view",
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
type: "function",
|
|
45
|
-
name: "calculateOperatorAVSRegistrationDigestHash",
|
|
46
|
-
inputs: [
|
|
47
|
-
{ name: "operator", type: "address", internalType: "address" },
|
|
48
|
-
{ name: "avs", type: "address", internalType: "address" },
|
|
49
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" },
|
|
50
|
-
{ name: "expiry", type: "uint256", internalType: "uint256" },
|
|
51
|
-
],
|
|
52
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
53
|
-
stateMutability: "view",
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
type: "function",
|
|
57
|
-
name: "cancelSalt",
|
|
58
|
-
inputs: [{ name: "salt", type: "bytes32", internalType: "bytes32" }],
|
|
59
|
-
outputs: [],
|
|
60
|
-
stateMutability: "nonpayable",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
type: "function",
|
|
64
|
-
name: "delegation",
|
|
65
|
-
inputs: [],
|
|
66
|
-
outputs: [
|
|
67
|
-
{
|
|
68
|
-
name: "",
|
|
69
|
-
type: "address",
|
|
70
|
-
internalType: "contract IDelegationManager",
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
stateMutability: "view",
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
type: "function",
|
|
77
|
-
name: "deregisterOperatorFromAVS",
|
|
78
|
-
inputs: [{ name: "operator", type: "address", internalType: "address" }],
|
|
79
|
-
outputs: [],
|
|
80
|
-
stateMutability: "nonpayable",
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
type: "function",
|
|
84
|
-
name: "domainSeparator",
|
|
85
|
-
inputs: [],
|
|
86
|
-
outputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
|
|
87
|
-
stateMutability: "view",
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
type: "function",
|
|
91
|
-
name: "initialize",
|
|
92
|
-
inputs: [
|
|
93
|
-
{ name: "initialOwner", type: "address", internalType: "address" },
|
|
94
|
-
{
|
|
95
|
-
name: "_pauserRegistry",
|
|
96
|
-
type: "address",
|
|
97
|
-
internalType: "contract IPauserRegistry",
|
|
98
|
-
},
|
|
99
|
-
{ name: "initialPausedStatus", type: "uint256", internalType: "uint256" },
|
|
100
|
-
],
|
|
101
|
-
outputs: [],
|
|
102
|
-
stateMutability: "nonpayable",
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
type: "function",
|
|
106
|
-
name: "operatorSaltIsSpent",
|
|
107
|
-
inputs: [
|
|
108
|
-
{ name: "", type: "address", internalType: "address" },
|
|
109
|
-
{ name: "", type: "bytes32", internalType: "bytes32" },
|
|
110
|
-
],
|
|
111
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
112
|
-
stateMutability: "view",
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
type: "function",
|
|
116
|
-
name: "owner",
|
|
117
|
-
inputs: [],
|
|
118
|
-
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
119
|
-
stateMutability: "view",
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
type: "function",
|
|
123
|
-
name: "pause",
|
|
124
|
-
inputs: [
|
|
125
|
-
{ name: "newPausedStatus", type: "uint256", internalType: "uint256" },
|
|
126
|
-
],
|
|
127
|
-
outputs: [],
|
|
128
|
-
stateMutability: "nonpayable",
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
type: "function",
|
|
132
|
-
name: "pauseAll",
|
|
133
|
-
inputs: [],
|
|
134
|
-
outputs: [],
|
|
135
|
-
stateMutability: "nonpayable",
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
type: "function",
|
|
139
|
-
name: "paused",
|
|
140
|
-
inputs: [{ name: "index", type: "uint8", internalType: "uint8" }],
|
|
141
|
-
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
142
|
-
stateMutability: "view",
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
type: "function",
|
|
146
|
-
name: "paused",
|
|
147
|
-
inputs: [],
|
|
148
|
-
outputs: [{ name: "", type: "uint256", internalType: "uint256" }],
|
|
149
|
-
stateMutability: "view",
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
type: "function",
|
|
153
|
-
name: "pauserRegistry",
|
|
154
|
-
inputs: [],
|
|
155
|
-
outputs: [
|
|
156
|
-
{ name: "", type: "address", internalType: "contract IPauserRegistry" },
|
|
157
|
-
],
|
|
158
|
-
stateMutability: "view",
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
type: "function",
|
|
162
|
-
name: "registerOperatorToAVS",
|
|
163
|
-
inputs: [
|
|
164
|
-
{ name: "operator", type: "address", internalType: "address" },
|
|
165
|
-
{
|
|
166
|
-
name: "operatorSignature",
|
|
167
|
-
type: "tuple",
|
|
168
|
-
internalType: "struct ISignatureUtils.SignatureWithSaltAndExpiry",
|
|
169
|
-
components: [
|
|
170
|
-
{ name: "signature", type: "bytes", internalType: "bytes" },
|
|
171
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" },
|
|
172
|
-
{ name: "expiry", type: "uint256", internalType: "uint256" },
|
|
173
|
-
],
|
|
174
|
-
},
|
|
175
|
-
],
|
|
176
|
-
outputs: [],
|
|
177
|
-
stateMutability: "nonpayable",
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
type: "function",
|
|
181
|
-
name: "renounceOwnership",
|
|
182
|
-
inputs: [],
|
|
183
|
-
outputs: [],
|
|
184
|
-
stateMutability: "nonpayable",
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
type: "function",
|
|
188
|
-
name: "setPauserRegistry",
|
|
189
|
-
inputs: [
|
|
190
|
-
{
|
|
191
|
-
name: "newPauserRegistry",
|
|
192
|
-
type: "address",
|
|
193
|
-
internalType: "contract IPauserRegistry",
|
|
194
|
-
},
|
|
195
|
-
],
|
|
196
|
-
outputs: [],
|
|
197
|
-
stateMutability: "nonpayable",
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
type: "function",
|
|
201
|
-
name: "transferOwnership",
|
|
202
|
-
inputs: [{ name: "newOwner", type: "address", internalType: "address" }],
|
|
203
|
-
outputs: [],
|
|
204
|
-
stateMutability: "nonpayable",
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
type: "function",
|
|
208
|
-
name: "unpause",
|
|
209
|
-
inputs: [
|
|
210
|
-
{ name: "newPausedStatus", type: "uint256", internalType: "uint256" },
|
|
211
|
-
],
|
|
212
|
-
outputs: [],
|
|
213
|
-
stateMutability: "nonpayable",
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
type: "function",
|
|
217
|
-
name: "updateAVSMetadataURI",
|
|
218
|
-
inputs: [{ name: "metadataURI", type: "string", internalType: "string" }],
|
|
219
|
-
outputs: [],
|
|
220
|
-
stateMutability: "nonpayable",
|
|
221
|
-
},
|
|
222
|
-
{
|
|
223
|
-
type: "event",
|
|
224
|
-
name: "AVSMetadataURIUpdated",
|
|
225
|
-
inputs: [
|
|
226
|
-
{ name: "avs", type: "address", indexed: true, internalType: "address" },
|
|
227
|
-
{
|
|
228
|
-
name: "metadataURI",
|
|
229
|
-
type: "string",
|
|
230
|
-
indexed: false,
|
|
231
|
-
internalType: "string",
|
|
232
|
-
},
|
|
233
|
-
],
|
|
234
|
-
anonymous: false,
|
|
235
|
-
},
|
|
236
|
-
{
|
|
237
|
-
type: "event",
|
|
238
|
-
name: "Initialized",
|
|
239
|
-
inputs: [
|
|
240
|
-
{ name: "version", type: "uint8", indexed: false, internalType: "uint8" },
|
|
241
|
-
],
|
|
242
|
-
anonymous: false,
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
type: "event",
|
|
246
|
-
name: "OperatorAVSRegistrationStatusUpdated",
|
|
247
|
-
inputs: [
|
|
248
|
-
{
|
|
249
|
-
name: "operator",
|
|
250
|
-
type: "address",
|
|
251
|
-
indexed: true,
|
|
252
|
-
internalType: "address",
|
|
253
|
-
},
|
|
254
|
-
{ name: "avs", type: "address", indexed: true, internalType: "address" },
|
|
255
|
-
{
|
|
256
|
-
name: "status",
|
|
257
|
-
type: "uint8",
|
|
258
|
-
indexed: false,
|
|
259
|
-
internalType: "enum IAVSDirectory.OperatorAVSRegistrationStatus",
|
|
260
|
-
},
|
|
261
|
-
],
|
|
262
|
-
anonymous: false,
|
|
263
|
-
},
|
|
264
|
-
{
|
|
265
|
-
type: "event",
|
|
266
|
-
name: "OwnershipTransferred",
|
|
267
|
-
inputs: [
|
|
268
|
-
{
|
|
269
|
-
name: "previousOwner",
|
|
270
|
-
type: "address",
|
|
271
|
-
indexed: true,
|
|
272
|
-
internalType: "address",
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
name: "newOwner",
|
|
276
|
-
type: "address",
|
|
277
|
-
indexed: true,
|
|
278
|
-
internalType: "address",
|
|
279
|
-
},
|
|
280
|
-
],
|
|
281
|
-
anonymous: false,
|
|
282
|
-
},
|
|
283
|
-
{
|
|
284
|
-
type: "event",
|
|
285
|
-
name: "Paused",
|
|
286
|
-
inputs: [
|
|
287
|
-
{
|
|
288
|
-
name: "account",
|
|
289
|
-
type: "address",
|
|
290
|
-
indexed: true,
|
|
291
|
-
internalType: "address",
|
|
292
|
-
},
|
|
293
|
-
{
|
|
294
|
-
name: "newPausedStatus",
|
|
295
|
-
type: "uint256",
|
|
296
|
-
indexed: false,
|
|
297
|
-
internalType: "uint256",
|
|
298
|
-
},
|
|
299
|
-
],
|
|
300
|
-
anonymous: false,
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
type: "event",
|
|
304
|
-
name: "PauserRegistrySet",
|
|
305
|
-
inputs: [
|
|
306
|
-
{
|
|
307
|
-
name: "pauserRegistry",
|
|
308
|
-
type: "address",
|
|
309
|
-
indexed: false,
|
|
310
|
-
internalType: "contract IPauserRegistry",
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
name: "newPauserRegistry",
|
|
314
|
-
type: "address",
|
|
315
|
-
indexed: false,
|
|
316
|
-
internalType: "contract IPauserRegistry",
|
|
317
|
-
},
|
|
318
|
-
],
|
|
319
|
-
anonymous: false,
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
type: "event",
|
|
323
|
-
name: "Unpaused",
|
|
324
|
-
inputs: [
|
|
325
|
-
{
|
|
326
|
-
name: "account",
|
|
327
|
-
type: "address",
|
|
328
|
-
indexed: true,
|
|
329
|
-
internalType: "address",
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
name: "newPausedStatus",
|
|
333
|
-
type: "uint256",
|
|
334
|
-
indexed: false,
|
|
335
|
-
internalType: "uint256",
|
|
336
|
-
},
|
|
337
|
-
],
|
|
338
|
-
anonymous: false,
|
|
339
|
-
},
|
|
340
|
-
];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const delegationABI = [{ "type": "function", "name": "DELEGATION_APPROVAL_TYPEHASH", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "DOMAIN_TYPEHASH", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "STAKER_DELEGATION_TYPEHASH", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "beaconChainETHStrategy", "inputs": [], "outputs": [{ "name": "", "type": "address", "internalType": "contract IStrategy" }], "stateMutability": "view" }, { "type": "function", "name": "calculateCurrentStakerDelegationDigestHash", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "calculateDelegationApprovalDigestHash", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "_delegationApprover", "type": "address", "internalType": "address" }, { "name": "approverSalt", "type": "bytes32", "internalType": "bytes32" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "calculateStakerDelegationDigestHash", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "_stakerNonce", "type": "uint256", "internalType": "uint256" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "calculateWithdrawalRoot", "inputs": [{ "name": "withdrawal", "type": "tuple", "internalType": "struct IDelegationManager.Withdrawal", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "pure" }, { "type": "function", "name": "completeQueuedWithdrawal", "inputs": [{ "name": "withdrawal", "type": "tuple", "internalType": "struct IDelegationManager.Withdrawal", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }, { "name": "tokens", "type": "address[]", "internalType": "contract IERC20[]" }, { "name": "middlewareTimesIndex", "type": "uint256", "internalType": "uint256" }, { "name": "receiveAsTokens", "type": "bool", "internalType": "bool" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "completeQueuedWithdrawals", "inputs": [{ "name": "withdrawals", "type": "tuple[]", "internalType": "struct IDelegationManager.Withdrawal[]", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }, { "name": "tokens", "type": "address[][]", "internalType": "contract IERC20[][]" }, { "name": "middlewareTimesIndexes", "type": "uint256[]", "internalType": "uint256[]" }, { "name": "receiveAsTokens", "type": "bool[]", "internalType": "bool[]" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "cumulativeWithdrawalsQueued", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "decreaseDelegatedShares", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "delegateTo", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }, { "name": "approverSignatureAndExpiry", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithExpiry", "components": [{ "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }] }, { "name": "approverSalt", "type": "bytes32", "internalType": "bytes32" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "delegateToBySignature", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "operator", "type": "address", "internalType": "address" }, { "name": "stakerSignatureAndExpiry", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithExpiry", "components": [{ "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }] }, { "name": "approverSignatureAndExpiry", "type": "tuple", "internalType": "struct ISignatureUtils.SignatureWithExpiry", "components": [{ "name": "signature", "type": "bytes", "internalType": "bytes" }, { "name": "expiry", "type": "uint256", "internalType": "uint256" }] }, { "name": "approverSalt", "type": "bytes32", "internalType": "bytes32" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "delegatedTo", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "delegationApprover", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "delegationApproverSaltIsSpent", "inputs": [{ "name": "_delegationApprover", "type": "address", "internalType": "address" }, { "name": "salt", "type": "bytes32", "internalType": "bytes32" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "domainSeparator", "inputs": [], "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], "stateMutability": "view" }, { "type": "function", "name": "earningsReceiver", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "address", "internalType": "address" }], "stateMutability": "view" }, { "type": "function", "name": "getOperatorShares", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }], "outputs": [{ "name": "", "type": "uint256[]", "internalType": "uint256[]" }], "stateMutability": "view" }, { "type": "function", "name": "getWithdrawalDelay", "inputs": [{ "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "increaseDelegatedShares", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "internalType": "uint256" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "isDelegated", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "isOperator", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], "stateMutability": "view" }, { "type": "function", "name": "migrateQueuedWithdrawals", "inputs": [{ "name": "withdrawalsToQueue", "type": "tuple[]", "internalType": "struct IStrategyManager.DeprecatedStruct_QueuedWithdrawal[]", "components": [{ "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }, { "name": "staker", "type": "address", "internalType": "address" }, { "name": "withdrawerAndNonce", "type": "tuple", "internalType": "struct IStrategyManager.DeprecatedStruct_WithdrawerAndNonce", "components": [{ "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint96", "internalType": "uint96" }] }, { "name": "withdrawalStartBlock", "type": "uint32", "internalType": "uint32" }, { "name": "delegatedAddress", "type": "address", "internalType": "address" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "minWithdrawalDelayBlocks", "inputs": [], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "modifyOperatorDetails", "inputs": [{ "name": "newOperatorDetails", "type": "tuple", "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "operatorDetails", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "tuple", "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "stateMutability": "view" }, { "type": "function", "name": "operatorShares", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }, { "name": "strategy", "type": "address", "internalType": "contract IStrategy" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "queueWithdrawals", "inputs": [{ "name": "queuedWithdrawalParams", "type": "tuple[]", "internalType": "struct IDelegationManager.QueuedWithdrawalParams[]", "components": [{ "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }, { "name": "withdrawer", "type": "address", "internalType": "address" }] }], "outputs": [{ "name": "", "type": "bytes32[]", "internalType": "bytes32[]" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "registerAsOperator", "inputs": [{ "name": "registeringOperatorDetails", "type": "tuple", "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }, { "name": "metadataURI", "type": "string", "internalType": "string" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "stakerNonce", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "stakerOptOutWindowBlocks", "inputs": [{ "name": "operator", "type": "address", "internalType": "address" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "strategyWithdrawalDelayBlocks", "inputs": [{ "name": "strategy", "type": "address", "internalType": "contract IStrategy" }], "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], "stateMutability": "view" }, { "type": "function", "name": "undelegate", "inputs": [{ "name": "staker", "type": "address", "internalType": "address" }], "outputs": [{ "name": "withdrawalRoot", "type": "bytes32[]", "internalType": "bytes32[]" }], "stateMutability": "nonpayable" }, { "type": "function", "name": "updateOperatorMetadataURI", "inputs": [{ "name": "metadataURI", "type": "string", "internalType": "string" }], "outputs": [], "stateMutability": "nonpayable" }, { "type": "event", "name": "MinWithdrawalDelayBlocksSet", "inputs": [{ "name": "previousValue", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newValue", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "OperatorDetailsModified", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "newOperatorDetails", "type": "tuple", "indexed": false, "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "anonymous": false }, { "type": "event", "name": "OperatorMetadataURIUpdated", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "metadataURI", "type": "string", "indexed": false, "internalType": "string" }], "anonymous": false }, { "type": "event", "name": "OperatorRegistered", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operatorDetails", "type": "tuple", "indexed": false, "internalType": "struct IDelegationManager.OperatorDetails", "components": [{ "name": "earningsReceiver", "type": "address", "internalType": "address" }, { "name": "delegationApprover", "type": "address", "internalType": "address" }, { "name": "stakerOptOutWindowBlocks", "type": "uint32", "internalType": "uint32" }] }], "anonymous": false }, { "type": "event", "name": "OperatorSharesDecreased", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "staker", "type": "address", "indexed": false, "internalType": "address" }, { "name": "strategy", "type": "address", "indexed": false, "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "OperatorSharesIncreased", "inputs": [{ "name": "operator", "type": "address", "indexed": true, "internalType": "address" }, { "name": "staker", "type": "address", "indexed": false, "internalType": "address" }, { "name": "strategy", "type": "address", "indexed": false, "internalType": "contract IStrategy" }, { "name": "shares", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "StakerDelegated", "inputs": [{ "name": "staker", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StakerForceUndelegated", "inputs": [{ "name": "staker", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StakerUndelegated", "inputs": [{ "name": "staker", "type": "address", "indexed": true, "internalType": "address" }, { "name": "operator", "type": "address", "indexed": true, "internalType": "address" }], "anonymous": false }, { "type": "event", "name": "StrategyWithdrawalDelayBlocksSet", "inputs": [{ "name": "strategy", "type": "address", "indexed": false, "internalType": "contract IStrategy" }, { "name": "previousValue", "type": "uint256", "indexed": false, "internalType": "uint256" }, { "name": "newValue", "type": "uint256", "indexed": false, "internalType": "uint256" }], "anonymous": false }, { "type": "event", "name": "WithdrawalCompleted", "inputs": [{ "name": "withdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }], "anonymous": false }, { "type": "event", "name": "WithdrawalMigrated", "inputs": [{ "name": "oldWithdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "newWithdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }], "anonymous": false }, { "type": "event", "name": "WithdrawalQueued", "inputs": [{ "name": "withdrawalRoot", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, { "name": "withdrawal", "type": "tuple", "indexed": false, "internalType": "struct IDelegationManager.Withdrawal", "components": [{ "name": "staker", "type": "address", "internalType": "address" }, { "name": "delegatedTo", "type": "address", "internalType": "address" }, { "name": "withdrawer", "type": "address", "internalType": "address" }, { "name": "nonce", "type": "uint256", "internalType": "uint256" }, { "name": "startBlock", "type": "uint32", "internalType": "uint32" }, { "name": "strategies", "type": "address[]", "internalType": "contract IStrategy[]" }, { "name": "shares", "type": "uint256[]", "internalType": "uint256[]" }] }], "anonymous": false }];
|