@did-btcr2/api 0.5.0 → 0.8.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.
package/dist/cjs/index.js CHANGED
@@ -1242,14 +1242,14 @@ var CasApi = class {
1242
1242
  }
1243
1243
  };
1244
1244
 
1245
- // src/kms.ts
1246
- var import_kms = require("@did-btcr2/kms");
1245
+ // src/key-manager.ts
1246
+ var import_key_manager = require("@did-btcr2/key-manager");
1247
1247
  var KeyManagerApi = class {
1248
1248
  /** The backing KeyManager instance. */
1249
1249
  kms;
1250
1250
  /** Create a new KeyManagerApi, optionally backed by a custom KeyManager. */
1251
1251
  constructor(kms) {
1252
- this.kms = kms ?? new import_kms.Kms();
1252
+ this.kms = kms ?? new import_key_manager.LocalKeyManager();
1253
1253
  }
1254
1254
  /** Generate a new key directly in the KMS. */
1255
1255
  generateKey(options) {
@@ -1269,13 +1269,17 @@ var KeyManagerApi = class {
1269
1269
  }
1270
1270
  /**
1271
1271
  * Export a Schnorr keypair from the KMS.
1272
- * Only supported when the backing KMS is the built-in {@link Kms} class.
1273
- * @throws {Error} If the backing KMS does not support key export.
1272
+ * Routes through the KeyManager's declared capability (`canExport`) rather
1273
+ * than an `instanceof LocalKeyManager` check, so third-party adapters can
1274
+ * opt in to export support without coupling to a specific implementation.
1275
+ * External adapters (AWS, Vault, HSM) typically advertise `canExport: false`.
1276
+ * @throws {Error} If the backing KeyManager does not advertise canExport=true,
1277
+ * or omits the optional `exportKey` method.
1274
1278
  */
1275
1279
  export(id) {
1276
- if (!(this.kms instanceof import_kms.Kms)) {
1280
+ if (!this.kms.canExport || !this.kms.exportKey) {
1277
1281
  throw new Error(
1278
- "Key export is not supported by the current KeyManager implementation. Export is only available with the built-in Kms class."
1282
+ "Key export is not supported by the current KeyManager implementation. The adapter must advertise `canExport: true` and provide an `exportKey` method."
1279
1283
  );
1280
1284
  }
1281
1285
  return this.kms.exportKey(id);
@@ -1292,13 +1296,13 @@ var KeyManagerApi = class {
1292
1296
  * Sign data via the KMS.
1293
1297
  * @param data The data to sign (must be non-empty).
1294
1298
  * @param id Optional key identifier; uses the active key if omitted.
1295
- * @param options Signing options (scheme defaults to 'schnorr').
1299
+ * @param options Signing options. Defaults: `scheme: 'bip340'`.
1296
1300
  */
1297
1301
  sign(data, id, options) {
1298
1302
  assertBytes(data, "data");
1299
1303
  return this.kms.sign(data, id, options);
1300
1304
  }
1301
- /** Verify a signature via the KMS. */
1305
+ /** Verify a signature via the KMS. Defaults: `scheme: 'bip340'`. */
1302
1306
  verify(signature, data, id, options) {
1303
1307
  return this.kms.verify(signature, data, id, options);
1304
1308
  }
@@ -1892,8 +1896,16 @@ var DidMethodApi = class {
1892
1896
  }
1893
1897
  }
1894
1898
  /**
1895
- * Update an existing DID document. If a Bitcoin connection is configured on
1896
- * the API, it is injected automatically.
1899
+ * Update an existing DID document by driving the sans-I/O {@link Updater} state
1900
+ * machine (from @did-btcr2/method). This method handles the I/O side:
1901
+ * - Signing: supplies the {@link Signer} to `NeedSigningKey`.
1902
+ * - Broadcast: establishes a beacon via {@link BeaconFactory} and calls
1903
+ * `broadcastSignal()` with the bitcoin connection configured on the API.
1904
+ *
1905
+ * For multi-party aggregation of SMT/CAS beacons, the caller should drive the
1906
+ * Updater directly and delegate `NeedBroadcast` to the aggregation runner
1907
+ * rather than using this high-level method.
1908
+ *
1897
1909
  * @param params The update parameters.
1898
1910
  * @returns The signed update.
1899
1911
  */
@@ -1903,19 +1915,64 @@ var DidMethodApi = class {
1903
1915
  sourceVersionId,
1904
1916
  verificationMethodId,
1905
1917
  beaconId,
1906
- signingMaterial,
1918
+ signer,
1907
1919
  bitcoin
1908
1920
  }) {
1909
- const btcConnection = bitcoin ?? this.#btc?.connection ?? void 0;
1910
- return await import_method2.DidBtcr2.update({
1921
+ const btcConnection = bitcoin ?? this.#btc?.connection;
1922
+ if (!btcConnection) {
1923
+ throw new import_common3.UpdateError(
1924
+ "Bitcoin connection required for update. Pass a configured `bitcoin` parameter or configure a BitcoinApi on the DidBtcr2Api instance.",
1925
+ import_common3.INVALID_DID_UPDATE,
1926
+ { beaconId }
1927
+ );
1928
+ }
1929
+ this.#log.debug("Updating DID", sourceDocument.id, { beaconId, verificationMethodId });
1930
+ const updater = import_method2.DidBtcr2.update({
1911
1931
  sourceDocument,
1912
1932
  patches,
1913
1933
  sourceVersionId,
1914
1934
  verificationMethodId,
1915
- beaconId,
1916
- signingMaterial,
1917
- bitcoin: btcConnection
1935
+ beaconId
1918
1936
  });
1937
+ let state = updater.advance();
1938
+ while (state.status === "action-required") {
1939
+ for (const need of state.needs) {
1940
+ switch (need.kind) {
1941
+ case "NeedSigningKey": {
1942
+ this.#log.debug("Providing signer for", need.verificationMethodId);
1943
+ updater.provide(need, signer);
1944
+ break;
1945
+ }
1946
+ case "NeedFunding": {
1947
+ this.#log.debug("Checking funding for beacon address %s", need.beaconAddress);
1948
+ const utxos = await btcConnection.rest.address.getUtxos(need.beaconAddress);
1949
+ if (!utxos.length) {
1950
+ throw new import_common3.UpdateError(
1951
+ `Beacon address ${need.beaconAddress} is unfunded. Send BTC to this address before broadcasting the update.`,
1952
+ import_common3.INVALID_DID_UPDATE,
1953
+ { beaconAddress: need.beaconAddress }
1954
+ );
1955
+ }
1956
+ this.#log.debug("Beacon address funded (%d UTXOs)", utxos.length);
1957
+ updater.provide(need);
1958
+ break;
1959
+ }
1960
+ case "NeedBroadcast": {
1961
+ this.#log.debug(
1962
+ "Broadcasting signed update via %s beacon",
1963
+ need.beaconService.type
1964
+ );
1965
+ const beacon = import_method2.BeaconFactory.establish(need.beaconService);
1966
+ await beacon.broadcastSignal(need.signedUpdate, signer, btcConnection);
1967
+ updater.provide(need);
1968
+ break;
1969
+ }
1970
+ }
1971
+ }
1972
+ state = updater.advance();
1973
+ }
1974
+ this.#log.debug("DID update complete", sourceDocument.id);
1975
+ return state.result.signedUpdate;
1919
1976
  }
1920
1977
  /**
1921
1978
  * Get the signing method from a DID document by method ID.
@@ -1937,8 +1994,9 @@ var DidMethodApi = class {
1937
1994
  * .buildUpdate(currentDoc)
1938
1995
  * .patch({ op: 'add', path: '/service/1', value: newService })
1939
1996
  * .version(2)
1940
- * .signer('#initialKey')
1997
+ * .verificationMethodId('#initialKey')
1941
1998
  * .beacon('#beacon-0')
1999
+ * .signer(new LocalSigner(secretKey))
1942
2000
  * .execute();
1943
2001
  * ```
1944
2002
  */
@@ -1963,7 +2021,7 @@ var UpdateBuilder = class {
1963
2021
  #sourceVersionId;
1964
2022
  #verificationMethodId;
1965
2023
  #beaconId;
1966
- #signingMaterial;
2024
+ #signer;
1967
2025
  #bitcoin;
1968
2026
  /** @internal */
1969
2027
  constructor(methodApi, sourceDocument) {
@@ -1985,8 +2043,8 @@ var UpdateBuilder = class {
1985
2043
  this.#sourceVersionId = id;
1986
2044
  return this;
1987
2045
  }
1988
- /** Set the verification method ID used for signing. */
1989
- signer(methodId) {
2046
+ /** Set the verification method ID used for signing the update. */
2047
+ verificationMethodId(methodId) {
1990
2048
  this.#verificationMethodId = methodId;
1991
2049
  return this;
1992
2050
  }
@@ -1995,37 +2053,48 @@ var UpdateBuilder = class {
1995
2053
  this.#beaconId = beaconId;
1996
2054
  return this;
1997
2055
  }
1998
- /** Set the signing material (secret key bytes or hex). */
1999
- signingMaterial(material) {
2000
- this.#signingMaterial = material;
2056
+ /**
2057
+ * Set the {@link Signer} that produces the update's BIP-340 Schnorr proof
2058
+ * and the beacon transaction's ECDSA input signature. Use `LocalSigner`
2059
+ * for in-process secret keys, `KeyManagerSigner` for KMS-managed keys
2060
+ * (AWS, Vault, HSM, etc.), or any custom adapter implementing the `Signer`
2061
+ * interface.
2062
+ */
2063
+ signer(s) {
2064
+ this.#signer = s;
2001
2065
  return this;
2002
2066
  }
2003
2067
  /** Override the Bitcoin connection for this update. */
2004
- withBitcoin(connection) {
2068
+ bitcoin(connection) {
2005
2069
  this.#bitcoin = connection;
2006
2070
  return this;
2007
2071
  }
2008
2072
  /**
2009
2073
  * Execute the update.
2010
- * @throws {Error} If required fields (version, signer, beacon) are missing.
2074
+ * @throws {Error} If required fields (version, verificationMethodId, beacon, signer) are missing.
2011
2075
  */
2012
2076
  async execute() {
2013
2077
  if (this.#sourceVersionId === void 0) {
2014
2078
  throw new Error("UpdateBuilder: sourceVersionId is required. Call .version(id) before .execute().");
2015
2079
  }
2016
2080
  if (!this.#verificationMethodId) {
2017
- throw new Error("UpdateBuilder: verificationMethodId is required. Call .signer(id) before .execute().");
2081
+ throw new Error(
2082
+ "UpdateBuilder: verificationMethodId is required. Call .verificationMethodId(id) before .execute()."
2083
+ );
2018
2084
  }
2019
2085
  if (!this.#beaconId) {
2020
2086
  throw new Error("UpdateBuilder: beaconId is required. Call .beacon(id) before .execute().");
2021
2087
  }
2088
+ if (!this.#signer) {
2089
+ throw new Error("UpdateBuilder: signer is required. Call .signer(s) before .execute().");
2090
+ }
2022
2091
  return this.#methodApi.update({
2023
2092
  sourceDocument: this.#sourceDocument,
2024
2093
  patches: this.#patches,
2025
2094
  sourceVersionId: this.#sourceVersionId,
2026
2095
  verificationMethodId: this.#verificationMethodId,
2027
2096
  beaconId: this.#beaconId,
2028
- signingMaterial: this.#signingMaterial,
2097
+ signer: this.#signer,
2029
2098
  bitcoin: this.#bitcoin
2030
2099
  });
2031
2100
  }
@@ -2198,6 +2267,7 @@ var DidBtcr2Api = class {
2198
2267
  patches,
2199
2268
  verificationMethodId,
2200
2269
  beaconId,
2270
+ signer,
2201
2271
  sourceDocument,
2202
2272
  sourceVersionId
2203
2273
  }) {
@@ -2238,7 +2308,8 @@ var DidBtcr2Api = class {
2238
2308
  patches,
2239
2309
  sourceVersionId: versionId,
2240
2310
  verificationMethodId,
2241
- beaconId
2311
+ beaconId,
2312
+ signer
2242
2313
  });
2243
2314
  }
2244
2315
  /**
package/dist/esm/api.js CHANGED
@@ -4,7 +4,7 @@ import { CasApi, DEFAULT_CAS_GATEWAY } from './cas.js';
4
4
  import { CryptoApi } from './crypto.js';
5
5
  import { DidApi } from './did.js';
6
6
  import { assertString, NOOP_LOGGER } from './helpers.js';
7
- import { KeyManagerApi } from './kms.js';
7
+ import { KeyManagerApi } from './key-manager.js';
8
8
  import { DidMethodApi } from './method.js';
9
9
  /**
10
10
  * Main DidBtcr2Api facade — the primary entry point for the SDK.
@@ -171,7 +171,7 @@ export class DidBtcr2Api {
171
171
  * @param params The update parameters.
172
172
  * @returns The signed update.
173
173
  */
174
- async updateDid({ did, patches, verificationMethodId, beaconId, sourceDocument, sourceVersionId, }) {
174
+ async updateDid({ did, patches, verificationMethodId, beaconId, signer, sourceDocument, sourceVersionId, }) {
175
175
  this.#assertNotDisposed();
176
176
  assertString(did, 'did');
177
177
  let doc = sourceDocument;
@@ -204,6 +204,7 @@ export class DidBtcr2Api {
204
204
  sourceVersionId: versionId,
205
205
  verificationMethodId,
206
206
  beaconId,
207
+ signer,
207
208
  });
208
209
  }
209
210
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -6,7 +6,7 @@ export * from './types.js';
6
6
  export * from './helpers.js';
7
7
  export * from './bitcoin.js';
8
8
  export * from './cas.js';
9
- export * from './kms.js';
9
+ export * from './key-manager.js';
10
10
  export * from './crypto.js';
11
11
  export * from './did.js';
12
12
  export * from './method.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAyBpD,gBAAgB;AAChB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAyBpD,gBAAgB;AAChB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
@@ -1,11 +1,16 @@
1
- import { Kms, } from '@did-btcr2/kms';
1
+ import { LocalKeyManager, } from '@did-btcr2/key-manager';
2
2
  import { assertBytes } from './helpers.js';
3
3
  /**
4
4
  * Key management operations sub-facade.
5
5
  *
6
- * Wraps a {@link KeyManager} interface. By default uses the built-in
7
- * {@link Kms} implementation; a custom implementation can be injected
8
- * via {@link ApiConfig}.
6
+ * Wraps any {@link KeyManager} interface implementation. By default uses the
7
+ * bundled {@link LocalKeyManager} (in-process reference implementation); a
8
+ * custom implementation (AWS KMS, GCP KMS, HashiCorp Vault, HSM, etc.) can
9
+ * be injected via {@link ApiConfig}.
10
+ *
11
+ * The field is named `kms` because that's the category label callers use
12
+ * conversationally ("plug in your KMS"); the actual contract is the
13
+ * {@link KeyManager} interface.
9
14
  * @public
10
15
  */
11
16
  export class KeyManagerApi {
@@ -13,7 +18,7 @@ export class KeyManagerApi {
13
18
  kms;
14
19
  /** Create a new KeyManagerApi, optionally backed by a custom KeyManager. */
15
20
  constructor(kms) {
16
- this.kms = kms ?? new Kms();
21
+ this.kms = kms ?? new LocalKeyManager();
17
22
  }
18
23
  /** Generate a new key directly in the KMS. */
19
24
  generateKey(options) {
@@ -33,13 +38,17 @@ export class KeyManagerApi {
33
38
  }
34
39
  /**
35
40
  * Export a Schnorr keypair from the KMS.
36
- * Only supported when the backing KMS is the built-in {@link Kms} class.
37
- * @throws {Error} If the backing KMS does not support key export.
41
+ * Routes through the KeyManager's declared capability (`canExport`) rather
42
+ * than an `instanceof LocalKeyManager` check, so third-party adapters can
43
+ * opt in to export support without coupling to a specific implementation.
44
+ * External adapters (AWS, Vault, HSM) typically advertise `canExport: false`.
45
+ * @throws {Error} If the backing KeyManager does not advertise canExport=true,
46
+ * or omits the optional `exportKey` method.
38
47
  */
39
48
  export(id) {
40
- if (!(this.kms instanceof Kms)) {
49
+ if (!this.kms.canExport || !this.kms.exportKey) {
41
50
  throw new Error('Key export is not supported by the current KeyManager implementation. '
42
- + 'Export is only available with the built-in Kms class.');
51
+ + 'The adapter must advertise `canExport: true` and provide an `exportKey` method.');
43
52
  }
44
53
  return this.kms.exportKey(id);
45
54
  }
@@ -55,13 +64,13 @@ export class KeyManagerApi {
55
64
  * Sign data via the KMS.
56
65
  * @param data The data to sign (must be non-empty).
57
66
  * @param id Optional key identifier; uses the active key if omitted.
58
- * @param options Signing options (scheme defaults to 'schnorr').
67
+ * @param options Signing options. Defaults: `scheme: 'bip340'`.
59
68
  */
60
69
  sign(data, id, options) {
61
70
  assertBytes(data, 'data');
62
71
  return this.kms.sign(data, id, options);
63
72
  }
64
- /** Verify a signature via the KMS. */
73
+ /** Verify a signature via the KMS. Defaults: `scheme: 'bip340'`. */
65
74
  verify(signature, data, id, options) {
66
75
  return this.kms.verify(signature, data, id, options);
67
76
  }
@@ -70,4 +79,4 @@ export class KeyManagerApi {
70
79
  return this.kms.digest(data);
71
80
  }
72
81
  }
73
- //# sourceMappingURL=kms.js.map
82
+ //# sourceMappingURL=key-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-manager.js","sourceRoot":"","sources":["../../src/key-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,aAAa;IACxB,uCAAuC;IAC9B,GAAG,CAAa;IAEzB,4EAA4E;IAC5E,YAAY,GAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,eAAe,EAAE,CAAC;IAC1C,CAAC;IAED,8CAA8C;IAC9C,WAAW,CAAC,OAA4B;QACtC,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,4CAA4C;IAC5C,SAAS,CAAC,EAAiB;QACzB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,qDAAqD;IACrD,YAAY,CAAC,EAAkB;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,6CAA6C;IAC7C,MAAM,CAAC,EAAkB,EAAE,OAA0B;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,wEAAwE;kBACtE,iFAAiF,CACpF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,wCAAwC;IACxC,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,iCAAiC;IACjC,SAAS,CAAC,EAAiB,EAAE,UAA+B,EAAE;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,IAAW,EAAE,EAAkB,EAAE,OAAqB;QACzD,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,SAAyB,EAAE,IAAW,EAAE,EAAkB,EAAE,OAAuB;QACxF,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,gCAAgC;IAChC,MAAM,CAAC,IAAgB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
- import { decode as decodeHash, IdentifierTypes, NotImplementedError } from '@did-btcr2/common';
2
- import { BeaconSignalDiscovery, DidBtcr2 } from '@did-btcr2/method';
1
+ import { decode as decodeHash, IdentifierTypes, INVALID_DID_UPDATE, NotImplementedError, UpdateError } from '@did-btcr2/common';
2
+ import { BeaconFactory, BeaconSignalDiscovery, DidBtcr2 } from '@did-btcr2/method';
3
3
  import { assertBytes, assertCompressedPubkey, assertString, NOOP_LOGGER } from './helpers.js';
4
4
  /**
5
5
  * DID method operations sub-facade: create, resolve, update, deactivate.
@@ -125,22 +125,72 @@ export class DidMethodApi {
125
125
  }
126
126
  }
127
127
  /**
128
- * Update an existing DID document. If a Bitcoin connection is configured on
129
- * the API, it is injected automatically.
128
+ * Update an existing DID document by driving the sans-I/O {@link Updater} state
129
+ * machine (from @did-btcr2/method). This method handles the I/O side:
130
+ * - Signing: supplies the {@link Signer} to `NeedSigningKey`.
131
+ * - Broadcast: establishes a beacon via {@link BeaconFactory} and calls
132
+ * `broadcastSignal()` with the bitcoin connection configured on the API.
133
+ *
134
+ * For multi-party aggregation of SMT/CAS beacons, the caller should drive the
135
+ * Updater directly and delegate `NeedBroadcast` to the aggregation runner
136
+ * rather than using this high-level method.
137
+ *
130
138
  * @param params The update parameters.
131
139
  * @returns The signed update.
132
140
  */
133
- async update({ sourceDocument, patches, sourceVersionId, verificationMethodId, beaconId, signingMaterial, bitcoin, }) {
134
- const btcConnection = bitcoin ?? this.#btc?.connection ?? undefined;
135
- return await DidBtcr2.update({
141
+ async update({ sourceDocument, patches, sourceVersionId, verificationMethodId, beaconId, signer, bitcoin, }) {
142
+ // Bitcoin connection resolution order: per-call `bitcoin` param wins over the
143
+ // BitcoinApi injected at DidBtcr2Api construction time. One of the two must
144
+ // be present; this can't be encoded in the type system, so it's a runtime check.
145
+ const btcConnection = bitcoin ?? this.#btc?.connection;
146
+ if (!btcConnection) {
147
+ throw new UpdateError('Bitcoin connection required for update. Pass a configured `bitcoin` parameter '
148
+ + 'or configure a BitcoinApi on the DidBtcr2Api instance.', INVALID_DID_UPDATE, { beaconId });
149
+ }
150
+ this.#log.debug('Updating DID', sourceDocument.id, { beaconId, verificationMethodId });
151
+ // Factory validates and returns a sans-I/O state machine
152
+ const updater = DidBtcr2.update({
136
153
  sourceDocument,
137
154
  patches,
138
155
  sourceVersionId,
139
156
  verificationMethodId,
140
157
  beaconId,
141
- signingMaterial,
142
- bitcoin: btcConnection,
143
158
  });
159
+ // Drive the state machine. All I/O (signing delegation, Bitcoin broadcast)
160
+ // happens inside the need-handlers below — the Updater itself is pure.
161
+ let state = updater.advance();
162
+ while (state.status === 'action-required') {
163
+ for (const need of state.needs) {
164
+ switch (need.kind) {
165
+ case 'NeedSigningKey': {
166
+ this.#log.debug('Providing signer for', need.verificationMethodId);
167
+ updater.provide(need, signer);
168
+ break;
169
+ }
170
+ case 'NeedFunding': {
171
+ this.#log.debug('Checking funding for beacon address %s', need.beaconAddress);
172
+ const utxos = await btcConnection.rest.address.getUtxos(need.beaconAddress);
173
+ if (!utxos.length) {
174
+ throw new UpdateError(`Beacon address ${need.beaconAddress} is unfunded. `
175
+ + 'Send BTC to this address before broadcasting the update.', INVALID_DID_UPDATE, { beaconAddress: need.beaconAddress });
176
+ }
177
+ this.#log.debug('Beacon address funded (%d UTXOs)', utxos.length);
178
+ updater.provide(need);
179
+ break;
180
+ }
181
+ case 'NeedBroadcast': {
182
+ this.#log.debug('Broadcasting signed update via %s beacon', need.beaconService.type);
183
+ const beacon = BeaconFactory.establish(need.beaconService);
184
+ await beacon.broadcastSignal(need.signedUpdate, signer, btcConnection);
185
+ updater.provide(need);
186
+ break;
187
+ }
188
+ }
189
+ }
190
+ state = updater.advance();
191
+ }
192
+ this.#log.debug('DID update complete', sourceDocument.id);
193
+ return state.result.signedUpdate;
144
194
  }
145
195
  /**
146
196
  * Get the signing method from a DID document by method ID.
@@ -162,8 +212,9 @@ export class DidMethodApi {
162
212
  * .buildUpdate(currentDoc)
163
213
  * .patch({ op: 'add', path: '/service/1', value: newService })
164
214
  * .version(2)
165
- * .signer('#initialKey')
215
+ * .verificationMethodId('#initialKey')
166
216
  * .beacon('#beacon-0')
217
+ * .signer(new LocalSigner(secretKey))
167
218
  * .execute();
168
219
  * ```
169
220
  */
@@ -192,7 +243,7 @@ export class UpdateBuilder {
192
243
  #sourceVersionId;
193
244
  #verificationMethodId;
194
245
  #beaconId;
195
- #signingMaterial;
246
+ #signer;
196
247
  #bitcoin;
197
248
  /** @internal */
198
249
  constructor(methodApi, sourceDocument) {
@@ -214,8 +265,8 @@ export class UpdateBuilder {
214
265
  this.#sourceVersionId = id;
215
266
  return this;
216
267
  }
217
- /** Set the verification method ID used for signing. */
218
- signer(methodId) {
268
+ /** Set the verification method ID used for signing the update. */
269
+ verificationMethodId(methodId) {
219
270
  this.#verificationMethodId = methodId;
220
271
  return this;
221
272
  }
@@ -224,37 +275,47 @@ export class UpdateBuilder {
224
275
  this.#beaconId = beaconId;
225
276
  return this;
226
277
  }
227
- /** Set the signing material (secret key bytes or hex). */
228
- signingMaterial(material) {
229
- this.#signingMaterial = material;
278
+ /**
279
+ * Set the {@link Signer} that produces the update's BIP-340 Schnorr proof
280
+ * and the beacon transaction's ECDSA input signature. Use `LocalSigner`
281
+ * for in-process secret keys, `KeyManagerSigner` for KMS-managed keys
282
+ * (AWS, Vault, HSM, etc.), or any custom adapter implementing the `Signer`
283
+ * interface.
284
+ */
285
+ signer(s) {
286
+ this.#signer = s;
230
287
  return this;
231
288
  }
232
289
  /** Override the Bitcoin connection for this update. */
233
- withBitcoin(connection) {
290
+ bitcoin(connection) {
234
291
  this.#bitcoin = connection;
235
292
  return this;
236
293
  }
237
294
  /**
238
295
  * Execute the update.
239
- * @throws {Error} If required fields (version, signer, beacon) are missing.
296
+ * @throws {Error} If required fields (version, verificationMethodId, beacon, signer) are missing.
240
297
  */
241
298
  async execute() {
242
299
  if (this.#sourceVersionId === undefined) {
243
300
  throw new Error('UpdateBuilder: sourceVersionId is required. Call .version(id) before .execute().');
244
301
  }
245
302
  if (!this.#verificationMethodId) {
246
- throw new Error('UpdateBuilder: verificationMethodId is required. Call .signer(id) before .execute().');
303
+ throw new Error('UpdateBuilder: verificationMethodId is required. '
304
+ + 'Call .verificationMethodId(id) before .execute().');
247
305
  }
248
306
  if (!this.#beaconId) {
249
307
  throw new Error('UpdateBuilder: beaconId is required. Call .beacon(id) before .execute().');
250
308
  }
309
+ if (!this.#signer) {
310
+ throw new Error('UpdateBuilder: signer is required. Call .signer(s) before .execute().');
311
+ }
251
312
  return this.#methodApi.update({
252
313
  sourceDocument: this.#sourceDocument,
253
314
  patches: this.#patches,
254
315
  sourceVersionId: this.#sourceVersionId,
255
316
  verificationMethodId: this.#verificationMethodId,
256
317
  beaconId: this.#beaconId,
257
- signingMaterial: this.#signingMaterial,
318
+ signer: this.#signer,
258
319
  bitcoin: this.#bitcoin,
259
320
  });
260
321
  }
@@ -1 +1 @@
1
- {"version":3,"file":"method.js","sourceRoot":"","sources":["../../src/method.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"method.js","sourceRoot":"","sources":["../../src/method.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import type { NetworkName } from '@did-btcr2/bitcoin';
2
2
  import type { DocumentBytes, KeyBytes, PatchOperation } from '@did-btcr2/common';
3
3
  import type { SignedBTCR2Update } from '@did-btcr2/cryptosuite';
4
- import type { KeyIdentifier } from '@did-btcr2/kms';
4
+ import type { Signer } from '@did-btcr2/keypair';
5
+ import type { KeyIdentifier } from '@did-btcr2/key-manager';
5
6
  import type { Btcr2DidDocument, DidCreateOptions, ResolutionOptions } from '@did-btcr2/method';
6
7
  import type { DidResolutionResult } from '@web5/dids';
7
8
  import { BitcoinApi } from './bitcoin.js';
8
9
  import { CasApi } from './cas.js';
9
10
  import { CryptoApi } from './crypto.js';
10
11
  import { DidApi } from './did.js';
11
- import { KeyManagerApi } from './kms.js';
12
+ import { KeyManagerApi } from './key-manager.js';
12
13
  import { DidMethodApi } from './method.js';
13
14
  import type { ApiConfig, ResolutionResult } from './types.js';
14
15
  /**
@@ -99,11 +100,12 @@ export declare class DidBtcr2Api {
99
100
  * @param params The update parameters.
100
101
  * @returns The signed update.
101
102
  */
102
- updateDid({ did, patches, verificationMethodId, beaconId, sourceDocument, sourceVersionId, }: {
103
+ updateDid({ did, patches, verificationMethodId, beaconId, signer, sourceDocument, sourceVersionId, }: {
103
104
  did: string;
104
105
  patches: PatchOperation[];
105
106
  verificationMethodId: string;
106
107
  beaconId: string;
108
+ signer: Signer;
107
109
  sourceDocument?: Btcr2DidDocument;
108
110
  sourceVersionId?: number;
109
111
  }): Promise<SignedBTCR2Update>;