@sidhujag/sysweb3-keyring 2.1.2 → 2.1.3

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 (38) hide show
  1. package/README.md +8 -0
  2. package/cjs/current-vault-refusal.js +6 -0
  3. package/cjs/current-vault-refusal.js.map +1 -0
  4. package/cjs/evm-fees.js +29 -1
  5. package/cjs/evm-fees.js.map +1 -1
  6. package/cjs/keyring-core.js +349 -84
  7. package/cjs/keyring-core.js.map +1 -1
  8. package/cjs/keyring-manager.js +100 -4
  9. package/cjs/keyring-manager.js.map +1 -1
  10. package/cjs/software.js +14 -1
  11. package/cjs/software.js.map +1 -1
  12. package/cjs/storage-core.js +44 -4
  13. package/cjs/storage-core.js.map +1 -1
  14. package/cjs/transactions/ethereum.js +52 -65
  15. package/cjs/transactions/ethereum.js.map +1 -1
  16. package/cjs/transactions/evm-cancellation.js +43 -0
  17. package/cjs/transactions/evm-cancellation.js.map +1 -0
  18. package/esm/ledger/dmk-host.js +31 -0
  19. package/esm/ledger/dmk-host.js.map +1 -0
  20. package/esm/ledger/dmk-selected-host.js +6 -0
  21. package/esm/ledger/dmk-selected-host.js.map +1 -0
  22. package/esm/ledger/dmk-session.js +153 -34
  23. package/esm/ledger/dmk-session.js.map +1 -1
  24. package/esm/ledger-host.js +3 -27
  25. package/esm/ledger-host.js.map +1 -1
  26. package/package.json +13 -1
  27. package/types/current-vault-refusal.d.ts +2 -0
  28. package/types/evm-fees.d.ts +25 -0
  29. package/types/keyring-core.d.ts +36 -3
  30. package/types/keyring-manager.d.ts +15 -3
  31. package/types/ledger/dmk-host.d.ts +7 -0
  32. package/types/ledger/dmk-selected-host.d.ts +7 -0
  33. package/types/ledger/dmk-session.d.ts +10 -2
  34. package/types/ledger-host.d.ts +6 -2
  35. package/types/software.d.ts +4 -3
  36. package/types/storage-core.d.ts +3 -1
  37. package/types/storage.d.ts +1 -1
  38. package/types/transactions/evm-cancellation.d.ts +10 -0
@@ -1,15 +1,49 @@
1
1
  import { ledgerCancelledError, ledgerHostError, } from './host-types';
2
+ function snapshotDiscoveredDevice(candidate) {
3
+ const invalid = () => ledgerHostError('LEDGER_INVALID_DEVICE', 'Invalid Ledger discovery handle');
4
+ if (!candidate ||
5
+ Object.getPrototypeOf(candidate) !== Object.prototype ||
6
+ 'sessionId' in candidate)
7
+ throw invalid();
8
+ const ownValue = (key) => Object.getOwnPropertyDescriptor(candidate, key)?.value;
9
+ const id = ownValue('id');
10
+ const transport = ownValue('transport');
11
+ const name = ownValue('name');
12
+ const deviceModel = ownValue('deviceModel');
13
+ if (typeof id !== 'string' ||
14
+ !id.trim() ||
15
+ typeof transport !== 'string' ||
16
+ !transport.trim() ||
17
+ typeof name !== 'string' ||
18
+ !deviceModel ||
19
+ typeof deviceModel !== 'object' ||
20
+ Array.isArray(deviceModel))
21
+ throw invalid();
22
+ // The vendor uses transport and ID to connect. Keep a stable snapshot
23
+ // without copying extra fields, particularly the reconnect discriminator.
24
+ return Object.freeze({
25
+ id,
26
+ transport,
27
+ name,
28
+ deviceModel: deviceModel,
29
+ });
30
+ }
2
31
  /** One owner and one semantic operation at a time, across EVM and UTXO apps. */
