@onekeyfe/hwk-adapter-core 1.2.8-alpha.13 → 1.2.8-alpha.130

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/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { H as HardwareErrorCode, a as HwkErrorOrigin, b as HwkRecoveryHint } from './errors-BgJ4kzRx.js';
2
- export { c as HwkError, d as HwkRecoveryScope, I as IHwkErrorPayload, e as IOperationMayHaveCompletedParams, O as ORPHAN_ELIGIBLE_ERROR_CODES, f as createHwkError, g as defaultOriginForCode, h as defaultRecoveryForCode, i as enrichErrorMessage, j as isHwkRecoveryHint, o as operationMayHaveCompletedParams } from './errors-BgJ4kzRx.js';
3
- import { U as UiResponseEvent, E as ExportedAccountKey, a as UiRequestOperationAttribution, b as UI_REQUEST, Q as QrDisplayData, c as UiRequestRegistry, S as SaveDeviceBindingDeclineReason } from './ui-events-29Va0fPc.js';
4
- export { D as DevicePermissionDeniedReason, d as DevicePermissionResponse, e as QrResponseData, f as UI_EVENT, g as UI_REQUEST_CANCELLED_TAG, h as UI_REQUEST_DEFAULT_TIMEOUT_MS, i as UI_REQUEST_PREEMPTED_TAG, j as UI_REQUEST_TIMEOUT_TAG, k as UI_RESPONSE } from './ui-events-29Va0fPc.js';
1
+ import { H as HardwareErrorCode, a as HwkErrorOrigin, b as HwkRecoveryHint } from './errors-DednD9bG.js';
2
+ export { c as HwkError, d as HwkRecoveryScope, I as IHwkErrorPayload, e as IOperationMayHaveCompletedParams, O as ORPHAN_ELIGIBLE_ERROR_CODES, f as createHwkError, g as defaultOriginForCode, h as defaultRecoveryForCode, i as enrichErrorMessage, j as isHwkRecoveryHint, o as operationMayHaveCompletedParams } from './errors-DednD9bG.js';
3
+ import { U as UiResponseEvent, E as ExportedAccountKey, a as UiRequestOperationAttribution, b as UI_REQUEST, Q as QrDisplayData, c as QrFallbackReason, d as UiRequestRegistry, S as SaveDeviceBindingDeclineReason } from './ui-events-Dvu2Gdu8.js';
4
+ export { D as DevicePermissionDeniedReason, e as DevicePermissionResponse, f as QrResponseData, g as UI_EVENT, h as UI_REQUEST_CANCELLED_TAG, i as UI_REQUEST_DEFAULT_TIMEOUT_MS, j as UI_REQUEST_PREEMPTED_TAG, k as UI_REQUEST_TIMEOUT_TAG, l as UI_RESPONSE } from './ui-events-Dvu2Gdu8.js';
5
5
 
