@obolnetwork/obol-sdk 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/package.json +2 -4
  2. package/dist/cjs/src/abi/splitV2FactoryAbi.js +420 -0
  3. package/dist/cjs/src/ajv.js +24 -0
  4. package/dist/cjs/src/bytecodes.js +3 -1
  5. package/dist/cjs/src/constants.js +24 -16
  6. package/dist/cjs/src/index.js +10 -10
  7. package/dist/cjs/src/schema.js +29 -3
  8. package/dist/cjs/src/splits/splitHelpers.js +100 -109
  9. package/dist/cjs/src/splits/splits.js +77 -16
  10. package/dist/cjs/test/client/ajv.spec.js +32 -0
  11. package/dist/cjs/test/splits/splits.spec.js +76 -2
  12. package/dist/esm/package.json +2 -4
  13. package/dist/esm/src/abi/splitV2FactoryAbi.js +417 -0
  14. package/dist/esm/src/ajv.js +24 -0
  15. package/dist/esm/src/bytecodes.js +2 -0
  16. package/dist/esm/src/constants.js +25 -17
  17. package/dist/esm/src/index.js +10 -10
  18. package/dist/esm/src/schema.js +28 -2
  19. package/dist/esm/src/splits/splitHelpers.js +101 -110
  20. package/dist/esm/src/splits/splits.js +79 -18
  21. package/dist/esm/test/client/ajv.spec.js +33 -1
  22. package/dist/esm/test/splits/splits.spec.js +77 -3
  23. package/dist/types/src/abi/splitV2FactoryAbi.d.ts +60 -0
  24. package/dist/types/src/bytecodes.d.ts +2 -0
  25. package/dist/types/src/exits/verificationHelpers.d.ts +1 -0
  26. package/dist/types/src/schema.d.ts +30 -3
  27. package/dist/types/src/splits/splitHelpers.d.ts +17 -3
  28. package/dist/types/src/splits/splits.d.ts +28 -1
  29. package/dist/types/src/types.d.ts +21 -6
  30. package/dist/types/src/verification/common.d.ts +1 -0
  31. package/package.json +2 -4
  32. package/src/abi/splitV2FactoryAbi.ts +417 -0
  33. package/src/ajv.ts +33 -0
  34. package/src/bytecodes.ts +4 -0
  35. package/src/constants.ts +26 -16
  36. package/src/index.ts +14 -14
  37. package/src/schema.ts +29 -2
  38. package/src/splits/splitHelpers.ts +169 -124
  39. package/src/splits/splits.ts +115 -17
  40. package/src/types.ts +24 -6
@@ -7,9 +7,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { formatRecipientsForSplitV2, predictSplitV2Address, isSplitV2Deployed, deployOVMContract, deployOVMAndSplitV2, } from './splitHelpers';
10
+ import { formatRecipientsForSplitV2, predictSplitV2Address, isSplitV2Deployed, deployOVMContract, deployOVMAndSplitV2, requestWithdrawalFromOVM, } from './splitHelpers';
11
11
  import { CHAIN_CONFIGURATION, SPLITS_V2_SALT, DEFAULT_RETROACTIVE_FUNDING_REWARDS_ONLY_SPLIT, isChainSupportedForSplitters, } from '../constants';
12
- import { ovmRewardsSplitPayloadSchema, ovmTotalSplitPayloadSchema, } from '../schema';
12
+ import { ovmRewardsSplitPayloadSchema, ovmTotalSplitPayloadSchema, ovmRequestWithdrawalPayloadSchema, } from '../schema';
13
13
  import { validatePayload } from '../ajv';
14
14
  import { isContractAvailable } from '../utils';
