@obolnetwork/obol-sdk 2.12.5 → 2.13.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.
@@ -98,7 +98,7 @@ import { v4 as uuidv4 } from "uuid";
98
98
  // package.json
99
99
  var package_default = {
100
100
  name: "@obolnetwork/obol-sdk",
101
- version: "2.12.5",
101
+ version: "2.13.0",
102
102
  description: "A package for creating Distributed Validators using the Obol API.",
103
103
  bugs: {
104
104
  url: "https://github.com/obolnetwork/obol-sdk/issues"
@@ -159,7 +159,8 @@ var package_default = {
159
159
  "@typescript-eslint/* stays at ^6.x \u2014 eslint-config-standard-with-typescript@43 requires plugin ^6; v8 causes peer conflict.",
160
160
  "uuid stays at ^9.x \u2014 v11+ sets type:module (ESM-only).",
161
161
  "viem override pins a single resolved version to prevent duplicates across @safe-global/protocol-kit.",
162
- "@noble/curves replaces @chainsafe/bls \u2014 pure-JS CJS+ESM, no native addon, same ETH2 BLS12-381 spec. See CHAINSAFE_MIGRATION_PLAN.md."
162
+ "@noble/curves replaces @chainsafe/bls \u2014 pure-JS CJS+ESM, no native addon, same ETH2 BLS12-381 spec. See CHAINSAFE_MIGRATION_PLAN.md.",
163
+ "@noble/curves is in devDependencies (not dependencies) because tsup bundles it inline via noExternal. Keeping it in dependencies caused consumers to install @noble/hashes@2.2.0 (major-version 2) which shadowed @noble/hashes@1.x used by ethereum-cryptography, @coinbase/wallet-sdk, etc., breaking their @noble/curves initialisation with 'anumber is not a function'."
163
164
  ],
164
165
  resolutions: {},
165
166
  overrides: {
@@ -167,7 +168,6 @@ var package_default = {
167
168
  },
168
169
  dependencies: {
169
170
  "@chainsafe/enr": "6.0.1",
170
- "@noble/curves": "2.2.0",
171
171
  "@chainsafe/ssz": "0.14.3",
172
172
  "@metamask/eth-sig-util": "8.2.0",
173
173
  "@safe-global/protocol-kit": "7.1.0",
@@ -182,6 +182,7 @@ var package_default = {
182
182
  uuid: "9.0.1"
183
183
  },
184
184
  devDependencies: {
185
+ "@noble/curves": "2.2.0",
185
186
  "@release-it/conventional-changelog": "11.0.0",
186
187
  "@types/elliptic": "6.4.18",
187
188
  "@types/jest": "29.5.14",
@@ -395,7 +396,7 @@ var signEnrPayload = (payload, chainId) => {
395
396
  };
396
397
  };
397
398
  var DKG_ALGORITHM = "default";
398
- var CONFIG_VERSION = "v1.10.0";
399
+ var CONFIG_VERSION = "v1.11.0";
399
400
  var SDK_VERSION = package_default.version;
400
401
  var DOMAIN_APPLICATION_BUILDER = "00000001";
401
402
  var DOMAIN_DEPOSIT = "03000000";
@@ -631,7 +632,7 @@ var Base = class {
631
632
  };
632
633
 
633
634
  // src/verification/common.ts
634
- import { fromHexString as fromHexString6 } from "@chainsafe/ssz";
635
+ import { fromHexString as fromHexString7 } from "@chainsafe/ssz";
635
636
  import elliptic from "elliptic";
636
637
  import * as semver from "semver";
637
638
 
@@ -687,6 +688,7 @@ import {
687
688
  ByteListType,
688
689
  ByteVectorType,
689
690
  ContainerType,
691
+ ListCompositeType,
690
692
  UintNumberType
691
693
  } from "@chainsafe/ssz";
692
694
  var operatorAddressWrapperType = new ContainerType({
@@ -702,10 +704,25 @@ var operatorContainerType = new ContainerType({
702
704
  config_signature: new ByteVectorType(65),
703
705
  enr_signature: new ByteVectorType(65)
704
706
  });
707
+ var k1SignatureListType = new ListCompositeType(
708
+ new ByteVectorType(65),
709
+ 32
710
+ );
711
+ var operatorContainerTypeV1X11 = new ContainerType({
712
+ address: new ByteVectorType(20),
713
+ enr: new ByteListType(1024),
714
+ // This needs to be dynamic, since ENRs do not have a fixed length.
715
+ config_signature: k1SignatureListType,
716
+ enr_signature: k1SignatureListType
717
+ });
705
718
  var creatorContainerType = new ContainerType({
706
719
  address: new ByteVectorType(20),
707
720
  config_signature: new ByteVectorType(65)
708
721
  });
722
+ var creatorContainerTypeV1X11 = new ContainerType({
723
+ address: new ByteVectorType(20),
724
+ config_signature: k1SignatureListType
725
+ });
709
726
  var validatorsContainerType = new ContainerType({
710
727
  fee_recipient_address: new ByteVectorType(20),
711
728
  withdrawal_address: new ByteVectorType(20)
@@ -713,9 +730,15 @@ var validatorsContainerType = new ContainerType({
713
730
  var newCreatorContainerType = (configOnly) => {
714
731
  return configOnly ? creatorAddressWrapperType : creatorContainerType;
715
732
  };
733
+ var newCreatorContainerTypeV1X11 = (configOnly) => {
734
+ return configOnly ? creatorAddressWrapperType : creatorContainerTypeV1X11;
735
+ };
716
736
  var newOperatorContainerType = (configOnly) => {
717
737
  return configOnly ? operatorAddressWrapperType : operatorContainerType;
718
738
  };
739
+ var newOperatorContainerTypeV1X11 = (configOnly) => {
740
+ return configOnly ? operatorAddressWrapperType : operatorContainerTypeV1X11;
741
+ };
719
742
  var depositDataContainer = new ContainerType({
720
743
  pubkey: new ByteVectorType(48),
721
744
  withdrawal_credentials: new ByteVectorType(32),
@@ -757,7 +780,7 @@ import {
757
780
  ByteListType as ByteListType2,
758
781
  ByteVectorType as ByteVectorType2,
759
782
  ContainerType as ContainerType2,
760
- ListCompositeType,
783
+ ListCompositeType as ListCompositeType2,
761
784
  fromHexString as fromHexString2
762
785
  } from "@chainsafe/ssz";
763
786
 
@@ -5625,9 +5648,9 @@ var clusterDefinitionContainerTypeV1X6 = (configOnly) => {
5625
5648
  threshold: new UintNumberType2(8),
5626
5649
  dkg_algorithm: new ByteListType2(32),
5627
5650
  fork_version: new ByteVectorType2(4),
5628
- operators: new ListCompositeType(newOperatorContainerType(configOnly), 256),
5651
+ operators: new ListCompositeType2(newOperatorContainerType(configOnly), 256),
5629
5652
  creator: newCreatorContainerType(configOnly),
5630
- validators: new ListCompositeType(validatorsContainerType, 65536)
5653
+ validators: new ListCompositeType2(validatorsContainerType, 65536)
5631
5654
  };
5632
5655
  if (!configOnly) {
5633
5656
  returnedContainerType = __spreadProps(__spreadValues({}, returnedContainerType), {
@@ -5674,7 +5697,7 @@ var hashClusterDefinitionV1X6 = (cluster, configOnly) => {
5674
5697
  };
5675
5698
  var dvContainerTypeV1X6 = new ContainerType2({
5676
5699
  distributed_public_key: new ByteVectorType2(48),
5677
- public_shares: new ListCompositeType(new ByteVectorType2(48), 256),
5700
+ public_shares: new ListCompositeType2(new ByteVectorType2(48), 256),
5678
5701
  pubkey: new ByteVectorType2(48),
5679
5702
  withdrawal_credentials: new ByteVectorType2(32),
5680
5703
  amount: new UintNumberType2(8),
@@ -5683,7 +5706,7 @@ var dvContainerTypeV1X6 = new ContainerType2({
5683
5706
  var clusterLockContainerTypeV1X6 = () => {
5684
5707
  return new ContainerType2({
5685
5708
  cluster_definition: clusterDefinitionContainerTypeV1X6(false),
5686
- distributed_validators: new ListCompositeType(dvContainerTypeV1X6, 65536)
5709
+ distributed_validators: new ListCompositeType2(dvContainerTypeV1X6, 65536)
5687
5710
  });
5688
5711
  };
5689
5712
  var hashClusterLockV1X6 = (cluster) => {
@@ -5781,7 +5804,7 @@ import {
5781
5804
  ByteListType as ByteListType3,
5782
5805
  ByteVectorType as ByteVectorType3,
5783
5806
  ContainerType as ContainerType3,
5784
- ListCompositeType as ListCompositeType2,
5807
+ ListCompositeType as ListCompositeType3,
5785
5808
  fromHexString as fromHexString3
5786
5809
  } from "@chainsafe/ssz";
5787
5810
  var clusterDefinitionContainerTypeV1X7 = (configOnly) => {
@@ -5794,9 +5817,9 @@ var clusterDefinitionContainerTypeV1X7 = (configOnly) => {
5794
5817
  threshold: new UintNumberType3(8),
5795
5818
  dkg_algorithm: new ByteListType3(32),
5796
5819
  fork_version: new ByteVectorType3(4),
5797
- operators: new ListCompositeType2(newOperatorContainerType(configOnly), 256),
5820
+ operators: new ListCompositeType3(newOperatorContainerType(configOnly), 256),
5798
5821
  creator: newCreatorContainerType(configOnly),
5799
- validators: new ListCompositeType2(validatorsContainerType, 65536)
5822
+ validators: new ListCompositeType3(validatorsContainerType, 65536)
5800
5823
  };
5801
5824
  if (!configOnly) {
5802
5825
  returnedContainerType = __spreadProps(__spreadValues({}, returnedContainerType), {
@@ -5843,14 +5866,14 @@ var hashClusterDefinitionV1X7 = (cluster, configOnly) => {
5843
5866
  };
5844
5867
  var dvContainerTypeV1X7 = new ContainerType3({
5845
5868
  distributed_public_key: new ByteVectorType3(48),
5846
- public_shares: new ListCompositeType2(new ByteVectorType3(48), 256),
5869
+ public_shares: new ListCompositeType3(new ByteVectorType3(48), 256),
5847
5870
  deposit_data: depositDataContainer,
5848
5871
  builder_registration: builderRegistrationContainer
5849
5872
  });
5850
5873
  var clusterLockContainerTypeV1X7 = () => {
5851
5874
  return new ContainerType3({
5852
5875
  cluster_definition: clusterDefinitionContainerTypeV1X7(false),
5853
- distributed_validators: new ListCompositeType2(dvContainerTypeV1X7, 65536)
5876
+ distributed_validators: new ListCompositeType3(dvContainerTypeV1X7, 65536)
5854
5877
  });
5855
5878
  };
5856
5879
  var hashClusterLockV1X7 = (cluster) => {
@@ -15430,7 +15453,7 @@ import {
15430
15453
  ByteVectorType as ByteVectorType4,
15431
15454
  ContainerType as ContainerType4,
15432
15455
  ListBasicType,
15433
- ListCompositeType as ListCompositeType3,
15456
+ ListCompositeType as ListCompositeType4,
15434
15457
  fromHexString as fromHexString4
15435
15458
  } from "@chainsafe/ssz";
15436
15459
  var clusterDefinitionContainerTypeV1X8 = (configOnly) => {
@@ -15443,9 +15466,9 @@ var clusterDefinitionContainerTypeV1X8 = (configOnly) => {
15443
15466
  threshold: new UintNumberType4(8),
15444
15467
  dkg_algorithm: new ByteListType4(32),
15445
15468
  fork_version: new ByteVectorType4(4),
15446
- operators: new ListCompositeType3(newOperatorContainerType(configOnly), 256),
15469
+ operators: new ListCompositeType4(newOperatorContainerType(configOnly), 256),
15447
15470
  creator: newCreatorContainerType(configOnly),
15448
- validators: new ListCompositeType3(validatorsContainerType, 65536),
15471
+ validators: new ListCompositeType4(validatorsContainerType, 65536),
15449
15472
  deposit_amounts: new ListBasicType(
15450
15473
  new UintNumberType4(8),
15451
15474
  256
@@ -15501,14 +15524,14 @@ var hashClusterDefinitionV1X8 = (cluster, configOnly) => {
15501
15524
  };
15502
15525
  var dvContainerTypeV1X8 = new ContainerType4({
15503
15526
  distributed_public_key: new ByteVectorType4(48),
15504
- public_shares: new ListCompositeType3(new ByteVectorType4(48), 256),
15505
- partial_deposit_data: new ListCompositeType3(depositDataContainer, 256),
15527
+ public_shares: new ListCompositeType4(new ByteVectorType4(48), 256),
15528
+ partial_deposit_data: new ListCompositeType4(depositDataContainer, 256),
15506
15529
  builder_registration: builderRegistrationContainer
15507
15530
  });
15508
15531
  var clusterLockContainerTypeV1X8 = () => {
15509
15532
  return new ContainerType4({
15510
15533
  cluster_definition: clusterDefinitionContainerTypeV1X8(false),
15511
- distributed_validators: new ListCompositeType3(dvContainerTypeV1X8, 65536)
15534
+ distributed_validators: new ListCompositeType4(dvContainerTypeV1X8, 65536)
15512
15535
  });
15513
15536
  };
15514
15537
  var hashClusterLockV1X8 = (cluster) => {
@@ -15729,7 +15752,7 @@ import {
15729
15752
  ByteVectorType as ByteVectorType5,
15730
15753
  ContainerType as ContainerType5,
15731
15754
  ListBasicType as ListBasicType2,
15732
- ListCompositeType as ListCompositeType4,
15755
+ ListCompositeType as ListCompositeType5,
15733
15756
  fromHexString as fromHexString5,
15734
15757
  BooleanType
15735
15758
  } from "@chainsafe/ssz";
@@ -15743,9 +15766,9 @@ var clusterDefinitionContainerTypeV1X10 = (configOnly) => {
15743
15766
  threshold: new UintNumberType5(8),
15744
15767
  dkg_algorithm: new ByteListType5(32),
15745
15768
  fork_version: new ByteVectorType5(4),
15746
- operators: new ListCompositeType4(newOperatorContainerType(configOnly), 256),
15769
+ operators: new ListCompositeType5(newOperatorContainerType(configOnly), 256),
15747
15770
  creator: newCreatorContainerType(configOnly),
15748
- validators: new ListCompositeType4(validatorsContainerType, 65536),
15771
+ validators: new ListCompositeType5(validatorsContainerType, 65536),
15749
15772
  deposit_amounts: new ListBasicType2(
15750
15773
  new UintNumberType5(8),
15751
15774
  256
@@ -15813,14 +15836,14 @@ var hashClusterDefinitionV1X10 = (cluster, configOnly) => {
15813
15836
  };
15814
15837
  var dvContainerTypeV1X10 = new ContainerType5({
15815
15838
  distributed_public_key: new ByteVectorType5(48),
15816
- public_shares: new ListCompositeType4(new ByteVectorType5(48), 256),
15817
- partial_deposit_data: new ListCompositeType4(depositDataContainer, 256),
15839
+ public_shares: new ListCompositeType5(new ByteVectorType5(48), 256),
15840
+ partial_deposit_data: new ListCompositeType5(depositDataContainer, 256),
15818
15841
  builder_registration: builderRegistrationContainer
15819
15842
  });
15820
15843
  var clusterLockContainerTypeV1X10 = () => {
15821
15844
  return new ContainerType5({
15822
15845
  cluster_definition: clusterDefinitionContainerTypeV1X10(false),
15823
- distributed_validators: new ListCompositeType4(dvContainerTypeV1X10, 65536)
15846
+ distributed_validators: new ListCompositeType5(dvContainerTypeV1X10, 65536)
15824
15847
  });
15825
15848
  };
15826
15849
  var hashClusterLockV1X10 = (cluster) => {
@@ -15873,6 +15896,175 @@ var hashClusterLockV1X10 = (cluster) => {
15873
15896
  };
15874
15897
  var verifyDVV1X10 = verifyDVV1X8;
15875
15898
 
15899
+ // src/verification/v1.11.0.ts
15900
+ import {
15901
+ UintNumberType as UintNumberType6
15902
+ } from "@chainsafe/ssz/lib/type/uint.js";
15903
+ import {
15904
+ ByteListType as ByteListType6,
15905
+ ByteVectorType as ByteVectorType6,
15906
+ ContainerType as ContainerType6,
15907
+ ListBasicType as ListBasicType3,
15908
+ ListCompositeType as ListCompositeType6,
15909
+ fromHexString as fromHexString6,
15910
+ BooleanType as BooleanType2
15911
+ } from "@chainsafe/ssz";
15912
+ var splitK1SignatureList = (signature) => {
15913
+ const bytes = fromHexString6(signature);
15914
+ if (bytes.length === 0) return [];
15915
+ if (bytes.length % 65 !== 0) {
15916
+ throw new Error("Signature length must be a multiple of 65 bytes");
15917
+ }
15918
+ const chunks = [];
15919
+ for (let i = 0; i < bytes.length; i += 65) {
15920
+ chunks.push(bytes.slice(i, i + 65));
15921
+ }
15922
+ return chunks;
15923
+ };
15924
+ var clusterDefinitionContainerTypeV1X11 = (configOnly) => {
15925
+ let returnedContainerType = {
15926
+ uuid: new ByteListType6(64),
15927
+ name: new ByteListType6(256),
15928
+ version: new ByteListType6(16),
15929
+ timestamp: new ByteListType6(32),
15930
+ num_validators: new UintNumberType6(8),
15931
+ threshold: new UintNumberType6(8),
15932
+ dkg_algorithm: new ByteListType6(32),
15933
+ fork_version: new ByteVectorType6(4),
15934
+ operators: new ListCompositeType6(
15935
+ newOperatorContainerTypeV1X11(configOnly),
15936
+ 256
15937
+ ),
15938
+ creator: newCreatorContainerTypeV1X11(configOnly),
15939
+ validators: new ListCompositeType6(validatorsContainerType, 65536),
15940
+ deposit_amounts: new ListBasicType3(
15941
+ new UintNumberType6(8),
15942
+ 256
15943
+ ),
15944
+ consensus_protocol: new ByteListType6(256),
15945
+ target_gas_limit: new UintNumberType6(8),
15946
+ compounding: new BooleanType2()
15947
+ };
15948
+ if (!configOnly) {
15949
+ returnedContainerType = __spreadProps(__spreadValues({}, returnedContainerType), {
15950
+ config_hash: new ByteVectorType6(32)
15951
+ });
15952
+ }
15953
+ return new ContainerType6(returnedContainerType);
15954
+ };
15955
+ var hashClusterDefinitionV1X11 = (cluster, configOnly) => {
15956
+ const definitionType = clusterDefinitionContainerTypeV1X11(configOnly);
15957
+ const val = definitionType.defaultValue();
15958
+ val.uuid = strToUint8Array(cluster.uuid);
15959
+ val.name = strToUint8Array(cluster.name);
15960
+ val.version = strToUint8Array(cluster.version);
15961
+ val.timestamp = strToUint8Array(cluster.timestamp);
15962
+ val.num_validators = cluster.num_validators;
15963
+ val.threshold = cluster.threshold;
15964
+ val.dkg_algorithm = strToUint8Array(cluster.dkg_algorithm);
15965
+ val.fork_version = fromHexString6(cluster.fork_version);
15966
+ val.operators = cluster.operators.map((operator) => {
15967
+ return configOnly ? { address: fromHexString6(operator.address) } : {
15968
+ address: fromHexString6(operator.address),
15969
+ enr: strToUint8Array(operator.enr),
15970
+ config_signature: splitK1SignatureList(
15971
+ operator.config_signature
15972
+ ),
15973
+ enr_signature: splitK1SignatureList(operator.enr_signature)
15974
+ };
15975
+ });
15976
+ val.creator = configOnly ? { address: fromHexString6(cluster.creator.address) } : {
15977
+ address: fromHexString6(cluster.creator.address),
15978
+ config_signature: splitK1SignatureList(
15979
+ cluster.creator.config_signature
15980
+ )
15981
+ };
15982
+ val.validators = cluster.validators.map((validator) => {
15983
+ return {
15984
+ fee_recipient_address: fromHexString6(validator.fee_recipient_address),
15985
+ withdrawal_address: fromHexString6(validator.withdrawal_address)
15986
+ };
15987
+ });
15988
+ if (cluster.deposit_amounts) {
15989
+ val.deposit_amounts = cluster.deposit_amounts.map((amount) => {
15990
+ return parseInt(amount);
15991
+ });
15992
+ }
15993
+ if (cluster.consensus_protocol) {
15994
+ val.consensus_protocol = strToUint8Array(cluster.consensus_protocol);
15995
+ }
15996
+ if (cluster.target_gas_limit) {
15997
+ val.target_gas_limit = cluster.target_gas_limit;
15998
+ }
15999
+ if (cluster.compounding) {
16000
+ val.compounding = cluster.compounding;
16001
+ }
16002
+ if (!configOnly) {
16003
+ val.config_hash = fromHexString6(cluster.config_hash);
16004
+ }
16005
+ return val;
16006
+ };
16007
+ var dvContainerTypeV1X11 = new ContainerType6({
16008
+ distributed_public_key: new ByteVectorType6(48),
16009
+ public_shares: new ListCompositeType6(new ByteVectorType6(48), 256),
16010
+ partial_deposit_data: new ListCompositeType6(depositDataContainer, 256),
16011
+ builder_registration: builderRegistrationContainer
16012
+ });
16013
+ var clusterLockContainerTypeV1X11 = () => {
16014
+ return new ContainerType6({
16015
+ cluster_definition: clusterDefinitionContainerTypeV1X11(false),
16016
+ distributed_validators: new ListCompositeType6(dvContainerTypeV1X11, 65536)
16017
+ });
16018
+ };
16019
+ var hashClusterLockV1X11 = (cluster) => {
16020
+ const lockType = clusterLockContainerTypeV1X11();
16021
+ const val = lockType.defaultValue();
16022
+ val.cluster_definition = hashClusterDefinitionV1X11(
16023
+ cluster.cluster_definition,
16024
+ false
16025
+ );
16026
+ val.distributed_validators = cluster.distributed_validators.map(
16027
+ (dValidator) => {
16028
+ var _a6, _b2, _c, _d, _e;
16029
+ return {
16030
+ distributed_public_key: fromHexString6(
16031
+ dValidator.distributed_public_key
16032
+ ),
16033
+ public_shares: dValidator.public_shares.map(
16034
+ (publicShare) => fromHexString6(publicShare)
16035
+ ),
16036
+ partial_deposit_data: dValidator.partial_deposit_data.map((depositData) => {
16037
+ return {
16038
+ pubkey: fromHexString6(depositData.pubkey),
16039
+ withdrawal_credentials: fromHexString6(
16040
+ depositData.withdrawal_credentials
16041
+ ),
16042
+ amount: parseInt(depositData.amount),
16043
+ signature: fromHexString6(depositData.signature)
16044
+ };
16045
+ }),
16046
+ builder_registration: {
16047
+ message: {
16048
+ fee_recipient: fromHexString6(
16049
+ (_a6 = dValidator.builder_registration) == null ? void 0 : _a6.message.fee_recipient
16050
+ ),
16051
+ gas_limit: (_b2 = dValidator.builder_registration) == null ? void 0 : _b2.message.gas_limit,
16052
+ timestamp: (_c = dValidator.builder_registration) == null ? void 0 : _c.message.timestamp,
16053
+ pubkey: fromHexString6(
16054
+ (_d = dValidator.builder_registration) == null ? void 0 : _d.message.pubkey
16055
+ )
16056
+ },
16057
+ signature: fromHexString6(
16058
+ (_e = dValidator.builder_registration) == null ? void 0 : _e.signature
16059
+ )
16060
+ }
16061
+ };
16062
+ }
16063
+ );
16064
+ return "0x" + Buffer.from(lockType.hashTreeRoot(val).buffer).toString("hex");
16065
+ };
16066
+ var verifyDVV1X11 = verifyDVV1X8;
16067
+
15876
16068
  // src/verification/common.ts
15877
16069
  var clusterConfigOrDefinitionHash = (cluster, configOnly) => {
15878
16070
  let definitionType, val;
@@ -15897,6 +16089,11 @@ var clusterConfigOrDefinitionHash = (cluster, configOnly) => {
15897
16089
  const x = "0x" + Buffer.from(definitionType.hashTreeRoot(val).buffer).toString("hex");
15898
16090
  return x;
15899
16091
  }
16092
+ if (semver.eq(cluster.version, "v1.11.0")) {
16093
+ definitionType = clusterDefinitionContainerTypeV1X11(configOnly);
16094
+ val = hashClusterDefinitionV1X11(cluster, configOnly);
16095
+ return "0x" + Buffer.from(definitionType.hashTreeRoot(val).buffer).toString("hex");
16096
+ }
15900
16097
  throw new Error("unsupported version");
15901
16098
  };
15902
16099
  var clusterLockHash = (clusterLock) => {
@@ -15922,6 +16119,9 @@ var clusterLockHash = (clusterLock) => {
15922
16119
  if (semver.eq(clusterLock.cluster_definition.version, "v1.10.0")) {
15923
16120
  return hashClusterLockV1X10(clusterLock);
15924
16121
  }
16122
+ if (semver.eq(clusterLock.cluster_definition.version, "v1.11.0")) {
16123
+ return hashClusterLockV1X11(clusterLock);
16124
+ }
15925
16125
  throw new Error("unsupported version");
15926
16126
  };
15927
16127
  var validatePOSTConfigHashSigner = (address, signature, configHash, chainId, safeRpcUrl) => __async(null, null, function* () {
@@ -16021,8 +16221,8 @@ var computeSigningRoot = (sszObjectRoot, domain) => {
16021
16221
  };
16022
16222
  var computeDepositMsgRoot = (msg) => {
16023
16223
  const depositMsgVal = depositMessageType.defaultValue();
16024
- depositMsgVal.pubkey = fromHexString6(msg.pubkey);
16025
- depositMsgVal.withdrawal_credentials = fromHexString6(
16224
+ depositMsgVal.pubkey = fromHexString7(msg.pubkey);
16225
+ depositMsgVal.withdrawal_credentials = fromHexString7(
16026
16226
  msg.withdrawal_credentials
16027
16227
  );
16028
16228
  depositMsgVal.amount = parseInt(msg.amount);
@@ -16036,16 +16236,16 @@ var computeForkDataRoot = (currentVersion, genesisValidatorsRoot) => {
16036
16236
  };
16037
16237
  var computebuilderRegistrationMsgRoot = (msg) => {
16038
16238
  const builderRegistrationMsgVal = builderRegistrationMessageType.defaultValue();
16039
- builderRegistrationMsgVal.fee_recipient = fromHexString6(msg.fee_recipient);
16239
+ builderRegistrationMsgVal.fee_recipient = fromHexString7(msg.fee_recipient);
16040
16240
  builderRegistrationMsgVal.gas_limit = msg.gas_limit;
16041
16241
  builderRegistrationMsgVal.timestamp = msg.timestamp;
16042
- builderRegistrationMsgVal.pubkey = fromHexString6(msg.pubkey);
16242
+ builderRegistrationMsgVal.pubkey = fromHexString7(msg.pubkey);
16043
16243
  return Buffer.from(
16044
16244
  builderRegistrationMessageType.hashTreeRoot(builderRegistrationMsgVal).buffer
16045
16245
  );
16046
16246
  };
16047
- var computeDomain = (domainType, lockForkVersion, genesisValidatorsRoot = fromHexString6(GENESIS_VALIDATOR_ROOT)) => {
16048
- const forkVersion = fromHexString6(
16247
+ var computeDomain = (domainType, lockForkVersion, genesisValidatorsRoot = fromHexString7(GENESIS_VALIDATOR_ROOT)) => {
16248
+ const forkVersion = fromHexString7(
16049
16249
  lockForkVersion.substring(2, lockForkVersion.length)
16050
16250
  );
16051
16251
  const forkDataRoot = computeForkDataRoot(forkVersion, genesisValidatorsRoot);
@@ -16054,10 +16254,10 @@ var computeDomain = (domainType, lockForkVersion, genesisValidatorsRoot = fromHe
16054
16254
  domain.set(forkDataRoot.subarray(0, 28), 4);
16055
16255
  return domain;
16056
16256
  };
16057
- var depositDomainForFork = (forkVersion) => computeDomain(fromHexString6(DOMAIN_DEPOSIT), forkVersion);
16058
- var builderDomainForFork = (forkVersion) => computeDomain(fromHexString6(DOMAIN_APPLICATION_BUILDER), forkVersion);
16257
+ var depositDomainForFork = (forkVersion) => computeDomain(fromHexString7(DOMAIN_DEPOSIT), forkVersion);
16258
+ var builderDomainForFork = (forkVersion) => computeDomain(fromHexString7(DOMAIN_APPLICATION_BUILDER), forkVersion);
16059
16259
  var validateDepositDataStructure = (distributedPublicKey, depositData, withdrawalAddress, forkVersion, compounding, precomputedDepositDomain) => {
16060
- const depositDomain = precomputedDepositDomain != null ? precomputedDepositDomain : computeDomain(fromHexString6(DOMAIN_DEPOSIT), forkVersion);
16260
+ const depositDomain = precomputedDepositDomain != null ? precomputedDepositDomain : computeDomain(fromHexString7(DOMAIN_DEPOSIT), forkVersion);
16061
16261
  const withdrawalPrefix = compounding ? "0x02" : "0x01";
16062
16262
  const expectedWithdrawalCredentials = withdrawalPrefix + "0".repeat(22) + withdrawalAddress.toLowerCase().slice(2);
16063
16263
  if (expectedWithdrawalCredentials !== depositData.withdrawal_credentials) {
@@ -16084,9 +16284,9 @@ var depositBlsCheck = (distributedPublicKey, depositData, withdrawalAddress, for
16084
16284
  );
16085
16285
  if (!valid || !depositData.signature || !depositData.pubkey) return null;
16086
16286
  return {
16087
- pubkey: fromHexString6(depositData.pubkey),
16287
+ pubkey: fromHexString7(depositData.pubkey),
16088
16288
  message: message2,
16089
- signature: fromHexString6(depositData.signature)
16289
+ signature: fromHexString7(depositData.signature)
16090
16290
  };
16091
16291
  };
16092
16292
  var verifyDepositData = (distributedPublicKey, depositData, withdrawalAddress, forkVersion, compounding) => {
@@ -16101,15 +16301,15 @@ var verifyDepositData = (distributedPublicKey, depositData, withdrawalAddress, f
16101
16301
  return { isValidDepositData: false, depositDataMsg: message2 };
16102
16302
  }
16103
16303
  const isValidDepositData = blsVerify(
16104
- fromHexString6(depositData.pubkey),
16304
+ fromHexString7(depositData.pubkey),
16105
16305
  message2,
16106
- fromHexString6(depositData.signature)
16306
+ fromHexString7(depositData.signature)
16107
16307
  );
16108
16308
  return { isValidDepositData, depositDataMsg: message2 };
16109
16309
  };
16110
16310
  var verifyBuilderRegistration = (validator, feeRecipientAddress, forkVersion, precomputedBuilderDomain) => {
16111
16311
  var _a6;
16112
- const builderDomain = precomputedBuilderDomain != null ? precomputedBuilderDomain : computeDomain(fromHexString6(DOMAIN_APPLICATION_BUILDER), forkVersion);
16312
+ const builderDomain = precomputedBuilderDomain != null ? precomputedBuilderDomain : computeDomain(fromHexString7(DOMAIN_APPLICATION_BUILDER), forkVersion);
16113
16313
  if (validator.distributed_public_key !== ((_a6 = validator.builder_registration) == null ? void 0 : _a6.message.pubkey)) {
16114
16314
  return {
16115
16315
  isValidBuilderRegistration: false,
@@ -16145,9 +16345,9 @@ var builderBlsCheck = (validator, feeRecipientAddress, forkVersion, precomputedB
16145
16345
  const sig = (_a6 = validator.builder_registration) == null ? void 0 : _a6.signature;
16146
16346
  if (!isValidBuilderRegistration || !sig) return null;
16147
16347
  return {
16148
- pubkey: fromHexString6(validator.distributed_public_key),
16348
+ pubkey: fromHexString7(validator.distributed_public_key),
16149
16349
  message: builderRegistrationMsg,
16150
- signature: fromHexString6(sig)
16350
+ signature: fromHexString7(sig)
16151
16351
  };
16152
16352
  };
16153
16353
  var verifyNodeSignatures = (clusterLock) => {
@@ -16189,6 +16389,9 @@ var verifyLockData = (clusterLock) => __async(null, null, function* () {
16189
16389
  if (semver.eq(clusterLock.cluster_definition.version, "v1.10.0")) {
16190
16390
  return yield verifyDVV1X10(clusterLock);
16191
16391
  }
16392
+ if (semver.eq(clusterLock.cluster_definition.version, "v1.11.0")) {
16393
+ return yield verifyDVV1X11(clusterLock);
16394
+ }
16192
16395
  return false;
16193
16396
  });
16194
16397
  var hasUniqueDistributedKeys = (clusterLock) => {
@@ -19895,11 +20098,11 @@ var Incentives = class {
19895
20098
  // src/exits/exit.ts
19896
20099
  import * as elliptic2 from "elliptic";
19897
20100
  import {
19898
- ByteVectorType as ByteVectorType7,
19899
- ContainerType as ContainerType7,
19900
- fromHexString as fromHexString8,
19901
- ListCompositeType as ListCompositeType5,
19902
- UintNumberType as UintNumberType6
20101
+ ByteVectorType as ByteVectorType8,
20102
+ ContainerType as ContainerType8,
20103
+ fromHexString as fromHexString9,
20104
+ ListCompositeType as ListCompositeType7,
20105
+ UintNumberType as UintNumberType7
19903
20106
  } from "@chainsafe/ssz";
19904
20107
 
19905
20108
  // src/exits/ethUtils.ts
@@ -19937,15 +20140,15 @@ function getGenesisValidatorsRoot(beaconNodeApiUrl) {
19937
20140
  }
19938
20141
 
19939
20142
  // src/exits/verificationHelpers.ts
19940
- import { ContainerType as ContainerType6, ByteVectorType as ByteVectorType6, fromHexString as fromHexString7 } from "@chainsafe/ssz";
20143
+ import { ContainerType as ContainerType7, ByteVectorType as ByteVectorType7, fromHexString as fromHexString8 } from "@chainsafe/ssz";
19941
20144
  var GENESIS_VALIDATOR_ROOT_HEX_STRING = "0x0000000000000000000000000000000000000000000000000000000000000000";
19942
- var ForkDataType = new ContainerType6({
19943
- currentVersion: new ByteVectorType6(4),
19944
- genesisValidatorsRoot: new ByteVectorType6(32)
20145
+ var ForkDataType = new ContainerType7({
20146
+ currentVersion: new ByteVectorType7(4),
20147
+ genesisValidatorsRoot: new ByteVectorType7(32)
19945
20148
  });
19946
- var SigningRootType = new ContainerType6({
19947
- objectRoot: new ByteVectorType6(32),
19948
- domain: new ByteVectorType6(32)
20149
+ var SigningRootType = new ContainerType7({
20150
+ objectRoot: new ByteVectorType7(32),
20151
+ domain: new ByteVectorType7(32)
19949
20152
  });
19950
20153
  function computeForkDataRoot2(currentVersion, genesisValidatorsRoot) {
19951
20154
  const forkDataVal = ForkDataType.defaultValue();
@@ -19954,7 +20157,7 @@ function computeForkDataRoot2(currentVersion, genesisValidatorsRoot) {
19954
20157
  return Buffer.from(ForkDataType.hashTreeRoot(forkDataVal).buffer);
19955
20158
  }
19956
20159
  function computeDomain2(domainType, forkVersionString, genesisValidatorsRootOverride) {
19957
- const forkVersionBytes = fromHexString7(
20160
+ const forkVersionBytes = fromHexString8(
19958
20161
  forkVersionString.substring(2, forkVersionString.length)
19959
20162
  );
19960
20163
  if (forkVersionBytes.length !== 4) {
@@ -19963,7 +20166,7 @@ function computeDomain2(domainType, forkVersionString, genesisValidatorsRootOver
19963
20166
  if (domainType.length !== 4) {
19964
20167
  throw new Error("Domain type must be 4 bytes");
19965
20168
  }
19966
- const actualGenesisValidatorsRoot = genesisValidatorsRootOverride != null ? genesisValidatorsRootOverride : fromHexString7(GENESIS_VALIDATOR_ROOT_HEX_STRING.substring(2));
20169
+ const actualGenesisValidatorsRoot = genesisValidatorsRootOverride != null ? genesisValidatorsRootOverride : fromHexString8(GENESIS_VALIDATOR_ROOT_HEX_STRING.substring(2));
19967
20170
  if (actualGenesisValidatorsRoot.length !== 32) {
19968
20171
  throw new Error("genesisValidatorsRoot must be 32 bytes");
19969
20172
  }
@@ -19995,25 +20198,25 @@ function signingRoot2(domain, messageBuffer) {
19995
20198
 
19996
20199
  // src/exits/exit.ts
19997
20200
  var DOMAIN_VOLUNTARY_EXIT = "0x04000000";
19998
- var SSZExitMessageType = new ContainerType7({
19999
- epoch: new UintNumberType6(8),
20000
- validator_index: new UintNumberType6(8)
20201
+ var SSZExitMessageType = new ContainerType8({
20202
+ epoch: new UintNumberType7(8),
20203
+ validator_index: new UintNumberType7(8)
20001
20204
  });
20002
- var SSZPartialExitsPayloadType = new ContainerType7({
20003
- partial_exits: new ListCompositeType5(
20004
- new ContainerType7({
20005
- public_key: new ByteVectorType7(48),
20006
- signed_exit_message: new ContainerType7({
20007
- message: new ContainerType7({
20008
- epoch: new UintNumberType6(8),
20009
- validator_index: new UintNumberType6(8)
20205
+ var SSZPartialExitsPayloadType = new ContainerType8({
20206
+ partial_exits: new ListCompositeType7(
20207
+ new ContainerType8({
20208
+ public_key: new ByteVectorType8(48),
20209
+ signed_exit_message: new ContainerType8({
20210
+ message: new ContainerType8({
20211
+ epoch: new UintNumberType7(8),
20212
+ validator_index: new UintNumberType7(8)
20010
20213
  }),
20011
- signature: new ByteVectorType7(96)
20214
+ signature: new ByteVectorType8(96)
20012
20215
  })
20013
20216
  }),
20014
20217
  65536
20015
20218
  ),
20016
- share_idx: new UintNumberType6(8)
20219
+ share_idx: new UintNumberType7(8)
20017
20220
  });
20018
20221
  var Exit = class _Exit {
20019
20222
  /**
@@ -20056,7 +20259,7 @@ var Exit = class _Exit {
20056
20259
  static computeExitPayloadRoot(exits) {
20057
20260
  const sszValue = SSZPartialExitsPayloadType.defaultValue();
20058
20261
  sszValue.partial_exits = exits.partial_exits.map((pe) => ({
20059
- public_key: fromHexString8(pe.public_key),
20262
+ public_key: fromHexString9(pe.public_key),
20060
20263
  signed_exit_message: {
20061
20264
  message: {
20062
20265
  epoch: _Exit.safeParseInt(pe.signed_exit_message.message.epoch),
@@ -20064,7 +20267,7 @@ var Exit = class _Exit {
20064
20267
  pe.signed_exit_message.message.validator_index
20065
20268
  )
20066
20269
  },
20067
- signature: fromHexString8(pe.signed_exit_message.signature)
20270
+ signature: fromHexString9(pe.signed_exit_message.signature)
20068
20271
  }
20069
20272
  }));
20070
20273
  sszValue.share_idx = exits.share_idx;
@@ -20114,18 +20317,18 @@ var Exit = class _Exit {
20114
20317
  signedExitMessage.message
20115
20318
  );
20116
20319
  const exitDomain = computeDomain2(
20117
- fromHexString8(DOMAIN_VOLUNTARY_EXIT),
20320
+ fromHexString9(DOMAIN_VOLUNTARY_EXIT),
20118
20321
  capellaForkVersionString,
20119
- fromHexString8(genesisValidatorsRootString)
20322
+ fromHexString9(genesisValidatorsRootString)
20120
20323
  );
20121
20324
  const messageSigningRoot = signingRoot2(
20122
20325
  exitDomain,
20123
20326
  partialExitMessageBuffer
20124
20327
  );
20125
20328
  return blsVerify(
20126
- fromHexString8(publicShareKey),
20329
+ fromHexString9(publicShareKey),
20127
20330
  messageSigningRoot,
20128
- fromHexString8(signedExitMessage.signature)
20331
+ fromHexString9(signedExitMessage.signature)
20129
20332
  );
20130
20333
  });
20131
20334
  }
@@ -20428,7 +20631,7 @@ var Exit = class _Exit {
20428
20631
  );
20429
20632
  }
20430
20633
  try {
20431
- const sigBytes = fromHexString8(cleanSigStr);
20634
+ const sigBytes = fromHexString9(cleanSigStr);
20432
20635
  const sigIdx = parseInt(sigIdxStr, 10);
20433
20636
  signaturesByIndex.set(sigIdx + 1, sigBytes);
20434
20637
  } catch (err) {
@@ -21662,7 +21865,7 @@ var Client = class extends Base {
21662
21865
  * @example
21663
21866
  * ```typescript
21664
21867
  * const updatedDef = await client.acceptClusterDefinition(
21665
- * { enr: "enr:-LK4Q...", version: "v1.10.0" },
21868
+ * { enr: "enr:-LK4Q...", version: "v1.11.0" },
21666
21869
  * configHash,
21667
21870
  * );
21668
21871
  * ```