@obolnetwork/obol-sdk 2.12.1 → 2.12.2

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.
@@ -108,6 +108,7 @@ var __yieldStar = (value) => {
108
108
  // src/index.ts
109
109
  var index_exports = {};
110
110
  __export(index_exports, {
111
+ ALLOWED_OBOL_API_BASE_URLS: () => ALLOWED_OBOL_API_BASE_URLS,
111
112
  AVAILABLE_SPLITTER_CHAINS: () => AVAILABLE_SPLITTER_CHAINS,
112
113
  CAPELLA_FORK_MAPPING: () => CAPELLA_FORK_MAPPING,
113
114
  CHAIN_CONFIGURATION: () => CHAIN_CONFIGURATION,
@@ -140,6 +141,7 @@ __export(index_exports, {
140
141
  FORK_NAMES: () => FORK_NAMES,
141
142
  GENESIS_VALIDATOR_ROOT: () => GENESIS_VALIDATOR_ROOT,
142
143
  Incentives: () => Incentives,
144
+ InvalidBaseUrlError: () => InvalidBaseUrlError,
143
145
  OBOL_SDK_EMAIL: () => OBOL_SDK_EMAIL,
144
146
  ObolSplits: () => ObolSplits,
145
147
  OperatorConfigHashSigningTypes: () => OperatorConfigHashSigningTypes,
@@ -183,7 +185,7 @@ var import_uuid = require("uuid");
183
185
  // package.json
184
186
  var package_default = {
185
187
  name: "@obolnetwork/obol-sdk",
186
- version: "2.12.1",
188
+ version: "2.12.2",
187
189
  description: "A package for creating Distributed Validators using the Obol API.",
188
190
  bugs: {
189
191
  url: "https://github.com/obolnetwork/obol-sdk/issues"
@@ -261,7 +263,6 @@ var package_default = {
261
263
  "ajv-formats": "3.0.1",
262
264
  "ajv-keywords": "5.1.0",
263
265
  "cross-fetch": "4.1.0",
264
- dotenv: "17.4.2",
265
266
  elliptic: "6.6.1",
266
267
  ethers: "6.16.0",
267
268
  semver: "7.7.4",
@@ -274,6 +275,7 @@ var package_default = {
274
275
  "@types/node": "24.12.2",
275
276
  "@types/semver": "7.7.1",
276
277
  "@types/uuid": "9.0.8",
278
+ dotenv: "17.4.2",
277
279
  "@typescript-eslint/eslint-plugin": "6.21.0",
278
280
  "@typescript-eslint/parser": "6.21.0",
279
281
  eslint: "8.57.1",
@@ -401,8 +403,6 @@ var MAINNET_SPLIT_V2_FACTORY_BYTECODE = "0x6080604090808252600480361015610015575
401
403
  var HOODI_SPLIT_V2_FACTORY_BYTECODE = "0x6080604090808252600480361015610015575f80fd5b5f3560e01c9182632556fa391461043c5750816380ebf0ab146102be5781639e317f121461027a578163cd6bc1211461023f578163e9889edd1461016d578163f79918b0146100de575063fc6119b11461006d575f80fd5b346100da575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da576020905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f9c25250523df26343222fc46de932355b850c97168152f35b5f80fd5b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc916080833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016573ffffffffffffffffffffffffffffffffffffffff916020946101526105e7565b61015a61060a565b91606435930161090f565b915191168152f35b82346100da5760209073ffffffffffffffffffffffffffffffffffffffff6101656101a061019a3661062d565b91610b37565b309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b610b7a565b82346100da576102546101a061019a3661062d565b803b151573ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b82346100da5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da57602091355f525f8252805f20549051908152f35b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9181833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016561039c73ffffffffffffffffffffffffffffffffffffffff9261034a6103766103376105e7565b875192839160209a8b84019601866107c7565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610858565b519020805f525f8652845f205490855191878301528682526103978261083c565b6108c2565b848151910120309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b9083346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060813601126100da5782359067ffffffffffffffff82116100da5760809082850192360301126100da576104976105e7565b6105286104a261060a565b6104e4602097888101906104bb8161034a888a866107c7565b519020805f525f8952865f20908154916001830190558751918a8301528982526103978261083c565b73ffffffffffffffffffffffffffffffffffffffff9281898593519101207f000000000000000000000000f9c25250523df26343222fc46de932355b850c97610aae565b1695863b156100da575f858592610569895194859384937fbaa7fda400000000000000000000000000000000000000000000000000000000855284016107c7565b0381838b5af180156105dd57928795927fb3ec24e9259e438f9917b49f27c0dd89a11b7626cb63e6fc977863c0b26a681b95926105ba956105ce575b508188519586956060875260608701906106f5565b93168a85015216868301520390a251908152f35b6105d7906107fb565b8a6105a5565b86513d5f823e3d90fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906060828201126100da576004359167ffffffffffffffff83116100da57826080920301126100da576004019060243573ffffffffffffffffffffffffffffffffffffffff811681036100da579060443590565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156100da57016020813591019167ffffffffffffffff82116100da578160051b360383136100da57565b6080820161070382806106a2565b608085529182905260a08401915f905b80821061078f5750505061072a60208301836106a2565b909284830360208601528183527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82116100da5760609160051b8094602085013760408101356040860152013561ffff81168091036100da5760606020940152010190565b90919283359073ffffffffffffffffffffffffffffffffffffffff82168092036100da57600191815260208091019401920190610713565b9073ffffffffffffffffffffffffffffffffffffffff6107f46020929594956040855260408501906106f5565b9416910152565b67ffffffffffffffff811161080f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761080f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761080f57604052565b908151915f5b8381106108af575050015f815290565b806020809284010151818501520161089f565b61090d909291926108e160405194859260208401526040830190610899565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610858565b565b93929161091d838387610b37565b7f000000000000000000000000f9c25250523df26343222fc46de932355b850c976109bb308361023a8490604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b803b610aa55750906109cc91610aae565b9473ffffffffffffffffffffffffffffffffffffffff9283871694853b156100da57604051947fbaa7fda40000000000000000000000000000000000000000000000000000000086525f8680610a268688600484016107c7565b0381838b5af1948515610a9a577fc4cec5a1846f5c98dc275670618bfecffec4da2e7cba63760ef46f38c75d236e96610a7496610a8b575b50816040519687966080885260808801906106f5565b9416602086015216604084015260608301520390a2565b610a94906107fb565b5f610a5e565b6040513d5f823e3d90fd5b96505050505050565b9190604051926c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f5ff5916040525f6060528115610b2a57565b63301164255f526004601cfd5b6040519291610b4f9184916108e191602084016107c7565b610b7460206040518093610b668383018097610899565b908152038084520182610858565b51902090565b91909160ff5f5360355260601b60015260155260555f20905f60355256fea2646970667358221220edd55753c55f257991df670fc562cdf54adb62d710125933fc4a0a7afddbc02564736f6c63430008170033";
402
404
 
403
405
  // src/constants.ts
404
- var dotenv = __toESM(require("dotenv"));
405
- dotenv.config();
406
406
  var CONFLICT_ERROR_MSG = "Conflict";
407
407
  var EIP712_DOMAIN_NAME = "Obol";
408
408
  var EIP712_DOMAIN_VERSION = "1";
@@ -611,40 +611,6 @@ var CAPELLA_FORK_MAPPING = {
611
611
  // Hoodi
612
612
  };
613
613
 
614
- // src/base.ts
615
- var Base = class {
616
- constructor({
617
- baseUrl = DEFAULT_BASE_URL,
618
- chainId = DEFAULT_CHAIN_ID
619
- }) {
620
- this.baseUrl = baseUrl;
621
- this.chainId = chainId;
622
- this.fork_version = FORK_MAPPING[this.chainId];
623
- }
624
- request(endpoint, options) {
625
- return __async(this, null, function* () {
626
- const url = `${this.baseUrl}${endpoint}`;
627
- const config2 = __spreadProps(__spreadValues({}, options), {
628
- headers: __spreadValues({
629
- "Content-Type": "application/json",
630
- "User-Agent": `Obol-SDK/${SDK_VERSION}`
631
- }, options == null ? void 0 : options.headers)
632
- });
633
- try {
634
- const response = yield fetch(url, config2);
635
- if (response.ok) {
636
- return yield response.json();
637
- } else {
638
- const errorResponse = yield response.json();
639
- throw errorResponse;
640
- }
641
- } catch (e) {
642
- throw e;
643
- }
644
- });
645
- }
646
- };
647
-
648
614
  // src/errors.ts
649
615
  var ConflictError = class _ConflictError extends Error {
650
616
  constructor() {
@@ -667,6 +633,13 @@ var UnsupportedChainError = class _UnsupportedChainError extends Error {
667
633
  Object.setPrototypeOf(this, _UnsupportedChainError.prototype);
668
634
  }
669
635
  };
636
+ var InvalidBaseUrlError = class _InvalidBaseUrlError extends Error {
637
+ constructor(message2) {
638
+ super(message2);
639
+ this.name = "InvalidBaseUrlError";
640
+ Object.setPrototypeOf(this, _InvalidBaseUrlError.prototype);
641
+ }
642
+ };
670
643
  var ClusterLockValidationTimeoutError = class _ClusterLockValidationTimeoutError extends Error {
671
644
  /**
672
645
  * @param timeoutMs - Same value as SDK whole-lock validation worker timeout.
@@ -681,6 +654,58 @@ var ClusterLockValidationTimeoutError = class _ClusterLockValidationTimeoutError
681
654
  }
682
655
  };
683
656
 
657
+ // src/base.ts
658
+ var ALLOWED_OBOL_API_BASE_URLS = [
659
+ DEFAULT_BASE_URL,
660
+ "https://obol-api-nonprod-dev.dev.obol.tech",
661
+ "https://obol-api-nonprod-qa.dev.obol.tech"
662
+ ];
663
+ var ALLOWED_BASE_URLS = new Set(ALLOWED_OBOL_API_BASE_URLS);
664
+ function assertAllowedBaseUrl(baseUrl) {
665
+ let candidate = baseUrl.trim();
666
+ while (candidate.endsWith("/")) {
667
+ candidate = candidate.slice(0, -1);
668
+ }
669
+ if (!ALLOWED_BASE_URLS.has(candidate)) {
670
+ throw new InvalidBaseUrlError(
671
+ `baseUrl must be one of: ${ALLOWED_OBOL_API_BASE_URLS.join(", ")}`
672
+ );
673
+ }
674
+ return candidate;
675
+ }
676
+ var Base = class {
677
+ constructor({
678
+ baseUrl = DEFAULT_BASE_URL,
679
+ chainId = DEFAULT_CHAIN_ID
680
+ }) {
681
+ this.baseUrl = assertAllowedBaseUrl(baseUrl);
682
+ this.chainId = chainId;
683
+ this.fork_version = FORK_MAPPING[this.chainId];
684
+ }
685
+ request(endpoint, options) {
686
+ return __async(this, null, function* () {
687
+ const url = `${this.baseUrl}${endpoint}`;
688
+ const config = __spreadProps(__spreadValues({}, options), {
689
+ headers: __spreadValues({
690
+ "Content-Type": "application/json",
691
+ "User-Agent": `Obol-SDK/${SDK_VERSION}`
692
+ }, options == null ? void 0 : options.headers)
693
+ });
694
+ try {
695
+ const response = yield fetch(url, config);
696
+ if (response.ok) {
697
+ return yield response.json();
698
+ } else {
699
+ const errorResponse = yield response.json();
700
+ throw errorResponse;
701
+ }
702
+ } catch (e) {
703
+ throw e;
704
+ }
705
+ });
706
+ }
707
+ };
708
+
684
709
  // src/verification/common.ts
685
710
  var import_ssz7 = require("@chainsafe/ssz");
686
711
  var import_elliptic = __toESM(require("elliptic"));
@@ -5333,15 +5358,7 @@ function validateClusterLockInWorker(lock, safeRpcUrl) {
5333
5358
  const worker = new wt.Worker(workerFile, {
5334
5359
  workerData: { lock, safeRpcUrl }
5335
5360
  });
5336
- let timer;
5337
- const finish = (result) => {
5338
- if (settled) return;
5339
- settled = true;
5340
- clearTimeout(timer);
5341
- worker.terminate();
5342
- resolve(result);
5343
- };
5344
- timer = setTimeout(() => {
5361
+ const timer = setTimeout(() => {
5345
5362
  if (settled) return;
5346
5363
  settled = true;
5347
5364
  clearTimeout(timer);
@@ -5350,6 +5367,13 @@ function validateClusterLockInWorker(lock, safeRpcUrl) {
5350
5367
  new ClusterLockValidationTimeoutError(VALIDATION_WORKER_TIMEOUT_MS)
5351
5368
  );
5352
5369
  }, VALIDATION_WORKER_TIMEOUT_MS);
5370
+ const finish = (result) => {
5371
+ if (settled) return;
5372
+ settled = true;
5373
+ clearTimeout(timer);
5374
+ worker.terminate();
5375
+ resolve(result);
5376
+ };
5353
5377
  worker.once("message", (msg) => {
5354
5378
  finish(msg === true);
5355
5379
  });
@@ -18262,11 +18286,11 @@ var encodeCreateSplitV2DeterministicTxData = (splitParams, splitOwnerAddress, sa
18262
18286
  );
18263
18287
  };
18264
18288
  var getChainConfig = (chainId) => {
18265
- const config2 = CHAIN_CONFIGURATION[chainId];
18266
- if (!config2) {
18289
+ const config = CHAIN_CONFIGURATION[chainId];
18290
+ if (!config) {
18267
18291
  throw new Error(`Chain configuration not found for chain ID ${chainId}`);
18268
18292
  }
18269
- return config2;
18293
+ return config;
18270
18294
  };
18271
18295
  var requestWithdrawalFromOVM = (_0) => __async(null, [_0], function* ({
18272
18296
  ovmAddress,
@@ -19856,6 +19880,7 @@ var Client = class extends Base {
19856
19880
  *
19857
19881
  * @param config - Client configuration object.
19858
19882
  * @param config.baseUrl - Obol API base URL. Defaults to `https://api.obol.tech`.
19883
+ * Must match one of {@link ALLOWED_OBOL_API_BASE_URLS} (API paths use `/v1/...` separately).
19859
19884
  * @param config.chainId - Target chain ID. Defaults to `560048` (Hoodi).
19860
19885
  * Supported: 1 (Mainnet), 560048 (Hoodi), 100 (Gnosis), 11155111 (Sepolia).
19861
19886
  * @param signer - An ethers `Wallet` or `JsonRpcSigner`. Required for any
@@ -19873,8 +19898,8 @@ var Client = class extends Base {
19873
19898
  * const client = new Client({ chainId: 560048 }, signer);
19874
19899
  * ```
19875
19900
  */
19876
- constructor(config2, signer, provider) {
19877
- super(config2);
19901
+ constructor(config, signer, provider) {
19902
+ super(config);
19878
19903
  this.signer = signer;
19879
19904
  this.provider = provider != null ? provider : signer && "provider" in signer ? signer.provider : void 0;
19880
19905
  this.incentives = new Incentives(
@@ -20437,6 +20462,7 @@ var Client = class extends Base {
20437
20462
  };
20438
20463
  // Annotate the CommonJS export names for ESM import in node:
20439
20464
  0 && (module.exports = {
20465
+ ALLOWED_OBOL_API_BASE_URLS,
20440
20466
  AVAILABLE_SPLITTER_CHAINS,
20441
20467
  CAPELLA_FORK_MAPPING,
20442
20468
  CHAIN_CONFIGURATION,
@@ -20469,6 +20495,7 @@ var Client = class extends Base {
20469
20495
  FORK_NAMES,
20470
20496
  GENESIS_VALIDATOR_ROOT,
20471
20497
  Incentives,
20498
+ InvalidBaseUrlError,
20472
20499
  OBOL_SDK_EMAIL,
20473
20500
  ObolSplits,
20474
20501
  OperatorConfigHashSigningTypes,