15
15
  /**
@@ -54,22 +54,33 @@ export class ObolSplits {
54
54
  throw new Error(`Splitter configuration is not supported on ${this.chainId} chain`);
55
55
  }
56
56
  const chainConfig = CHAIN_CONFIGURATION[this.chainId];
57
- if (!(chainConfig === null || chainConfig === void 0 ? void 0 : chainConfig.OVM_FACTORY_ADDRESS)) {
57
+ if (!(chainConfig === null || chainConfig === void 0 ? void 0 : chainConfig.OVM_FACTORY_CONTRACT)) {
58
58
  throw new Error(`OVM contract factory is not configured for chain ${this.chainId}`);
59
59
  }
60
60
  if (!this.provider) {
61
61
  throw new Error('Provider is required to check OVM factory contract availability');
62
62
  }
63
- const ovmFactoryConfig = chainConfig.OVM_FACTORY_ADDRESS;
64
- if (!(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.address) || !(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.bytecode)) {
65
- throw new Error(`OVM factory contract configuration is incomplete for chain ${this.chainId}`);
63
+ const ovmFactoryConfig = chainConfig.OVM_FACTORY_CONTRACT;
64
+ const splitV2FactoryConfig = chainConfig.SPLIT_V2_FACTORY_CONTRACT;
65
+ const multiCallConfig = chainConfig.MULTICALL_CONTRACT;
66
+ if (!(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.address) ||
67
+ !(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.bytecode) ||
68
+ !(splitV2FactoryConfig === null || splitV2FactoryConfig === void 0 ? void 0 : splitV2FactoryConfig.address) ||
69
+ !(splitV2FactoryConfig === null || splitV2FactoryConfig === void 0 ? void 0 : splitV2FactoryConfig.bytecode) ||
70
+ !(multiCallConfig === null || multiCallConfig === void 0 ? void 0 : multiCallConfig.address) ||
71
+ !(multiCallConfig === null || multiCallConfig === void 0 ? void 0 : multiCallConfig.bytecode)) {
72
+ throw new Error(`Contracts configuration is incomplete for chain ${this.chainId}`);
66
73
  }
67
- const checkOVMFactoryAddress = yield isContractAvailable(ovmFactoryConfig.address, this.provider, ovmFactoryConfig.bytecode);
68
- if (!checkOVMFactoryAddress) {
69
- throw new Error(`OVM factory contract is not deployed or available on chain ${this.chainId}`);
74
+ const checkOVMFactoryContract = yield isContractAvailable(ovmFactoryConfig.address, this.provider, ovmFactoryConfig.bytecode);
75
+ const checkSplitV2FactoryContract = yield isContractAvailable(splitV2FactoryConfig.address, this.provider, splitV2FactoryConfig.bytecode);
76
+ const checkMultiCallContract = yield isContractAvailable(multiCallConfig.address, this.provider, multiCallConfig.bytecode);
77
+ if (!checkOVMFactoryContract ||
78
+ !checkSplitV2FactoryContract ||
79
+ !checkMultiCallContract) {
80
+ throw new Error(`Splitter contract is not deployed or available on chain ${this.chainId}`);
70
81
  }
71
82
  const retroActiveFundingRecipient = {
72
- address: chainConfig.RETROACTIVE_FUNDING_ADDRESS.address,
83
+ address: chainConfig.RETROACTIVE_FUNDING_CONTRACT.address,
73
84
  percentAllocation: DEFAULT_RETROACTIVE_FUNDING_REWARDS_ONLY_SPLIT,
74
85
  };
75
86
  const copiedRewardsSplitRecipients = [
@@ -159,22 +170,33 @@ export class ObolSplits {
159
170
  throw new Error(`Splitter configuration is not supported on ${this.chainId} chain`);
160
171
  }
161
172
  const chainConfig = CHAIN_CONFIGURATION[this.chainId];
162
- if (!(chainConfig === null || chainConfig === void 0 ? void 0 : chainConfig.OVM_FACTORY_ADDRESS)) {
173
+ if (!(chainConfig === null || chainConfig === void 0 ? void 0 : chainConfig.OVM_FACTORY_CONTRACT)) {
163
174
  throw new Error(`OVM contract factory is not configured for chain ${this.chainId}`);
164
175
  }
165
176
  if (!this.provider) {
166
177
  throw new Error('Provider is required to check OVM factory contract availability');
167
178
  }
168
- const ovmFactoryConfig = chainConfig.OVM_FACTORY_ADDRESS;
169
- if (!(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.address) || !(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.bytecode)) {
170
- throw new Error(`OVM factory contract configuration is incomplete for chain ${this.chainId}`);
179
+ const ovmFactoryConfig = chainConfig.OVM_FACTORY_CONTRACT;
180
+ const splitV2FactoryConfig = chainConfig.SPLIT_V2_FACTORY_CONTRACT;
181
+ const multiCallConfig = chainConfig.MULTICALL_CONTRACT;
182
+ if (!(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.address) ||
183
+ !(ovmFactoryConfig === null || ovmFactoryConfig === void 0 ? void 0 : ovmFactoryConfig.bytecode) ||
184
+ !(splitV2FactoryConfig === null || splitV2FactoryConfig === void 0 ? void 0 : splitV2FactoryConfig.address) ||
185
+ !(splitV2FactoryConfig === null || splitV2FactoryConfig === void 0 ? void 0 : splitV2FactoryConfig.bytecode) ||
186
+ !(multiCallConfig === null || multiCallConfig === void 0 ? void 0 : multiCallConfig.address) ||
187
+ !(multiCallConfig === null || multiCallConfig === void 0 ? void 0 : multiCallConfig.bytecode)) {
188
+ throw new Error(`Contracts configuration is incomplete for chain ${this.chainId}`);
171
189
  }
172
- const checkOVMFactoryAddress = yield isContractAvailable(ovmFactoryConfig.address, this.provider, ovmFactoryConfig.bytecode);
173
- if (!checkOVMFactoryAddress) {
174
- throw new Error(`OVM factory contract is not deployed or available on chain ${this.chainId}`);
190
+ const checkOVMFactoryContract = yield isContractAvailable(ovmFactoryConfig.address, this.provider, ovmFactoryConfig.bytecode);
191
+ const checkSplitV2FactoryContract = yield isContractAvailable(splitV2FactoryConfig.address, this.provider, splitV2FactoryConfig.bytecode);
192
+ const checkMultiCallContract = yield isContractAvailable(multiCallConfig.address, this.provider, multiCallConfig.bytecode);
193
+ if (!checkOVMFactoryContract ||
194
+ !checkSplitV2FactoryContract ||
195
+ !checkMultiCallContract) {
196
+ throw new Error(`Splitter contract is not deployed or available on chain ${this.chainId}`);
175
197
  }
176
198
  const retroActiveFundingRecipient = {
177
- address: chainConfig.RETROACTIVE_FUNDING_ADDRESS.address,
199
+ address: chainConfig.RETROACTIVE_FUNDING_CONTRACT.address,
178
200
  percentAllocation: DEFAULT_RETROACTIVE_FUNDING_REWARDS_ONLY_SPLIT,
179
201
  };
180
202
  const copiedRewardsSplitRecipients = [
@@ -254,4 +276,43 @@ export class ObolSplits {
254
276
  }
255
277
  });
256
278
  }
279
+ /**
280
+ * Requests withdrawal from an OVM contract.
281
+ *
282
+ * This method allows requesting withdrawal of validator funds from an OVM contract.
283
+ * The withdrawal request includes OVM address, validator public keys and corresponding withdrawal amounts.
284
+ *
285
+ * @remarks
286
+ * **⚠️ Important:** If you're storing the private key in an `.env` file, ensure it is securely managed
287
+ * and not pushed to version control.
288
+ *
289
+ * @param {OVMRequestWithdrawalPayload} payload - Data needed to request withdrawal
290
+ * @returns {Promise<{txHash: string}>} Transaction hash of the withdrawal request
291
+ * @throws Will throw an error if the signer is not provided, OVM address is invalid, or the request fails
292
+ *
293
+ * An example of how to use requestWithdrawal:
294
+ * ```typescript
295
+ * const result = await client.splits.requestWithdrawal({
296
+ * ovmAddress: '0x1234567890123456789012345678901234567890',
297
+ * pubKeys: ['0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456'],
298
+ * amounts: ['32000000000'] // 32 ETH in gwei
299
+ * });
300
+ * console.log('Withdrawal requested:', result.txHash);
301
+ * ```
302
+ */
303
+ requestWithdrawal(payload) {
304
+ return __awaiter(this, void 0, void 0, function* () {
305
+ if (!this.signer) {
306
+ throw new Error('Signer is required in requestWithdrawal');
307
+ }
308
+ // [TBD] need to move ovm verification to sdk method and use it here
309
+ const validatedPayload = validatePayload(payload, ovmRequestWithdrawalPayloadSchema);
310
+ return yield requestWithdrawalFromOVM({
311
+ ovmAddress: validatedPayload.ovmAddress,
312
+ pubKeys: validatedPayload.pubKeys,
313
+ amounts: validatedPayload.amounts,
314
+ signer: this.signer,
315
+ });
316
+ });
317
+ }
257
318
  }
@@ -1,5 +1,5 @@
1
1
  import { validatePayload } from '../../src/ajv';
2
- import { ovmRewardsSplitPayloadSchema, ovmTotalSplitPayloadSchema, } from '../../src/schema';
2
+ import { ovmRewardsSplitPayloadSchema, ovmTotalSplitPayloadSchema, ovmRequestWithdrawalPayloadSchema, } from '../../src/schema';
3
3
  import { TEST_ADDRESSES } from '../fixtures';
4
4
  describe('validatePayload - OVM Schemas', () => {
5
5
  describe('ovmRewardsSplitPayloadSchema', () => {
@@ -265,3 +265,35 @@ describe('validatePayload - OVM Schemas', () => {
265
265
  });
266
266
  });
267
267
  });
268
+ describe('ovmRequestWithdrawalPayloadSchema', () => {
269
+ const validPayload = {
270
+ ovmAddress: '0x1234567890123456789012345678901234567890',
271
+ pubKeys: [
272
+ '0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456',
273
+ ],
274
+ amounts: ['32000000000'],
275
+ };
276
+ it('should throw error when OVM address is missing', () => {
277
+ const payload = {
278
+ pubKeys: validPayload.pubKeys,
279
+ amounts: validPayload.amounts,
280
+ };
281
+ expect(() => validatePayload(payload, ovmRequestWithdrawalPayloadSchema)).toThrow("Validation failed: must have required property 'ovmAddress'");
282
+ });
283
+ it('should throw error when OVM address is invalid', () => {
284
+ const payload = {
285
+ ovmAddress: '0x123', // Too short
286
+ pubKeys: validPayload.pubKeys,
287
+ amounts: validPayload.amounts,
288
+ };
289
+ expect(() => validatePayload(payload, ovmRequestWithdrawalPayloadSchema)).toThrow('Validation failed: /ovmAddress must match pattern');
290
+ });
291
+ it('should throw error when number of public keys does not match number of amounts', () => {
292
+ const payload = {
293
+ ovmAddress: validPayload.ovmAddress,
294
+ pubKeys: validPayload.pubKeys,
295
+ amounts: ['32000000000', '16000000000'], // 2 amounts, 1 pubKey
296
+ };
297
+ expect(() => validatePayload(payload, ovmRequestWithdrawalPayloadSchema)).toThrow('Validation failed: must pass "validateOVMRequestWithdrawalPayload" keyword validation');
298
+ });
299
+ });
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { Client } from '../../src';
11
11
  import { CHAIN_CONFIGURATION } from '../../src/constants';
