@ledgerhq/device-signer-kit-bitcoin 0.0.0-device-id-20251125171501 → 0.0.0-dmk-lifi-20260106144650
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/README.md +157 -11
- package/lib/cjs/api/SignerBtc.js +1 -1
- package/lib/cjs/api/SignerBtc.js.map +1 -1
- package/lib/cjs/api/app-binder/GetMasterFingerprintDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetMasterFingerprintDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/app-binder/RegisterWalletDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/RegisterWalletDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +2 -2
- package/lib/cjs/api/model/MasterFingerprintOptions.js +2 -0
- package/lib/cjs/api/model/MasterFingerprintOptions.js.map +7 -0
- package/lib/cjs/api/model/RegisterWalletOptions.js +2 -0
- package/lib/cjs/api/model/RegisterWalletOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerBtc.js +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.js.map +2 -2
- package/lib/cjs/internal/DefaultSignerBtc.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/BtcAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/BtcAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/BtcAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/BtcAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/RegisterWalletTask.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js.map +7 -0
- package/lib/cjs/internal/utils/BtcCommandUtils.js +1 -1
- package/lib/cjs/internal/utils/BtcCommandUtils.js.map +3 -3
- package/lib/cjs/internal/utils/BtcCommandUtils.test.js +1 -1
- package/lib/cjs/internal/utils/BtcCommandUtils.test.js.map +3 -3
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.js +1 -1
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.js.map +3 -3
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js.map +3 -3
- package/lib/cjs/internal/wallet/service/WalletBuilder.js +1 -1
- package/lib/cjs/internal/wallet/service/WalletBuilder.js.map +1 -1
- package/lib/cjs/package.json +43 -39
- package/lib/esm/api/app-binder/GetMasterFingerprintDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GetMasterFingerprintDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/app-binder/RegisterWalletDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/RegisterWalletDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +3 -3
- package/lib/esm/api/model/MasterFingerprintOptions.js +1 -0
- package/lib/esm/api/model/MasterFingerprintOptions.js.map +7 -0
- package/lib/esm/api/model/RegisterWalletOptions.js +1 -0
- package/lib/esm/api/model/RegisterWalletOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerBtc.js +1 -1
- package/lib/esm/internal/DefaultSignerBtc.js.map +2 -2
- package/lib/esm/internal/DefaultSignerBtc.test.js +1 -1
- package/lib/esm/internal/DefaultSignerBtc.test.js.map +3 -3
- package/lib/esm/internal/app-binder/BtcAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/BtcAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/BtcAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/BtcAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.js +2 -0
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/RegisterWalletTask.test.js.map +7 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/esm/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js +2 -0
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.js +2 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/register-wallet/RegisterWalletUseCase.test.js.map +7 -0
- package/lib/esm/internal/utils/BtcCommandUtils.js +1 -1
- package/lib/esm/internal/utils/BtcCommandUtils.js.map +3 -3
- package/lib/esm/internal/utils/BtcCommandUtils.test.js +1 -1
- package/lib/esm/internal/utils/BtcCommandUtils.test.js.map +3 -3
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.js +1 -1
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.js.map +3 -3
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js.map +3 -3
- package/lib/esm/package.json +43 -39
- package/lib/types/api/SignerBtc.d.ts +7 -1
- package/lib/types/api/SignerBtc.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetMasterFingerprintDeviceActionTypes.d.ts +14 -0
- package/lib/types/api/app-binder/GetMasterFingerprintDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/app-binder/RegisterWalletDeviceActionTypes.d.ts +16 -0
- package/lib/types/api/app-binder/RegisterWalletDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +3 -1
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/MasterFingerprintOptions.d.ts +4 -0
- package/lib/types/api/model/MasterFingerprintOptions.d.ts.map +1 -0
- package/lib/types/api/model/RegisterWalletOptions.d.ts +4 -0
- package/lib/types/api/model/RegisterWalletOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerBtc.d.ts +5 -1
- package/lib/types/internal/DefaultSignerBtc.d.ts.map +1 -1
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts +4 -0
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/RegisterWalletAddressCommand.d.ts +2 -5
- package/lib/types/internal/app-binder/command/RegisterWalletAddressCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/task/RegisterWalletTask.d.ts +23 -0
- package/lib/types/internal/app-binder/task/RegisterWalletTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/RegisterWalletTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/RegisterWalletTask.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +2 -0
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -1
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.d.ts +9 -0
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.d.ts +8 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/register-wallet/RegisterWalletUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/utils/BtcCommandUtils.d.ts +5 -0
- package/lib/types/internal/utils/BtcCommandUtils.d.ts.map +1 -1
- package/lib/types/internal/wallet/service/DefaultWalletBuilder.d.ts +2 -1
- package/lib/types/internal/wallet/service/DefaultWalletBuilder.d.ts.map +1 -1
- package/lib/types/internal/wallet/service/WalletBuilder.d.ts +2 -1
- package/lib/types/internal/wallet/service/WalletBuilder.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +33 -29
package/README.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Bitcoin Signer Kit
|
|
2
2
|
|
|
3
3
|
This module provides the implementation of the Ledger Bitcoin signer of the Device Management Kit. It enables interaction with the Bitcoin application on a Ledger device including:
|
|
4
4
|
|
|
5
|
-
- Retrieving the Bitcoin public key
|
|
5
|
+
- Retrieving the Bitcoin extended public key and master fingerprint;
|
|
6
6
|
- Signing a message displayed on a Ledger device;
|
|
7
7
|
- Signing a Bitcoin partially signed transaction (PSBT);
|
|
8
8
|
- Signing a Bitcoin transaction;
|
|
9
|
+
- Retrieving wallet addresses;
|
|
10
|
+
- Registering custom wallet policies (e.g., multisig wallets);
|
|
9
11
|
|
|
10
12
|
## 🔹 Index
|
|
11
13
|
|
|
@@ -14,10 +16,12 @@ This module provides the implementation of the Ledger Bitcoin signer of the Devi
|
|
|
14
16
|
3. [Initialisation](#-initialisation)
|
|
15
17
|
4. [Use Cases](#-use-cases)
|
|
16
18
|
- [Get Extended Public Key](#use-case-1-get-extended-public-key)
|
|
17
|
-
- [
|
|
18
|
-
- [Sign
|
|
19
|
-
- [Sign Transaction](#use-case-4-sign-
|
|
20
|
-
- [
|
|
19
|
+
- [Get Master Fingerprint](#use-case-2-get-master-fingerprint)
|
|
20
|
+
- [Sign Message](#use-case-3-sign-message)
|
|
21
|
+
- [Sign Partially Signed Transaction (PSBT)](#use-case-4-sign-psbt)
|
|
22
|
+
- [Sign Transaction](#use-case-5-sign-transaction)
|
|
23
|
+
- [Get Wallet address](#use-case-6-get-wallet-address)
|
|
24
|
+
- [Register Wallet](#use-case-7-register-wallet)
|
|
21
25
|
5. [Observable Behavior](#-observable-behavior)
|
|
22
26
|
6. [Example](#-example)
|
|
23
27
|
|
|
@@ -46,7 +50,7 @@ const signerBitcoin = new SignerBtcBuilder({ sdk, sessionId }).build();
|
|
|
46
50
|
|
|
47
51
|
## 🔹 Use Cases
|
|
48
52
|
|
|
49
|
-
The `SignerBtcBuilder.build()` method will return a `SignerBitcoin` instance that exposes
|
|
53
|
+
The `SignerBtcBuilder.build()` method will return a `SignerBitcoin` instance that exposes 7 dedicated methods, each of which calls an independent use case. Each use case will return an object that contains an observable and a method called `cancel`.
|
|
50
54
|
|
|
51
55
|
---
|
|
52
56
|
|
|
@@ -96,7 +100,44 @@ type GetAddressCommandResponse = {
|
|
|
96
100
|
|
|
97
101
|
---
|
|
98
102
|
|
|
99
|
-
### Use Case 2:
|
|
103
|
+
### Use Case 2: Get master fingerprint
|
|
104
|
+
|
|
105
|
+
This method allows users to retrieve the master fingerprint of the wallet. The master fingerprint is a 4-byte identifier derived from the master public key, commonly used in BIP32 derivation paths and PSBTs.
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
const { observable, cancel } = signerBitcoin.getMasterFingerprint(options);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### **Parameters**
|
|
112
|
+
|
|
113
|
+
- `options`
|
|
114
|
+
|
|
115
|
+
- Optional
|
|
116
|
+
- Type: `MasterFingerprintOptions`
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
type MasterFingerprintOptions = {
|
|
120
|
+
skipOpenApp?: boolean;
|
|
121
|
+
};
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- `skipOpenApp`: An optional boolean indicating whether to skip opening the Bitcoin app automatically (`true`) or not (`false`).
|
|
125
|
+
|
|
126
|
+
#### **Returns**
|
|
127
|
+
|
|
128
|
+
- `observable` Emits DeviceActionState updates, including the following details:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
type GetMasterFingerprintCommandResponse = {
|
|
132
|
+
masterFingerprint: Uint8Array; // 4-byte master fingerprint
|
|
133
|
+
};
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
- `cancel` A function to cancel the action on the Ledger device.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### Use Case 3: Sign message
|
|
100
141
|
|
|
101
142
|
This method allows users to sign a text string that is displayed on Ledger devices.
|
|
102
143
|
|
|
@@ -137,7 +178,7 @@ type Signature = {
|
|
|
137
178
|
|
|
138
179
|
---
|
|
139
180
|
|
|
140
|
-
### Use Case
|
|
181
|
+
### Use Case 4: Sign PSBT
|
|
141
182
|
|
|
142
183
|
This method allows users to sign a partially signed transaction.
|
|
143
184
|
|
|
@@ -217,7 +258,7 @@ type PsbtSignature = PartialSignature | MusigPartialSignature | MusigPubNonce;
|
|
|
217
258
|
|
|
218
259
|
---
|
|
219
260
|
|
|
220
|
-
### Use Case
|
|
261
|
+
### Use Case 5: Sign transaction
|
|
221
262
|
|
|
222
263
|
This method allows users to sign a Bitcoin transaction.
|
|
223
264
|
|
|
@@ -272,7 +313,7 @@ type TransactionHash = `0x${string}`;
|
|
|
272
313
|
|
|
273
314
|
- `cancel` A function to cancel the action on the Ledger device.
|
|
274
315
|
|
|
275
|
-
### Use Case
|
|
316
|
+
### Use Case 6: Get wallet address
|
|
276
317
|
|
|
277
318
|
This method allows users to get the wallet address linked to a Ledger device.
|
|
278
319
|
|
|
@@ -324,6 +365,104 @@ type WalletAddress = {
|
|
|
324
365
|
|
|
325
366
|
---
|
|
326
367
|
|
|
368
|
+
### Use Case 7: Register wallet
|
|
369
|
+
|
|
370
|
+
This method allows users to register a custom wallet policy on the Ledger device. Wallet policies describe complex wallet setups like multisig wallets. Once registered, the device returns an HMAC that must be stored and provided for future operations (signing, address generation) with this wallet.
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
const { observable, cancel } = signerBitcoin.registerWallet(
|
|
374
|
+
walletPolicy,
|
|
375
|
+
options,
|
|
376
|
+
);
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
#### **Parameters**
|
|
380
|
+
|
|
381
|
+
- `walletPolicy`
|
|
382
|
+
|
|
383
|
+
- **Required**
|
|
384
|
+
- **Type:** `WalletPolicy`
|
|
385
|
+
|
|
386
|
+
```typescript
|
|
387
|
+
class WalletPolicy {
|
|
388
|
+
constructor(
|
|
389
|
+
public name: string, // Human-readable wallet name (displayed on device)
|
|
390
|
+
public descriptorTemplate: string, // Descriptor template (e.g., "wsh(sortedmulti(2,@0/**,@1/**))")
|
|
391
|
+
public keys: string[], // Array of key origin info + xpubs
|
|
392
|
+
) {}
|
|
393
|
+
}
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
- `name`: A human-readable name for the wallet (max 64 characters), displayed on the device during registration.
|
|
397
|
+
- `descriptorTemplate`: A Bitcoin descriptor template using placeholders like `@0`, `@1` for keys. See [wallet policies documentation](https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/wallet.md).
|
|
398
|
+
- `keys`: Array of extended public keys with key origin info in the format `[fingerprint/derivation/path]xpub...`.
|
|
399
|
+
|
|
400
|
+
- `options`
|
|
401
|
+
|
|
402
|
+
- Optional
|
|
403
|
+
- Type: `RegisterWalletOptions`
|
|
404
|
+
|
|
405
|
+
```typescript
|
|
406
|
+
type RegisterWalletOptions = {
|
|
407
|
+
skipOpenApp?: boolean;
|
|
408
|
+
};
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
- `skipOpenApp`: An optional boolean indicating whether to skip opening the Bitcoin app automatically.
|
|
412
|
+
|
|
413
|
+
#### **Returns**
|
|
414
|
+
|
|
415
|
+
- `observable` Emits DeviceActionState updates, including the following details:
|
|
416
|
+
|
|
417
|
+
```typescript
|
|
418
|
+
class RegisteredWallet {
|
|
419
|
+
constructor(
|
|
420
|
+
public name: string,
|
|
421
|
+
public descriptorTemplate: string,
|
|
422
|
+
public keys: string[],
|
|
423
|
+
public hmac: Uint8Array, // 32-byte HMAC to store for future operations
|
|
424
|
+
) {}
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
The returned `RegisteredWallet` includes the HMAC which must be stored securely. This HMAC is required for any subsequent operations with this wallet (signing transactions, generating addresses).
|
|
429
|
+
|
|
430
|
+
- `cancel` A function to cancel the action on the Ledger device.
|
|
431
|
+
|
|
432
|
+
#### **Example**
|
|
433
|
+
|
|
434
|
+
```typescript
|
|
435
|
+
import {
|
|
436
|
+
WalletPolicy,
|
|
437
|
+
RegisteredWallet,
|
|
438
|
+
} from "@ledgerhq/device-signer-kit-bitcoin";
|
|
439
|
+
|
|
440
|
+
// Define a 2-of-2 multisig wallet policy
|
|
441
|
+
const walletPolicy = new WalletPolicy(
|
|
442
|
+
"My Multisig",
|
|
443
|
+
"wsh(sortedmulti(2,@0/**,@1/**))",
|
|
444
|
+
[
|
|
445
|
+
"[76223a6e/48'/1'/0'/2']tpubDE7NQymr4AFtewpAsWtnreyq9ghkzQBXpCZjWLFVRAvnbf7vya2eMTvT2fPapNqL8SuVvLQdbUbMfWLVDCZKnsEBqp6UK93QEzL8Ck23AwF",
|
|
446
|
+
"[f5acc2fd/48'/1'/0'/2']tpubDFAqEGNyad35aBCKUAXbQGDjdVhNueno5ZZVEn3sQbW5ci457gLR7HyTmHBg93oourBssgUxuWz1jX5uhc1qaqFo9VsybY1J5FuedLfm4dK",
|
|
447
|
+
],
|
|
448
|
+
);
|
|
449
|
+
|
|
450
|
+
// Register the wallet
|
|
451
|
+
const { observable } = signerBitcoin.registerWallet(walletPolicy);
|
|
452
|
+
|
|
453
|
+
observable.subscribe({
|
|
454
|
+
next: (state) => {
|
|
455
|
+
if (state.status === DeviceActionStatus.Completed) {
|
|
456
|
+
const registeredWallet: RegisteredWallet = state.output;
|
|
457
|
+
// Store the HMAC securely for future use
|
|
458
|
+
console.log("Wallet registered! HMAC:", registeredWallet.hmac);
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
});
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
327
466
|
## 🔹 Observable Behavior
|
|
328
467
|
|
|
329
468
|
Each method returns an [Observable](https://rxjs.dev/guide/observable) emitting updates structured as [`DeviceActionState`](https://github.com/LedgerHQ/device-sdk-ts/blob/develop/packages/device-management-kit/src/api/device-action/model/DeviceActionState.ts). These updates reflect the operation’s progress and status:
|
|
@@ -419,6 +558,13 @@ switch (requiredUserInteraction) {
|
|
|
419
558
|
console.log("The user needs to confirm on the device to open the app.");
|
|
420
559
|
break;
|
|
421
560
|
}
|
|
561
|
+
case UserInteractionRequired.RegisterWallet: {
|
|
562
|
+
// User needs to review and approve the wallet policy on the device
|
|
563
|
+
console.log(
|
|
564
|
+
"The user needs to review and approve the wallet policy on the device.",
|
|
565
|
+
);
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
422
568
|
default:
|
|
423
569
|
// Type guard to ensure all cases are handled
|
|
424
570
|
const uncaughtUserInteraction: never = requiredUserInteraction;
|
package/lib/cjs/api/SignerBtc.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var a=(e,t,p,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of o(t))!l.call(e,r)&&r!==p&&i(e,r,{get:()=>t[r],enumerable:!(s=n(t,r))||s.enumerable});return e};var y=e=>a(i({},"__esModule",{value:!0}),e);var g={};module.exports=y(g);
|
|
2
2
|
//# sourceMappingURL=SignerBtc.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/SignerBtc.ts"],
|
|
4
|
-
"sourcesContent": ["import { type GetExtendedPublicKeyDAReturnType } from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignPsbtDAReturnType } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type PsbtOptions } from \"@api/model/PsbtOptions\";\nimport { type Wallet } from \"@api/model/Wallet\";\n\nimport { type GetWalletAddressDAReturnType } from \"./app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type WalletAddressOptions } from \"./model/WalletAddressOptions\";\n\nexport interface SignerBtc {\n getExtendedPublicKey: (\n derivationPath: string,\n options?: AddressOptions,\n ) => GetExtendedPublicKeyDAReturnType;\n signMessage: (\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ) => SignMessageDAReturnType;\n signPsbt: (\n wallet: Wallet,\n psbt: Psbt,\n options?: PsbtOptions,\n ) => SignPsbtDAReturnType;\n signTransaction: (\n wallet: Wallet,\n psbt: Psbt,\n options?: PsbtOptions,\n ) => SignTransactionDAReturnType;\n getWalletAddress: (\n wallet: Wallet,\n addressIndex: number,\n options?: WalletAddressOptions,\n ) => GetWalletAddressDAReturnType;\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { type GetExtendedPublicKeyDAReturnType } from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport { type GetMasterFingerprintDAReturnType } from \"@api/app-binder/GetMasterFingerprintDeviceActionTypes\";\nimport { type RegisterWalletDAReturnType } from \"@api/app-binder/RegisterWalletDeviceActionTypes\";\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type SignPsbtDAReturnType } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { type SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MasterFingerprintOptions } from \"@api/model/MasterFingerprintOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type PsbtOptions } from \"@api/model/PsbtOptions\";\nimport { type RegisterWalletOptions } from \"@api/model/RegisterWalletOptions\";\nimport { type Wallet, type WalletPolicy } from \"@api/model/Wallet\";\n\nimport { type GetWalletAddressDAReturnType } from \"./app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type WalletAddressOptions } from \"./model/WalletAddressOptions\";\n\nexport interface SignerBtc {\n getExtendedPublicKey: (\n derivationPath: string,\n options?: AddressOptions,\n ) => GetExtendedPublicKeyDAReturnType;\n getMasterFingerprint: (\n options?: MasterFingerprintOptions,\n ) => GetMasterFingerprintDAReturnType;\n registerWallet: (\n wallet: WalletPolicy,\n options?: RegisterWalletOptions,\n ) => RegisterWalletDAReturnType;\n signMessage: (\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ) => SignMessageDAReturnType;\n signPsbt: (\n wallet: Wallet,\n psbt: Psbt,\n options?: PsbtOptions,\n ) => SignPsbtDAReturnType;\n signTransaction: (\n wallet: Wallet,\n psbt: Psbt,\n options?: PsbtOptions,\n ) => SignTransactionDAReturnType;\n getWalletAddress: (\n wallet: Wallet,\n addressIndex: number,\n options?: WalletAddressOptions,\n ) => GetWalletAddressDAReturnType;\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["SignerBtc_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var d=(t,e,i,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of a(e))!A.call(t,r)&&r!==i&&p(t,r,{get:()=>e[r],enumerable:!(n=o(e,r))||n.enumerable});return t};var u=t=>d(p({},"__esModule",{value:!0}),t);var m={};module.exports=u(m);
|
|
2
|
+
//# sourceMappingURL=GetMasterFingerprintDeviceActionTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/app-binder/GetMasterFingerprintDeviceActionTypes.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type ExecuteDeviceActionReturnType,\n type SendCommandInAppDAError,\n type SendCommandInAppDAIntermediateValue,\n type SendCommandInAppDAOutput,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\n\ntype GetMasterFingerprintDARequiredInteraction = UserInteractionRequired.None;\n\nexport type GetMasterFingerprintDAOutput = SendCommandInAppDAOutput<{\n masterFingerprint: Uint8Array;\n}>;\n\nexport type GetMasterFingerprintDAError =\n SendCommandInAppDAError<BtcErrorCodes>;\n\nexport type GetMasterFingerprintDAIntermediateValue =\n SendCommandInAppDAIntermediateValue<GetMasterFingerprintDARequiredInteraction>;\n\nexport type GetMasterFingerprintDAInput = {\n skipOpenApp: boolean;\n};\n\nexport type GetMasterFingerprintDAReturnType = ExecuteDeviceActionReturnType<\n GetMasterFingerprintDAOutput,\n GetMasterFingerprintDAError,\n GetMasterFingerprintDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["GetMasterFingerprintDeviceActionTypes_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var R=(t,e,l,p)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of a(e))!n.call(t,r)&&r!==l&&i(t,r,{get:()=>e[r],enumerable:!(p=o(e,r))||p.enumerable});return t};var s=t=>R(i({},"__esModule",{value:!0}),t);var u={};module.exports=s(u);
|
|
2
|
+
//# sourceMappingURL=RegisterWalletDeviceActionTypes.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/app-binder/RegisterWalletDeviceActionTypes.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type CommandErrorResult,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type RegisteredWallet, type WalletPolicy } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\n\ntype RegisterWalletDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.RegisterWallet;\n\nexport type RegisterWalletDAOutput = RegisteredWallet;\n\nexport type RegisterWalletDAError =\n | OpenAppDAError\n | CommandErrorResult<BtcErrorCodes>[\"error\"];\n\nexport type RegisterWalletDAIntermediateValue = {\n requiredUserInteraction: RegisterWalletDARequiredInteraction;\n};\n\nexport type RegisterWalletDAInput = {\n wallet: WalletPolicy;\n skipOpenApp: boolean;\n};\n\nexport type RegisterWalletDAReturnType = ExecuteDeviceActionReturnType<\n RegisterWalletDAOutput,\n RegisterWalletDAError,\n RegisterWalletDAIntermediateValue\n>;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["RegisterWalletDeviceActionTypes_exports", "__toCommonJS"]
|
|
7
|
+
}
|
package/lib/cjs/api/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var
|
|
1
|
+
"use strict";var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var B=(t,o)=>{for(var f in o)l(t,f,{get:o[f],enumerable:!0})},x=(t,o,f,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let m of g(o))!u.call(t,m)&&m!==f&&l(t,m,{get:()=>o[m],enumerable:!(a=c(o,m))||a.enumerable});return t},e=(t,o,f)=>(x(t,o,"default"),f&&x(f,o,"default"));var D=t=>x(l({},"__esModule",{value:!0}),t);var r={};B(r,{DefaultDescriptorTemplate:()=>p.DefaultDescriptorTemplate,DefaultWallet:()=>p.DefaultWallet,RegisteredWallet:()=>p.RegisteredWallet,SignerBtcBuilder:()=>i.SignerBtcBuilder,WalletPolicy:()=>p.WalletPolicy});module.exports=D(r);var i=require("./SignerBtcBuilder");e(r,require("./app-binder/GetExtendedPublicKeyDeviceActionTypes"),module.exports);e(r,require("./app-binder/GetMasterFingerprintDeviceActionTypes"),module.exports);e(r,require("./app-binder/GetWalletAddressDeviceActionTypes"),module.exports);e(r,require("./app-binder/RegisterWalletDeviceActionTypes"),module.exports);e(r,require("./app-binder/SignMessageDeviceActionTypes"),module.exports);e(r,require("./app-binder/SignPsbtDeviceActionTypes"),module.exports);e(r,require("./app-binder/SignTransactionDeviceActionTypes"),module.exports);var p=require("./model/Wallet");e(r,require("./SignerBtc"),module.exports);e(r,require("./SignerBtcBuilder"),module.exports);0&&(module.exports={DefaultDescriptorTemplate,DefaultWallet,RegisteredWallet,SignerBtcBuilder,WalletPolicy,...require("./app-binder/GetExtendedPublicKeyDeviceActionTypes"),...require("./app-binder/GetMasterFingerprintDeviceActionTypes"),...require("./app-binder/GetWalletAddressDeviceActionTypes"),...require("./app-binder/RegisterWalletDeviceActionTypes"),...require("./app-binder/SignMessageDeviceActionTypes"),...require("./app-binder/SignPsbtDeviceActionTypes"),...require("./app-binder/SignTransactionDeviceActionTypes"),...require("./SignerBtc"),...require("./SignerBtcBuilder")});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/api/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/api/index.ts"],
|
|
4
|
-
"sourcesContent": ["export { type SignerBtc } from \"./SignerBtc\";\nexport { SignerBtcBuilder } from \"./SignerBtcBuilder\";\nexport * from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nexport * from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nexport * from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport * from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nexport * from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {
|
|
5
|
-
"mappings": "2dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,
|
|
4
|
+
"sourcesContent": ["export { type SignerBtc } from \"./SignerBtc\";\nexport { SignerBtcBuilder } from \"./SignerBtcBuilder\";\nexport * from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nexport * from \"@api/app-binder/GetMasterFingerprintDeviceActionTypes\";\nexport * from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nexport * from \"@api/app-binder/RegisterWalletDeviceActionTypes\";\nexport * from \"@api/app-binder/SignMessageDeviceActionTypes\";\nexport * from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nexport * from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nexport {\n DefaultDescriptorTemplate,\n DefaultWallet,\n RegisteredWallet,\n WalletPolicy,\n} from \"@api/model/Wallet\";\nexport * from \"@api/SignerBtc\";\nexport * from \"@api/SignerBtcBuilder\";\n"],
|
|
5
|
+
"mappings": "2dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8NAAAE,EAAAF,GACA,IAAAG,EAAiC,8BACjCC,EAAAJ,EAAc,iEAFd,gBAGAI,EAAAJ,EAAc,iEAHd,gBAIAI,EAAAJ,EAAc,6DAJd,gBAKAI,EAAAJ,EAAc,2DALd,gBAMAI,EAAAJ,EAAc,wDANd,gBAOAI,EAAAJ,EAAc,qDAPd,gBAQAI,EAAAJ,EAAc,4DARd,gBASA,IAAAK,EAKO,6BACPD,EAAAJ,EAAc,0BAfd,gBAgBAI,EAAAJ,EAAc,iCAhBd",
|
|
6
6
|
"names": ["api_exports", "__export", "__toCommonJS", "import_SignerBtcBuilder", "__reExport", "import_Wallet"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var O=(e,p,o,t)=>{if(p&&typeof p=="object"||typeof p=="function")for(let n of s(p))!a.call(e,n)&&n!==o&&i(e,n,{get:()=>p[n],enumerable:!(t=r(p,n))||t.enumerable});return e};var b=e=>O(i({},"__esModule",{value:!0}),e);var g={};module.exports=b(g);
|
|
2
|
+
//# sourceMappingURL=MasterFingerprintOptions.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/model/MasterFingerprintOptions.ts"],
|
|
4
|
+
"sourcesContent": ["export type MasterFingerprintOptions = {\n skipOpenApp?: boolean;\n};\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["MasterFingerprintOptions_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var r=(p,e,l,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of s(e))!a.call(p,t)&&t!==l&&i(p,t,{get:()=>e[t],enumerable:!(o=n(e,t))||o.enumerable});return p};var O=p=>r(i({},"__esModule",{value:!0}),p);var b={};module.exports=O(b);
|
|
2
|
+
//# sourceMappingURL=RegisterWalletOptions.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/api/model/RegisterWalletOptions.ts"],
|
|
4
|
+
"sourcesContent": ["export type RegisterWalletOptions = {\n skipOpenApp?: boolean;\n};\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["RegisterWalletOptions_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var c=(r,e)=>{for(var t in e)p(r,t,{get:e[t],enumerable:!0})},m=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of l(e))!g.call(r,n)&&n!==t&&p(r,n,{get:()=>e[n],enumerable:!(s=o(e,n))||s.enumerable});return r};var f=r=>m(p({},"__esModule",{value:!0}),r);var d={};c(d,{DefaultSignerBtc:()=>y});module.exports=f(d);var i=require("./use-cases/di/useCasesTypes"),a=require("./di");class y{_container;constructor({dmk:e,sessionId:t}){this._container=(0,a.makeContainer)({dmk:e,sessionId:t})}getWalletAddress(e,t,s){return this._container.get(i.useCasesTypes.GetWalletAddressUseCase).execute(s?.checkOnDevice??!1,e,s?.change??!1,t,s?.skipOpenApp??!1)}signPsbt(e,t,s){return this._container.get(i.useCasesTypes.SignPsbtUseCase).execute(e,t,s?.skipOpenApp??!1)}getExtendedPublicKey(e,t){return this._container.get(i.useCasesTypes.GetExtendedPublicKeyUseCase).execute(e,{checkOnDevice:t?.checkOnDevice??!1,skipOpenApp:t?.skipOpenApp??!1})}getMasterFingerprint(e){return this._container.get(i.useCasesTypes.GetMasterFingerprintUseCase).execute({skipOpenApp:e?.skipOpenApp??!1})}registerWallet(e,t){return this._container.get(i.useCasesTypes.RegisterWalletUseCase).execute(e,t?.skipOpenApp??!1)}signMessage(e,t,s){return this._container.get(i.useCasesTypes.SignMessageUseCase).execute(e,t,s?.skipOpenApp??!1)}signTransaction(e,t,s){return this._container.get(i.useCasesTypes.SignTransactionUseCase).execute(e,t,s?.skipOpenApp??!1)}}0&&(module.exports={DefaultSignerBtc});
|
|
2
2
|
//# sourceMappingURL=DefaultSignerBtc.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/internal/DefaultSignerBtc.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type PsbtOptions } from \"@api/model/PsbtOptions\";\nimport { type Wallet } from \"@api/model/Wallet\";\nimport { type WalletAddressOptions } from \"@api/model/WalletAddressOptions\";\nimport { type SignerBtc } from \"@api/SignerBtc\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { type GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { type SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nimport { type GetWalletAddressUseCase } from \"./use-cases/get-wallet-address/GetWalletAddressUseCase\";\nimport { type SignMessageUseCase } from \"./use-cases/sign-message/SignMessageUseCase\";\nimport { makeContainer } from \"./di\";\n\ntype DefaultSignerBtcConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerBtc implements SignerBtc {\n private readonly _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerBtcConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n getWalletAddress(\n wallet: Wallet,\n addressIndex: number,\n options?: WalletAddressOptions,\n ) {\n return this._container\n .get<GetWalletAddressUseCase>(useCasesTypes.GetWalletAddressUseCase)\n .execute(\n options?.checkOnDevice ?? false,\n wallet,\n options?.change ?? false,\n addressIndex,\n options?.skipOpenApp ?? false,\n );\n }\n\n signPsbt(wallet: Wallet, psbt: Psbt, options?: PsbtOptions) {\n return this._container\n .get<SignPsbtUseCase>(useCasesTypes.SignPsbtUseCase)\n .execute(wallet, psbt, options?.skipOpenApp ?? false);\n }\n\n getExtendedPublicKey(derivationPath: string, options?: AddressOptions) {\n return this._container\n .get<GetExtendedPublicKeyUseCase>(\n useCasesTypes.GetExtendedPublicKeyUseCase,\n )\n .execute(derivationPath, {\n checkOnDevice: options?.checkOnDevice ?? false,\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n\n signMessage(\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options?.skipOpenApp ?? false);\n }\n\n signTransaction(wallet: Wallet, psbt: Psbt, options?: PsbtOptions) {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(wallet, psbt, options?.skipOpenApp ?? false);\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type MasterFingerprintOptions } from \"@api/model/MasterFingerprintOptions\";\nimport { type MessageOptions } from \"@api/model/MessageOptions\";\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type PsbtOptions } from \"@api/model/PsbtOptions\";\nimport { type RegisterWalletOptions } from \"@api/model/RegisterWalletOptions\";\nimport { type Wallet, type WalletPolicy } from \"@api/model/Wallet\";\nimport { type WalletAddressOptions } from \"@api/model/WalletAddressOptions\";\nimport { type SignerBtc } from \"@api/SignerBtc\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { type GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { type GetMasterFingerprintUseCase } from \"@internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase\";\nimport { type RegisterWalletUseCase } from \"@internal/use-cases/register-wallet/RegisterWalletUseCase\";\nimport { type SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nimport { type GetWalletAddressUseCase } from \"./use-cases/get-wallet-address/GetWalletAddressUseCase\";\nimport { type SignMessageUseCase } from \"./use-cases/sign-message/SignMessageUseCase\";\nimport { makeContainer } from \"./di\";\n\ntype DefaultSignerBtcConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerBtc implements SignerBtc {\n private readonly _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerBtcConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n getWalletAddress(\n wallet: Wallet,\n addressIndex: number,\n options?: WalletAddressOptions,\n ) {\n return this._container\n .get<GetWalletAddressUseCase>(useCasesTypes.GetWalletAddressUseCase)\n .execute(\n options?.checkOnDevice ?? false,\n wallet,\n options?.change ?? false,\n addressIndex,\n options?.skipOpenApp ?? false,\n );\n }\n\n signPsbt(wallet: Wallet, psbt: Psbt, options?: PsbtOptions) {\n return this._container\n .get<SignPsbtUseCase>(useCasesTypes.SignPsbtUseCase)\n .execute(wallet, psbt, options?.skipOpenApp ?? false);\n }\n\n getExtendedPublicKey(derivationPath: string, options?: AddressOptions) {\n return this._container\n .get<GetExtendedPublicKeyUseCase>(\n useCasesTypes.GetExtendedPublicKeyUseCase,\n )\n .execute(derivationPath, {\n checkOnDevice: options?.checkOnDevice ?? false,\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n\n getMasterFingerprint(options?: MasterFingerprintOptions) {\n return this._container\n .get<GetMasterFingerprintUseCase>(\n useCasesTypes.GetMasterFingerprintUseCase,\n )\n .execute({\n skipOpenApp: options?.skipOpenApp ?? false,\n });\n }\n\n registerWallet(wallet: WalletPolicy, options?: RegisterWalletOptions) {\n return this._container\n .get<RegisterWalletUseCase>(useCasesTypes.RegisterWalletUseCase)\n .execute(wallet, options?.skipOpenApp ?? false);\n }\n\n signMessage(\n derivationPath: string,\n message: string,\n options?: MessageOptions,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message, options?.skipOpenApp ?? false);\n }\n\n signTransaction(wallet: Wallet, psbt: Psbt, options?: PsbtOptions) {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(wallet, psbt, options?.skipOpenApp ?? false);\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAgBA,IAAAI,EAA8B,gDAS9BC,EAA8B,gBAOvB,MAAMH,CAAsC,CAChC,WAEjB,YAAY,CAAE,IAAAI,EAAK,UAAAC,CAAU,EAAoC,CAC/D,KAAK,cAAa,iBAAc,CAAE,IAAAD,EAAK,UAAAC,CAAU,CAAC,CACpD,CAEA,iBACEC,EACAC,EACAC,EACA,CACA,OAAO,KAAK,WACT,IAA6B,gBAAc,uBAAuB,EAClE,QACCA,GAAS,eAAiB,GAC1BF,EACAE,GAAS,QAAU,GACnBD,EACAC,GAAS,aAAe,EAC1B,CACJ,CAEA,SAASF,EAAgBG,EAAYD,EAAuB,CAC1D,OAAO,KAAK,WACT,IAAqB,gBAAc,eAAe,EAClD,QAAQF,EAAQG,EAAMD,GAAS,aAAe,EAAK,CACxD,CAEA,qBAAqBE,EAAwBF,EAA0B,CACrE,OAAO,KAAK,WACT,IACC,gBAAc,2BAChB,EACC,QAAQE,EAAgB,CACvB,cAAeF,GAAS,eAAiB,GACzC,YAAaA,GAAS,aAAe,EACvC,CAAC,CACL,CAEA,qBAAqBA,EAAoC,CACvD,OAAO,KAAK,WACT,IACC,gBAAc,2BAChB,EACC,QAAQ,CACP,YAAaA,GAAS,aAAe,EACvC,CAAC,CACL,CAEA,eAAeF,EAAsBE,EAAiC,CACpE,OAAO,KAAK,WACT,IAA2B,gBAAc,qBAAqB,EAC9D,QAAQF,EAAQE,GAAS,aAAe,EAAK,CAClD,CAEA,YACEE,EACAC,EACAH,EACyB,CACzB,OAAO,KAAK,WACT,IAAwB,gBAAc,kBAAkB,EACxD,QAAQE,EAAgBC,EAASH,GAAS,aAAe,EAAK,CACnE,CAEA,gBAAgBF,EAAgBG,EAAYD,EAAuB,CACjE,OAAO,KAAK,WACT,IAA4B,gBAAc,sBAAsB,EAChE,QAAQF,EAAQG,EAAMD,GAAS,aAAe,EAAK,CACxD,CACF",
|
|
6
6
|
"names": ["DefaultSignerBtc_exports", "__export", "DefaultSignerBtc", "__toCommonJS", "import_useCasesTypes", "import_di", "dmk", "sessionId", "wallet", "addressIndex", "options", "psbt", "derivationPath", "message"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=require("../api/model/Wallet"),t=require("./DefaultSignerBtc"),o=require("./use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase"),a=require("./use-cases/get-master-fingerprint/GetMasterFingerprintUseCase"),c=require("./use-cases/register-wallet/RegisterWalletUseCase"),p=require("./use-cases/sign-psbt/SignPsbtUseCase"),r=require("./use-cases/sign-transaction/SignTransactionUseCase"),l=require("./use-cases/sign-message/SignMessageUseCase");describe("DefaultSignerBtc",()=>{it("should be defined",()=>{const e=new t.DefaultSignerBtc({dmk:{},sessionId:"session-id"});expect(e).toBeDefined()}),it("should call getExtendedPublicKeyUseCase",()=>{vi.spyOn(o.GetExtendedPublicKeyUseCase.prototype,"execute");const e="session-id",s={executeDeviceAction:vi.fn()};new t.DefaultSignerBtc({dmk:s,sessionId:e}).getExtendedPublicKey("44'/0'/0'/0/0",{checkOnDevice:!0}),expect(o.GetExtendedPublicKeyUseCase.prototype.execute).toHaveBeenCalled()}),it("should call getMasterFingerprintUseCase",()=>{vi.spyOn(a.GetMasterFingerprintUseCase.prototype,"execute");const e="session-id",s={executeDeviceAction:vi.fn()};new t.DefaultSignerBtc({dmk:s,sessionId:e}).getMasterFingerprint({skipOpenApp:!1}),expect(a.GetMasterFingerprintUseCase.prototype.execute).toHaveBeenCalled()}),it("should call registerWalletUseCase",()=>{vi.spyOn(c.RegisterWalletUseCase.prototype,"execute");const e="session-id",s={executeDeviceAction:vi.fn()},i=new t.DefaultSignerBtc({dmk:s,sessionId:e}),d=new n.WalletPolicy("My Multisig","wsh(sortedmulti(2,@0/**,@1/**))",["[f5acc2fd/48'/1'/0'/2']tpubXXX","tpubYYY"]);i.registerWallet(d,{skipOpenApp:!1}),expect(c.RegisterWalletUseCase.prototype.execute).toHaveBeenCalled()}),it("should call signMessageUseCase",()=>{vi.spyOn(l.SignMessageUseCase.prototype,"execute");const e="session-id",s={executeDeviceAction:vi.fn()};new t.DefaultSignerBtc({dmk:s,sessionId:e}).signMessage("44'/0'/0'/0/0","message",{skipOpenApp:!1}),expect(l.SignMessageUseCase.prototype.execute).toHaveBeenCalled()}),it("should call signPsbtUseCase",()=>{vi.spyOn(p.SignPsbtUseCase.prototype,"execute");const e="session-id",s={executeDeviceAction:vi.fn()};new t.DefaultSignerBtc({dmk:s,sessionId:e}).signPsbt(new n.DefaultWallet("44'/0'/0'",n.DefaultDescriptorTemplate.NATIVE_SEGWIT),"",{skipOpenApp:!1}),expect(p.SignPsbtUseCase.prototype.execute).toHaveBeenCalled()}),it("should call signTransactionUseCase",()=>{vi.spyOn(r.SignTransactionUseCase.prototype,"execute");const e="session-id",s={executeDeviceAction:vi.fn()};new t.DefaultSignerBtc({dmk:s,sessionId:e}).signTransaction(new n.DefaultWallet("44'/0'/0'",n.DefaultDescriptorTemplate.NATIVE_SEGWIT),"",{skipOpenApp:!1}),expect(r.SignTransactionUseCase.prototype.execute).toHaveBeenCalled()})});
|
|
2
2
|
//# sourceMappingURL=DefaultSignerBtc.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/internal/DefaultSignerBtc.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\n\nimport {
|
|
5
|
-
"mappings": "aAEA,IAAAA,
|
|
6
|
-
"names": ["import_Wallet", "import_DefaultSignerBtc", "import_GetExtendedPublicKeyUseCase", "import_SignPsbtUseCase", "import_SignTransactionUseCase", "import_SignMessageUseCase", "signer", "sessionId", "dmk"]
|
|
4
|
+
"sourcesContent": ["import { type DeviceManagementKit } from \"@ledgerhq/device-management-kit\";\n\nimport {\n DefaultDescriptorTemplate,\n DefaultWallet,\n WalletPolicy,\n} from \"@api/model/Wallet\";\nimport { DefaultSignerBtc } from \"@internal/DefaultSignerBtc\";\nimport { GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { GetMasterFingerprintUseCase } from \"@internal/use-cases/get-master-fingerprint/GetMasterFingerprintUseCase\";\nimport { RegisterWalletUseCase } from \"@internal/use-cases/register-wallet/RegisterWalletUseCase\";\nimport { SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nimport { SignMessageUseCase } from \"./use-cases/sign-message/SignMessageUseCase\";\n\ndescribe(\"DefaultSignerBtc\", () => {\n it(\"should be defined\", () => {\n const signer = new DefaultSignerBtc({\n dmk: {} as DeviceManagementKit,\n sessionId: \"session-id\",\n });\n expect(signer).toBeDefined();\n });\n\n it(\"should call getExtendedPublicKeyUseCase\", () => {\n vi.spyOn(GetExtendedPublicKeyUseCase.prototype, \"execute\");\n const sessionId = \"session-id\";\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const signer = new DefaultSignerBtc({ dmk, sessionId });\n signer.getExtendedPublicKey(\"44'/0'/0'/0/0\", {\n checkOnDevice: true,\n });\n expect(GetExtendedPublicKeyUseCase.prototype.execute).toHaveBeenCalled();\n });\n\n it(\"should call getMasterFingerprintUseCase\", () => {\n vi.spyOn(GetMasterFingerprintUseCase.prototype, \"execute\");\n const sessionId = \"session-id\";\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const signer = new DefaultSignerBtc({ dmk, sessionId });\n signer.getMasterFingerprint({ skipOpenApp: false });\n expect(GetMasterFingerprintUseCase.prototype.execute).toHaveBeenCalled();\n });\n\n it(\"should call registerWalletUseCase\", () => {\n vi.spyOn(RegisterWalletUseCase.prototype, \"execute\");\n const sessionId = \"session-id\";\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const signer = new DefaultSignerBtc({ dmk, sessionId });\n const walletPolicy = new WalletPolicy(\n \"My Multisig\",\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n [\"[f5acc2fd/48'/1'/0'/2']tpubXXX\", \"tpubYYY\"],\n );\n signer.registerWallet(walletPolicy, { skipOpenApp: false });\n expect(RegisterWalletUseCase.prototype.execute).toHaveBeenCalled();\n });\n\n it(\"should call signMessageUseCase\", () => {\n vi.spyOn(SignMessageUseCase.prototype, \"execute\");\n const sessionId = \"session-id\";\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const derivationPath = \"44'/0'/0'/0/0\";\n const message = \"message\";\n const signer = new DefaultSignerBtc({ dmk, sessionId });\n signer.signMessage(derivationPath, message, { skipOpenApp: false });\n expect(SignMessageUseCase.prototype.execute).toHaveBeenCalled();\n });\n it(\"should call signPsbtUseCase\", () => {\n vi.spyOn(SignPsbtUseCase.prototype, \"execute\");\n const sessionId = \"session-id\";\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const signer = new DefaultSignerBtc({ dmk, sessionId });\n signer.signPsbt(\n new DefaultWallet(\"44'/0'/0'\", DefaultDescriptorTemplate.NATIVE_SEGWIT),\n \"\",\n { skipOpenApp: false },\n );\n expect(SignPsbtUseCase.prototype.execute).toHaveBeenCalled();\n });\n it(\"should call signTransactionUseCase\", () => {\n vi.spyOn(SignTransactionUseCase.prototype, \"execute\");\n const sessionId = \"session-id\";\n const dmk = {\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n const signer = new DefaultSignerBtc({ dmk, sessionId });\n signer.signTransaction(\n new DefaultWallet(\"44'/0'/0'\", DefaultDescriptorTemplate.NATIVE_SEGWIT),\n \"\",\n { skipOpenApp: false },\n );\n expect(SignTransactionUseCase.prototype.execute).toHaveBeenCalled();\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAIO,6BACPC,EAAiC,sCACjCC,EAA4C,mFAC5CC,EAA4C,kFAC5CC,EAAsC,qEACtCC,EAAgC,yDAChCC,EAAuC,uEAEvCC,EAAmC,uDAEnC,SAAS,mBAAoB,IAAM,CACjC,GAAG,oBAAqB,IAAM,CAC5B,MAAMC,EAAS,IAAI,mBAAiB,CAClC,IAAK,CAAC,EACN,UAAW,YACb,CAAC,EACD,OAAOA,CAAM,EAAE,YAAY,CAC7B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,GAAG,MAAM,8BAA4B,UAAW,SAAS,EACzD,MAAMC,EAAY,aACZC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACe,IAAI,mBAAiB,CAAE,IAAAA,EAAK,UAAAD,CAAU,CAAC,EAC/C,qBAAqB,gBAAiB,CAC3C,cAAe,EACjB,CAAC,EACD,OAAO,8BAA4B,UAAU,OAAO,EAAE,iBAAiB,CACzE,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,GAAG,MAAM,8BAA4B,UAAW,SAAS,EACzD,MAAMA,EAAY,aACZC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACe,IAAI,mBAAiB,CAAE,IAAAA,EAAK,UAAAD,CAAU,CAAC,EAC/C,qBAAqB,CAAE,YAAa,EAAM,CAAC,EAClD,OAAO,8BAA4B,UAAU,OAAO,EAAE,iBAAiB,CACzE,CAAC,EAED,GAAG,oCAAqC,IAAM,CAC5C,GAAG,MAAM,wBAAsB,UAAW,SAAS,EACnD,MAAMA,EAAY,aACZC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACMF,EAAS,IAAI,mBAAiB,CAAE,IAAAE,EAAK,UAAAD,CAAU,CAAC,EAChDE,EAAe,IAAI,eACvB,cACA,kCACA,CAAC,iCAAkC,SAAS,CAC9C,EACAH,EAAO,eAAeG,EAAc,CAAE,YAAa,EAAM,CAAC,EAC1D,OAAO,wBAAsB,UAAU,OAAO,EAAE,iBAAiB,CACnE,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,GAAG,MAAM,qBAAmB,UAAW,SAAS,EAChD,MAAMF,EAAY,aACZC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EAGe,IAAI,mBAAiB,CAAE,IAAAA,EAAK,UAAAD,CAAU,CAAC,EAC/C,YAHgB,gBACP,UAE4B,CAAE,YAAa,EAAM,CAAC,EAClE,OAAO,qBAAmB,UAAU,OAAO,EAAE,iBAAiB,CAChE,CAAC,EACD,GAAG,8BAA+B,IAAM,CACtC,GAAG,MAAM,kBAAgB,UAAW,SAAS,EAC7C,MAAMA,EAAY,aACZC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACe,IAAI,mBAAiB,CAAE,IAAAA,EAAK,UAAAD,CAAU,CAAC,EAC/C,SACL,IAAI,gBAAc,YAAa,4BAA0B,aAAa,EACtE,GACA,CAAE,YAAa,EAAM,CACvB,EACA,OAAO,kBAAgB,UAAU,OAAO,EAAE,iBAAiB,CAC7D,CAAC,EACD,GAAG,qCAAsC,IAAM,CAC7C,GAAG,MAAM,yBAAuB,UAAW,SAAS,EACpD,MAAMA,EAAY,aACZC,EAAM,CACV,oBAAqB,GAAG,GAAG,CAC7B,EACe,IAAI,mBAAiB,CAAE,IAAAA,EAAK,UAAAD,CAAU,CAAC,EAC/C,gBACL,IAAI,gBAAc,YAAa,4BAA0B,aAAa,EACtE,GACA,CAAE,YAAa,EAAM,CACvB,EACA,OAAO,yBAAuB,UAAU,OAAO,EAAE,iBAAiB,CACpE,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_Wallet", "import_DefaultSignerBtc", "import_GetExtendedPublicKeyUseCase", "import_GetMasterFingerprintUseCase", "import_RegisterWalletUseCase", "import_SignPsbtUseCase", "import_SignTransactionUseCase", "import_SignMessageUseCase", "signer", "sessionId", "dmk", "walletPolicy"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var f=(r,e)=>{for(var t in e)d(r,t,{get:e[t],enumerable:!0})},T=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of g(e))!P.call(r,i)&&i!==t&&d(r,i,{get:()=>e[i],enumerable:!(s=v(e,i))||s.enumerable});return r};var W=r=>T(d({},"__esModule",{value:!0}),r),S=(r,e,t,s)=>{for(var i=s>1?void 0:s?v(e,t):e,o=r.length-1,c;o>=0;o--)(c=r[o])&&(i=(s?c(e,t,i):c(i))||i);return s&&i&&d(e,t,i),i},p=(r,e)=>(t,s)=>e(t,s,r);var M={};f(M,{BtcAppBinder:()=>l});module.exports=W(M);var n=require("@ledgerhq/device-management-kit"),a=require("inversify"),D=require("../app-binder/command/GetExtendedPublicKeyCommand"),w=require("../app-binder/command/GetMasterFingerprintCommand"),y=require("../app-binder/device-action/SignPsbt/SignPsbtDeviceAction"),b=require("../app-binder/device-action/SignTransaction/SignTransactionDeviceAction"),h=require("../app-binder/task/RegisterWalletTask"),_=require("../app-binder/task/SignMessageTask"),k=require("../data-store/di/dataStoreTypes"),m=require("../externalTypes"),u=require("../psbt/di/psbtTypes"),A=require("../wallet/di/walletTypes"),I=require("./device-action/GetWalletAddress/GetWalletAddressDeviceAction");let l=class{constructor(e,t,s,i,o,c,O){this._dmk=e;this._sessionId=t;this._walletBuilder=s;this._walletSerializer=i;this._dataStoreService=o;this._psbtMapper=c;this._valueParser=O}getExtendedPublicKey(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new n.SendCommandInAppDeviceAction({input:{command:new D.GetExtendedPublicKeyCommand(e),appName:"Bitcoin",requiredUserInteraction:e.checkOnDevice?n.UserInteractionRequired.VerifyAddress:n.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp}})})}getMasterFingerprint(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new n.SendCommandInAppDeviceAction({input:{command:new w.GetMasterFingerprintCommand,appName:"Bitcoin",requiredUserInteraction:n.UserInteractionRequired.None,skipOpenApp:e.skipOpenApp}})})}signMessage(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new n.CallTaskInAppDeviceAction({input:{task:async t=>new _.SendSignMessageTask(t,e,this._dataStoreService).run(),appName:"Bitcoin",requiredUserInteraction:n.UserInteractionRequired.SignPersonalMessage,skipOpenApp:e.skipOpenApp}})})}signPsbt(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new y.SignPsbtDeviceAction({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser,skipOpenApp:e.skipOpenApp}})})}getWalletAddress(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new I.GetWalletAddressDeviceAction({input:{wallet:e.wallet,skipOpenApp:e.skipOpenApp,checkOnDevice:e.checkOnDevice,change:e.change,addressIndex:e.addressIndex,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService}})})}signTransaction(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new b.SignTransactionDeviceAction({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser,skipOpenApp:e.skipOpenApp}})})}registerWallet(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new n.CallTaskInAppDeviceAction({input:{task:async t=>new h.RegisterWalletTask(t,{walletPolicy:e.wallet},this._walletBuilder,this._walletSerializer,this._dataStoreService).run(),appName:"Bitcoin",requiredUserInteraction:n.UserInteractionRequired.RegisterWallet,skipOpenApp:e.skipOpenApp}})})}};l=S([(0,a.injectable)(),p(0,(0,a.inject)(m.externalTypes.Dmk)),p(1,(0,a.inject)(m.externalTypes.SessionId)),p(2,(0,a.inject)(A.walletTypes.WalletBuilder)),p(3,(0,a.inject)(A.walletTypes.WalletSerializer)),p(4,(0,a.inject)(k.dataStoreTypes.DataStoreService)),p(5,(0,a.inject)(u.psbtTypes.PsbtMapper)),p(6,(0,a.inject)(u.psbtTypes.ValueParser))],l);0&&(module.exports={BtcAppBinder});
|
|
2
2
|
//# sourceMappingURL=BtcAppBinder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/BtcAppBinder.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport {\n GetExtendedPublicKeyDAInput,\n GetExtendedPublicKeyDAReturnType,\n} from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignPsbtDAReturnType } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { GetWalletAddressDAReturnType } from \"@api/index\";\nimport { Psbt } from \"@api/model/Psbt\";\nimport { Wallet } from \"@api/model/Wallet\";\nimport { GetExtendedPublicKeyCommand } from \"@internal/app-binder/command/GetExtendedPublicKeyCommand\";\nimport { SignPsbtDeviceAction } from \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SignMessageTask\";\nimport { dataStoreTypes } from \"@internal/data-store/di/dataStoreTypes\";\nimport type { DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { psbtTypes } from \"@internal/psbt/di/psbtTypes\";\nimport type { PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport type { ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { walletTypes } from \"@internal/wallet/di/walletTypes\";\nimport type { WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport type { WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { GetWalletAddressDeviceAction } from \"./device-action/GetWalletAddress/GetWalletAddressDeviceAction\";\n\n@injectable()\nexport class BtcAppBinder {\n constructor(\n @inject(externalTypes.Dmk)\n private readonly _dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId)\n private readonly _sessionId: DeviceSessionId,\n @inject(walletTypes.WalletBuilder)\n private readonly _walletBuilder: WalletBuilder,\n @inject(walletTypes.WalletSerializer)\n private readonly _walletSerializer: WalletSerializer,\n @inject(dataStoreTypes.DataStoreService)\n private readonly _dataStoreService: DataStoreService,\n @inject(psbtTypes.PsbtMapper)\n private readonly _psbtMapper: PsbtMapper,\n @inject(psbtTypes.ValueParser)\n private readonly _valueParser: ValueParser,\n ) {}\n\n getExtendedPublicKey(\n args: GetExtendedPublicKeyDAInput,\n ): GetExtendedPublicKeyDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(args),\n appName: \"Bitcoin\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n skipOpenApp: boolean;\n }): SignMessageDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignMessageTask(\n internalApi,\n args,\n this._dataStoreService,\n ).run(),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signPsbt(args: {\n psbt: Psbt;\n wallet: Wallet;\n skipOpenApp: boolean;\n }): SignPsbtDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignPsbtDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getWalletAddress(args: {\n checkOnDevice: boolean;\n wallet: Wallet;\n change: boolean;\n addressIndex: number;\n skipOpenApp: boolean;\n }): GetWalletAddressDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new GetWalletAddressDeviceAction({\n input: {\n wallet: args.wallet,\n skipOpenApp: args.skipOpenApp,\n checkOnDevice: args.checkOnDevice,\n change: args.change,\n addressIndex: args.addressIndex,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n },\n }),\n });\n }\n\n signTransaction(args: {\n psbt: Psbt;\n wallet: Wallet;\n skipOpenApp: boolean;\n }): SignTransactionDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CACPC,EAAmC,
|
|
6
|
-
"names": ["BtcAppBinder_exports", "__export", "BtcAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_GetExtendedPublicKeyCommand", "import_SignPsbtDeviceAction", "import_SignTransactionDeviceAction", "import_SignMessageTask", "import_dataStoreTypes", "import_externalTypes", "import_psbtTypes", "import_walletTypes", "import_GetWalletAddressDeviceAction", "BtcAppBinder", "_dmk", "_sessionId", "_walletBuilder", "_walletSerializer", "_dataStoreService", "_psbtMapper", "_valueParser", "args", "internalApi", "__decorateClass", "__decorateParam"]
|
|
4
|
+
"sourcesContent": ["import {\n CallTaskInAppDeviceAction,\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport {\n GetExtendedPublicKeyDAInput,\n GetExtendedPublicKeyDAReturnType,\n} from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport {\n GetMasterFingerprintDAInput,\n GetMasterFingerprintDAReturnType,\n} from \"@api/app-binder/GetMasterFingerprintDeviceActionTypes\";\nimport {\n RegisterWalletDAInput,\n RegisterWalletDAReturnType,\n} from \"@api/app-binder/RegisterWalletDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignPsbtDAReturnType } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { GetWalletAddressDAReturnType } from \"@api/index\";\nimport { Psbt } from \"@api/model/Psbt\";\nimport { Wallet } from \"@api/model/Wallet\";\nimport { GetExtendedPublicKeyCommand } from \"@internal/app-binder/command/GetExtendedPublicKeyCommand\";\nimport { GetMasterFingerprintCommand } from \"@internal/app-binder/command/GetMasterFingerprintCommand\";\nimport { SignPsbtDeviceAction } from \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { RegisterWalletTask } from \"@internal/app-binder/task/RegisterWalletTask\";\nimport { SendSignMessageTask } from \"@internal/app-binder/task/SignMessageTask\";\nimport { dataStoreTypes } from \"@internal/data-store/di/dataStoreTypes\";\nimport type { DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { psbtTypes } from \"@internal/psbt/di/psbtTypes\";\nimport type { PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport type { ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { walletTypes } from \"@internal/wallet/di/walletTypes\";\nimport type { WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport type { WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { GetWalletAddressDeviceAction } from \"./device-action/GetWalletAddress/GetWalletAddressDeviceAction\";\n\n@injectable()\nexport class BtcAppBinder {\n constructor(\n @inject(externalTypes.Dmk)\n private readonly _dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId)\n private readonly _sessionId: DeviceSessionId,\n @inject(walletTypes.WalletBuilder)\n private readonly _walletBuilder: WalletBuilder,\n @inject(walletTypes.WalletSerializer)\n private readonly _walletSerializer: WalletSerializer,\n @inject(dataStoreTypes.DataStoreService)\n private readonly _dataStoreService: DataStoreService,\n @inject(psbtTypes.PsbtMapper)\n private readonly _psbtMapper: PsbtMapper,\n @inject(psbtTypes.ValueParser)\n private readonly _valueParser: ValueParser,\n ) {}\n\n getExtendedPublicKey(\n args: GetExtendedPublicKeyDAInput,\n ): GetExtendedPublicKeyDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(args),\n appName: \"Bitcoin\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getMasterFingerprint(\n args: GetMasterFingerprintDAInput,\n ): GetMasterFingerprintDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetMasterFingerprintCommand(),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n skipOpenApp: boolean;\n }): SignMessageDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new SendSignMessageTask(\n internalApi,\n args,\n this._dataStoreService,\n ).run(),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.SignPersonalMessage,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n signPsbt(args: {\n psbt: Psbt;\n wallet: Wallet;\n skipOpenApp: boolean;\n }): SignPsbtDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignPsbtDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n getWalletAddress(args: {\n checkOnDevice: boolean;\n wallet: Wallet;\n change: boolean;\n addressIndex: number;\n skipOpenApp: boolean;\n }): GetWalletAddressDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new GetWalletAddressDeviceAction({\n input: {\n wallet: args.wallet,\n skipOpenApp: args.skipOpenApp,\n checkOnDevice: args.checkOnDevice,\n change: args.change,\n addressIndex: args.addressIndex,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n },\n }),\n });\n }\n\n signTransaction(args: {\n psbt: Psbt;\n wallet: Wallet;\n skipOpenApp: boolean;\n }): SignTransactionDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n\n registerWallet(args: RegisterWalletDAInput): RegisterWalletDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new CallTaskInAppDeviceAction({\n input: {\n task: async (internalApi) =>\n new RegisterWalletTask(\n internalApi,\n { walletPolicy: args.wallet },\n this._walletBuilder,\n this._walletSerializer,\n this._dataStoreService,\n ).run(),\n appName: \"Bitcoin\",\n requiredUserInteraction: UserInteractionRequired.RegisterWallet,\n skipOpenApp: args.skipOpenApp,\n },\n }),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,2CACPC,EAAmC,qBAoBnCC,EAA4C,oEAC5CC,EAA4C,oEAC5CC,EAAqC,4EACrCC,EAA4C,0FAC5CC,EAAmC,wDACnCC,EAAoC,qDACpCC,EAA+B,kDAE/BC,EAA8B,mCAC9BC,EAA0B,uCAG1BC,EAA4B,2CAI5BC,EAA6C,yEAGtC,IAAMC,EAAN,KAAmB,CACxB,YAEmBC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EACjB,CAbiB,UAAAN,EAEA,gBAAAC,EAEA,oBAAAC,EAEA,uBAAAC,EAEA,uBAAAC,EAEA,iBAAAC,EAEA,kBAAAC,CAChB,CAEH,qBACEC,EACkC,CAClC,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,8BAA4BA,CAAI,EAC7C,QAAS,UACT,wBAAyBA,EAAK,cAC1B,0BAAwB,cACxB,0BAAwB,KAC5B,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,qBACEA,EACkC,CAClC,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,QAAS,IAAI,8BACb,QAAS,UACT,wBAAyB,0BAAwB,KACjD,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,YAAYA,EAIgB,CAC1B,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,sBACFA,EACAD,EACA,KAAK,iBACP,EAAE,IAAI,EACR,QAAS,UACT,wBAAyB,0BAAwB,oBACjD,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,SAASA,EAIgB,CACvB,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,uBAAqB,CACrC,MAAO,CACL,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,cAAe,KAAK,eACpB,iBAAkB,KAAK,kBACvB,iBAAkB,KAAK,kBACvB,WAAY,KAAK,YACjB,YAAa,KAAK,aAClB,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,iBAAiBA,EAMgB,CAC/B,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,+BAA6B,CAC7C,MAAO,CACL,OAAQA,EAAK,OACb,YAAaA,EAAK,YAClB,cAAeA,EAAK,cACpB,OAAQA,EAAK,OACb,aAAcA,EAAK,aACnB,cAAe,KAAK,eACpB,iBAAkB,KAAK,kBACvB,iBAAkB,KAAK,iBACzB,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAIgB,CAC9B,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,8BAA4B,CAC5C,MAAO,CACL,KAAMA,EAAK,KACX,OAAQA,EAAK,OACb,cAAe,KAAK,eACpB,iBAAkB,KAAK,kBACvB,iBAAkB,KAAK,kBACvB,WAAY,KAAK,YACjB,YAAa,KAAK,aAClB,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,eAAeA,EAAyD,CACtE,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAI,4BAA0B,CAC1C,MAAO,CACL,KAAM,MAAOC,GACX,IAAI,qBACFA,EACA,CAAE,aAAcD,EAAK,MAAO,EAC5B,KAAK,eACL,KAAK,kBACL,KAAK,iBACP,EAAE,IAAI,EACR,QAAS,UACT,wBAAyB,0BAAwB,eACjD,YAAaA,EAAK,WACpB,CACF,CAAC,CACH,CAAC,CACH,CACF,EAnKaR,EAANU,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,gBAAc,GAAG,GAExBA,EAAA,eAAO,gBAAc,SAAS,GAE9BA,EAAA,eAAO,cAAY,aAAa,GAEhCA,EAAA,eAAO,cAAY,gBAAgB,GAEnCA,EAAA,eAAO,iBAAe,gBAAgB,GAEtCA,EAAA,eAAO,YAAU,UAAU,GAE3BA,EAAA,eAAO,YAAU,WAAW,IAdpBX",
|
|
6
|
+
"names": ["BtcAppBinder_exports", "__export", "BtcAppBinder", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_GetExtendedPublicKeyCommand", "import_GetMasterFingerprintCommand", "import_SignPsbtDeviceAction", "import_SignTransactionDeviceAction", "import_RegisterWalletTask", "import_SignMessageTask", "import_dataStoreTypes", "import_externalTypes", "import_psbtTypes", "import_walletTypes", "import_GetWalletAddressDeviceAction", "BtcAppBinder", "_dmk", "_sessionId", "_walletBuilder", "_walletSerializer", "_dataStoreService", "_psbtMapper", "_valueParser", "args", "internalApi", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var t=require("@ledgerhq/device-management-kit"),
|
|
1
|
+
"use strict";var t=require("@ledgerhq/device-management-kit"),d=require("rxjs"),m=require("../../api/model/Wallet"),o=require("../app-binder/BtcAppBinder"),A=require("../app-binder/command/GetExtendedPublicKeyCommand"),D=require("../app-binder/command/GetMasterFingerprintCommand");describe("BtcAppBinder",()=>{const r={sendCommand:vi.fn(),executeDeviceAction:vi.fn()};beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const n=new o.BtcAppBinder({},{},{},{},{},{},{});expect(n).toBeDefined()}),describe("getExtendedPublicKey",()=>{let n;afterEach(()=>{n&&n.unsubscribe()}),it("should return the pub key",()=>new Promise((a,s)=>{const i="D2PPQSYFe83nDzk96FqGumVU8JA7J8vj2Rhjc2oXzEi5";vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:(0,d.from)([{status:t.DeviceActionStatus.Completed,output:{extendedPublicKey:i}}]),cancel:vi.fn()});const c=new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}),{observable:l}=c.getExtendedPublicKey({derivationPath:"44'/501'",checkOnDevice:!1,skipOpenApp:!1}),p=[];n=l.subscribe({next:e=>{p.push(e)},error:e=>{s(e)},complete:()=>{try{expect(p).toEqual([{status:t.DeviceActionStatus.Completed,output:{extendedPublicKey:i}}]),a()}catch(e){s(e)}}})})),describe("calls of executeDeviceAction with the correct params",()=>{const a={derivationPath:"44'/60'/3'/2/1",returnChainCode:!1,skipOpenApp:!1};it("when checkOnDevice is true: UserInteractionRequired.VerifyAddress",()=>{const i={...a,checkOnDevice:!0};new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}).getExtendedPublicKey(i),expect(r.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new t.SendCommandInAppDeviceAction({input:{command:new A.GetExtendedPublicKeyCommand(i),appName:"Bitcoin",requiredUserInteraction:t.UserInteractionRequired.VerifyAddress,skipOpenApp:!1}})})}),it("when checkOnDevice is false: UserInteractionRequired.None",()=>{const i={...a,checkOnDevice:!1};new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}).getExtendedPublicKey(i),expect(r.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new t.SendCommandInAppDeviceAction({input:{command:new A.GetExtendedPublicKeyCommand(i),appName:"Bitcoin",requiredUserInteraction:t.UserInteractionRequired.None,skipOpenApp:!1}})})})})}),describe("getMasterFingerprint",()=>{let n;afterEach(()=>{n&&n.unsubscribe()}),it("should return the master fingerprint",()=>new Promise((a,s)=>{const i=Uint8Array.from([130,141,194,243]);vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:(0,d.from)([{status:t.DeviceActionStatus.Completed,output:{masterFingerprint:i}}]),cancel:vi.fn()});const c=new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}),{observable:l}=c.getMasterFingerprint({skipOpenApp:!1}),p=[];n=l.subscribe({next:e=>{p.push(e)},error:e=>{s(e)},complete:()=>{try{expect(p).toEqual([{status:t.DeviceActionStatus.Completed,output:{masterFingerprint:i}}]),a()}catch(e){s(e)}}})})),it("should call executeDeviceAction with the correct params",()=>{const a={skipOpenApp:!1};new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}).getMasterFingerprint(a),expect(r.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new t.SendCommandInAppDeviceAction({input:{command:new D.GetMasterFingerprintCommand,appName:"Bitcoin",requiredUserInteraction:t.UserInteractionRequired.None,skipOpenApp:!1}})})}),it("should pass skipOpenApp option correctly",()=>{const a={skipOpenApp:!0};new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}).getMasterFingerprint(a),expect(r.executeDeviceAction).toHaveBeenCalledWith({sessionId:"sessionId",deviceAction:new t.SendCommandInAppDeviceAction({input:{command:new D.GetMasterFingerprintCommand,appName:"Bitcoin",requiredUserInteraction:t.UserInteractionRequired.None,skipOpenApp:!0}})})})}),describe("signMessage",()=>{it("should return the signature",()=>new Promise((n,a)=>{const s={r:"0xDEF1",s:"0xAFAF",v:0},i="Hello, World!";vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:(0,d.from)([{status:t.DeviceActionStatus.Completed,output:s}]),cancel:vi.fn()});const c=new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}),{observable:l}=c.signMessage({derivationPath:"44'/60'/3'/2/1",message:i,skipOpenApp:!1}),p=[];l.subscribe({next:e=>{p.push(e)},error:e=>{a(e)},complete:()=>{try{expect(p).toEqual([{status:t.DeviceActionStatus.Completed,output:s}]),n()}catch(e){a(e)}}})}))}),describe("registerWallet",()=>{let n;afterEach(()=>{n&&n.unsubscribe()}),it("should return the registered wallet with hmac",()=>new Promise((a,s)=>{const i=new m.WalletPolicy("My Multisig","wsh(sortedmulti(2,@0/**,@1/**))",["[f5acc2fd/48'/1'/0'/2']tpubXXX","tpubYYY"]),c=new m.RegisteredWallet(i.name,i.descriptorTemplate,i.keys,Uint8Array.from(new Array(32).fill(66)));vi.spyOn(r,"executeDeviceAction").mockReturnValue({observable:(0,d.from)([{status:t.DeviceActionStatus.Completed,output:c}]),cancel:vi.fn()});const l=new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}),{observable:p}=l.registerWallet({wallet:i,skipOpenApp:!1}),e=[];n=p.subscribe({next:u=>{e.push(u)},error:u=>{s(u)},complete:()=>{try{expect(e).toEqual([{status:t.DeviceActionStatus.Completed,output:c}]),a()}catch(u){s(u)}}})})),it("should call executeDeviceAction",()=>{const a=new m.WalletPolicy("My Multisig","wsh(sortedmulti(2,@0/**,@1/**))",["[f5acc2fd/48'/1'/0'/2']tpubXXX","tpubYYY"]);new o.BtcAppBinder(r,"sessionId",{},{},{},{},{}).registerWallet({wallet:a,skipOpenApp:!1}),expect(r.executeDeviceAction).toHaveBeenCalled()})})});
|
|
2
2
|
//# sourceMappingURL=BtcAppBinder.test.js.map
|