6
6
  interface Success<T> {
7
7
  success: true;
@@ -53,116 +53,6 @@ declare function parseWalletMasterFingerprint(value: unknown): string | undefine
53
53
  */
54
54
  declare function deriveDeviceFingerprint(value: string): string;
55
55
 
56
- type VendorType = 'trezor' | 'ledger' | 'keystone';
57
- /** 'qr' is a virtual channel: UR payloads travel via app-rendered/scanned QR codes. */
58
- type ConnectionType = 'usb' | 'ble' | 'qr';
59
- type TransportType = 'usb' | 'ble' | 'hid' | 'bridge' | 'qr';
60
- /**
61
- * Device capabilities — describes what a specific device/connection
62
- * combination can or cannot do. Varies by vendor, model, and connection type.
63
- *
64
- * This enables business logic to check capabilities instead of hard-coding
65
- * vendor-specific conditions (e.g., `if (vendor === 'ledger')`).
66
- */
67
- interface DeviceCapabilities {
68
- /**
69
- * Whether the discovery handle can be reused to reconnect; `false` requires rediscovery. Says
70
- * nothing about identity (Trezor BLE is false yet its device_id is stable); verify it separately.
71
- */
72
- persistentDeviceIdentity: boolean;
73
- }
74
- interface DeviceInfo {
75
- vendor: VendorType;
76
- /** Machine model id (e.g. "nanoX"). */
77
- model: string;
78
- /** Human-readable model name (e.g. "Ledger Nano X"). */
79
- modelName?: string;
80
- firmwareVersion: string;
81
- deviceId: string;
82
- connectId: string;
83
- label?: string;
84
- connectionType: ConnectionType;
85
- battery?: number;
86
- /** BLE signal strength (BLE only). */
87
- rssi?: number | null;
88
- /** BLE connectable flag (BLE only). */
89
- isConnectable?: boolean | null;
90
- /** USB serial number (USB only). */
91
- serialNumber?: string;
92
- /** Device capabilities — varies by vendor, model, and connection type */
93
- capabilities?: DeviceCapabilities;
94
- /**
95
- * Vendor-specific raw payload from the post-handshake `Features` (Trezor)
96
- * or device-info call. Populated by the connector with `{ transport,
97
- * descriptor, features }` so the app layer can read fields we haven't
98
- * promoted to the typed surface yet. Treat as informational — promote
99
- * any consumed field above.
100
- */
101
- raw?: Record<string, unknown>;
102
- }
103
- interface DeviceTarget {
104
- connectId: string;
105
- deviceId: string;
106
- }
107
- /**
108
- * How long a discovery handle remains safe to use for a new connection.
109
- * This is deliberately separate from post-connect device identity.
110
- */
111
- type SearchTargetReusePolicy = 'current-discovery' | 'reconnectable' | 'rediscover';
112
- declare function resolveSearchTargetReusePolicy(device: Pick<DeviceInfo, 'connectionType' | 'capabilities'>): SearchTargetReusePolicy;
113
- /** Search target for a physical device whose connectId is the discovery handle. */
114
- declare function toPhysicalDeviceSearchTarget(vendor: VendorType, device: DeviceInfo): DeviceSearchTarget;
115
- /**
116
- * A selectable result from hardware discovery. It may represent a physical
117
- * transport endpoint or an interactive entry such as Keystone QR; it is not a
118
- * physical-device or wallet identity.
119
- */
120
- interface DeviceSearchTarget {
121
- /** Opaque handle scoped to the adapter's current discovery state. */
122
- searchTargetId: string;
123
- /** Whether the handle itself may be retried; never inferred from a stored connectId. */
124
- searchTargetReusePolicy?: SearchTargetReusePolicy;
125
- vendor: VendorType;
126
- connectionType: ConnectionType;
127
- kind: 'physical' | 'interactive';
128
- label?: string;
129
- model?: string;
130
- modelName?: string;
131
- serialNumber?: string;
132
- }
133
- type WalletIdentity = {
134
- vendor: 'ledger';
135
- type: 'chainFingerprint';
136
- chain: ChainForFingerprint;
137
- value: string;
138
- } | {
139
- vendor: 'trezor';
140
- type: 'deviceId';
141
- value: string;
142
- } | {
143
- vendor: 'keystone';
144
- type: 'walletId';
145
- value: string;
146
- };
147
-
148
- /**
149
- * Mixin for chain-operation params that can be pinned to a specific passphrase
150
- * wallet.
151
- *
152
- * Trezor-only. `passphraseState` is the wallet identity returned by
153
- * `getPassphraseState`: today this is the compressed public key derived at
154
- * `m/44'/0'/0'`, not the 4-byte master fingerprint. When present, the adapter
155
- * creates a fresh wallet session (THP application session, or v1 device
156
- * session) and verifies the derived state before issuing the call, so the
157
- * address/signature comes from the intended passphrase wallet.
158
- *
159
- * Ledger has no equivalent and ignores the field — it never reaches the
160
- * protobuf layer (the adapter strips it before forwarding to the connector).
161
- */
162
- interface PassphraseStateAware {
163
- passphraseState?: string;
164
- }
165
-
166
56
  /**
167
57
  * Minimal device info returned during discovery (searchDevices).
168
58
  * At scan time, full DeviceInfo fields like firmwareVersion are not yet available.
@@ -277,6 +167,8 @@ declare enum EConnectorInteraction {
277
167
  AppInstallProgress = "app-install-progress"
278
168
  }
279
169
  type ConnectorUiEvent = {
170
+ operationId?: string;
171
+ } & ({
280
172
  type: EConnectorInteraction.Searching;
281
173
  payload: {
282
174
  sessionId: string;
@@ -285,6 +177,7 @@ type ConnectorUiEvent = {
285
177
  type: EConnectorInteraction.ConfirmOpenApp;
286
178
  payload: {
287
179
  sessionId: string;
180
+ appName?: string;
288
181
  };
289
182
  } | {
290
183
  type: EConnectorInteraction.UnlockDevice;
@@ -308,7 +201,7 @@ type ConnectorUiEvent = {
308
201
  appName: string;
309
202
  progress: number;
310
203
  };
311
- };
204
+ });
312
205
  interface ConnectorEventMap {
313
206
  'device-connect': {
314
207
  device: ConnectorDevice;
@@ -493,10 +386,198 @@ declare const DEVICE: {
493
386
  readonly TREZOR_THP_CREDENTIALS_CHANGED: "device-trezor-thp-credentials-changed";
494
387
  };
495
388
 
389
+ /**
390
+ * Mixin for chain-operation params that can be pinned to a specific passphrase
391
+ * wallet.
392
+ *
393
+ * Trezor-only. `passphraseState` is the wallet identity returned by
394
+ * `getPassphraseState`: today this is the compressed public key derived at
395
+ * `m/44'/0'/0'`, not the 4-byte master fingerprint. When present, the adapter
396
+ * creates a fresh wallet session (THP application session, or v1 device
397
+ * session) and verifies the derived state before issuing the call, so the
398
+ * address/signature comes from the intended passphrase wallet.
399
+ *
400
+ * Ledger has no equivalent and ignores the field — it never reaches the
401
+ * protobuf layer (the adapter strips it before forwarding to the connector).
402
+ */
403
+ interface PassphraseStateAware {
404
+ passphraseState?: string;
405
+ }
406
+
407
+ interface EvmGetAddressParams extends PassphraseStateAware {
408
+ path: string;
409
+ showOnDevice?: boolean;
410
+ chainId?: number;
411
+ ethereumDefinitions?: EvmEthereumDefinitions;
412
+ }
413
+ interface EvmAddress {
414
+ address: string;
415
+ path: string;
416
+ /** Device-reported secp256k1 public key; populated when the transport exposes it. */
417
+ publicKey?: string;
418
+ /** Set by air-gapped wallets (Keystone): the exported key this address derives from. */
419
+ accountKey?: ExportedAccountKey;
420
+ }
421
+ interface EvmSignTxBaseParams extends PassphraseStateAware {
422
+ path: string;
423
+ chainId?: number;
424
+ }
425
+ /** Ledger shape: the whole RLP-serialized tx (0x-prefixed or plain hex); structured fields forbidden. */
426
+ interface EvmSignTxLedgerParams extends EvmSignTxBaseParams {
427
+ serializedTx: string;
428
+ to?: never;
429
+ value?: never;
430
+ nonce?: never;
431
+ gasLimit?: never;
432
+ gasPrice?: never;
433
+ txType?: never;
434
+ maxFeePerGas?: never;
435
+ maxPriorityFeePerGas?: never;
436
+ accessList?: never;
437
+ data?: never;
438
+ paymentRequest?: never;
439
+ ethereumDefinitions?: never;
440
+ }
441
+ /** Trezor shape: structured EthereumSignTx protobuf fields; serializedTx forbidden. */
442
+ interface EvmSignTxTrezorParams extends EvmSignTxBaseParams {
443
+ serializedTx?: never;
444
+ /** Contract address or recipient. Optional for contract deployment transactions. */
445
+ to?: string;
446
+ value?: string;
447
+ nonce?: string;
448
+ gasLimit?: string;
449
+ gasPrice?: string;
450
+ txType?: number;
451
+ maxFeePerGas?: string;
452
+ maxPriorityFeePerGas?: string;
453
+ accessList?: Array<{
454
+ address: string;
455
+ storageKeys: string[];
456
+ }>;
457
+ data?: string;
458
+ paymentRequest?: EvmPaymentRequest;
459
+ ethereumDefinitions?: EvmEthereumDefinitions;
460
+ }
461
+ /** Mutually exclusive vendor shapes; each adapter narrows to its own. */
462
+ type EvmSignTxParams = EvmSignTxLedgerParams | EvmSignTxTrezorParams;
463
+ interface EvmEthereumDefinitions {
464
+ /** Trezor Ethereum network definition bytes as a hex string. */
465
+ encodedNetwork?: string;
466
+ /** Trezor Ethereum token definition bytes as a hex string. */
467
+ encodedToken?: string;
468
+ }
469
+ interface EvmPaymentRequestMemo {
470
+ textMemo?: {
471
+ text: string;
472
+ };
473
+ textDetailsMemo?: {
474
+ title: string;
475
+ text: string;
476
+ };
477
+ refundMemo?: {
478
+ address: string;
479
+ addressN?: number[];
480
+ mac: string;
481
+ };
482
+ coinPurchaseMemo?: {
483
+ coinType: number;
484
+ amount: string;
485
+ address: string;
486
+ addressN?: number[];
487
+ mac: string;
488
+ };
489
+ }
490
+ interface EvmPaymentRequest {
491
+ nonce?: string;
492
+ recipientName: string;
493
+ memos?: EvmPaymentRequestMemo[];
494
+ /** Decimal string in subunits; SDK encodes it as SLIP-24 uint256 LE hex. */
495
+ amount?: string;
496
+ signature: string;
497
+ }
498
+ interface EvmSignedTx {
499
+ /** Recovery id as `0x`-prefixed hex string. */
500
+ v: string;
501
+ /** ECDSA `r` value as `0x`-prefixed, zero-padded 64-char hex string (32 bytes). */
502
+ r: string;
503
+ /** ECDSA `s` value as `0x`-prefixed, zero-padded 64-char hex string (32 bytes). */
504
+ s: string;
505
+ serializedTx?: string;
506
+ }
507
+ interface EvmSignMsgParams extends PassphraseStateAware {
508
+ path: string;
509
+ message: string;
510
+ chainId?: number;
511
+ hex?: boolean;
512
+ ethereumDefinitions?: EvmEthereumDefinitions;
513
+ }
514
+ type EvmSignTypedDataParams = EvmSignTypedDataFull | EvmSignTypedDataHash;
515
+ interface EvmSignTypedDataFull extends PassphraseStateAware {
516
+ path: string;
517
+ chainId?: number;
518
+ /** Defaults to `'full'` when omitted. */
519
+ mode?: 'full';
520
+ ethereumDefinitions?: EvmEthereumDefinitions;
521
+ data: {
522
+ domain: EIP712Domain;
523
+ types: Record<string, Array<{
524
+ name: string;
525
+ type: string;
526
+ }>>;
527
+ primaryType: string;
528
+ message: Record<string, unknown>;
529
+ };
530
+ /**
531
+ * The dApp's original EIP-712 JSON, byte for byte. Serializing vendors (Keystone) must prefer it:
532
+ * re-stringifying `data` rewrites integers wider than 2^53 and exponent forms.
533
+ */
534
+ dataJson?: string;
535
+ metamaskV4Compat?: boolean;
536
+ showMessageHash?: boolean;
537
+ /**
538
+ * Optional host-computed hashes. Core Trezor models still use full typed-data
539
+ * signing for display, while Trezor One can fall back to typed-hash signing
540
+ * when firmware cannot compute the hashes itself.
541
+ */
542
+ domainSeparatorHash?: string;
543
+ messageHash?: string;
544
+ }
545
+ interface EvmSignTypedDataHash extends PassphraseStateAware {
546
+ path: string;
547
+ chainId?: number;
548
+ mode: 'hash';
549
+ domainSeparatorHash: string;
550
+ messageHash: string;
551
+ ethereumDefinitions?: EvmEthereumDefinitions;
552
+ }
553
+ interface EIP712Domain {
554
+ name?: string;
555
+ version?: string;
556
+ chainId?: number;
557
+ verifyingContract?: string;
558
+ salt?: string;
559
+ [key: string]: unknown;
560
+ }
561
+ interface EvmSignature {
562
+ /** `0x`-prefixed hex string (r + s + v). */
563
+ signature: string;
564
+ address?: string;
565
+ }
566
+ interface IEvmMethods {
567
+ evmGetAddress(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmGetAddressParams>>): Promise<Response<EvmAddress>>;
568
+ evmSignTransaction(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmSignTxParams>>): Promise<Response<EvmSignedTx>>;
569
+ evmSignMessage(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmSignMsgParams>>): Promise<Response<EvmSignature>>;
570
+ evmSignTypedData(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmSignTypedDataParams>>): Promise<Response<EvmSignature>>;
571
+ }
572
+
496
573
  interface BtcGetAddressParams extends PassphraseStateAware {
497
574
  path: string;
498
575
  coin?: string;
499
576
  showOnDevice?: boolean;
577
+ /**
578
+ * Trezor only. Ledger and Keystone ignore it and derive the script of the path's purpose
579
+ * (44' P2PKH, 49' P2SH-P2WPKH, 84' P2WPKH, 86' P2TR; Keystone does not support 86' yet).
580
+ */
500
581
  scriptType?: 'p2pkh' | 'p2sh' | 'p2wpkh' | 'p2wsh' | 'p2tr';
501
582
  addressIndex?: number;
502
583
  change?: boolean;
@@ -894,7 +975,7 @@ declare class OperationRegistry {
894
975
  /** Return active or tombstoned binding data without refreshing its TTL. */
895
976
  find(operationId: string): HardwareOperation | undefined;
896
977
  findActiveByConnectionKey(connectionKey: string): HardwareOperation | undefined;
897
- /** Map a job queue key (an operation id or a connection key) to its live operation id. */
978
+ /** Only an explicitly supplied operation job key owns the call's UI requests. */
898
979
  findOperationIdByJobKey(jobKey: string | undefined): string | undefined;
899
980
  /**
900
981
  * End an operation on the caller's explicit release. Throws for an unknown id; returns undefined
@@ -1030,6 +1111,7 @@ type HardwareUiEvent = Exclude<ConnectorUiEvent, {
1030
1111
  type: EConnectorInteraction.AppInstallProgress;
1031
1112
  }> | {
1032
1113
  type: EConnectorInteraction.AppInstallProgress;
1114
+ operationId?: string;
1033
1115
  payload: {
1034
1116
  connectId: string;
1035
1117
  appName: string;
@@ -1135,6 +1217,7 @@ type DeviceSelectionContext = {
1135
1217
  };
1136
1218
  interface DeviceSelectionRequest extends UiRequestOperationAttribution {
1137
1219
  devices: DeviceInfo[];
1220
+ /** Echo this in the `RECEIVE_SELECT_DEVICE` answer; an answer without it is ignored. */
1138
1221
  requestId: string;
1139
1222
  context: DeviceSelectionContext;
1140
1223
  extra?: HardwareCallExtra;
@@ -1158,7 +1241,12 @@ interface SaveDeviceBindingRequest extends UiRequestOperationAttribution {
1158
1241
  }>;
1159
1242
  extra?: HardwareCallExtra;
1160
1243
  }
1161
- type BindBleDeviceParams = Pick<SaveDeviceBindingRequest, 'identity' | 'extra'>;
1244
+ type BindBleDeviceParams = Pick<SaveDeviceBindingRequest, 'identity' | 'extra'> & {
1245
+ /** Ledger: other recorded chains, tried in order only when the previous chain's app is missing. */
1246
+ fallbackIdentities?: Extract<WalletIdentity, {
1247
+ vendor: 'ledger';
1248
+ }>[];
1249
+ };
1162
1250
  interface DeviceBindingStatus {
1163
1251
  selectionRequestId: string;
1164
1252
  status: 'verifying' | 'saved' | 'failed' | 'cancelled';
@@ -1206,6 +1294,8 @@ interface AllNetworkGetAddressParams extends IHardwareCommonCallParams {
1206
1294
  }
1207
1295
  type AllNetworkDeviceIdentity = WalletIdentity;
1208
1296
  type AllNetworkAddressResponsePayload = Record<string, unknown> & {
1297
+ /** This account came from the user's explicit device-export scan. */
1298
+ accountExport?: boolean;
1209
1299
  error?: string;
1210
1300
  code?: HardwareErrorCode | number;
1211
1301
  errorCode?: string | number;
@@ -1327,10 +1417,17 @@ type UiRequestEvent = {
1327
1417
  message: string;
1328
1418
  } & UiRequestOperationAttribution;
1329
1419
  } | {
1330
- type: typeof UI_REQUEST.REQUEST_INSTALL_APP;
1420
+ type: typeof UI_REQUEST.REQUEST_INSTALL_APP;
1421
+ payload: {
1422
+ vendor: string;
1423
+ appName: string;
1424
+ } & UiRequestOperationAttribution;
1425
+ } | {
1426
+ type: typeof UI_REQUEST.REQUEST_QR_FALLBACK_CONFIRM;
1331
1427
  payload: {
1332
1428
  vendor: string;
1333
- appName: string;
1429
+ requestId: string;
1430
+ reason: QrFallbackReason;
1334
1431
  } & UiRequestOperationAttribution;
1335
1432
  } | {
1336
1433
  type: typeof UI_REQUEST.REQUEST_TREZOR_THP_PAIRING;
@@ -1503,6 +1600,14 @@ interface HardwareEventMap {
1503
1600
  appName: string;
1504
1601
  } & UiRequestOperationAttribution;
1505
1602
  };
1603
+ [UI_REQUEST.REQUEST_QR_FALLBACK_CONFIRM]: {
1604
+ type: typeof UI_REQUEST.REQUEST_QR_FALLBACK_CONFIRM;
1605
+ payload: {
1606
+ vendor: string;
1607
+ requestId: string;
1608
+ reason: QrFallbackReason;
1609
+ } & UiRequestOperationAttribution;
1610
+ };
1506
1611
  [UI_REQUEST.REQUEST_TREZOR_THP_PAIRING]: {
1507
1612
  type: typeof UI_REQUEST.REQUEST_TREZOR_THP_PAIRING;
1508
1613
  payload: {
@@ -1656,171 +1761,99 @@ interface SearchDevicesOptions {
1656
1761
  transportType?: ConnectionType;
1657
1762
  }
1658
1763
 
1659
- interface EvmGetAddressParams extends PassphraseStateAware {
1660
- path: string;
1661
- showOnDevice?: boolean;
1662
- chainId?: number;
1663
- ethereumDefinitions?: EvmEthereumDefinitions;
1664
- }
1665
- interface EvmAddress {
1666
- address: string;
1667
- path: string;
1668
- /** Device-reported secp256k1 public key; populated when the transport exposes it. */
1669
- publicKey?: string;
1670
- /** Set by air-gapped wallets (Keystone): the exported key this address derives from. */
1671
- accountKey?: ExportedAccountKey;
1672
- }
1673
- interface EvmSignTxBaseParams extends PassphraseStateAware {
1674
- path: string;
1675
- chainId?: number;
1676
- }
1677
- /** Ledger shape: the whole RLP-serialized tx (0x-prefixed or plain hex); structured fields forbidden. */
1678
- interface EvmSignTxLedgerParams extends EvmSignTxBaseParams {
1679
- serializedTx: string;
1680
- to?: never;
1681
- value?: never;
1682
- nonce?: never;
1683
- gasLimit?: never;
1684
- gasPrice?: never;
1685
- txType?: never;
1686
- maxFeePerGas?: never;
1687
- maxPriorityFeePerGas?: never;
1688
- accessList?: never;
1689
- data?: never;
1690
- paymentRequest?: never;
1691
- ethereumDefinitions?: never;
1692
- }
1693
- /** Trezor shape: structured EthereumSignTx protobuf fields; serializedTx forbidden. */
1694
- interface EvmSignTxTrezorParams extends EvmSignTxBaseParams {
1695
- serializedTx?: never;
1696
- /** Contract address or recipient. Optional for contract deployment transactions. */
1697
- to?: string;
1698
- value?: string;
1699
- nonce?: string;
1700
- gasLimit?: string;
1701
- gasPrice?: string;
1702
- txType?: number;
1703
- maxFeePerGas?: string;
1704
- maxPriorityFeePerGas?: string;
1705
- accessList?: Array<{
1706
- address: string;
1707
- storageKeys: string[];
1708
- }>;
1709
- data?: string;
1710
- paymentRequest?: EvmPaymentRequest;
1711
- ethereumDefinitions?: EvmEthereumDefinitions;
1712
- }
1713
- /** Mutually exclusive vendor shapes; each adapter narrows to its own. */
1714
- type EvmSignTxParams = EvmSignTxLedgerParams | EvmSignTxTrezorParams;
1715
- interface EvmEthereumDefinitions {
1716
- /** Trezor Ethereum network definition bytes as a hex string. */
1717
- encodedNetwork?: string;
1718
- /** Trezor Ethereum token definition bytes as a hex string. */
1719
- encodedToken?: string;
1720
- }
1721
- interface EvmPaymentRequestMemo {
1722
- textMemo?: {
1723
- text: string;
1724
- };
1725
- textDetailsMemo?: {
1726
- title: string;
1727
- text: string;
1728
- };
1729
- refundMemo?: {
1730
- address: string;
1731
- addressN?: number[];
1732
- mac: string;
1733
- };
1734
- coinPurchaseMemo?: {
1735
- coinType: number;
1736
- amount: string;
1737
- address: string;
1738
- addressN?: number[];
1739
- mac: string;
1740
- };
1741
- }
1742
- interface EvmPaymentRequest {
1743
- nonce?: string;
1744
- recipientName: string;
1745
- memos?: EvmPaymentRequestMemo[];
1746
- /** Decimal string in subunits; SDK encodes it as SLIP-24 uint256 LE hex. */
1747
- amount?: string;
1748
- signature: string;
1749
- }
1750
- interface EvmSignedTx {
1751
- /** Recovery id as `0x`-prefixed hex string. */
1752
- v: string;
1753
- /** ECDSA `r` value as `0x`-prefixed, zero-padded 64-char hex string (32 bytes). */
1754
- r: string;
1755
- /** ECDSA `s` value as `0x`-prefixed, zero-padded 64-char hex string (32 bytes). */
1756
- s: string;
1757
- serializedTx?: string;
1758
- }
1759
- interface EvmSignMsgParams extends PassphraseStateAware {
1760
- path: string;
1761
- message: string;
1762
- chainId?: number;
1763
- hex?: boolean;
1764
- ethereumDefinitions?: EvmEthereumDefinitions;
1765
- }
1766
- type EvmSignTypedDataParams = EvmSignTypedDataFull | EvmSignTypedDataHash;
1767
- interface EvmSignTypedDataFull extends PassphraseStateAware {
1768
- path: string;
1769
- chainId?: number;
1770
- /** Defaults to `'full'` when omitted. */
1771
- mode?: 'full';
1772
- ethereumDefinitions?: EvmEthereumDefinitions;
1773
- data: {
1774
- domain: EIP712Domain;
1775
- types: Record<string, Array<{
1776
- name: string;
1777
- type: string;
1778
- }>>;
1779
- primaryType: string;
1780
- message: Record<string, unknown>;
1781
- };
1764
+ type VendorType = 'trezor' | 'ledger' | 'keystone';
1765
+ /** 'qr' is a virtual channel: UR payloads travel via app-rendered/scanned QR codes. */
1766
+ type ConnectionType = 'usb' | 'ble' | 'qr';
1767
+ type TransportType = 'usb' | 'ble' | 'hid' | 'bridge' | 'qr';
1768
+ /**
1769
+ * Device capabilities — describes what a specific device/connection
1770
+ * combination can or cannot do. Varies by vendor, model, and connection type.
1771
+ *
1772
+ * This enables business logic to check capabilities instead of hard-coding
1773
+ * vendor-specific conditions (e.g., `if (vendor === 'ledger')`).
1774
+ */
1775
+ interface DeviceCapabilities {
1776
+ /** Chains usable through this adapter on the connected firmware; absent means not advertised. */
1777
+ supportedChains?: ChainCapability[];
1782
1778
  /**
1783
- * The dApp's original EIP-712 JSON, byte for byte. Serializing vendors (Keystone) must prefer it:
1784
- * re-stringifying `data` rewrites integers wider than 2^53 and exponent forms.
1779
+ * Whether the discovery handle can be reused to reconnect; `false` requires rediscovery. Says
1780
+ * nothing about identity (Trezor BLE is false yet its device_id is stable); verify it separately.
1785
1781
  */
1786
- dataJson?: string;
1787
- metamaskV4Compat?: boolean;
1788
- showMessageHash?: boolean;
1782
+ persistentDeviceIdentity: boolean;
1783
+ }
1784
+ interface DeviceInfo {
1785
+ vendor: VendorType;
1786
+ /** Machine model id (e.g. "nanoX"). */
1787
+ model: string;
1788
+ /** Human-readable model name (e.g. "Ledger Nano X"). */
1789
+ modelName?: string;
1790
+ firmwareVersion: string;
1791
+ deviceId: string;
1792
+ connectId: string;
1793
+ label?: string;
1794
+ connectionType: ConnectionType;
1795
+ battery?: number;
1796
+ /** BLE signal strength (BLE only). */
1797
+ rssi?: number | null;
1798
+ /** BLE connectable flag (BLE only). */
1799
+ isConnectable?: boolean | null;
1800
+ /** USB serial number (USB only). */
1801
+ serialNumber?: string;
1802
+ /** Device capabilities — varies by vendor, model, and connection type */
1803
+ capabilities?: DeviceCapabilities;
1789
1804
  /**
1790
- * Optional host-computed hashes. Core Trezor models still use full typed-data
1791
- * signing for display, while Trezor One can fall back to typed-hash signing
1792
- * when firmware cannot compute the hashes itself.
1805
+ * Vendor-specific raw payload from the post-handshake `Features` (Trezor)
1806
+ * or device-info call. Populated by the connector with `{ transport,
1807
+ * descriptor, features }` so the app layer can read fields we haven't
1808
+ * promoted to the typed surface yet. Treat as informational — promote
1809
+ * any consumed field above.
1793
1810
  */
1794
- domainSeparatorHash?: string;
1795
- messageHash?: string;
1796
- }
1797
- interface EvmSignTypedDataHash extends PassphraseStateAware {
1798
- path: string;
1799
- chainId?: number;
1800
- mode: 'hash';
1801
- domainSeparatorHash: string;
1802
- messageHash: string;
1803
- ethereumDefinitions?: EvmEthereumDefinitions;
1804
- }
1805
- interface EIP712Domain {
1806
- name?: string;
1807
- version?: string;
1808
- chainId?: number;
1809
- verifyingContract?: string;
1810
- salt?: string;
1811
- [key: string]: unknown;
1811
+ raw?: Record<string, unknown>;
1812
1812
  }
1813
- interface EvmSignature {
1814
- /** `0x`-prefixed hex string (r + s + v). */
1815
- signature: string;
1816
- address?: string;
1813
+ interface DeviceTarget {
1814
+ connectId: string;
1815
+ deviceId: string;
1817
1816
  }
1818
- interface IEvmMethods {
1819
- evmGetAddress(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmGetAddressParams>>): Promise<Response<EvmAddress>>;
1820
- evmSignTransaction(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmSignTxParams>>): Promise<Response<EvmSignedTx>>;
1821
- evmSignMessage(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmSignMsgParams>>): Promise<Response<EvmSignature>>;
1822
- evmSignTypedData(connectId?: NullableCallArg<string>, deviceId?: NullableCallArg<string>, params?: NullableCallArg<IHardwareCallParams<EvmSignTypedDataParams>>): Promise<Response<EvmSignature>>;
1817
+ /**
1818
+ * How long a discovery handle remains safe to use for a new connection.
1819
+ * This is deliberately separate from post-connect device identity.
1820
+ */
1821
+ type SearchTargetReusePolicy = 'current-discovery' | 'reconnectable' | 'rediscover';
1822
+ declare function resolveSearchTargetReusePolicy(device: Pick<DeviceInfo, 'connectionType' | 'capabilities'>): SearchTargetReusePolicy;
1823
+ /** Search target for a physical device whose connectId is the discovery handle. */
1824
+ declare function toPhysicalDeviceSearchTarget(vendor: VendorType, device: DeviceInfo): DeviceSearchTarget;
1825
+ /**
1826
+ * A selectable result from hardware discovery. It may represent a physical
1827
+ * transport endpoint or an interactive entry such as Keystone QR; it is not a
1828
+ * physical-device or wallet identity.
1829
+ */
1830
+ interface DeviceSearchTarget {
1831
+ /** Opaque handle scoped to the adapter's current discovery state. */
1832
+ searchTargetId: string;
1833
+ /** Whether the handle itself may be retried; never inferred from a stored connectId. */
1834
+ searchTargetReusePolicy?: SearchTargetReusePolicy;
1835
+ vendor: VendorType;
1836
+ connectionType: ConnectionType;
1837
+ kind: 'physical' | 'interactive';
1838
+ label?: string;
1839
+ model?: string;
1840
+ modelName?: string;
1841
+ serialNumber?: string;
1823
1842
  }
1843
+ type WalletIdentity = {
1844
+ vendor: 'ledger';
1845
+ type: 'chainFingerprint';
1846
+ chain: ChainForFingerprint;
1847
+ value: string;
1848
+ } | {
1849
+ vendor: 'trezor';
1850
+ type: 'deviceId';
1851
+ value: string;
1852
+ } | {
1853
+ vendor: 'keystone';
1854
+ type: 'walletId';
1855
+ value: string;
1856
+ };
1824
1857
 
1825
1858
  /** Which `GET_VK` encoding the Ledger Zcash app should return. */
1826
1859
  type ZcashFullViewingKeyMode = 'ufvk' | 'orchardFvk';
@@ -2022,7 +2055,9 @@ interface ElectronBleDeviceInfo {
2022
2055
  }
2023
2056
  /**
2024
2057
  * IPC-safe peripheral match: advertises one of `serviceUuids`, or its local name matches every
2025
- * `namePatterns` entry (case-insensitive regex sources).
2058
+ * `namePatterns` entry (case-insensitive regex sources). The desktop noble-ble host treats this
2059
+ * as a hint only: its vendor allowlist decides, `serviceUuids` can only narrow it, and
2060
+ * `namePatterns` are never compiled.
2026
2061
  */
2027
2062
  interface ElectronBleMatch {
2028
2063
  serviceUuids?: string[];
@@ -2150,6 +2185,35 @@ interface PreparedSolanaOffchainMessageV1 {
2150
2185
  }
2151
2186
  declare function prepareSolanaOffchainMessageV1({ message, requiredSigners, }: PrepareSolanaOffchainMessageV1Params): PreparedSolanaOffchainMessageV1;
2152
2187
 
2188
+ type LogSummaryContext = {
2189
+ /** Method name from the options, or '' when none was given. */
2190
+ method: string;
2191
+ role: 'params' | 'result';
2192
+ };
2193
+ /**
2194
+ * Returns extra space-separated hints for a payload field (e.g. PSBT input/output counts), or
2195
+ * undefined to add nothing. `key` is normalized: lower-case with `_` and `-` removed. Hints are
2196
+ * appended verbatim, so they must not contain payload contents. A throwing describer is ignored.
2197
+ */
2198
+ type LogPayloadDescriber = (key: string, value: string | Uint8Array, context: LogSummaryContext) => string | undefined;
2199
+ type LogSummaryOptions = {
2200
+ /** Public or connector method name; enables chain-specific hints (EVM tx type). */
2201
+ method?: string;
2202
+ /** In results, transaction fields hold signed transactions rather than requests. */
2203
+ role?: 'params' | 'result';
2204
+ /** Chain-specific payload hints that need a decoder adapter-core does not ship. */
2205
+ describePayload?: LogPayloadDescriber;
2206
+ };
2207
+ /**
2208
+ * JSON-safe, log-safe summary of `value`. Never throws.
2209
+ *
2210
+ * Paths, chain ids, flags and error fields stay readable; payloads become
2211
+ * `<hex|str|json len=N sha256=16hex [hints]>`, addresses `first6…last4`, xpubs `xpub… len=N`,
2212
+ * public keys and chain codes `… len=N`, signatures `<signature len=N>` and secrets
2213
+ * `<redacted len=N>`.
2214
+ */
2215
+ declare function summarizeForLog(value: unknown, options?: LogSummaryOptions): unknown;
2216
+
2153
2217
  type DetectableHardwareVendor = 'onekey' | 'trezor' | 'ledger' | 'keystone';
2154
2218
  type HardwareDeviceIdentityInput = {
2155
2219
  name?: string | null;
@@ -2228,4 +2292,4 @@ declare function buildUnsupportedMethodResponse(item: AllNetworkAddressParams):
2228
2292
 
2229
2293
  declare const DEVICE_CONNECT_RETRY_DELAY_MS = 1000;
2230
2294
 
2231
- export { ALL_NETWORK_METHOD_NAMES, type ActiveJobInfo, type AllNetworkAddressParams, type AllNetworkAddressResponse, type AllNetworkAddressResponsePayload, type AllNetworkAttachIdentityContext, type AllNetworkCallItemContext, type AllNetworkDeviceIdentity, type AllNetworkGetAddressParams, type AllNetworkMethodName, type AllNetworkResponseContext, type BindBleDeviceParams, type BtcAddress, type BtcGetAddressParams, type BtcGetPublicKeyParams, type BtcPaymentRequest, type BtcPaymentRequestMemo, type BtcPublicKey, type BtcRefTransaction, type BtcSignMsgParams, type BtcSignPsbtParams, type BtcSignTxParams, type BtcSignature, type BtcSignedPsbt, type BtcSignedTx, type BtcTxInput, type BtcTxOutput, CHAIN_FINGERPRINT_PATHS, type CancelCapability, type CancelScopeHandle, type ChainCapability, type ChainForFingerprint, type ConnectionType, type ConnectorCallResult, type ConnectorConfig, type ConnectorConnectTarget, type ConnectorDevice, type ConnectorErrorParams, type ConnectorEventMap, type ConnectorEventType, type ConnectorSearchDevicesOptions, type ConnectorSerializedError, type ConnectorSession, type ConnectorUiEvent, DEVICE, DEVICE_CONNECT_RETRY_DELAY_MS, DEVICE_EVENT, type DetectableHardwareVendor, type DeviceAuthenticityParams, type DeviceAuthenticityResult, type DeviceBindingStatus, type DeviceCapabilities, type DeviceChangeEvent, type DeviceConnectEvent, type DeviceDescriptor, type DeviceDisconnectEvent, type DeviceEvent, type DeviceEventListener, type DeviceInfo, DeviceJobQueue, type DeviceSearchTarget, type DeviceSelectionContext, type DeviceSelectionRequest, type DeviceTarget, EConnectorInteraction, type EIP712Domain, type ElectronBleApi, type ElectronBleConnectOptions, type ElectronBleDeviceInfo, type ElectronBleMatch, type ElectronBleScanOptions, type EvmAddress, type EvmEthereumDefinitions, type EvmGetAddressParams, type EvmPaymentRequest, type EvmPaymentRequestMemo, type EvmSignMsgParams, type EvmSignTxLedgerParams, type EvmSignTxParams, type EvmSignTxTrezorParams, type EvmSignTypedDataFull, type EvmSignTypedDataHash, type EvmSignTypedDataParams, type EvmSignature, type EvmSignedTx, ExportedAccountKey, type Failure, HARDWARE_METHOD_CATALOG, HARDWARE_RUNTIME_ID_PREFIX, type HardwareCallExtra, type HardwareDeviceIdentityInput, HardwareErrorCode, type HardwareEvent, type HardwareEventMap, type HardwareMethodMetadata, type HardwareMethodName, type HardwareOperation, type HardwareOperationTarget, type HardwareRuntimeId, type HardwareRuntimeIdKind, type HardwareUiEvent, HwkErrorOrigin, HwkRecoveryHint, type IBtcMethods, type ICommonCallParams, type IConnector, type IDeviceManagerMethods, type IDeviceManagerOperationContext, type IEvmMethods, type IHardwareBridge, type IHardwareCallParams, type IHardwareCommonCallParams, type IHardwareConnectionContext, type IHardwareWallet, type IPassphraseCallParams, type ISolMethods, type ITronMethods, type IWalletStateMethods, type JobOptions, type KnownDeviceConnection, MISSING_BIP32_MASTER_FINGERPRINT, type NullableCallArg, OPERATION_DEFAULT_TTL_MS, type OperationEndReason, OperationRegistry, type PassphraseResponse, type PassphraseStateAware, type PrepareSolanaOffchainMessageV1Params, type PreparedSolanaOffchainMessageV1, QrDisplayData, type Response, type RunAllNetworkGetAddressOptions, SDK, SaveDeviceBindingDeclineReason, type SaveDeviceBindingRequest, type SdkEvent, type SearchDevicesOptions, type SearchTargetReusePolicy, type SolAddress, type SolGetAddressParams, type SolOffchainMessageV1Params, type SolSignMsgParams, type SolSignTxParams, type SolSignature, type SolSignedTx, type Success, type TransportType, type TrezorBrightnessParams, type TrezorChangePinParams, type TrezorDeviceSettingsParams, type TrezorDisplayRotation, type TrezorSafetyCheckLevel, type TronAddress, type TronContract, type TronFreezeBalanceV2Contract, type TronGetAddressParams, type TronResource, type TronSignMsgParams, type TronSignTxParams, type TronSignature, type TronSignedTx, type TronTransferContract, type TronTriggerSmartContract, type TronUnfreezeBalanceV2Contract, type TronVote, type TronVoteWitnessContract, type TronWithdrawExpireUnfreezeContract, TypedEventEmitter, UI_REQUEST, type UiRequestEvent, UiRequestOperationAttribution, UiRequestRegistry, UiResponseEvent, type VendorType, type WalletIdentity, type ZcashFullViewingKey, type ZcashFullViewingKeyMode, type ZcashGetFullViewingKeyParams, type ZcashGetShieldedAddressParams, type ZcashShieldedAddress, assertBoundedCbor, batchCall, boundedCborFromHex, buildAllNetworkCancelledFailure, buildUnsupportedMethodResponse, bytesToHex, canReplayHardwareMethodAfterTransportFailure, compareSemver, createBridgedConnector, createCombinedConnector, createHardwareLinkId, createHardwareOperationId, createHardwareSearchTargetId, deriveDeviceFingerprint, detectHardwareVendorFromDescriptor, emitDeviceBindingStatus, ensure0x, failure, getAllNetworkMethodChain, getHardwareMethodMetadata, hasHardwareRuntimeIdPrefix, hexToBytes, isAllNetworkMethodName, isConnectionLost, isHardwareOperationId, isKnownNonTargetHardwareVendor, isUserRefusal, isWalletSafetyFailure, padHex64, parseBip32MasterFingerprint, parseHardwareRuntimeId, parseWalletMasterFingerprint, pickConnectionContext, prepareSolanaOffchainMessageV1, rehydrateConnectorError, requestBleDeviceSelection, requestSaveDeviceBinding, resolveHardwareOperationTarget, resolveSearchTargetReusePolicy, runAllNetworkGetAddress, serializeConnectorError, stripHex, success, toPhysicalDeviceSearchTarget };
2295
+ export { ALL_NETWORK_METHOD_NAMES, type ActiveJobInfo, type AllNetworkAddressParams, type AllNetworkAddressResponse, type AllNetworkAddressResponsePayload, type AllNetworkAttachIdentityContext, type AllNetworkCallItemContext, type AllNetworkDeviceIdentity, type AllNetworkGetAddressParams, type AllNetworkMethodName, type AllNetworkResponseContext, type BindBleDeviceParams, type BtcAddress, type BtcGetAddressParams, type BtcGetPublicKeyParams, type BtcPaymentRequest, type BtcPaymentRequestMemo, type BtcPublicKey, type BtcRefTransaction, type BtcSignMsgParams, type BtcSignPsbtParams, type BtcSignTxParams, type BtcSignature, type BtcSignedPsbt, type BtcSignedTx, type BtcTxInput, type BtcTxOutput, CHAIN_FINGERPRINT_PATHS, type CancelCapability, type CancelScopeHandle, type ChainCapability, type ChainForFingerprint, type ConnectionType, type ConnectorCallResult, type ConnectorConfig, type ConnectorConnectTarget, type ConnectorDevice, type ConnectorErrorParams, type ConnectorEventMap, type ConnectorEventType, type ConnectorSearchDevicesOptions, type ConnectorSerializedError, type ConnectorSession, type ConnectorUiEvent, DEVICE, DEVICE_CONNECT_RETRY_DELAY_MS, DEVICE_EVENT, type DetectableHardwareVendor, type DeviceAuthenticityParams, type DeviceAuthenticityResult, type DeviceBindingStatus, type DeviceCapabilities, type DeviceChangeEvent, type DeviceConnectEvent, type DeviceDescriptor, type DeviceDisconnectEvent, type DeviceEvent, type DeviceEventListener, type DeviceInfo, DeviceJobQueue, type DeviceSearchTarget, type DeviceSelectionContext, type DeviceSelectionRequest, type DeviceTarget, EConnectorInteraction, type EIP712Domain, type ElectronBleApi, type ElectronBleConnectOptions, type ElectronBleDeviceInfo, type ElectronBleMatch, type ElectronBleScanOptions, type EvmAddress, type EvmEthereumDefinitions, type EvmGetAddressParams, type EvmPaymentRequest, type EvmPaymentRequestMemo, type EvmSignMsgParams, type EvmSignTxLedgerParams, type EvmSignTxParams, type EvmSignTxTrezorParams, type EvmSignTypedDataFull, type EvmSignTypedDataHash, type EvmSignTypedDataParams, type EvmSignature, type EvmSignedTx, ExportedAccountKey, type Failure, HARDWARE_METHOD_CATALOG, HARDWARE_RUNTIME_ID_PREFIX, type HardwareCallExtra, type HardwareDeviceIdentityInput, HardwareErrorCode, type HardwareEvent, type HardwareEventMap, type HardwareMethodMetadata, type HardwareMethodName, type HardwareOperation, type HardwareOperationTarget, type HardwareRuntimeId, type HardwareRuntimeIdKind, type HardwareUiEvent, HwkErrorOrigin, HwkRecoveryHint, type IBtcMethods, type ICommonCallParams, type IConnector, type IDeviceManagerMethods, type IDeviceManagerOperationContext, type IEvmMethods, type IHardwareBridge, type IHardwareCallParams, type IHardwareCommonCallParams, type IHardwareConnectionContext, type IHardwareWallet, type IPassphraseCallParams, type ISolMethods, type ITronMethods, type IWalletStateMethods, type JobOptions, type KnownDeviceConnection, type LogPayloadDescriber, type LogSummaryContext, type LogSummaryOptions, MISSING_BIP32_MASTER_FINGERPRINT, type NullableCallArg, OPERATION_DEFAULT_TTL_MS, type OperationEndReason, OperationRegistry, type PassphraseResponse, type PassphraseStateAware, type PrepareSolanaOffchainMessageV1Params, type PreparedSolanaOffchainMessageV1, QrDisplayData, QrFallbackReason, type Response, type RunAllNetworkGetAddressOptions, SDK, SaveDeviceBindingDeclineReason, type SaveDeviceBindingRequest, type SdkEvent, type SearchDevicesOptions, type SearchTargetReusePolicy, type SolAddress, type SolGetAddressParams, type SolOffchainMessageV1Params, type SolSignMsgParams, type SolSignTxParams, type SolSignature, type SolSignedTx, type Success, type TransportType, type TrezorBrightnessParams, type TrezorChangePinParams, type TrezorDeviceSettingsParams, type TrezorDisplayRotation, type TrezorSafetyCheckLevel, type TronAddress, type TronContract, type TronFreezeBalanceV2Contract, type TronGetAddressParams, type TronResource, type TronSignMsgParams, type TronSignTxParams, type TronSignature, type TronSignedTx, type TronTransferContract, type TronTriggerSmartContract, type TronUnfreezeBalanceV2Contract, type TronVote, type TronVoteWitnessContract, type TronWithdrawExpireUnfreezeContract, TypedEventEmitter, UI_REQUEST, type UiRequestEvent, UiRequestOperationAttribution, UiRequestRegistry, UiResponseEvent, type VendorType, type WalletIdentity, type ZcashFullViewingKey, type ZcashFullViewingKeyMode, type ZcashGetFullViewingKeyParams, type ZcashGetShieldedAddressParams, type ZcashShieldedAddress, assertBoundedCbor, batchCall, boundedCborFromHex, buildAllNetworkCancelledFailure, buildUnsupportedMethodResponse, bytesToHex, canReplayHardwareMethodAfterTransportFailure, compareSemver, createBridgedConnector, createCombinedConnector, createHardwareLinkId, createHardwareOperationId, createHardwareSearchTargetId, deriveDeviceFingerprint, detectHardwareVendorFromDescriptor, emitDeviceBindingStatus, ensure0x, failure, getAllNetworkMethodChain, getHardwareMethodMetadata, hasHardwareRuntimeIdPrefix, hexToBytes, isAllNetworkMethodName, isConnectionLost, isHardwareOperationId, isKnownNonTargetHardwareVendor, isUserRefusal, isWalletSafetyFailure, padHex64, parseBip32MasterFingerprint, parseHardwareRuntimeId, parseWalletMasterFingerprint, pickConnectionContext, prepareSolanaOffchainMessageV1, rehydrateConnectorError, requestBleDeviceSelection, requestSaveDeviceBinding, resolveHardwareOperationTarget, resolveSearchTargetReusePolicy, runAllNetworkGetAddress, serializeConnectorError, stripHex, success, summarizeForLog, toPhysicalDeviceSearchTarget };