3
32
  export class LedgerDmkSession {
4
- constructor(dmk) {
33
+ constructor(dmk, requireDeviceSelection = false) {
5
34
  this.dmk = dmk;
35
+ this.requireDeviceSelection = requireDeviceSelection;
6
36
  this.generation = 0;
7
37
  this.queue = Promise.resolve();
8
38
  this.closing = Promise.resolve();
9
39
  this.invalidationListeners = new Set();
10
40
  }
41
+ get readyConnection() {
42
+ // A provisional lease belongs to cleanup until its picker accepts handoff.
43
+ return this.connection?.pendingSelection ? undefined : this.connection;
44
+ }
11
45
  getStatus() {
12
- return { connected: this.sessionId !== undefined };
46
+ return { connected: this.readyConnection !== undefined };
13
47
  }
14
48
  onInvalidated(listener) {
15
49
  this.invalidationListeners.add(listener);
@@ -17,35 +51,95 @@ export class LedgerDmkSession {
17
51
  }
18
52
  invalidate() {
19
53
  this.generation++;
54
+ this.deviceSelection = undefined;
20
55
  for (const listener of this.invalidationListeners)
21
56
  listener();
22
57
  }
58
+ /** The platform passes one candidate from its own current DMK picker. */
59
+ beginDeviceSelection(signal) {
60
+ if (signal?.aborted)
61
+ throw ledgerCancelledError();
62
+ if (this.connection || this.connectionAttempt)
63
+ throw this.connectionBusy();
64
+ this.requireDeviceSelection = true;
65
+ const selection = {};
66
+ this.deviceSelection = selection;
67
+ let used = false;
68
+ const assertCurrent = () => {
69
+ if (this.deviceSelection !== selection || signal?.aborted)
70
+ throw ledgerCancelledError();
71
+ };
72
+ return async (candidate) => {
73
+ assertCurrent();
74
+ if (used)
75
+ throw ledgerCancelledError();
76
+ used = true;
77
+ try {
78
+ const device = snapshotDiscoveredDevice(candidate);
79
+ assertCurrent();
80
+ await this.startConnection({}, { signal }, { device, owner: selection });
81
+ const connection = this.connection;
82
+ // The connection listener is gone by this handoff. A close in that
83
+ // interval must still retire this selection's newly acquired session.
84
+ if (connection?.pendingSelection === selection && signal?.aborted)
85
+ await this.disconnect();
86
+ assertCurrent();
87
+ if (connection?.pendingSelection !== selection)
88
+ throw ledgerCancelledError();
89
+ connection.pendingSelection = undefined;
90
+ }
91
+ finally {
92
+ if (this.deviceSelection === selection)
93
+ this.deviceSelection = undefined;
94
+ }
95
+ };
96
+ }
23
97
  /** Device selection belongs to the visible host, never to a dapp request. */
24
98
  connect(request = {}, options = {}) {
25
99
  if (options.signal?.aborted)
26
100
  return Promise.reject(ledgerCancelledError());
27
- if (this.sessionId)
101
+ if (this.readyConnection?.sessionId)
28
102
  return Promise.resolve();
103
+ if (this.requireDeviceSelection)
104
+ return Promise.reject(ledgerHostError('HARDWARE_SIGNER_UNAVAILABLE', 'Select a Ledger device first'));
105
+ return this.startConnection(request, options);
106
+ }
107
+ connectionBusy() {
108
+ return ledgerHostError('HARDWARE_SIGNER_BUSY', 'Ledger connection is already pending or active');
109
+ }
110
+ startConnection(request, options, selected) {
111
+ if (options.signal?.aborted)
112
+ return Promise.reject(ledgerCancelledError());
29
113
  if (this.connectionAttempt)
30
- return Promise.reject(ledgerHostError('HARDWARE_SIGNER_BUSY', 'Ledger connection is already pending'));
114
+ return Promise.reject(this.connectionBusy());
31
115
  const controller = new AbortController();
32
116
  this.connectionAbort = controller;
33
117
  const abort = () => controller.abort();
34
118
  options.signal?.addEventListener('abort', abort, { once: true });
35
- const attempt = this.connectDevice(request, controller.signal);
119
+ const attempt = this.connectDevice(request, controller.signal, selected);
36
120
  this.connectionAttempt = attempt;
37
- return attempt.finally(() => {
121
+ return attempt.finally(async () => {
38
122
  options.signal?.removeEventListener('abort', abort);
39
- if (this.connectionAttempt === attempt)
40
- this.connectionAttempt = undefined;
41
- if (this.connectionAbort === controller)
42
- this.connectionAbort = undefined;
123
+ try {
124
+ if (controller.signal.aborted) {
125
+ if (this.connection)
126
+ await this.disconnect();
127
+ else
128
+ await this.closing;
129
+ throw ledgerCancelledError();
130
+ }
131
+ }
132
+ finally {
133
+ if (this.connectionAttempt === attempt)
134
+ this.connectionAttempt = undefined;
135
+ if (this.connectionAbort === controller)
136
+ this.connectionAbort = undefined;
137
+ }
43
138
  });
44
139
  }
45
- async connectDevice(request, signal) {
46
- const generation = this.generation;
140
+ discoverDevice(request, signal) {
47
141
  let subscription;
48
- const device = await new Promise((resolve, reject) => {
142
+ return new Promise((resolve, reject) => {
49
143
  let settled = false;
50
144
  const timer = request.useGrantedDevices
51
145
  ? setTimeout(() => finish(ledgerHostError('HARDWARE_SIGNER_UNAVAILABLE', 'Select a Ledger device in the Ledger window')), 3000)
@@ -89,34 +183,56 @@ export class LedgerDmkSession {
89
183
  if (settled)
90
184
  subscription?.unsubscribe();
91
185
  });
92
- if (generation !== this.generation || signal.aborted)
186
+ }
187
+ async connectDevice(request, signal, selected) {
188
+ const generation = this.generation;
189
+ const isCurrent = () => generation === this.generation && !signal.aborted;
190
+ const device = selected?.device ?? (await this.discoverDevice(request, signal));
191
+ if (!isCurrent())
93
192
  throw ledgerCancelledError();
94
193
  await this.closing;
194
+ if (!isCurrent())
195
+ throw ledgerCancelledError();
95
196
  const sessionId = await this.dmk.connect({ device });
96
- if (generation !== this.generation || signal.aborted) {
197
+ const connection = { sessionId, pendingSelection: selected?.owner };
198
+ let subscription;
199
+ let ended = false;
200
+ try {
201
+ if (!isCurrent())
202
+ throw ledgerCancelledError();
203
+ subscription = this.dmk.getDeviceSessionState({ sessionId }).subscribe({
204
+ error: () => {
205
+ ended = true;
206
+ if (isCurrent() && this.connection === connection)
207
+ void this.disconnect();
208
+ },
209
+ complete: () => {
210
+ ended = true;
211
+ if (isCurrent() && this.connection === connection) {
212
+ this.connection = undefined;
213
+ this.invalidate();
214
+ this.activeAbort?.abort();
215
+ this.activeCancel?.();
216
+ }
217
+ },
218
+ });
219
+ if (ended || !isCurrent())
220
+ throw ledgerCancelledError();
221
+ }
222
+ catch (error) {
223
+ subscription?.unsubscribe();
97
224
  await this.dmk.disconnect({ sessionId }).catch(() => undefined);
98
- throw ledgerCancelledError();
225
+ throw error;
99
226
  }
100
- this.sessionId = sessionId;
101
- this.stateSubscription = this.dmk
102
- .getDeviceSessionState({ sessionId })
103
- .subscribe({
104
- complete: () => {
105
- if (this.sessionId === sessionId) {
106
- this.sessionId = undefined;
107
- this.invalidate();
108
- this.activeAbort?.abort();
109
- this.activeCancel?.();
110
- }
111
- },
112
- });
227
+ this.connection = connection;
228
+ this.stateSubscription = subscription;
113
229
  }
114
230
  /** Cancel revokes the result and closes I/O; it cannot undo on-device approval. */
115
231
  disconnect() {
116
232
  this.invalidate();
117
233
  this.connectionAbort?.abort();
118
- const sessionId = this.sessionId;
119
- this.sessionId = undefined;
234
+ const sessionId = this.connection?.sessionId;
235
+ this.connection = undefined;
120
236
  this.activeAbort?.abort();
121
237
  this.activeAbort = undefined;
122
238
  this.activeCancel?.();
@@ -131,13 +247,16 @@ export class LedgerDmkSession {
131
247
  }
132
248
  runExclusive(operation, options = {}) {
133
249
  const generation = this.generation;
250
+ const admitted = this.readyConnection;
134
251
  const run = async () => {
135
252
  await this.closing;
136
- const sessionId = this.sessionId;
253
+ const connection = this.readyConnection;
137
254
  const assertCurrent = () => {
138
255
  if (generation !== this.generation || options.signal?.aborted)
139
256
  throw ledgerCancelledError();
140
- if (!sessionId || this.sessionId !== sessionId)
257
+ if (!connection?.sessionId ||
258
+ this.readyConnection !== connection ||
259
+ (this.requireDeviceSelection && admitted !== connection))
141
260
  throw ledgerHostError('HARDWARE_SIGNER_UNAVAILABLE', 'Connect a Ledger device first');
142
261
  };
143
262
  assertCurrent();
@@ -157,7 +276,7 @@ export class LedgerDmkSession {
157
276
  assertCurrent();
158
277
  const context = {
159
278
  dmk: this.dmk,
160
- sessionId: sessionId,
279
+ sessionId: connection.sessionId,
161
280
  generation,
162
281
  signal: controller.signal,
163
282
  assertCurrent,
@@ -1 +1 @@
1
- {"version":3,"file":"dmk-session.js","sourceRoot":"","sources":["../../../src/ledger/dmk-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dmk-session.js","sourceRoot":"","sources":["../../../src/ledger/dmk-session.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,12 @@
1
1
  /** Heavy browser host entry. Do not import from the wallet worker or software entry. */
2
- import { DeviceManagementKitBuilder, } from '@ledgerhq/device-management-kit';
2
+ import { DeviceManagementKitBuilder } from '@ledgerhq/device-management-kit';
3
3
  import { webHidTransportFactory } from '@ledgerhq/device-transport-kit-web-hid';
4
- import { createLedgerEvmAdapter } from './ledger/dmk-evm';
5
- import { LedgerDmkSession } from './ledger/dmk-session';
6
- import { createLedgerUtxoAdapter } from './ledger/dmk-utxo';
7
- import { ledgerHostError } from './ledger/host-types';
4
+ import { createLedgerHostForDmk } from './ledger/dmk-host';
8
5
  export function createLedgerDmkHost(config = {}) {
9
6
  const candidate = config.dmk ??
10
7
  new DeviceManagementKitBuilder()
11
8
  .addTransport(webHidTransportFactory)
12
9
  .build();
13
- for (const method of [
14
- 'connect',
15
- 'disconnect',
16
- 'executeDeviceAction',
17
- 'startDiscovering',
18
- 'listenToAvailableDevices',
19
- 'getDeviceSessionState',
20
- ]) {
21
- if (typeof candidate[method] !== 'function')
22
- throw ledgerHostError('LEDGER_INVALID_HOST', 'Invalid Ledger device manager');
23
- }
24
- // Keep upstream exports-only types out of this public declaration. A trusted
25
- // platform supplies its concrete DMK here; dapps cannot select this object.
26
- const dmk = candidate;
27
- const session = new LedgerDmkSession(dmk);
28
- return {
29
- connect: (request, options) => session.connect(request, options),
30
- disconnect: () => session.disconnect(),
31
- getStatus: () => session.getStatus(),
32
- evm: createLedgerEvmAdapter(session, config),
33
- utxo: createLedgerUtxoAdapter(session),
34
- };
10
+ return createLedgerHostForDmk(candidate, config, config.requireDeviceSelection);
35
11
  }
36
12
  //# sourceMappingURL=ledger-host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-host.js","sourceRoot":"","sources":["../../src/ledger-host.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EACL,0BAA0B,GAE3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAStD,MAAM,UAAU,mBAAmB,CACjC,SAA8B,EAAE;IAEhC,MAAM,SAAS,GACb,MAAM,CAAC,GAAG;QACV,IAAI,0BAA0B,EAAE;aAC7B,YAAY,CAAC,sBAAsB,CAAC;aACpC,KAAK,EAAE,CAAC;IACb,KAAK,MAAM,MAAM,IAAI;QACnB,SAAS;QACT,YAAY;QACZ,qBAAqB;QACrB,kBAAkB;QAClB,0BAA0B;QAC1B,uBAAuB;KACxB,EAAE,CAAC;QACF,IAAI,OAAQ,SAAqC,CAAC,MAAM,CAAC,KAAK,UAAU;YACtE,MAAM,eAAe,CACnB,qBAAqB,EACrB,+BAA+B,CAChC,CAAC;IACN,CAAC;IACD,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,GAAG,GAAG,SAAgC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO;QACL,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;QAChE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;QACtC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE;QACpC,GAAG,EAAE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;QAC5C,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ledger-host.js","sourceRoot":"","sources":["../../src/ledger-host.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,sBAAsB,EAAsB,MAAM,mBAAmB,CAAC;AAU/E,MAAM,UAAU,mBAAmB,CACjC,SAA8B,EAAE;IAEhC,MAAM,SAAS,GACb,MAAM,CAAC,GAAG;QACV,IAAI,0BAA0B,EAAE;aAC7B,YAAY,CAAC,sBAAsB,CAAC;aACpC,KAAK,EAAE,CAAC;IACb,OAAO,sBAAsB,CAC3B,SAAS,EACT,MAAM,EACN,MAAM,CAAC,sBAAsB,CAC9B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sidhujag/sysweb3-keyring",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "description": "Keyring Manager for UTXO and Web3 Wallets",
5
5
  "main": "cjs/index.js",
6
6
  "types": "types/index.d.ts",
@@ -24,6 +24,12 @@
24
24
  "cjs/transactions/evm-submission.js": [
25
25
  "types/transactions/evm-submission.d.ts"
26
26
  ],
27
+ "cjs/transactions/evm-cancellation": [
28
+ "types/transactions/evm-cancellation.d.ts"
29
+ ],
30
+ "cjs/transactions/evm-cancellation.js": [
31
+ "types/transactions/evm-cancellation.d.ts"
32
+ ],
27
33
  "cjs/transactions/ethereum": [
28
34
  "types/transactions/ethereum.d.ts"
29
35
  ],
@@ -48,6 +54,12 @@
48
54
  "esm/ledger-host.js": [
49
55
  "types/ledger-host.d.ts"
50
56
  ],
57
+ "esm/ledger/dmk-selected-host": [
58
+ "types/ledger/dmk-selected-host.d.ts"
59
+ ],
60
+ "esm/ledger/dmk-selected-host.js": [
61
+ "types/ledger/dmk-selected-host.d.ts"
62
+ ],
51
63
  "cjs/ledger/host-types": [
52
64
  "types/ledger/host-types.d.ts"
53
65
  ],
@@ -0,0 +1,2 @@
1
+ /** Internal ciphertext comparison for a current-vault tag refusal. */
2
+ export declare const currentVaultRefusals: WeakMap<Error, (vault: string) => boolean>;
@@ -35,6 +35,31 @@ export declare function parseEvmFeeQuantity(value: unknown, label?: string): big
35
35
  * the configured minimum if larger. Callers retain chain/resource bounds.
36
36
  */
37
37
  export declare function bufferedEvmGasLimit(estimate: bigint, minimum?: bigint): bigint;
38
+ export type EvmCancellationFeeInput = Readonly<{
39
+ type: 0;
40
+ currentGasPrice: bigint;
41
+ originalGasPrice?: bigint;
42
+ } | {
43
+ type: 2;
44
+ currentMaxFeePerGas: bigint;
45
+ currentMaxPriorityFeePerGas: bigint;
46
+ originalMaxFeePerGas?: bigint;
47
+ originalMaxPriorityFeePerGas?: bigint;
48
+ }>;
49
+ export declare const EVM_CANCELLATION_GAS_LIMIT = 42000n;
50
+ /** Plan only the cancellation fees. The host validates the rates and envelope. */
51
+ export declare function planEvmCancellationFees(input: EvmCancellationFeeInput): Readonly<{
52
+ type: 0;
53
+ gasLimit: 42000n;
54
+ gasPrice: bigint;
55
+ maximumFee: bigint;
56
+ }> | Readonly<{
57
+ type: 2;
58
+ gasLimit: 42000n;
59
+ maxFeePerGas: bigint;
60
+ maxPriorityFeePerGas: bigint;
61
+ maximumFee: bigint;
62
+ }>;
38
63
  /**
39
64
  * No signer, transport, network registry or provider implementation is imported.
40
65
  * Reads are serialized and guarded; RPC failures never become fabricated fees.
@@ -15,7 +15,32 @@ export interface KeyringStoragePort extends VaultStoragePort {
15
15
  deleteItem(key: string): Promise<void>;
16
16
  /** Legacy adapter capability; fixed native hosts can omit it. */
17
17
  setClient?(client: any): void;
18
+ /** Atomically read this authority's current encrypted vault and salt. */
19
+ readDeviceUnlockVaultPair?(): Promise<DeviceUnlockVaultPair | null>;
18
20
  }
21
+ export type DeviceUnlockVaultPair = Readonly<{
22
+ vault: string;
23
+ keys: unknown;
24
+ pairFingerprint: string;
25
+ }>;
26
+ export type DeviceUnlockCredential = Readonly<{
27
+ pairFingerprint: string;
28
+ key: Uint8Array;
29
+ }>;
30
+ /** Only a trusted software host may supply this protected credential I/O. */
31
+ export type DeviceUnlockPort = Readonly<{
32
+ /** Transfer ownership of the returned key bytes to the SDK. */
33
+ readCredential(pairFingerprint: string): Promise<DeviceUnlockCredential | null>;
34
+ /**
35
+ * Consume the bytes and check the guard before saving. The SDK clears the
36
+ * bytes on settlement. Publish enrollment only after issue returns true.
37
+ */
38
+ writeCredential(credential: DeviceUnlockCredential, assertCurrent: () => void): Promise<void>;
39
+ }>;
40
+ export type DeviceUnlockControls = Readonly<{
41
+ issue(password: string, assertCurrent: () => void): Promise<boolean>;
42
+ resume(assertCurrent: () => void): Promise<boolean>;
43
+ }>;
19
44
  /** Only the device capabilities consumed by the wallet authority. */
20
45
  export interface KeyringLedgerSigner {
21
46
  destroy: LedgerKeyring['destroy'];
@@ -24,6 +49,10 @@ export interface KeyringLedgerSigner {
24
49
  verifyUtxoAddress: LedgerKeyring['verifyUtxoAddress'];
25
50
  }
26
51
  export type KeyringTrezorSigner = Pick<TrezorKeyring, 'destroy' | 'getAccountInfo' | 'getPublicKey' | 'signTypedData' | 'signMessage' | 'signEthTransaction' | 'verifyUtxoAddress'>;
52
+ type SessionOwner = {
53
+ current?: symbol;
54
+ epoch: number;
55
+ };
27
56
  export interface KeyringCoreDependencies<TLedger extends KeyringLedgerSigner | undefined, TTrezor extends KeyringTrezorSigner | undefined> {
28
57
  /** Immutable identity shared only by keyrings in the same wallet authority. */
29
58
  authority: object;
@@ -36,6 +65,12 @@ export interface KeyringCoreDependencies<TLedger extends KeyringLedgerSigner | u
36
65
  syscoinHardwareSigners?: ISyscoinHardwareSigners;
37
66
  /** Trusted host lifecycle, captured before each locally signed EVM submission. */
38
67
  captureEvmSubmission?: CaptureEvmSubmission;
68
+ /** Shared only by software keyrings of the same opted-in host. */
69
+ sessionOwner?: SessionOwner;
70
+ deviceUnlock?: {
71
+ port: DeviceUnlockPort;
72
+ receive(controls: DeviceUnlockControls): void;
73
+ };
39
74
  }
40
75
  export interface ISysAccount {
41
76
  address: string;
@@ -57,6 +92,7 @@ declare class SecureBuffer {
57
92
  isCleared(): boolean;
58
93
  }
59
94
  export declare class KeyringCore<TLedger extends KeyringLedgerSigner | undefined = KeyringLedgerSigner | undefined, TTrezor extends KeyringTrezorSigner | undefined = KeyringTrezorSigner | undefined> {
95
+ #private;
60
96
  trezorSigner: TTrezor;
61
97
  ledgerSigner: TLedger;
62
98
  initialTrezorAccountState: IKeyringAccountState;
@@ -86,9 +122,7 @@ export declare class KeyringCore<TLedger extends KeyringLedgerSigner | undefined
86
122
  isUnlocked: () => boolean;
87
123
  lockWallet: () => Promise<void>;
88
124
  transferSessionTo: (targetKeyring: Pick<KeyringCore, "receiveSessionOwnership">) => void;
89
- private acceptSessionFrom;
90
125
  receiveSessionOwnership: (sessionPassword: SecureBuffer, sessionMnemonic: SecureBuffer) => void;
91
- private replaceSessionBuffers;
92
126
  addNewAccount: (label?: string) => Promise<IKeyringAccountState>;
93
127
  createSmartAccount: ({ address, deriveAccount, label, metadata, }: ICreateSmartAccountParams) => Promise<IKeyringAccountState>;
94
128
  /**
@@ -228,7 +262,6 @@ export declare class KeyringCore<TLedger extends KeyringLedgerSigner | undefined
228
262
  private setDerivedWeb3Accounts;
229
263
  private setSignerEVM;
230
264
  private clearTemporaryLocalKeys;
231
- private recreateSessionFromVault;
232
265
  private _getPrivateKeyAccountInfos;
233
266
  /**
234
267
  * Common method to decrypt mnemonic from session
@@ -2,15 +2,27 @@ import { HardwareWalletManager } from './hardware-wallet-manager';
2
2
  import { KeyringCore } from './keyring-core';
3
3
  import { LedgerKeyring } from './ledger';
4
4
  import { TrezorKeyring } from './trezor';
5
+ import type { DeviceUnlockControls, DeviceUnlockPort, KeyringStoragePort } from './keyring-core';
5
6
  import type { LedgerHost } from './ledger/host-types';
6
7
  import type { CaptureEvmSubmission } from './transactions/evm-submission';
7
8
  import type { IKeyringManager } from './types';
8
9
  export type { ISysAccount } from './keyring-core';
10
+ export type { DeviceUnlockControls, DeviceUnlockPort, DeviceUnlockVaultPair, KeyringStoragePort, } from './keyring-core';
11
+ declare const keyringManagerHostBrand: unique symbol;
12
+ /** Opaque identity for one explicitly configured browser wallet authority. */
13
+ export interface KeyringManagerHost {
14
+ readonly [keyringManagerHostBrand]: true;
15
+ }
16
+ /** Create once for a fixed wallet store and share across replacement managers. */
17
+ export declare function createKeyringManagerHost(storage: KeyringStoragePort, deviceUnlock: DeviceUnlockPort): KeyringManagerHost;
18
+ export type KeyringManagerOptions = {
19
+ captureEvmSubmission?: CaptureEvmSubmission;
20
+ host?: KeyringManagerHost;
21
+ receiveDeviceUnlock?(controls: DeviceUnlockControls): void;
22
+ };
9
23
  /** Existing browser entry. Native/software hosts must use the software entry. */
10
24
  export declare class KeyringManager extends KeyringCore<LedgerKeyring, TrezorKeyring> implements IKeyringManager {
11
- constructor(sharedHardwareWalletManager?: HardwareWalletManager, ledgerHost?: LedgerHost, options?: {
12
- captureEvmSubmission?: CaptureEvmSubmission;
13
- });
25
+ constructor(sharedHardwareWalletManager?: HardwareWalletManager, ledgerHost?: LedgerHost, options?: KeyringManagerOptions);
14
26
  static createInitialized(seed: string, password: string, vaultStateGetter: () => any, options?: {
15
27
  captureEvmSubmission?: CaptureEvmSubmission;
16
28
  }): Promise<KeyringManager>;
@@ -0,0 +1,7 @@
1
+ import { type LedgerEvmConfig, type LedgerHost } from './host-types';
2
+ export interface LedgerDmkHost extends LedgerHost {
3
+ /** Start before enumerating. The returned capability is single use. */
4
+ beginDeviceSelection(signal?: AbortSignal): (candidate: object) => Promise<void>;
5
+ }
6
+ /** Shared implementation; the default browser host supplies its own transport. */
7
+ export declare function createLedgerHostForDmk(candidate: object, config: LedgerEvmConfig, requireDeviceSelection?: boolean): LedgerDmkHost;
@@ -0,0 +1,7 @@
1
+ import { type LedgerDmkHost } from './dmk-host';
2
+ import type { LedgerEvmConfig } from './host-types';
3
+ /** A platform-owned transport and explicit user selection are required. */
4
+ export declare function createSelectedLedgerDmkHost(config: LedgerEvmConfig & {
5
+ dmk: object;
6
+ }): LedgerDmkHost;
7
+ export type { LedgerDmkHost } from './dmk-host';
@@ -30,8 +30,9 @@ export interface LedgerDmkOperation {
30
30
  /** One owner and one semantic operation at a time, across EVM and UTXO apps. */
31
31
  export declare class LedgerDmkSession {
32
32
  readonly dmk: DeviceManagementKit;
33
+ private requireDeviceSelection;
33
34
  private generation;
34
- private sessionId;
35
+ private connection;
35
36
  private queue;
36
37
  private activeCancel;
37
38
  private activeAbort;
@@ -39,17 +40,24 @@ export declare class LedgerDmkSession {
39
40
  private stateSubscription;
40
41
  private connectionAttempt;
41
42
  private connectionAbort;
43
+ private deviceSelection;
42
44
  private readonly invalidationListeners;
43
- constructor(dmk: DeviceManagementKit);
45
+ constructor(dmk: DeviceManagementKit, requireDeviceSelection?: boolean);
46
+ private get readyConnection();
44
47
  getStatus(): {
45
48
  connected: boolean;
46
49
  };
47
50
  onInvalidated(listener: () => void): () => void;
48
51
  private invalidate;
52
+ /** The platform passes one candidate from its own current DMK picker. */
53
+ beginDeviceSelection(signal?: AbortSignal): (candidate: object) => Promise<void>;
49
54
  /** Device selection belongs to the visible host, never to a dapp request. */
50
55
  connect(request?: {
51
56
  useGrantedDevices?: boolean;
52
57
  }, options?: LedgerOperationOptions): Promise<void>;
58
+ private connectionBusy;
59
+ private startConnection;
60
+ private discoverDevice;
53
61
  private connectDevice;
54
62
  /** Cancel revokes the result and closes I/O; it cannot undo on-device approval. */
55
63
  disconnect(): Promise<void>;
@@ -1,7 +1,11 @@
1
- import type { LedgerHost, LedgerEvmConfig } from './ledger/host-types';
1
+ import { type LedgerDmkHost } from './ledger/dmk-host';
2
+ import type { LedgerEvmConfig } from './ledger/host-types';
2
3
  export interface LedgerDmkHostConfig extends LedgerEvmConfig {
3
4
  /** Platform-owned DMK, allowing a future host to register its own transports. */
4
5
  dmk?: object;
6
+ /** Disable automatic discovery until the platform selects a device. */
7
+ requireDeviceSelection?: boolean;
5
8
  }
6
- export declare function createLedgerDmkHost(config?: LedgerDmkHostConfig): LedgerHost;
9
+ export declare function createLedgerDmkHost(config?: LedgerDmkHostConfig): LedgerDmkHost;
10
+ export type { LedgerDmkHost } from './ledger/dmk-host';
7
11
  export type { LedgerEvmConfig, LedgerBlindSigningIntent, LedgerHost, LedgerEvmHost, LedgerUtxoHost, LedgerUtxoAccount, LedgerPartialSignature, LedgerTypedData, LedgerOperationOptions, LedgerProgress, } from './ledger/host-types';
@@ -1,6 +1,6 @@
1
1
  /** Software-only entry: explicit host storage, no browser/device initialization. */
2
2
  import { KeyringCore } from './keyring-core';
3
- import type { KeyringStoragePort } from './keyring-core';
3
+ import type { DeviceUnlockControls, DeviceUnlockPort, KeyringStoragePort } from './keyring-core';
4
4
  import type { EncryptedEvmHdRuntimeAccount, EvmHdRuntimeAccountOptions, EvmHdRuntimeAccountRequest } from './software-hd-account';
5
5
  import type { CaptureEvmSubmission } from './transactions/evm-submission';
6
6
  import type { PreparedEvmSigningOptions, PreparedSoftwareEvmSigningRequest, SignedPreparedEvmTransaction } from './transactions/prepared-evm';
@@ -12,9 +12,10 @@ export interface SoftwareKeyringHost {
12
12
  /** Create once per wallet authority, then share with its per-network keyrings. */
13
13
  export declare const createSoftwareKeyringHost: (storage: KeyringStoragePort, options?: {
14
14
  captureEvmSubmission?: CaptureEvmSubmission;
15
+ deviceUnlock?: DeviceUnlockPort;
15
16
  }) => SoftwareKeyringHost;
16
17
  export declare class SoftwareKeyring extends KeyringCore<undefined, undefined> {
17
- constructor(host: SoftwareKeyringHost);
18
+ constructor(host: SoftwareKeyringHost, receiveDeviceUnlock?: (controls: DeviceUnlockControls) => void);
18
19
  /**
19
20
  * Derive a fixed-path Ethereum HD runtime account without network or storage
20
21
  * writes. The returned password-encrypted xprv is internal runtime state,
@@ -36,7 +37,7 @@ export declare class SoftwareKeyring extends KeyringCore<undefined, undefined> {
36
37
  export { KeyringAccountType } from './types';
37
38
  export { INetworkType } from '@sidhujag/sysweb3-network';
38
39
  export type { INetwork } from '@sidhujag/sysweb3-network';
39
- export type { KeyringStoragePort } from './keyring-core';
40
+ export type { DeviceUnlockControls, DeviceUnlockCredential, DeviceUnlockPort, DeviceUnlockVaultPair, KeyringStoragePort, } from './keyring-core';
40
41
  export type { IKeyringAccountState } from './types';
41
42
  export type { PreparedEvmTransaction, PreparedEvmSigningOptions, PreparedSoftwareEvmSigningRequest, SignedPreparedEvmTransaction, } from './transactions/prepared-evm';
42
43
  export type { EncryptedEvmHdRuntimeAccount, EvmHdRuntimeAccountOptions, EvmHdRuntimeAccountRequest, } from './software-hd-account';