@obolnetwork/obol-sdk 2.11.8 → 2.11.10
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 +78 -2
- package/dist/browser/src/index.js +416 -292
- package/dist/browser/src/index.js.map +1 -1
- package/dist/cjs/src/index.js +419 -292
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/esm/src/index.js +416 -292
- package/dist/esm/src/index.js.map +1 -1
- package/dist/types/src/bytecodes.d.ts +0 -3
- package/dist/types/src/constants.d.ts +1 -2
- package/dist/types/src/eoa/eoa.d.ts +54 -43
- package/dist/types/src/errors.d.ts +23 -0
- package/dist/types/src/exits/exit.d.ts +16 -19
- package/dist/types/src/incentives/incentives.d.ts +59 -30
- package/dist/types/src/index.d.ts +262 -76
- package/dist/types/src/services.d.ts +22 -8
- package/dist/types/src/splits/splits.d.ts +100 -65
- package/dist/types/src/types.d.ts +63 -25
- package/dist/types/test/fixtures.d.ts +31 -122
- package/package.json +4 -4
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { type ClusterValidator, type ProviderType, type SignerType, type OVMRewardsSplitPayload, type OVMTotalSplitPayload, type OVMRequestWithdrawalPayload, type OVMDepositPayload } from '../types.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Deploys and manages Obol Validator Manager (OVM) and SplitV2 contracts
|
|
4
|
+
* for automated reward and principal splitting among cluster participants.
|
|
5
|
+
*
|
|
6
|
+
* Do not instantiate directly; access via `client.splits`.
|
|
7
|
+
*
|
|
8
|
+
* Available methods:
|
|
9
|
+
* - {@link ObolSplits.createValidatorManagerAndRewardsSplit} – rewards-only split (single principal recipient)
|
|
10
|
+
* - {@link ObolSplits.createValidatorManagerAndTotalSplit} – total split (principal also split)
|
|
11
|
+
* - {@link ObolSplits.requestWithdrawal} – request withdrawal from an OVM contract
|
|
12
|
+
* - {@link ObolSplits.deposit} – deposit to an OVM contract
|
|
13
|
+
*
|
|
14
|
+
* All write methods send on-chain transactions and require a signer with ETH for gas.
|
|
15
|
+
*
|
|
6
16
|
* @example
|
|
7
|
-
*
|
|
8
|
-
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const client = new Client({ chainId: 560048 }, signer);
|
|
19
|
+
*
|
|
20
|
+
* const { withdrawal_address, fee_recipient_address } =
|
|
21
|
+
* await client.splits.createValidatorManagerAndRewardsSplit({
|
|
22
|
+
* rewardSplitRecipients: [
|
|
23
|
+
* { address: "0xOp1...", percentAllocation: 50 },
|
|
24
|
+
* { address: "0xOp2...", percentAllocation: 49 },
|
|
25
|
+
* ],
|
|
26
|
+
* principalRecipient: "0xPrincipal...",
|
|
27
|
+
* OVMOwnerAddress: "0xOwner...",
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
9
30
|
*/
|
|
10
31
|
export declare class ObolSplits {
|
|
11
32
|
private readonly signer;
|
|
@@ -13,96 +34,110 @@ export declare class ObolSplits {
|
|
|
13
34
|
readonly provider: ProviderType | undefined | null;
|
|
14
35
|
constructor(signer: SignerType | undefined, chainId: number, provider: ProviderType | undefined | null);
|
|
15
36
|
/**
|
|
16
|
-
*
|
|
37
|
+
* Deploys an OVM and SplitV2 contract for a **rewards-only** split scenario.
|
|
17
38
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
39
|
+
* Principal goes to a single address; only validator rewards are split among
|
|
40
|
+
* the configured recipients. Automatically appends the Obol RAF recipient.
|
|
20
41
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* and not pushed to version control.
|
|
42
|
+
* - Sends one or more on-chain transactions (irreversible).
|
|
43
|
+
* - Only supported on chains with OVM factory contracts (Mainnet, Hoodi).
|
|
24
44
|
*
|
|
25
|
-
* @param
|
|
26
|
-
* @returns
|
|
27
|
-
* @throws
|
|
45
|
+
* @param payload - Configuration for the OVM and SplitV2 deployment.
|
|
46
|
+
* @returns The OVM address as `withdrawal_address` and splitter as `fee_recipient_address`.
|
|
47
|
+
* @throws {SignerRequiredError} If no signer was provided.
|
|
48
|
+
* @throws {UnsupportedChainError} If the chain does not support splitters.
|
|
28
49
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const { withdrawal_address, fee_recipient_address } =
|
|
53
|
+
* await client.splits.createValidatorManagerAndRewardsSplit({
|
|
54
|
+
* rewardSplitRecipients: [
|
|
55
|
+
* { address: "0xOp1...", percentAllocation: 50 },
|
|
56
|
+
* { address: "0xOp2...", percentAllocation: 49 },
|
|
57
|
+
* ],
|
|
58
|
+
* principalRecipient: "0xPrincipal...",
|
|
59
|
+
* OVMOwnerAddress: "0xOwner...",
|
|
60
|
+
* });
|
|
61
|
+
* ```
|
|
31
62
|
*/
|
|
32
63
|
createValidatorManagerAndRewardsSplit(payload: OVMRewardsSplitPayload): Promise<ClusterValidator>;
|
|
33
64
|
/**
|
|
34
|
-
*
|
|
65
|
+
* Deploys an OVM and SplitV2 contract for a **total split** scenario.
|
|
35
66
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
67
|
+
* Both principal and rewards are split among recipients via separate SplitV2
|
|
68
|
+
* contracts. Automatically appends the Obol RAF recipient to rewards.
|
|
38
69
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* and not pushed to version control.
|
|
70
|
+
* - Sends one or more on-chain transactions (irreversible).
|
|
71
|
+
* - Only supported on chains with OVM factory contracts (Mainnet, Hoodi).
|
|
42
72
|
*
|
|
43
|
-
* @param
|
|
44
|
-
* @returns
|
|
45
|
-
* @throws
|
|
73
|
+
* @param payload - Configuration for the OVM and SplitV2 deployment.
|
|
74
|
+
* @returns The OVM address as `withdrawal_address` and rewards splitter as `fee_recipient_address`.
|
|
75
|
+
* @throws {SignerRequiredError} If no signer was provided.
|
|
76
|
+
* @throws {UnsupportedChainError} If the chain does not support splitters.
|
|
46
77
|
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const { withdrawal_address, fee_recipient_address } =
|
|
81
|
+
* await client.splits.createValidatorManagerAndTotalSplit({
|
|
82
|
+
* rewardSplitRecipients: [
|
|
83
|
+
* { address: "0xOp1...", percentAllocation: 50 },
|
|
84
|
+
* { address: "0xOp2...", percentAllocation: 49 },
|
|
85
|
+
* ],
|
|
86
|
+
* principalSplitRecipients: [
|
|
87
|
+
* { address: "0xOp1...", percentAllocation: 50 },
|
|
88
|
+
* { address: "0xOp2...", percentAllocation: 50 },
|
|
89
|
+
* ],
|
|
90
|
+
* OVMOwnerAddress: "0xOwner...",
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
49
93
|
*/
|
|
50
94
|
createValidatorManagerAndTotalSplit(payload: OVMTotalSplitPayload): Promise<ClusterValidator>;
|
|
51
95
|
/**
|
|
52
|
-
* Requests withdrawal from an OVM contract.
|
|
96
|
+
* Requests withdrawal of validator funds from an OVM contract.
|
|
53
97
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
98
|
+
* Sends an on-chain transaction to the OVM contract requesting withdrawal
|
|
99
|
+
* for the specified validator public keys and amounts.
|
|
56
100
|
*
|
|
57
|
-
* @
|
|
58
|
-
*
|
|
59
|
-
*
|
|
101
|
+
* @param payload - Withdrawal request data including OVM address, validator
|
|
102
|
+
* public keys, amounts, and fees.
|
|
103
|
+
* @returns The transaction hash of the withdrawal request.
|
|
104
|
+
* @throws {SignerRequiredError} If no signer was provided.
|
|
60
105
|
*
|
|
61
|
-
* @
|
|
62
|
-
* @returns {Promise<{txHash: string}>} Transaction hash of the withdrawal request
|
|
63
|
-
* @throws Will throw an error if the signer is not provided, OVM address is invalid, or the request fails
|
|
64
|
-
*
|
|
65
|
-
* An example of how to use requestWithdrawal:
|
|
106
|
+
* @example
|
|
66
107
|
* ```typescript
|
|
67
|
-
* const
|
|
68
|
-
* ovmAddress:
|
|
69
|
-
* pubKeys: [
|
|
70
|
-
* amounts: [
|
|
71
|
-
* withdrawalFees:
|
|
108
|
+
* const { txHash } = await client.splits.requestWithdrawal({
|
|
109
|
+
* ovmAddress: "0xOVM...",
|
|
110
|
+
* pubKeys: ["0xValidatorPubkey..."],
|
|
111
|
+
* amounts: ["32000000000"],
|
|
112
|
+
* withdrawalFees: "1000000000000000",
|
|
72
113
|
* });
|
|
73
|
-
* console.log('Withdrawal requested:', result.txHash);
|
|
74
114
|
* ```
|
|
75
115
|
*/
|
|
76
116
|
requestWithdrawal(payload: OVMRequestWithdrawalPayload): Promise<{
|
|
77
117
|
txHash: string;
|
|
78
118
|
}>;
|
|
79
119
|
/**
|
|
80
|
-
* Deposits to OVM contract
|
|
81
|
-
*
|
|
82
|
-
* This method allows depositing to an OVM contract. Each deposit is sent as a separate transaction
|
|
83
|
-
* Each deposit includes validator public key, withdrawal credentials, signature, deposit data root, and amount.
|
|
84
|
-
*
|
|
85
|
-
* @remarks
|
|
86
|
-
* **⚠️ Important:** If you're storing the private key in an `.env` file, ensure it is securely managed
|
|
87
|
-
* and not pushed to version control.
|
|
120
|
+
* Deposits validators to an OVM contract. Each deposit is sent as a separate
|
|
121
|
+
* on-chain transaction.
|
|
88
122
|
*
|
|
89
|
-
* @param
|
|
90
|
-
*
|
|
91
|
-
*
|
|
123
|
+
* @param payload - Deposit data including the OVM address and an array of
|
|
124
|
+
* validator deposit objects (pubkey, withdrawal_credentials, signature,
|
|
125
|
+
* deposit_data_root, amount).
|
|
126
|
+
* @returns An array of transaction hashes, one per deposit.
|
|
127
|
+
* @throws {SignerRequiredError} If no signer was provided.
|
|
92
128
|
*
|
|
93
|
-
*
|
|
129
|
+
* @example
|
|
94
130
|
* ```typescript
|
|
95
|
-
* const
|
|
96
|
-
* ovmAddress:
|
|
131
|
+
* const { txHashes } = await client.splits.deposit({
|
|
132
|
+
* ovmAddress: "0xOVM...",
|
|
97
133
|
* deposits: [{
|
|
98
|
-
* pubkey:
|
|
99
|
-
* withdrawal_credentials:
|
|
100
|
-
* signature:
|
|
101
|
-
* deposit_data_root:
|
|
102
|
-
* amount:
|
|
103
|
-
* }]
|
|
134
|
+
* pubkey: "0x...",
|
|
135
|
+
* withdrawal_credentials: "0x...",
|
|
136
|
+
* signature: "0x...",
|
|
137
|
+
* deposit_data_root: "0x...",
|
|
138
|
+
* amount: "32000000000000000000",
|
|
139
|
+
* }],
|
|
104
140
|
* });
|
|
105
|
-
* console.log('Deposits completed:', result.txHashes);
|
|
106
141
|
* ```
|
|
107
142
|
*/
|
|
108
143
|
deposit(payload: OVMDepositPayload): Promise<{
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { type Wallet, type ethers, type JsonRpcApiProvider, type JsonRpcProvider, type JsonRpcSigner, type Provider } from 'ethers';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Maps Ethereum consensus-layer fork versions (hex) to execution-layer chain IDs.
|
|
4
|
+
*
|
|
5
|
+
* Supported networks:
|
|
6
|
+
* - `0x00000000` → 1 (Mainnet)
|
|
7
|
+
* - `0x00000064` → 100 (Gnosis Chain)
|
|
8
|
+
* - `0x90000069` → 11155111 (Sepolia)
|
|
9
|
+
* - `0x10000910` → 560048 (Hoodi)
|
|
4
10
|
*/
|
|
5
11
|
export declare enum FORK_MAPPING {
|
|
6
12
|
/** Mainnet. */
|
|
7
13
|
'0x00000000' = 1,
|
|
8
|
-
/** Goerli/Prater. */
|
|
9
|
-
'0x00001020' = 5,
|
|
10
14
|
/** Gnosis Chain. */
|
|
11
15
|
'0x00000064' = 100,
|
|
12
|
-
/** Holesky. */
|
|
13
|
-
'0x01017000' = 17000,
|
|
14
16
|
/** Sepolia. */
|
|
15
17
|
'0x90000069' = 11155111,
|
|
16
18
|
/** Hoodi Chain. */
|
|
@@ -18,7 +20,11 @@ export declare enum FORK_MAPPING {
|
|
|
18
20
|
}
|
|
19
21
|
export declare const FORK_NAMES: Record<number, string>;
|
|
20
22
|
/**
|
|
21
|
-
*
|
|
23
|
+
* Represents a node operator in a distributed validator cluster.
|
|
24
|
+
*
|
|
25
|
+
* When creating a cluster definition via {@link Client.createClusterDefinition},
|
|
26
|
+
* only `address` is required. The remaining fields are populated during the
|
|
27
|
+
* cluster acceptance and DKG process.
|
|
22
28
|
*/
|
|
23
29
|
export type ClusterOperator = {
|
|
24
30
|
/** The operator address. */
|
|
@@ -35,7 +41,11 @@ export type ClusterOperator = {
|
|
|
35
41
|
config_signature?: string;
|
|
36
42
|
};
|
|
37
43
|
/**
|
|
38
|
-
*
|
|
44
|
+
* Payload an operator provides when joining a cluster via
|
|
45
|
+
* {@link Client.acceptClusterDefinition}.
|
|
46
|
+
*
|
|
47
|
+
* Requires at minimum `enr` (Ethereum Node Record) and `version`.
|
|
48
|
+
* Other `ClusterOperator` fields are optional overrides.
|
|
39
49
|
*/
|
|
40
50
|
export type OperatorPayload = Partial<ClusterOperator> & Required<Pick<ClusterOperator, 'enr' | 'version'>>;
|
|
41
51
|
/**
|
|
@@ -57,7 +67,11 @@ export type ClusterValidator = {
|
|
|
57
67
|
withdrawal_address: string;
|
|
58
68
|
};
|
|
59
69
|
/**
|
|
60
|
-
*
|
|
70
|
+
* Input payload for creating a new cluster definition via
|
|
71
|
+
* {@link Client.createClusterDefinition}.
|
|
72
|
+
*
|
|
73
|
+
* Required fields: `name`, `operators`, `validators`.
|
|
74
|
+
* Optional fields have sensible defaults applied by the SDK.
|
|
61
75
|
*/
|
|
62
76
|
export type ClusterPayload = {
|
|
63
77
|
/** The cluster name. */
|
|
@@ -76,7 +90,11 @@ export type ClusterPayload = {
|
|
|
76
90
|
consensus_protocol?: string;
|
|
77
91
|
};
|
|
78
92
|
/**
|
|
79
|
-
*
|
|
93
|
+
* Full cluster definition as stored by the Obol API. Extends {@link ClusterPayload}
|
|
94
|
+
* with server-generated metadata (uuid, timestamp, config_hash, etc.).
|
|
95
|
+
*
|
|
96
|
+
* Returned by {@link Client.createClusterDefinition},
|
|
97
|
+
* {@link Client.acceptClusterDefinition}, and {@link Client.getClusterDefinition}.
|
|
80
98
|
*/
|
|
81
99
|
export interface ClusterDefinition extends ClusterPayload {
|
|
82
100
|
/** The creator of the cluster. */
|
|
@@ -107,7 +125,8 @@ export interface ClusterDefinition extends ClusterPayload {
|
|
|
107
125
|
compounding?: boolean;
|
|
108
126
|
}
|
|
109
127
|
/**
|
|
110
|
-
*
|
|
128
|
+
* A recipient in a V1 splitter contract configuration.
|
|
129
|
+
* Used with {@link Client.createObolRewardsSplit} and {@link Client.createObolTotalSplit}.
|
|
111
130
|
*/
|
|
112
131
|
export type SplitRecipient = {
|
|
113
132
|
/** The split recipient address. */
|
|
@@ -116,7 +135,8 @@ export type SplitRecipient = {
|
|
|
116
135
|
percentAllocation: number;
|
|
117
136
|
};
|
|
118
137
|
/**
|
|
119
|
-
*
|
|
138
|
+
* Input payload for {@link Client.createObolTotalSplit}.
|
|
139
|
+
* Deploys a splitter that splits **both principal and rewards**.
|
|
120
140
|
*/
|
|
121
141
|
export type TotalSplitPayload = {
|
|
122
142
|
/** The split recipients addresses and splits. */
|
|
@@ -129,7 +149,8 @@ export type TotalSplitPayload = {
|
|
|
129
149
|
controllerAddress?: string;
|
|
130
150
|
};
|
|
131
151
|
/**
|
|
132
|
-
*
|
|
152
|
+
* Input payload for {@link Client.createObolRewardsSplit}.
|
|
153
|
+
* Deploys an OWR (principal goes to one address) and a splitter (rewards split among recipients).
|
|
133
154
|
*/
|
|
134
155
|
export interface RewardsSplitPayload extends TotalSplitPayload {
|
|
135
156
|
/** Address that will reclaim validator principal after exit. */
|
|
@@ -140,7 +161,9 @@ export interface RewardsSplitPayload extends TotalSplitPayload {
|
|
|
140
161
|
recoveryAddress?: string;
|
|
141
162
|
}
|
|
142
163
|
/**
|
|
143
|
-
* OVM and
|
|
164
|
+
* Base parameters shared by both OVM split scenarios (rewards-only and total split).
|
|
165
|
+
* Used with {@link ObolSplits.createValidatorManagerAndRewardsSplit} and
|
|
166
|
+
* {@link ObolSplits.createValidatorManagerAndTotalSplit}.
|
|
144
167
|
*/
|
|
145
168
|
export type OVMBaseSplitPayload = {
|
|
146
169
|
/** The split recipients addresses and splits. */
|
|
@@ -155,21 +178,25 @@ export type OVMBaseSplitPayload = {
|
|
|
155
178
|
distributorFeePercent?: number;
|
|
156
179
|
};
|
|
157
180
|
/**
|
|
158
|
-
*
|
|
181
|
+
* Input payload for {@link ObolSplits.createValidatorManagerAndRewardsSplit}.
|
|
182
|
+
* Principal goes to a single address; rewards are split among recipients.
|
|
159
183
|
*/
|
|
160
184
|
export type OVMRewardsSplitPayload = OVMBaseSplitPayload & {
|
|
161
185
|
/** Principal recipient address (single address for rewards-only split). */
|
|
162
186
|
principalRecipient: string;
|
|
163
187
|
};
|
|
164
188
|
/**
|
|
165
|
-
*
|
|
189
|
+
* Input payload for {@link ObolSplits.createValidatorManagerAndTotalSplit}.
|
|
190
|
+
* Both principal and rewards are split among recipients.
|
|
166
191
|
*/
|
|
167
192
|
export type OVMTotalSplitPayload = OVMBaseSplitPayload & {
|
|
168
193
|
/** Principal recipients addresses and splits (array for total split scenario). */
|
|
169
194
|
principalSplitRecipients: SplitV2Recipient[];
|
|
170
195
|
};
|
|
171
196
|
/**
|
|
172
|
-
* Union type
|
|
197
|
+
* Union type covering both OVM split scenarios.
|
|
198
|
+
* Discriminate by checking for `principalRecipient` (rewards-only) vs
|
|
199
|
+
* `principalSplitRecipients` (total split).
|
|
173
200
|
*/
|
|
174
201
|
export type OVMSplitPayload = OVMRewardsSplitPayload | OVMTotalSplitPayload;
|
|
175
202
|
/**
|
|
@@ -230,7 +257,8 @@ export type DepositData = {
|
|
|
230
257
|
signature: string;
|
|
231
258
|
};
|
|
232
259
|
/**
|
|
233
|
-
*
|
|
260
|
+
* A distributed validator within a cluster lock.
|
|
261
|
+
* Contains the aggregate public key, per-operator public shares, and deposit data.
|
|
234
262
|
*/
|
|
235
263
|
export type DistributedValidator = {
|
|
236
264
|
/** The public key of the distributed validator. */
|
|
@@ -245,7 +273,12 @@ export type DistributedValidator = {
|
|
|
245
273
|
builder_registration?: BuilderRegistration;
|
|
246
274
|
};
|
|
247
275
|
/**
|
|
248
|
-
* Cluster
|
|
276
|
+
* Cluster lock – the finalized cluster state after a successful DKG ceremony.
|
|
277
|
+
*
|
|
278
|
+
* Contains the distributed validators with their public key shares and deposit data,
|
|
279
|
+
* plus the aggregated BLS signature.
|
|
280
|
+
*
|
|
281
|
+
* Returned by {@link Client.getClusterLock} and {@link Client.getClusterLockByHash}.
|
|
249
282
|
*/
|
|
250
283
|
export type ClusterLock = {
|
|
251
284
|
/** The cluster definition. */
|
|
@@ -275,11 +308,12 @@ export type ClaimableIncentives = {
|
|
|
275
308
|
contract_address: string;
|
|
276
309
|
};
|
|
277
310
|
/**
|
|
278
|
-
*
|
|
311
|
+
* A string expected to be a checksummed or lowercase Ethereum address (e.g. `"0xAbC...123"`).
|
|
279
312
|
*/
|
|
280
313
|
export type ETH_ADDRESS = string;
|
|
281
314
|
/**
|
|
282
|
-
*
|
|
315
|
+
* Accepted ethers provider types for on-chain reads.
|
|
316
|
+
* Pass any of these as the third argument to `new Client(config, signer, provider)`.
|
|
283
317
|
*/
|
|
284
318
|
export type ProviderType = Provider | JsonRpcProvider | JsonRpcApiProvider | ethers.BrowserProvider;
|
|
285
319
|
/**
|
|
@@ -287,7 +321,8 @@ export type ProviderType = Provider | JsonRpcProvider | JsonRpcApiProvider | eth
|
|
|
287
321
|
*/
|
|
288
322
|
export type SafeRpcUrl = string;
|
|
289
323
|
/**
|
|
290
|
-
*
|
|
324
|
+
* Accepted ethers signer types for signing transactions and EIP-712 messages.
|
|
325
|
+
* Pass as the second argument to `new Client(config, signer)`.
|
|
291
326
|
*/
|
|
292
327
|
export type SignerType = JsonRpcSigner | Wallet;
|
|
293
328
|
/**
|
|
@@ -479,7 +514,8 @@ export type ChainConfig = {
|
|
|
479
514
|
};
|
|
480
515
|
};
|
|
481
516
|
/**
|
|
482
|
-
*
|
|
517
|
+
* Input payload for {@link ObolSplits.requestWithdrawal}.
|
|
518
|
+
* Requests withdrawal of validator funds from an OVM contract.
|
|
483
519
|
*/
|
|
484
520
|
export type OVMRequestWithdrawalPayload = {
|
|
485
521
|
/** request withdrawal fees in wei */
|
|
@@ -492,7 +528,7 @@ export type OVMRequestWithdrawalPayload = {
|
|
|
492
528
|
amounts: string[];
|
|
493
529
|
};
|
|
494
530
|
/**
|
|
495
|
-
*
|
|
531
|
+
* Input payload for {@link EOA.requestWithdrawal}.
|
|
496
532
|
*/
|
|
497
533
|
export type EOAWithdrawalPayload = {
|
|
498
534
|
/** Validator public key in hex format */
|
|
@@ -503,7 +539,8 @@ export type EOAWithdrawalPayload = {
|
|
|
503
539
|
requiredFee: string;
|
|
504
540
|
};
|
|
505
541
|
/**
|
|
506
|
-
*
|
|
542
|
+
* Input payload for {@link ObolSplits.deposit}.
|
|
543
|
+
* Deposits one or more validators to an OVM contract.
|
|
507
544
|
*/
|
|
508
545
|
export type OVMDepositPayload = {
|
|
509
546
|
/** OVM contract address */
|
|
@@ -523,7 +560,8 @@ export type OVMDepositPayload = {
|
|
|
523
560
|
}>;
|
|
524
561
|
};
|
|
525
562
|
/**
|
|
526
|
-
*
|
|
563
|
+
* Input payload for {@link EOA.deposit}.
|
|
564
|
+
* Batch-deposits validators to the beacon chain via the Pier Two batch deposit contract.
|
|
527
565
|
*/
|
|
528
566
|
export type EOADepositPayload = {
|
|
529
567
|
/** Array of deposit objects */
|
|
@@ -9,7 +9,7 @@ export declare const TEST_ADDRESSES: {
|
|
|
9
9
|
readonly ZERO_ADDRESS: string;
|
|
10
10
|
};
|
|
11
11
|
export declare const enr = "enr:-HW4QLlrtMjFLGkFT1bwdGbvZQlH8hLi0M2g44JAxEYP3BZmYpcsy9Q56HPPD87fMucjvLv4-obEFacpsg0ehRilbHeAgmlkgnY0iXNlY3AyNTZrMaEDRaa5o2aSgqyFq_ERZcQTztrOij1mFtXX1bJuVI6ieak";
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const clusterLockSoloV1X10: {
|
|
13
13
|
cluster_definition: {
|
|
14
14
|
name: string;
|
|
15
15
|
creator: {
|
|
@@ -33,68 +33,23 @@ export declare const clusterLockV1X6: {
|
|
|
33
33
|
}[];
|
|
34
34
|
dkg_algorithm: string;
|
|
35
35
|
fork_version: string;
|
|
36
|
+
deposit_amounts: string[];
|
|
36
37
|
config_hash: string;
|
|
37
38
|
definition_hash: string;
|
|
39
|
+
consensus_protocol: string;
|
|
40
|
+
target_gas_limit: number;
|
|
41
|
+
compounding: boolean;
|
|
38
42
|
};
|
|
39
43
|
distributed_validators: {
|
|
40
44
|
distributed_public_key: string;
|
|
41
45
|
public_shares: string[];
|
|
42
|
-
|
|
46
|
+
partial_deposit_data: {
|
|
43
47
|
pubkey: string;
|
|
44
48
|
withdrawal_credentials: string;
|
|
45
49
|
amount: string;
|
|
46
50
|
signature: string;
|
|
47
|
-
|
|
48
|
-
}[];
|
|
49
|
-
signature_aggregate: string;
|
|
50
|
-
lock_hash: string;
|
|
51
|
-
};
|
|
52
|
-
export declare const clusterConfigV1X7: {
|
|
53
|
-
name: string;
|
|
54
|
-
operators: {
|
|
55
|
-
address: string;
|
|
56
|
-
}[];
|
|
57
|
-
validators: {
|
|
58
|
-
fee_recipient_address: string;
|
|
59
|
-
withdrawal_address: string;
|
|
60
|
-
}[];
|
|
61
|
-
};
|
|
62
|
-
export declare const clusterLockV1X7: {
|
|
63
|
-
cluster_definition: {
|
|
64
|
-
name: string;
|
|
65
|
-
creator: {
|
|
66
|
-
address: string;
|
|
67
|
-
config_signature: string;
|
|
68
|
-
};
|
|
69
|
-
operators: {
|
|
70
|
-
address: string;
|
|
71
|
-
enr: string;
|
|
72
|
-
config_signature: string;
|
|
73
|
-
enr_signature: string;
|
|
74
|
-
}[];
|
|
75
|
-
uuid: string;
|
|
76
|
-
version: string;
|
|
77
|
-
timestamp: string;
|
|
78
|
-
num_validators: number;
|
|
79
|
-
threshold: number;
|
|
80
|
-
validators: {
|
|
81
|
-
fee_recipient_address: string;
|
|
82
|
-
withdrawal_address: string;
|
|
51
|
+
deposit_data_root: string;
|
|
83
52
|
}[];
|
|
84
|
-
dkg_algorithm: string;
|
|
85
|
-
fork_version: string;
|
|
86
|
-
config_hash: string;
|
|
87
|
-
definition_hash: string;
|
|
88
|
-
};
|
|
89
|
-
distributed_validators: {
|
|
90
|
-
distributed_public_key: string;
|
|
91
|
-
public_shares: string[];
|
|
92
|
-
deposit_data: {
|
|
93
|
-
pubkey: string;
|
|
94
|
-
withdrawal_credentials: string;
|
|
95
|
-
amount: string;
|
|
96
|
-
signature: string;
|
|
97
|
-
};
|
|
98
53
|
builder_registration: {
|
|
99
54
|
message: {
|
|
100
55
|
fee_recipient: string;
|
|
@@ -109,57 +64,6 @@ export declare const clusterLockV1X7: {
|
|
|
109
64
|
lock_hash: string;
|
|
110
65
|
node_signatures: string[];
|
|
111
66
|
};
|
|
112
|
-
export declare const clusterLockV1X8: {
|
|
113
|
-
cluster_definition: {
|
|
114
|
-
name: string;
|
|
115
|
-
creator: {
|
|
116
|
-
address: string;
|
|
117
|
-
config_signature: string;
|
|
118
|
-
};
|
|
119
|
-
operators: {
|
|
120
|
-
address: string;
|
|
121
|
-
enr: string;
|
|
122
|
-
config_signature: string;
|
|
123
|
-
enr_signature: string;
|
|
124
|
-
}[];
|
|
125
|
-
uuid: string;
|
|
126
|
-
version: string;
|
|
127
|
-
timestamp: string;
|
|
128
|
-
num_validators: number;
|
|
129
|
-
threshold: number;
|
|
130
|
-
validators: {
|
|
131
|
-
fee_recipient_address: string;
|
|
132
|
-
withdrawal_address: string;
|
|
133
|
-
}[];
|
|
134
|
-
dkg_algorithm: string;
|
|
135
|
-
fork_version: string;
|
|
136
|
-
deposit_amounts: string[];
|
|
137
|
-
config_hash: string;
|
|
138
|
-
definition_hash: string;
|
|
139
|
-
};
|
|
140
|
-
distributed_validators: {
|
|
141
|
-
distributed_public_key: string;
|
|
142
|
-
public_shares: string[];
|
|
143
|
-
builder_registration: {
|
|
144
|
-
message: {
|
|
145
|
-
fee_recipient: string;
|
|
146
|
-
gas_limit: number;
|
|
147
|
-
timestamp: number;
|
|
148
|
-
pubkey: string;
|
|
149
|
-
};
|
|
150
|
-
signature: string;
|
|
151
|
-
};
|
|
152
|
-
partial_deposit_data: {
|
|
153
|
-
pubkey: string;
|
|
154
|
-
withdrawal_credentials: string;
|
|
155
|
-
amount: string;
|
|
156
|
-
signature: string;
|
|
157
|
-
}[];
|
|
158
|
-
}[];
|
|
159
|
-
signature_aggregate: string;
|
|
160
|
-
lock_hash: string;
|
|
161
|
-
node_signatures: string[];
|
|
162
|
-
};
|
|
163
67
|
export declare const nullDepositAmountsClusterLockV1X8: {
|
|
164
68
|
cluster_definition: {
|
|
165
69
|
name: string;
|
|
@@ -235,7 +139,10 @@ export declare const clusterLockWithSafe: {
|
|
|
235
139
|
}[];
|
|
236
140
|
dkg_algorithm: string;
|
|
237
141
|
fork_version: string;
|
|
238
|
-
deposit_amounts:
|
|
142
|
+
deposit_amounts: null;
|
|
143
|
+
consensus_protocol: string;
|
|
144
|
+
target_gas_limit: number;
|
|
145
|
+
compounding: boolean;
|
|
239
146
|
config_hash: string;
|
|
240
147
|
definition_hash: string;
|
|
241
148
|
};
|
|
@@ -310,16 +217,23 @@ export declare const clusterLockV1X10: {
|
|
|
310
217
|
}[];
|
|
311
218
|
dkg_algorithm: string;
|
|
312
219
|
fork_version: string;
|
|
313
|
-
deposit_amounts:
|
|
220
|
+
deposit_amounts: string[];
|
|
221
|
+
config_hash: string;
|
|
222
|
+
definition_hash: string;
|
|
314
223
|
consensus_protocol: string;
|
|
315
224
|
target_gas_limit: number;
|
|
316
225
|
compounding: boolean;
|
|
317
|
-
config_hash: string;
|
|
318
|
-
definition_hash: string;
|
|
319
226
|
};
|
|
320
227
|
distributed_validators: {
|
|
321
228
|
distributed_public_key: string;
|
|
322
229
|
public_shares: string[];
|
|
230
|
+
partial_deposit_data: {
|
|
231
|
+
pubkey: string;
|
|
232
|
+
withdrawal_credentials: string;
|
|
233
|
+
amount: string;
|
|
234
|
+
signature: string;
|
|
235
|
+
deposit_data_root: string;
|
|
236
|
+
}[];
|
|
323
237
|
builder_registration: {
|
|
324
238
|
message: {
|
|
325
239
|
fee_recipient: string;
|
|
@@ -329,12 +243,6 @@ export declare const clusterLockV1X10: {
|
|
|
329
243
|
};
|
|
330
244
|
signature: string;
|
|
331
245
|
};
|
|
332
|
-
partial_deposit_data: {
|
|
333
|
-
pubkey: string;
|
|
334
|
-
withdrawal_credentials: string;
|
|
335
|
-
amount: string;
|
|
336
|
-
signature: string;
|
|
337
|
-
}[];
|
|
338
246
|
}[];
|
|
339
247
|
signature_aggregate: string;
|
|
340
248
|
lock_hash: string;
|
|
@@ -364,16 +272,23 @@ export declare const clusterLockWithCompoundingWithdrawals: {
|
|
|
364
272
|
}[];
|
|
365
273
|
dkg_algorithm: string;
|
|
366
274
|
fork_version: string;
|
|
367
|
-
deposit_amounts:
|
|
275
|
+
deposit_amounts: string[];
|
|
276
|
+
config_hash: string;
|
|
277
|
+
definition_hash: string;
|
|
368
278
|
consensus_protocol: string;
|
|
369
279
|
target_gas_limit: number;
|
|
370
280
|
compounding: boolean;
|
|
371
|
-
config_hash: string;
|
|
372
|
-
definition_hash: string;
|
|
373
281
|
};
|
|
374
282
|
distributed_validators: {
|
|
375
283
|
distributed_public_key: string;
|
|
376
284
|
public_shares: string[];
|
|
285
|
+
partial_deposit_data: {
|
|
286
|
+
pubkey: string;
|
|
287
|
+
withdrawal_credentials: string;
|
|
288
|
+
amount: string;
|
|
289
|
+
signature: string;
|
|
290
|
+
deposit_data_root: string;
|
|
291
|
+
}[];
|
|
377
292
|
builder_registration: {
|
|
378
293
|
message: {
|
|
379
294
|
fee_recipient: string;
|
|
@@ -383,12 +298,6 @@ export declare const clusterLockWithCompoundingWithdrawals: {
|
|
|
383
298
|
};
|
|
384
299
|
signature: string;
|
|
385
300
|
};
|
|
386
|
-
partial_deposit_data: {
|
|
387
|
-
pubkey: string;
|
|
388
|
-
withdrawal_credentials: string;
|
|
389
|
-
amount: string;
|
|
390
|
-
signature: string;
|
|
391
|
-
}[];
|
|
392
301
|
}[];
|
|
393
302
|
signature_aggregate: string;
|
|
394
303
|
lock_hash: string;
|