12
- import { formatRecipientsForSplitV2, predictSplitV2Address, isSplitV2Deployed, deployOVMAndSplitV2, deployOVMContract, } from '../../src/splits/splitHelpers';
12
+ import { formatRecipientsForSplitV2, predictSplitV2Address, isSplitV2Deployed, deployOVMAndSplitV2, deployOVMContract, requestWithdrawalFromOVM, } from '../../src/splits/splitHelpers';
13
13
  import { isContractAvailable } from '../../src/utils';
14
14
  import { TEST_ADDRESSES } from '../fixtures';
15
15
  // Mock the split helpers
@@ -19,6 +19,7 @@ jest.mock('../../src/splits/splitHelpers', () => ({
19
19
  isSplitV2Deployed: jest.fn(),
20
20
  deployOVMContract: jest.fn(),
21
21
  deployOVMAndSplitV2: jest.fn(),
22
+ requestWithdrawalFromOVM: jest.fn(),
22
23
  }));
23
24
  // Mock the utils
24
25
  jest.mock('../../src/utils', () => ({
@@ -34,6 +35,7 @@ const mockPredictSplitV2Address = predictSplitV2Address;
34
35
  const mockIsSplitV2Deployed = isSplitV2Deployed;
35
36
  const mockDeployOVMAndSplitV2 = deployOVMAndSplitV2;
36
37
  const mockDeployOVMContract = deployOVMContract;
38
+ const mockRequestWithdrawalFromOVM = requestWithdrawalFromOVM;
37
39
  const mockIsContractAvailable = isContractAvailable;
38
40
  describe('ObolSplits', () => {
39
41
  let client;
@@ -42,6 +44,8 @@ describe('ObolSplits', () => {
42
44
  beforeEach(() => {
43
45
  // Clear all mocks before each test
44
46
  jest.clearAllMocks();
47
+ // Reset the mock to not be called by default
48
+ mockRequestWithdrawalFromOVM.mockReset();
45
49
  mockSigner = {
46
50
  getAddress: jest
47
51
  .fn()
@@ -102,9 +106,9 @@ describe('ObolSplits', () => {
102
106
  it('should throw error when OVM factory is not configured', () => __awaiter(void 0, void 0, void 0, function* () {
103
107
  // Mock chain configuration without OVM factory
104
108
  const originalConfig = CHAIN_CONFIGURATION[1];
105
- // Create a new config object without OVM_FACTORY_ADDRESS
109
+ // Create a new config object without OVM_FACTORY_CONTRACT
106
110
  const configWithoutOVM = Object.assign({}, originalConfig);
107
- delete configWithoutOVM.OVM_FACTORY_ADDRESS;
111
+ delete configWithoutOVM.OVM_FACTORY_CONTRACT;
108
112
  CHAIN_CONFIGURATION[1] = configWithoutOVM;
109
113
  yield expect(client.splits.createValidatorManagerAndRewardsSplit(mockRewardsSplitPayload)).rejects.toThrow('OVM contract factory is not configured for chain 1');
110
114
  // Restore original config
@@ -226,6 +230,76 @@ describe('ObolSplits', () => {
226
230
  yield expect(clientUnsupportedChain.splits.createValidatorManagerAndTotalSplit(mockTotalSplitPayload)).rejects.toThrow('Splitter configuration is not supported on 999 chain');
227
231
  }));
228
232
  });
233
+ describe('requestWithdrawal', () => {
234
+ const mockOVMAddress = '0x1234567890123456789012345678901234567890';
235
+ const mockPubKeys = [
236
+ '0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456',
237
+ ];
238
+ const mockAmounts = ['32000000000']; // 32 ETH in gwei
239
+ it('should request withdrawal successfully', () => __awaiter(void 0, void 0, void 0, function* () {
240
+ mockRequestWithdrawalFromOVM.mockResolvedValue({
241
+ txHash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
242
+ });
243
+ const result = yield client.splits.requestWithdrawal({
244
+ ovmAddress: mockOVMAddress,
245
+ pubKeys: mockPubKeys,
246
+ amounts: mockAmounts,
247
+ });
248
+ expect(result).toEqual({
249
+ txHash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
250
+ });
251
+ expect(mockRequestWithdrawalFromOVM).toHaveBeenCalledWith({
252
+ ovmAddress: mockOVMAddress,
253
+ pubKeys: mockPubKeys,
254
+ amounts: mockAmounts,
255
+ signer: mockSigner,
256
+ });
257
+ }));
258
+ it('should throw error when signer is not provided', () => __awaiter(void 0, void 0, void 0, function* () {
259
+ const clientWithoutSigner = new Client({ chainId: 1 }, undefined, mockProvider);
260
+ yield expect(clientWithoutSigner.splits.requestWithdrawal({
261
+ ovmAddress: mockOVMAddress,
262
+ pubKeys: mockPubKeys,
263
+ amounts: mockAmounts,
264
+ })).rejects.toThrow('Signer is required in requestWithdrawal');
265
+ }));
266
+ // it('should throw error when amount is below minimum (1,000,000 gwei)', async () => {
267
+ // await expect(
268
+ // client.splits.requestWithdrawal({
269
+ // ovmAddress: mockOVMAddress,
270
+ // pubKeys: mockPubKeys,
271
+ // amounts: ['500000'], // Below minimum of 1,000,000 gwei
272
+ // }),
273
+ // ).rejects.toThrow('Validation failed');
274
+ // });
275
+ it('should handle multiple validators withdrawal request', () => __awaiter(void 0, void 0, void 0, function* () {
276
+ const multiplePubKeys = [
277
+ '0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456',
278
+ '0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd',
279
+ ];
280
+ const multipleAmounts = [
281
+ '32000000000', // 32 ETH
282
+ '16000000000', // 16 ETH
283
+ ];
284
+ mockRequestWithdrawalFromOVM.mockResolvedValue({
285
+ txHash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
286
+ });
287
+ const result = yield client.splits.requestWithdrawal({
288
+ ovmAddress: mockOVMAddress,
289
+ pubKeys: multiplePubKeys,
290
+ amounts: multipleAmounts,
291
+ });
292
+ expect(result).toEqual({
293
+ txHash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
294
+ });
295
+ expect(mockRequestWithdrawalFromOVM).toHaveBeenCalledWith({
296
+ ovmAddress: mockOVMAddress,
297
+ pubKeys: multiplePubKeys,
298
+ amounts: multipleAmounts,
299
+ signer: mockSigner,
300
+ });
301
+ }));
302
+ });
229
303
  describe('constructor', () => {
230
304
  it('should create Client instance with splits property', () => {
231
305
  const testClient = new Client({ chainId: 1 }, mockSigner, mockProvider);
@@ -0,0 +1,60 @@
1
+ export declare const splitV2FactoryAbi: ({
2
+ inputs: {
3
+ internalType: string;
4
+ name: string;
5
+ type: string;
6
+ }[];
7
+ stateMutability: string;
8
+ type: string;
9
+ anonymous?: undefined;
10
+ name?: undefined;
11
+ outputs?: undefined;
12
+ } | {
13
+ anonymous: boolean;
14
+ inputs: ({
15
+ indexed: boolean;
16
+ internalType: string;
17
+ name: string;
18
+ type: string;
19
+ components?: undefined;
20
+ } | {
21
+ components: {
22
+ internalType: string;
23
+ name: string;
24
+ type: string;
25
+ }[];
26
+ indexed: boolean;
27
+ internalType: string;
28
+ name: string;
29
+ type: string;
30
+ })[];
31
+ name: string;
32
+ type: string;
33
+ stateMutability?: undefined;
34
+ outputs?: undefined;
35
+ } | {
36
+ inputs: ({
37
+ components: {
38
+ internalType: string;
39
+ name: string;
40
+ type: string;
41
+ }[];
42
+ internalType: string;
43
+ name: string;
44
+ type: string;
45
+ } | {
46
+ internalType: string;
47
+ name: string;
48
+ type: string;
49
+ components?: undefined;
50
+ })[];
51
+ name: string;
52
+ outputs: {
53
+ internalType: string;
54
+ name: string;
55
+ type: string;
56
+ }[];
57
+ stateMutability: string;
58
+ type: string;
59
+ anonymous?: undefined;
60
+ })[];
@@ -11,3 +11,5 @@ export declare const MAINNET_WAREHOUSE_BYTECODE = "0x608060405260043610156100115
11
11
  export declare const HOODI_OWR_FACTORY_BYTECODE = "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063c3d7aa861461003b578063c52425e41461006b575b600080fd5b61005560048036038101906100509190610471565b610089565b6040516100629190610537565b60405180910390f35b6100736102c3565b6040516100809190610537565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806100f15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610128576040517ffca23e2a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203610162576040517f8966ee9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6bffffffffffffffffffffffff80168211156101b557816040517f7a95f4750000000000000000000000000000000000000000000000000000000081526004016101ac9190610561565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff1660a084901b17905060008473ffffffffffffffffffffffffffffffffffffffff1690506000878383604051602001610208939291906105e5565b6040516020818303038152906040529050610262817f000000000000000000000000f28cd9c47ebee843638cacb1a47505fd60fe5bcf73ffffffffffffffffffffffffffffffffffffffff166102e790919063ffffffff16565b93508373ffffffffffffffffffffffffffffffffffffffff167ff818472e7ef9970531a3465a1d70817d221d2c79dc98ea49bdb1254783dba6eb898989896040516102b09493929190610631565b60405180910390a2505050949350505050565b7f000000000000000000000000f28cd9c47ebee843638cacb1a47505fd60fe5bcf81565b600060608203516040830351602084035184518060208701018051600283016c5af43d3d93803e606057fd5bf3895289600d8a035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218a03527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff603a8a035272fd6100003d81600a3d39f336602c57343d527f6062820160781b1761ff9e82106059018a03528060f01b8352606c8101604c8a036000f09750876103b35763301164256000526004601cfd5b8183528389528460208a03528560408a03528660608a03525050505050505092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610408826103dd565b9050919050565b610418816103fd565b811461042357600080fd5b50565b6000813590506104358161040f565b92915050565b6000819050919050565b61044e8161043b565b811461045957600080fd5b50565b60008135905061046b81610445565b92915050565b6000806000806080858703121561048b5761048a6103d8565b5b600061049987828801610426565b94505060206104aa87828801610426565b93505060406104bb87828801610426565b92505060606104cc8782880161045c565b91505092959194509250565b6000819050919050565b60006104fd6104f86104f3846103dd565b6104d8565b6103dd565b9050919050565b600061050f826104e2565b9050919050565b600061052182610504565b9050919050565b61053181610516565b82525050565b600060208201905061054c6000830184610528565b92915050565b61055b8161043b565b82525050565b60006020820190506105766000830184610552565b92915050565b60008160601b9050919050565b60006105948261057c565b9050919050565b60006105a682610589565b9050919050565b6105be6105b9826103fd565b61059b565b82525050565b6000819050919050565b6105df6105da8261043b565b6105c4565b82525050565b60006105f182866105ad565b60148201915061060182856105ce565b60208201915061061182846105ce565b602082019150819050949350505050565b61062b816103fd565b82525050565b60006080820190506106466000830187610622565b6106536020830186610622565b6106606040830185610622565b61066d6060830184610552565b9594505050505056fea2646970667358221220fcf81212e88e4cccbb5e7ef128150f04003e9c896bd3f612c627d77808aac1f664736f6c63430008130033";
12
12
  export declare const HOODI_MULTICALL_BYTECODE = "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033";
13
13
  export declare const HOODI_SPLITMAIN_BYTECODE = "0x6080604052600436106101185760003560e01c806377b1e4e9116100a0578063c7de644011610064578063c7de64401461034e578063d0e4b2f41461036e578063e10e51d61461038e578063e61cb05e146103cb578063ecef0ace146103eb57600080fd5b806377b1e4e91461027e5780638117abc11461029e57806388c662aa146102d2578063a5e3909e1461030e578063c3a8962c1461032e57600080fd5b80633bb66a7b116100e75780633bb66a7b146101cf5780633f26479e146101ef57806352844dd3146102065780636e5f69191461023e5780637601f7821461025e57600080fd5b80631267c6da146101245780631581130214610146578063189cbaa0146101665780631da0b8fc1461018657600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b5061014461013f366004612ab2565b61040b565b005b34801561015257600080fd5b50610144610161366004612c4c565b6104a6565b34801561017257600080fd5b50610144610181366004612ab2565b61081a565b34801561019257600080fd5b506101bc6101a1366004612ab2565b6001600160a01b031660009081526002602052604090205490565b6040519081526020015b60405180910390f35b3480156101db57600080fd5b506101bc6101ea366004612ab2565b6108e5565b3480156101fb57600080fd5b506101bc620f424081565b34801561021257600080fd5b50610226610221366004612d5d565b61093e565b6040516001600160a01b0390911681526020016101c6565b34801561024a57600080fd5b50610144610259366004612d03565b610c4d565b34801561026a57600080fd5b50610226610279366004612ddb565b610d82565b34801561028a57600080fd5b50610144610299366004612c4c565b611144565b3480156102aa57600080fd5b506102267f000000000000000000000000110966463c090a7f90283548f03f68f745aad63881565b3480156102de57600080fd5b506102266102ed366004612ab2565b6001600160a01b039081166000908152600260205260409020600101541690565b34801561031a57600080fd5b50610144610329366004612b95565b611487565b34801561033a57600080fd5b506101bc610349366004612c3a565b6117aa565b34801561035a57600080fd5b50610144610369366004612ab2565b61187e565b34801561037a57600080fd5b50610144610389366004612ace565b61194d565b34801561039a57600080fd5b506102266103a9366004612ab2565b6001600160a01b03908116600090815260026020819052604090912001541690565b3480156103d757600080fd5b506101446103e6366004612b95565b611a1f565b3480156103f757600080fd5b50610144610406366004612b06565b611d6f565b6001600160a01b0381811660009081526002602052604090206001015482911633146104515760405163472511eb60e11b81523360048201526024015b60405180910390fd5b6001600160a01b038216600081815260026020819052604080832090910180546001600160a01b0319169055517f6c2460a415b84be3720c209fe02f2cad7a6bcba21e8637afe8957b7ec4b6ef879190a25050565b85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250508351869250600211159050610535578251604051630e8c626560e41b815260040161044891815260200190565b8151835114610564578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f424061057183612020565b63ffffffff16146105a75761058582612020565b60405163fcc487c160e01b815263ffffffff9091166004820152602401610448565b82516000190160005b8181101561069e578481600101815181106105db57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031685828151811061060c57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161061063e5760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff1684828151811061066657634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff16141561069657604051630db7e4c760e01b815260048101829052602401610448565b6001016105b0565b50600063ffffffff168382815181106106c757634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff1614156106f757604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff16111561072a5760405163308440e360e21b815263ffffffff82166004820152602401610448565b61079a8b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b9250612073915050565b61080d8b8b8b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d9182918501908490808284376000920191909152508c92508b91506120c59050565b5050505050505050505050565b6001600160a01b03818116600090815260026020526040902060010154829116331461085b5760405163472511eb60e11b8152336004820152602401610448565b6001600160a01b03808316600081815260026020819052604080832091820180546001600160a01b0319169055600190910154905191931691907f943d69cf2bbe08a9d44b3c4ce6da17d939d758739370620871ce99a6437866d0908490a4506001600160a01b0316600090815260026020526040902060010180546001600160a01b0319169055565b6001600160a01b038116600090815260026020526040812054610909576000610915565b816001600160a01b0316315b6001600160a01b0383166000908152602081905260409020546109389190612f98565b92915050565b6000858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152505083518692506002111590506109cf578251604051630e8c626560e41b815260040161044891815260200190565b81518351146109fe578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f4240610a0b83612020565b63ffffffff1614610a1f5761058582612020565b82516000190160005b81811015610b1657848160010181518110610a5357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316858281518110610a8457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031610610ab65760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff16848281518110610ade57634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415610b0e57604051630db7e4c760e01b815260048101829052602401610448565b600101610a28565b50600063ffffffff16838281518110610b3f57634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415610b6f57604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff161115610ba25760405163308440e360e21b815263ffffffff82166004820152602401610448565b6000610c138a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b925061239f915050565b9050610c3f7f000000000000000000000000110966463c090a7f90283548f03f68f745aad638826123d5565b9a9950505050505050505050565b60008167ffffffffffffffff811115610c7657634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c9f578160200160208202803683370190505b50905060008415610cb657610cb38661247a565b90505b60005b83811015610d3257610cff87868684818110610ce557634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610cfa9190612ab2565b6124cd565b838281518110610d1f57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152600101610cb9565b50856001600160a01b03167fa9e30bf144f83390a4fe47562a4e16892108102221c674ff538da0b72a83d17482868686604051610d729493929190612f08565b60405180910390a2505050505050565b600086868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250508351879250600211159050610e13578251604051630e8c626560e41b815260040161044891815260200190565b8151835114610e42578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f4240610e4f83612020565b63ffffffff1614610e635761058582612020565b82516000190160005b81811015610f5a57848160010181518110610e9757634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316858281518110610ec857634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031610610efa5760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff16848281518110610f2257634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415610f5257604051630db7e4c760e01b815260048101829052602401610448565b600101610e6c565b50600063ffffffff16838281518110610f8357634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415610fb357604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff161115610fe65760405163308440e360e21b815263ffffffff82166004820152602401610448565b60006110578b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d9182918501908490808284376000920191909152508c925061239f915050565b90506001600160a01b038616611098576110917f000000000000000000000000110966463c090a7f90283548f03f68f745aad63882612539565b94506110f5565b6110c17f000000000000000000000000110966463c090a7f90283548f03f68f745aad6386125e9565b6001600160a01b03818116600090815260026020526040902060010180546001600160a01b03191691891691909117905594505b6001600160a01b038516600081815260026020526040808220849055517f8d5f9943c664a3edaf4d3eb18cc5e2c45a7d2dc5869be33d33bbc0fff9bc25909190a2505050509695505050505050565b6001600160a01b0388811660009081526002602052604090206001015489911633146111855760405163472511eb60e11b8152336004820152602401610448565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250508351879250600211159050611214578251604051630e8c626560e41b815260040161044891815260200190565b8151835114611243578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f424061125083612020565b63ffffffff16146112645761058582612020565b82516000190160005b8181101561135b5784816001018151811061129857634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03168582815181106112c957634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316106112fb5760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff1684828151811061132357634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff16141561135357604051630db7e4c760e01b815260048101829052602401610448565b60010161126d565b50600063ffffffff1683828151811061138457634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff1614156113b457604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff1611156113e75760405163308440e360e21b815263ffffffff82166004820152602401610448565b6113f58c8b8b8b8b8b612698565b6114798c8c8c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508d92508c91506120c59050565b505050505050505050505050565b6001600160a01b0387811660009081526002602052604090206001015488911633146114c85760405163472511eb60e11b8152336004820152602401610448565b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250508351879250600211159050611557578251604051630e8c626560e41b815260040161044891815260200190565b8151835114611586578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f424061159383612020565b63ffffffff16146115a75761058582612020565b82516000190160005b8181101561169e578481600101815181106115db57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031685828151811061160c57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161061163e5760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff1684828151811061166657634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff16141561169657604051630db7e4c760e01b815260048101829052602401610448565b6001016115b0565b50600063ffffffff168382815181106116c757634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff1614156116f757604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff16111561172a5760405163308440e360e21b815263ffffffff82166004820152602401610448565b6117388b8b8b8b8b8b612698565b61080d8b8b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808f0282810182019093528e82529093508e92508d9182918501908490808284376000920191909152508c92508b91506127589050565b6001600160a01b0382166000908152600260205260408120546117ce576000611847565b6040516370a0823160e01b81526001600160a01b0384811660048301528316906370a082319060240160206040518083038186803b15801561180f57600080fd5b505afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118479190612e6c565b6001600160a01b038084166000908152600160209081526040808320938816835292905220546118779190612f98565b9392505050565b6001600160a01b038181166000908152600260208190526040909120015482911633146118c05760405163472511eb60e11b8152336004820152602401610448565b6001600160a01b03808316600081815260026020819052604080832091820180546001600160a01b0319169055600190910154905133949190911692917f943d69cf2bbe08a9d44b3c4ce6da17d939d758739370620871ce99a6437866d091a4506001600160a01b0316600090815260026020526040902060010180546001600160a01b03191633179055565b6001600160a01b03828116600090815260026020526040902060010154839116331461198e5760405163472511eb60e11b8152336004820152602401610448565b816001600160a01b0381166119c15760405163c369130760e01b81526001600160a01b0382166004820152602401610448565b6001600160a01b03848116600081815260026020819052604080832090910180546001600160a01b0319169488169485179055517f107cf6ea8668d533df1aab5bb8b6315bb0c25f0b6c955558d09368f290668fc79190a350505050565b85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250508351869250600211159050611aae578251604051630e8c626560e41b815260040161044891815260200190565b8151835114611add578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f4240611aea83612020565b63ffffffff1614611afe5761058582612020565b82516000190160005b81811015611bf557848160010181518110611b3257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316858281518110611b6357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031610611b955760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff16848281518110611bbd57634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415611bed57604051630db7e4c760e01b815260048101829052602401610448565b600101611b07565b50600063ffffffff16838281518110611c1e57634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415611c4e57604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff161115611c815760405163308440e360e21b815263ffffffff82166004820152602401610448565b611cf18a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b9250612073915050565b611d638a8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808e0282810182019093528d82529093508d92508c9182918501908490808284376000920191909152508b92508a91506127589050565b50505050505050505050565b6001600160a01b038681166000908152600260205260409020600101548791163314611db05760405163472511eb60e11b8152336004820152602401610448565b85858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808902828101820190935288825290935088925087918291850190849080828437600092019190915250508351869250600211159050611e3f578251604051630e8c626560e41b815260040161044891815260200190565b8151835114611e6e578251825160405163b34f351d60e01b815260048101929092526024820152604401610448565b620f4240611e7b83612020565b63ffffffff1614611e8f5761058582612020565b82516000190160005b81811015611f8657848160010181518110611ec357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316858281518110611ef457634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031610611f265760405163ac6bd23360e01b815260048101829052602401610448565b600063ffffffff16848281518110611f4e57634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415611f7e57604051630db7e4c760e01b815260048101829052602401610448565b600101611e98565b50600063ffffffff16838281518110611faf57634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff161415611fdf57604051630db7e4c760e01b815260048101829052602401610448565b50620186a08163ffffffff1611156120125760405163308440e360e21b815263ffffffff82166004820152602401610448565b611d638a8a8a8a8a8a612698565b8051600090815b8181101561206c5783818151811061204f57634e487b7160e01b600052603260045260246000fd5b6020026020010151836120629190612fb0565b9250600101612027565b5050919050565b600061208084848461239f565b6001600160a01b03861660009081526002602052604090205490915081146120be5760405163dd5ff45760e01b815260048101829052602401610448565b5050505050565b6001600160a01b038581166000818152600160209081526040808320948b16808452949091528082205490516370a0823160e01b815260048101949094529092909183916370a082319060240160206040518083038186803b15801561212a57600080fd5b505afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121629190612e6c565b9050801561216f57600019015b811561217c576001820391505b818101925081156121b0576001600160a01b038089166000908152600160208181526040808420948e168452939052919020555b836001600160a01b0316886001600160a01b03168a6001600160a01b03167fb5ee5dc3d2c31a019bbf2c787e0e9c97971c96aceea1c38c12fc8fd25c536d46866040516121ff91815260200190565b60405180910390a463ffffffff851615612271576001600160a01b038881166000908152600160205260408120620f424063ffffffff891687020492839290881661224a573361224c565b875b6001600160a01b03168152602081019190915260400160002080549091019055909203915b865160005b81811015612329576122ba858983815181106122a257634e487b7160e01b600052603260045260246000fd5b602002602001015163ffffffff16620f424091020490565b6001600160a01b038b1660009081526001602052604081208b519091908c90859081106122f757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b0316825281019190915260400160002080549091019055600101612276565b5050801561239457604051633e0f9fff60e11b81526001600160a01b038981166004830152602482018390528a1690637c1f3ffe90604401600060405180830381600087803b15801561237b57600080fd5b505af115801561238f573d6000803e3d6000fd5b505050505b505050505050505050565b60008383836040516020016123b693929190612e84565b6040516020818303038152906040528051906020012090509392505050565b6000611877838330604051723d605d80600a3d3981f336603057343d52307f60681b81527f830d2d700a97af574b186c80d40429385d24241565b08a7c559ba283a964d9b160138201527260203da23d3df35b3d3d3d3d363d3d37363d7360681b6033820152606093841b60468201526d5af43d3d93803e605b57fd5bf3ff60901b605a820152921b6068830152607c8201526067808220609c830152605591012090565b6001600160a01b03811660009081526020819052604081205461249f90600190612fd8565b6001600160a01b0383166000818152602081905260409020600190559091506124c8908261293a565b919050565b6001600160a01b038082166000908152600160208181526040808420948716845293905291812054909161250091612fd8565b6001600160a01b038084166000818152600160208181526040808420958a16845294905292902091909155909150610938908483612990565b6000604051723d605d80600a3d3981f336603057343d52307f60681b81527f830d2d700a97af574b186c80d40429385d24241565b08a7c559ba283a964d9b160138201527260203da23d3df35b3d3d3d3d363d3d37363d7360681b60338201528360601b60468201526c5af43d3d93803e605b57fd5bf360981b605a820152826067826000f59150506001600160a01b0381166109385760405163380bbe1360e01b815260040160405180910390fd5b6000604051723d605d80600a3d3981f336603057343d52307f60681b81527f830d2d700a97af574b186c80d40429385d24241565b08a7c559ba283a964d9b160138201527260203da23d3df35b3d3d3d3d363d3d37363d7360681b60338201528260601b60468201526c5af43d3d93803e605b57fd5bf360981b605a8201526067816000f09150506001600160a01b0381166124c857604051630985da9b60e41b815260040160405180910390fd5b600061270986868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a0282810182019093528982529093508992508891829185019084908082843760009201919091525087925061239f915050565b6001600160a01b0388166000818152600260205260408082208490555192935090917f45e1e99513dd915ac128b94953ca64c6375717ea1894b3114db08cdca51debd29190a250505050505050565b6001600160a01b0385166000818152602081905260408120549131908215612781576001830392505b5081810182156127a8576001600160a01b0388166000908152602081905260409020600190555b836001600160a01b0316886001600160a01b03167f87c3ca0a87d9b82033e4bc55e6d30621f8d7e0c9d8ca7988edfde8932787b77b836040516127ed91815260200190565b60405180910390a363ffffffff85161561284c57620f424063ffffffff8616820204806000806001600160a01b0388166128275733612829565b875b6001600160a01b0316815260208101919091526040016000208054909101905590035b865160005b818110156128d25761287d838983815181106122a257634e487b7160e01b600052603260045260246000fd5b6000808b84815181106128a057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b0316825281019190915260400160002080549091019055600101612851565b5050811561293057604051632ac3affd60e21b8152600481018390526001600160a01b0389169063ab0ebff490602401600060405180830381600087803b15801561291c57600080fd5b505af1158015611479573d6000803e3d6000fd5b5050505050505050565b600080600080600085875af190508061298b5760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610448565b505050565b600060405163a9059cbb60e01b81526001600160a01b03841660048201528260248201526000806044836000895af19150506129cb81612a0f565b612a095760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610448565b50505050565b60003d82612a2157806000803e806000fd5b8060208114612a39578015612a4a576000925061206c565b816000803e6000511515925061206c565b5060019392505050565b60008083601f840112612a65578182fd5b50813567ffffffffffffffff811115612a7c578182fd5b6020830191508360208260051b8501011115612a9757600080fd5b9250929050565b803563ffffffff811681146124c857600080fd5b600060208284031215612ac3578081fd5b813561187781613005565b60008060408385031215612ae0578081fd5b8235612aeb81613005565b91506020830135612afb81613005565b809150509250929050565b60008060008060008060808789031215612b1e578182fd5b8635612b2981613005565b9550602087013567ffffffffffffffff80821115612b45578384fd5b612b518a838b01612a54565b90975095506040890135915080821115612b69578384fd5b50612b7689828a01612a54565b9094509250612b89905060608801612a9e565b90509295509295509295565b600080600080600080600060a0888a031215612baf578081fd5b8735612bba81613005565b9650602088013567ffffffffffffffff80821115612bd6578283fd5b612be28b838c01612a54565b909850965060408a0135915080821115612bfa578283fd5b50612c078a828b01612a54565b9095509350612c1a905060608901612a9e565b91506080880135612c2a81613005565b8091505092959891949750929550565b60008060408385031215612ae0578182fd5b60008060008060008060008060c0898b031215612c67578081fd5b8835612c7281613005565b97506020890135612c8281613005565b9650604089013567ffffffffffffffff80821115612c9e578283fd5b612caa8c838d01612a54565b909850965060608b0135915080821115612cc2578283fd5b50612ccf8b828c01612a54565b9095509350612ce2905060808a01612a9e565b915060a0890135612cf281613005565b809150509295985092959890939650565b60008060008060608587031215612d18578384fd5b8435612d2381613005565b935060208501359250604085013567ffffffffffffffff811115612d45578283fd5b612d5187828801612a54565b95989497509550505050565b600080600080600060608688031215612d74578081fd5b853567ffffffffffffffff80821115612d8b578283fd5b612d9789838a01612a54565b90975095506020880135915080821115612daf578283fd5b50612dbc88828901612a54565b9094509250612dcf905060408701612a9e565b90509295509295909350565b60008060008060008060808789031215612df3578182fd5b863567ffffffffffffffff80821115612e0a578384fd5b612e168a838b01612a54565b90985096506020890135915080821115612e2e578384fd5b50612e3b89828a01612a54565b9095509350612e4e905060408801612a9e565b91506060870135612e5e81613005565b809150509295509295509295565b600060208284031215612e7d578081fd5b5051919050565b835160009082906020808801845b83811015612eb75781516001600160a01b031685529382019390820190600101612e92565b50508651818801939250845b81811015612ee557845163ffffffff1684529382019392820192600101612ec3565b50505060e09490941b6001600160e01b0319168452505060049091019392505050565b84815260606020808301829052908201849052600090859060808401835b87811015612f54578335612f3981613005565b6001600160a01b031682529282019290820190600101612f26565b5084810360408601528551808252908201925081860190845b81811015612f8957825185529383019391830191600101612f6d565b50929998505050505050505050565b60008219821115612fab57612fab612fef565b500190565b600063ffffffff808316818516808303821115612fcf57612fcf612fef565b01949350505050565b600082821015612fea57612fea612fef565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461301a57600080fd5b5056fea264697066735822122078638564d8f0338df6cf15b5c2680d5c2ef45167f59938471977e9756316b94964736f6c63430008040033";
14
+ export declare const MAINNET_SPLIT_V2_FACTORY_BYTECODE = "0x6080604090808252600480361015610015575f80fd5b5f3560e01c9182632556fa391461043c5750816380ebf0ab146102be5781639e317f121461027a578163cd6bc1211461023f578163e9889edd1461016d578163f79918b0146100de575063fc6119b11461006d575f80fd5b346100da575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da576020905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f9c25250523df26343222fc46de932355b850c97168152f35b5f80fd5b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc916080833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016573ffffffffffffffffffffffffffffffffffffffff916020946101526105e7565b61015a61060a565b91606435930161090f565b915191168152f35b82346100da5760209073ffffffffffffffffffffffffffffffffffffffff6101656101a061019a3661062d565b91610b37565b309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b610b7a565b82346100da576102546101a061019a3661062d565b803b151573ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b82346100da5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da57602091355f525f8252805f20549051908152f35b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9181833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016561039c73ffffffffffffffffffffffffffffffffffffffff9261034a6103766103376105e7565b875192839160209a8b84019601866107c7565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610858565b519020805f525f8652845f205490855191878301528682526103978261083c565b6108c2565b848151910120309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b9083346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060813601126100da5782359067ffffffffffffffff82116100da5760809082850192360301126100da576104976105e7565b6105286104a261060a565b6104e4602097888101906104bb8161034a888a866107c7565b519020805f525f8952865f20908154916001830190558751918a8301528982526103978261083c565b73ffffffffffffffffffffffffffffffffffffffff9281898593519101207f000000000000000000000000f9c25250523df26343222fc46de932355b850c97610aae565b1695863b156100da575f858592610569895194859384937fbaa7fda400000000000000000000000000000000000000000000000000000000855284016107c7565b0381838b5af180156105dd57928795927fb3ec24e9259e438f9917b49f27c0dd89a11b7626cb63e6fc977863c0b26a681b95926105ba956105ce575b508188519586956060875260608701906106f5565b93168a85015216868301520390a251908152f35b6105d7906107fb565b8a6105a5565b86513d5f823e3d90fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906060828201126100da576004359167ffffffffffffffff83116100da57826080920301126100da576004019060243573ffffffffffffffffffffffffffffffffffffffff811681036100da579060443590565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156100da57016020813591019167ffffffffffffffff82116100da578160051b360383136100da57565b6080820161070382806106a2565b608085529182905260a08401915f905b80821061078f5750505061072a60208301836106a2565b909284830360208601528183527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82116100da5760609160051b8094602085013760408101356040860152013561ffff81168091036100da5760606020940152010190565b90919283359073ffffffffffffffffffffffffffffffffffffffff82168092036100da57600191815260208091019401920190610713565b9073ffffffffffffffffffffffffffffffffffffffff6107f46020929594956040855260408501906106f5565b9416910152565b67ffffffffffffffff811161080f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761080f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761080f57604052565b908151915f5b8381106108af575050015f815290565b806020809284010151818501520161089f565b61090d909291926108e160405194859260208401526040830190610899565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610858565b565b93929161091d838387610b37565b7f000000000000000000000000f9c25250523df26343222fc46de932355b850c976109bb308361023a8490604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b803b610aa55750906109cc91610aae565b9473ffffffffffffffffffffffffffffffffffffffff9283871694853b156100da57604051947fbaa7fda40000000000000000000000000000000000000000000000000000000086525f8680610a268688600484016107c7565b0381838b5af1948515610a9a577fc4cec5a1846f5c98dc275670618bfecffec4da2e7cba63760ef46f38c75d236e96610a7496610a8b575b50816040519687966080885260808801906106f5565b9416602086015216604084015260608301520390a2565b610a94906107fb565b5f610a5e565b6040513d5f823e3d90fd5b96505050505050565b9190604051926c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f5ff5916040525f6060528115610b2a57565b63301164255f526004601cfd5b6040519291610b4f9184916108e191602084016107c7565b610b7460206040518093610b668383018097610899565b908152038084520182610858565b51902090565b91909160ff5f5360355260601b60015260155260555f20905f60355256fea2646970667358221220edd55753c55f257991df670fc562cdf54adb62d710125933fc4a0a7afddbc02564736f6c63430008170033";
15
+ export declare const HOODI_SPLIT_V2_FACTORY_BYTECODE = "0x6080604090808252600480361015610015575f80fd5b5f3560e01c9182632556fa391461043c5750816380ebf0ab146102be5781639e317f121461027a578163cd6bc1211461023f578163e9889edd1461016d578163f79918b0146100de575063fc6119b11461006d575f80fd5b346100da575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da576020905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f9c25250523df26343222fc46de932355b850c97168152f35b5f80fd5b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc916080833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016573ffffffffffffffffffffffffffffffffffffffff916020946101526105e7565b61015a61060a565b91606435930161090f565b915191168152f35b82346100da5760209073ffffffffffffffffffffffffffffffffffffffff6101656101a061019a3661062d565b91610b37565b309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b610b7a565b82346100da576102546101a061019a3661062d565b803b151573ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b82346100da5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da57602091355f525f8252805f20549051908152f35b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9181833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016561039c73ffffffffffffffffffffffffffffffffffffffff9261034a6103766103376105e7565b875192839160209a8b84019601866107c7565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610858565b519020805f525f8652845f205490855191878301528682526103978261083c565b6108c2565b848151910120309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b9083346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060813601126100da5782359067ffffffffffffffff82116100da5760809082850192360301126100da576104976105e7565b6105286104a261060a565b6104e4602097888101906104bb8161034a888a866107c7565b519020805f525f8952865f20908154916001830190558751918a8301528982526103978261083c565b73ffffffffffffffffffffffffffffffffffffffff9281898593519101207f000000000000000000000000f9c25250523df26343222fc46de932355b850c97610aae565b1695863b156100da575f858592610569895194859384937fbaa7fda400000000000000000000000000000000000000000000000000000000855284016107c7565b0381838b5af180156105dd57928795927fb3ec24e9259e438f9917b49f27c0dd89a11b7626cb63e6fc977863c0b26a681b95926105ba956105ce575b508188519586956060875260608701906106f5565b93168a85015216868301520390a251908152f35b6105d7906107fb565b8a6105a5565b86513d5f823e3d90fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906060828201126100da576004359167ffffffffffffffff83116100da57826080920301126100da576004019060243573ffffffffffffffffffffffffffffffffffffffff811681036100da579060443590565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156100da57016020813591019167ffffffffffffffff82116100da578160051b360383136100da57565b6080820161070382806106a2565b608085529182905260a08401915f905b80821061078f5750505061072a60208301836106a2565b909284830360208601528183527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82116100da5760609160051b8094602085013760408101356040860152013561ffff81168091036100da5760606020940152010190565b90919283359073ffffffffffffffffffffffffffffffffffffffff82168092036100da57600191815260208091019401920190610713565b9073ffffffffffffffffffffffffffffffffffffffff6107f46020929594956040855260408501906106f5565b9416910152565b67ffffffffffffffff811161080f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761080f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761080f57604052565b908151915f5b8381106108af575050015f815290565b806020809284010151818501520161089f565b61090d909291926108e160405194859260208401526040830190610899565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610858565b565b93929161091d838387610b37565b7f000000000000000000000000f9c25250523df26343222fc46de932355b850c976109bb308361023a8490604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b803b610aa55750906109cc91610aae565b9473ffffffffffffffffffffffffffffffffffffffff9283871694853b156100da57604051947fbaa7fda40000000000000000000000000000000000000000000000000000000086525f8680610a268688600484016107c7565b0381838b5af1948515610a9a577fc4cec5a1846f5c98dc275670618bfecffec4da2e7cba63760ef46f38c75d236e96610a7496610a8b575b50816040519687966080885260808801906106f5565b9416602086015216604084015260608301520390a2565b610a94906107fb565b5f610a5e565b6040513d5f823e3d90fd5b96505050505050565b9190604051926c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f5ff5916040525f6060528115610b2a57565b63301164255f526004601cfd5b6040519291610b4f9184916108e191602084016107c7565b610b7460206040518093610b668383018097610899565b908152038084520182610858565b51902090565b91909160ff5f5360355260601b60015260155260555f20905f60355256fea2646970667358221220edd55753c55f257991df670fc562cdf54adb62d710125933fc4a0a7afddbc02564736f6c63430008170033";
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  export declare const GENESIS_VALIDATOR_ROOT_HEX_STRING = "0x0000000000000000000000000000000000000000000000000000000000000000";
3
4
  /**
4
5
  * Computes the domain for a given domain type, fork version, and genesis state.
@@ -200,7 +200,7 @@ export declare const ovmBaseSplitPayload: {
200
200
  splitOwnerAddress: {
201
201
  type: string;
202
202
  pattern: string;
203
- default: "0x0000000000000000000000000000000000000000";
203
+ default: string;
204
204
  };
205
205
  principalThreshold: {
206
206
  type: string;
@@ -244,7 +244,7 @@ export declare const ovmRewardsSplitPayloadSchema: {
244
244
  splitOwnerAddress: {
245
245
  type: string;
246
246
  pattern: string;
247
- default: "0x0000000000000000000000000000000000000000";
247
+ default: string;
248
248
  };
249
249
  principalThreshold: {
250
250
  type: string;
@@ -303,7 +303,7 @@ export declare const ovmTotalSplitPayloadSchema: {
303
303
  splitOwnerAddress: {
304
304
  type: string;
305
305
  pattern: string;
306
- default: "0x0000000000000000000000000000000000000000";
306
+ default: string;
307
307
  };
308
308
  principalThreshold: {
309
309
  type: string;
@@ -321,3 +321,30 @@ export declare const ovmTotalSplitPayloadSchema: {
321
321
  validateOVMTotalSplitRecipients: boolean;
322
322
  required: string[];
323
323
  };
324
+ export declare const ovmRequestWithdrawalPayloadSchema: {
325
+ type: string;
326
+ properties: {
327
+ ovmAddress: {
328
+ type: string;
329
+ pattern: string;
330
+ };
331
+ pubKeys: {
332
+ type: string;
333
+ minItems: number;
334
+ items: {
335
+ type: string;
336
+ pattern: string;
337
+ };
338
+ };
339
+ amounts: {
340
+ type: string;
341
+ minItems: number;
342
+ items: {
343
+ type: string;
344
+ pattern: string;
345
+ };
346
+ };
347
+ };
348
+ validateOVMRequestWithdrawalPayload: boolean;
349
+ required: string[];
350
+ };
@@ -1,5 +1,4 @@
1
1
  import { type OWRTranches, type ClusterValidator, type ETH_ADDRESS, type SplitRecipient, type SignerType, type SplitV2Recipient, type OVMArgs } from '../types';
2
- import { SplitsClient } from '@0xsplits/splits-sdk';
3
2
  type Call = {
4
3
  target: ETH_ADDRESS;
5
4
  callData: string;
@@ -62,9 +61,8 @@ export declare const getOWRTranches: ({ owrAddress, signer, }: {
62
61
  owrAddress: ETH_ADDRESS;
63
62
  signer: SignerType;
64
63
  }) => Promise<OWRTranches>;
65
- export declare const multicall: (calls: Call[], signer: SignerType, multicallAddress: string) => Promise<any>;
64
+ export declare const multicall: (calls: Call[], signer: SignerType, chainId: number) => Promise<any>;
66
65
  export declare const formatRecipientsForSplitV2: (splitRecipients: SplitRecipient[] | SplitV2Recipient[]) => SplitV2Recipient[];
67
- export declare const createSplitsClient: (signer: SignerType, chainId: number) => Promise<SplitsClient>;
68
66
  export declare const predictSplitV2Address: ({ splitOwnerAddress, recipients, distributorFeePercent, salt, signer, chainId, }: {
69
67
  splitOwnerAddress: string;
70
68
  recipients: SplitV2Recipient[];
@@ -101,4 +99,20 @@ export declare const deployOVMAndSplitV2: ({ ovmArgs, rewardRecipients, isReward
101
99
  isPrincipalSplitDeployed?: boolean | undefined;
102
100
  splitOwnerAddress: string;
103
101
  }) => Promise<string>;
102
+ /**
103
+ * Requests withdrawal from an OVM contract
104
+ * @param ovmAddress - The address of the OVM contract
105
+ * @param pubKeys - Array of validator public keys in bytes format
106
+ * @param amounts - Array of withdrawal amounts in wei (uint64)
107
+ * @param signer - The signer to use for the transaction
108
+ * @returns Promise that resolves to the transaction hash
109
+ */
110
+ export declare const requestWithdrawalFromOVM: ({ ovmAddress, pubKeys, amounts, signer, }: {
111
+ ovmAddress: string;
112
+ pubKeys: string[];
113
+ amounts: string[];
114
+ signer: SignerType;
115
+ }) => Promise<{
116
+ txHash: string;
117
+ }>;
104
118
  export {};
@@ -1,4 +1,4 @@
1
- import { type ClusterValidator, type ProviderType, type SignerType, type OVMRewardsSplitPayload, type OVMTotalSplitPayload } from '../types';
1
+ import { type ClusterValidator, type ProviderType, type SignerType, type OVMRewardsSplitPayload, type OVMTotalSplitPayload, type OVMRequestWithdrawalPayload } from '../types';
2
2
  /**
3
3
  * ObolSplits can be used for creating and managing Obol splits.
4
4
  * @class
@@ -48,4 +48,31 @@ export declare class ObolSplits {
48
48
  * [createValidatorManagerAndTotalSplit](https://github.com/ObolNetwork/obol-sdk-examples/blob/main/TS-Example/index.ts#340)
49
49
  */
50
50
  createValidatorManagerAndTotalSplit(payload: OVMTotalSplitPayload): Promise<ClusterValidator>;
51
+ /**
52
+ * Requests withdrawal from an OVM contract.
53
+ *
54
+ * This method allows requesting withdrawal of validator funds from an OVM contract.
55
+ * The withdrawal request includes OVM address, validator public keys and corresponding withdrawal amounts.
56
+ *
57
+ * @remarks
58
+ * **⚠️ Important:** If you're storing the private key in an `.env` file, ensure it is securely managed
59
+ * and not pushed to version control.
60
+ *
61
+ * @param {OVMRequestWithdrawalPayload} payload - Data needed to request withdrawal
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:
66
+ * ```typescript
67
+ * const result = await client.splits.requestWithdrawal({
68
+ * ovmAddress: '0x1234567890123456789012345678901234567890',
69
+ * pubKeys: ['0x123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456'],
70
+ * amounts: ['32000000000'] // 32 ETH in gwei
71
+ * });
72
+ * console.log('Withdrawal requested:', result.txHash);
73
+ * ```
74
+ */
75
+ requestWithdrawal(payload: OVMRequestWithdrawalPayload): Promise<{
76
+ txHash: string;
77
+ }>;
51
78
  }