@ledgerhq/coin-bitcoin 0.29.0-nightly.20260116024452 → 0.29.0-nightly.20260116124336
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/CHANGELOG.md +12 -10
- package/lib/bridge/js.d.ts +1 -1
- package/lib/bridge/js.d.ts.map +1 -1
- package/lib/bridge/js.js +2 -3
- package/lib/bridge/js.js.map +1 -1
- package/lib/buildOptimisticOperation.d.ts +13 -0
- package/lib/buildOptimisticOperation.d.ts.map +1 -0
- package/lib/buildOptimisticOperation.js +20 -0
- package/lib/buildOptimisticOperation.js.map +1 -0
- package/lib/observable.d.ts +4 -0
- package/lib/observable.d.ts.map +1 -0
- package/lib/observable.js +9 -0
- package/lib/observable.js.map +1 -0
- package/lib/psbtFees.d.ts +9 -0
- package/lib/psbtFees.d.ts.map +1 -0
- package/lib/psbtFees.js +73 -0
- package/lib/psbtFees.js.map +1 -0
- package/lib/signOperation.d.ts.map +1 -1
- package/lib/signOperation.js +94 -99
- package/lib/signOperation.js.map +1 -1
- package/lib/signRawOperation.d.ts +6 -0
- package/lib/signRawOperation.d.ts.map +1 -0
- package/lib/signRawOperation.js +70 -0
- package/lib/signRawOperation.js.map +1 -0
- package/lib/signer.d.ts +15 -0
- package/lib/signer.d.ts.map +1 -1
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -1
- package/lib-es/bridge/js.d.ts +1 -1
- package/lib-es/bridge/js.d.ts.map +1 -1
- package/lib-es/bridge/js.js +2 -3
- package/lib-es/bridge/js.js.map +1 -1
- package/lib-es/buildOptimisticOperation.d.ts +13 -0
- package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
- package/lib-es/buildOptimisticOperation.js +16 -0
- package/lib-es/buildOptimisticOperation.js.map +1 -0
- package/lib-es/observable.d.ts +4 -0
- package/lib-es/observable.d.ts.map +1 -0
- package/lib-es/observable.js +5 -0
- package/lib-es/observable.js.map +1 -0
- package/lib-es/psbtFees.d.ts +9 -0
- package/lib-es/psbtFees.d.ts.map +1 -0
- package/lib-es/psbtFees.js +69 -0
- package/lib-es/psbtFees.js.map +1 -0
- package/lib-es/signOperation.d.ts.map +1 -1
- package/lib-es/signOperation.js +94 -99
- package/lib-es/signOperation.js.map +1 -1
- package/lib-es/signRawOperation.d.ts +6 -0
- package/lib-es/signRawOperation.d.ts.map +1 -0
- package/lib-es/signRawOperation.js +66 -0
- package/lib-es/signRawOperation.js.map +1 -0
- package/lib-es/signer.d.ts +15 -0
- package/lib-es/signer.d.ts.map +1 -1
- package/lib-es/types.d.ts +2 -0
- package/lib-es/types.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/__tests__/fixtures/common.fixtures.ts +6 -0
- package/src/__tests__/unit/psbtFees.fromFixture.unit.test.ts +31 -0
- package/src/__tests__/unit/signOperation.test.ts +226 -0
- package/src/__tests__/unit/signRawOperation.test.ts +188 -0
- package/src/bridge/js.test.ts +30 -0
- package/src/bridge/js.ts +2 -3
- package/src/buildOptimisticOperation.ts +34 -0
- package/src/hw-signMessage.test.ts +1 -0
- package/src/observable.ts +12 -0
- package/src/observable.unit.test.ts +27 -0
- package/src/psbtFees.ts +77 -0
- package/src/signOperation.ts +140 -126
- package/src/signRawOperation.ts +104 -0
- package/src/signer.ts +13 -0
- package/src/types.ts +2 -0
- package/src/wallet-btc/__tests__/fixtures/common.fixtures.ts +64 -1
- package/src/wallet-btc/__tests__/wallet.integration.test.ts +1 -1
- package/src/wallet-btc/__tests__/xpub.txs.dogecoin.integration.test.ts +1 -1
- package/src/wallet-btc/__tests__/xpub.txs.zcash.integration.test.ts +1 -1
- package/tsconfig.json +3 -12
- package/lib/mockBtcSigner.d.ts +0 -20
- package/lib/mockBtcSigner.d.ts.map +0 -1
- package/lib/mockBtcSigner.js +0 -50
- package/lib/mockBtcSigner.js.map +0 -1
- package/lib-es/mockBtcSigner.d.ts +0 -20
- package/lib-es/mockBtcSigner.d.ts.map +0 -1
- package/lib-es/mockBtcSigner.js +0 -45
- package/lib-es/mockBtcSigner.js.map +0 -1
- package/src/mockBtcSigner.ts +0 -65
package/CHANGELOG.md
CHANGED
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
# @ledgerhq/coin-bitcoin
|
|
2
2
|
|
|
3
|
-
## 0.29.0-nightly.
|
|
3
|
+
## 0.29.0-nightly.20260116124336
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
+
- [#13340](https://github.com/LedgerHQ/ledger-live/pull/13340) [`85ed675`](https://github.com/LedgerHQ/ledger-live/commit/85ed67593945e396cfe995a13de7454850fa6436) Thanks [@Justkant](https://github.com/Justkant)! - feat(coin-bitcoin): support psbt signature in wallet-api
|
|
8
|
+
|
|
7
9
|
- [#13396](https://github.com/LedgerHQ/ledger-live/pull/13396) [`b9a3e43`](https://github.com/LedgerHQ/ledger-live/commit/b9a3e431be33943ab4feb4294d6a7f27b966e61b) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Update Jest to v30
|
|
8
10
|
|
|
9
11
|
### Patch Changes
|
|
10
12
|
|
|
11
13
|
- Updated dependencies [[`537a975`](https://github.com/LedgerHQ/ledger-live/commit/537a975536ca3669d3b88371e1e1f651c4cb9a1b), [`cbcae7c`](https://github.com/LedgerHQ/ledger-live/commit/cbcae7c0ba9b54b1167d26e4227bd2b847207cb9), [`8754614`](https://github.com/LedgerHQ/ledger-live/commit/87546149a62b81f8a25bb6222626592ead629f62), [`50bae0f`](https://github.com/LedgerHQ/ledger-live/commit/50bae0f13a95ef166b2c5609ccbcf5ef01ba1579), [`cf08174`](https://github.com/LedgerHQ/ledger-live/commit/cf0817462e9f0210fceff29ec60b0699e4e69b71), [`b9a3e43`](https://github.com/LedgerHQ/ledger-live/commit/b9a3e431be33943ab4feb4294d6a7f27b966e61b), [`3ac5f26`](https://github.com/LedgerHQ/ledger-live/commit/3ac5f26111f8596327fa7e588e514509de3f8a59), [`7f05536`](https://github.com/LedgerHQ/ledger-live/commit/7f0553665e9c8721f263825cc79994bfc6729d9b)]:
|
|
12
|
-
- @ledgerhq/cryptoassets@13.37.0-nightly.
|
|
13
|
-
- @ledgerhq/coin-framework@6.13.0-nightly.
|
|
14
|
-
- @ledgerhq/types-live@6.93.0-nightly.
|
|
15
|
-
- @ledgerhq/live-env@2.25.0-nightly.
|
|
16
|
-
- @ledgerhq/types-cryptoassets@7.32.0-nightly.
|
|
17
|
-
- @ledgerhq/devices@8.10.0-nightly.
|
|
18
|
-
- @ledgerhq/errors@6.29.0-nightly.
|
|
19
|
-
- @ledgerhq/logs@6.14.0-nightly.
|
|
20
|
-
- @ledgerhq/live-network@2.2.0-nightly.
|
|
14
|
+
- @ledgerhq/cryptoassets@13.37.0-nightly.20260116124336
|
|
15
|
+
- @ledgerhq/coin-framework@6.13.0-nightly.20260116124336
|
|
16
|
+
- @ledgerhq/types-live@6.93.0-nightly.20260116124336
|
|
17
|
+
- @ledgerhq/live-env@2.25.0-nightly.20260116124336
|
|
18
|
+
- @ledgerhq/types-cryptoassets@7.32.0-nightly.20260116124336
|
|
19
|
+
- @ledgerhq/devices@8.10.0-nightly.20260116124336
|
|
20
|
+
- @ledgerhq/errors@6.29.0-nightly.20260116124336
|
|
21
|
+
- @ledgerhq/logs@6.14.0-nightly.20260116124336
|
|
22
|
+
- @ledgerhq/live-network@2.2.0-nightly.20260116124336
|
|
21
23
|
|
|
22
24
|
## 0.28.0
|
|
23
25
|
|
package/lib/bridge/js.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export declare function createBridges(signerContext: SignerContext, coinConfig:
|
|
|
27
27
|
}) => import("rxjs").Observable<import("@ledgerhq/coin-framework/lib/derivation").Result>;
|
|
28
28
|
sync: (initialAccount: BitcoinAccount, syncConfig: import("@ledgerhq/types-live").SyncConfig) => import("rxjs").Observable<(arg0: BitcoinAccount) => BitcoinAccount>;
|
|
29
29
|
signOperation: import("@ledgerhq/types-live").SignOperationFnSignature<Transaction, import("@ledgerhq/types-live").Account>;
|
|
30
|
-
signRawOperation: ()
|
|
30
|
+
signRawOperation: import("@ledgerhq/types-live").SignRawOperationFnSignature<import("@ledgerhq/types-live").Account>;
|
|
31
31
|
broadcast: import("@ledgerhq/types-live").BroadcastFnSignature<BitcoinAccount>;
|
|
32
32
|
assignFromAccountRaw: typeof assignFromAccountRaw;
|
|
33
33
|
assignToAccountRaw: typeof assignToAccountRaw;
|
package/lib/bridge/js.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../src/bridge/js.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAS1E,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../src/bridge/js.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAS1E,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAmErD,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOjF"}
|
package/lib/bridge/js.js
CHANGED
|
@@ -22,6 +22,7 @@ const broadcast_1 = require("../broadcast");
|
|
|
22
22
|
const logic_1 = require("../logic");
|
|
23
23
|
const hw_getAddress_1 = __importDefault(require("../hw-getAddress"));
|
|
24
24
|
const validateAddress_1 = require("../validateAddress");
|
|
25
|
+
const signRawOperation_1 = __importDefault(require("../signRawOperation"));
|
|
25
26
|
function buildCurrencyBridge(signerContext) {
|
|
26
27
|
const getAddress = (0, hw_getAddress_1.default)(signerContext);
|
|
27
28
|
const scanAccounts = (0, jsHelpers_1.makeScanAccounts)({
|
|
@@ -67,9 +68,7 @@ function buildAccountBridge(signerContext) {
|
|
|
67
68
|
receive,
|
|
68
69
|
sync,
|
|
69
70
|
signOperation: (0, signOperation_1.buildSignOperation)(signerContext),
|
|
70
|
-
signRawOperation: ()
|
|
71
|
-
throw new Error("signRawOperation is not supported");
|
|
72
|
-
},
|
|
71
|
+
signRawOperation: (0, signRawOperation_1.default)(signerContext),
|
|
73
72
|
broadcast: wrappedBroadcast,
|
|
74
73
|
assignFromAccountRaw: serialization_1.assignFromAccountRaw,
|
|
75
74
|
assignToAccountRaw: serialization_1.assignToAccountRaw,
|
package/lib/bridge/js.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../src/bridge/js.ts"],"names":[],"mappings":";;;;;;AACA,yEAImD;AACnD,0GAAkF;AAClF,wDAAmE;AACnE,oDAA4E;AAE5E,+DAAuC;AACvC,kEAA+D;AAC/D,kEAA+D;AAC/D,0CAA6D;AAC7D,8DAA2D;AAC3D,4DAAyD;AACzD,4DAAyD;AACzD,oDAAsD;AACtD,sCAAsD;AACtD,sCAA2C;AAE3C,4CAAyC;AACzC,oCAAwC;AACxC,qEAAwC;AACxC,wDAAqD;
|
|
1
|
+
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../src/bridge/js.ts"],"names":[],"mappings":";;;;;;AACA,yEAImD;AACnD,0GAAkF;AAClF,wDAAmE;AACnE,oDAA4E;AAE5E,+DAAuC;AACvC,kEAA+D;AAC/D,kEAA+D;AAC/D,0CAA6D;AAC7D,8DAA2D;AAC3D,4DAAyD;AACzD,4DAAyD;AACzD,oDAAsD;AACtD,sCAAsD;AACtD,sCAA2C;AAE3C,4CAAyC;AACzC,oCAAwC;AACxC,qEAAwC;AACxC,wDAAqD;AACrD,2EAAwD;AAExD,SAAS,mBAAmB,CAAC,aAA4B;IACvD,MAAM,UAAU,GAAG,IAAA,uBAAQ,EAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAA,4BAAgB,EAAiB;QACpD,eAAe,EAAE,IAAA,qCAAmB,EAAC,aAAa,CAAC;QACnD,YAAY,EAAE,IAAA,2BAAiB,EAAC,UAAU,CAAC;QAC3C,QAAQ,EAAR,0BAAQ;KACT,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,aAA4B;IACtD,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAiD;QACpE,eAAe,EAAE,IAAA,qCAAmB,EAAC,aAAa,CAAC;QACnD,QAAQ,EAAR,0BAAQ;QACR,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAA,uBAAQ,EAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,sBAAsB,GAAG,CAAC,OAAuB,EAAO,EAAE;QAC9D,MAAM,OAAO,GAAG,oBAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAElD,IAAI,OAAO,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;YAC9C,OAAO,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAA,oCAAwB,EAAiB,IAAA,2BAAiB,EAAC,UAAU,CAAC,EAAE;QACtF,sBAAsB;KACvB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAA4D,KAAK,EAAE,EACvF,OAAO,EACP,eAAe,GAChB,EAAE,EAAE;QACH,qBAAa,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,IAAA,qBAAS,EAAC;YACf,OAAO;YACP,eAAe;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,oBAAoB,EAApB,2CAAoB;QACpB,iBAAiB,EAAjB,qCAAiB;QACjB,kBAAkB,EAAlB,uCAAkB;QAClB,iBAAiB,EAAjB,qCAAiB;QACjB,oBAAoB,EAApB,2CAAoB;QACpB,OAAO;QACP,IAAI;QACJ,aAAa,EAAE,IAAA,kCAAkB,EAAC,aAAa,CAAC;QAChD,gBAAgB,EAAE,IAAA,0BAAqB,EAAC,aAAa,CAAC;QACtD,SAAS,EAAE,gBAAgB;QAC3B,oBAAoB,EAApB,oCAAoB;QACpB,kBAAkB,EAAlB,kCAAkB;QAClB,sBAAsB,EAAE,oBAAU,CAAC,sBAAsB;QACzD,8BAA8B,EAA9B,yCAA8B;QAC9B,eAAe,EAAf,iCAAe;KAChB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,aAA4B,EAAE,UAAsB;IAChF,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC;IAE1B,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC;AAPD,sCAOC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BigNumber } from "bignumber.js";
|
|
2
|
+
import type { Operation } from "@ledgerhq/types-live";
|
|
3
|
+
type BuildOptimisticOperationParams = {
|
|
4
|
+
accountId: string;
|
|
5
|
+
fee: BigNumber;
|
|
6
|
+
value?: BigNumber;
|
|
7
|
+
senders?: string[];
|
|
8
|
+
recipients?: string[];
|
|
9
|
+
extra?: Record<string, unknown>;
|
|
10
|
+
};
|
|
11
|
+
export declare const buildOptimisticOperation: ({ accountId, fee, value, senders, recipients, extra, }: BuildOptimisticOperationParams) => Operation;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=buildOptimisticOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildOptimisticOperation.d.ts","sourceRoot":"","sources":["../src/buildOptimisticOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,KAAK,8BAA8B,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,wBAAwB,2DAOlC,8BAA8B,KAAG,SAalC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildOptimisticOperation = void 0;
|
|
4
|
+
const operation_1 = require("@ledgerhq/coin-framework/operation");
|
|
5
|
+
const buildOptimisticOperation = ({ accountId, fee, value, senders = [], recipients = [], extra = {}, }) => ({
|
|
6
|
+
id: (0, operation_1.encodeOperationId)(accountId, "", "OUT"),
|
|
7
|
+
hash: "",
|
|
8
|
+
type: "OUT",
|
|
9
|
+
value: value ?? fee,
|
|
10
|
+
fee,
|
|
11
|
+
blockHash: null,
|
|
12
|
+
blockHeight: null,
|
|
13
|
+
senders,
|
|
14
|
+
recipients,
|
|
15
|
+
accountId,
|
|
16
|
+
date: new Date(),
|
|
17
|
+
extra,
|
|
18
|
+
});
|
|
19
|
+
exports.buildOptimisticOperation = buildOptimisticOperation;
|
|
20
|
+
//# sourceMappingURL=buildOptimisticOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildOptimisticOperation.js","sourceRoot":"","sources":["../src/buildOptimisticOperation.ts"],"names":[],"mappings":";;;AAEA,kEAAuE;AAWhE,MAAM,wBAAwB,GAAG,CAAC,EACvC,SAAS,EACT,GAAG,EACH,KAAK,EACL,OAAO,GAAG,EAAE,EACZ,UAAU,GAAG,EAAE,EACf,KAAK,GAAG,EAAE,GACqB,EAAa,EAAE,CAAC,CAAC;IAChD,EAAE,EAAE,IAAA,6BAAiB,EAAC,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC;IAC3C,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK,IAAI,GAAG;IACnB,GAAG;IACH,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,OAAO;IACP,UAAU;IACV,SAAS;IACT,IAAI,EAAE,IAAI,IAAI,EAAE;IAChB,KAAK;CACN,CAAC,CAAC;AApBU,QAAA,wBAAwB,4BAoBlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../src/observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,eAAO,MAAM,kBAAkB,uBACZ,SAAS,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAC7C,WAAW,CAAC,CAMX,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromAsyncOperation = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const fromAsyncOperation = (main) => new rxjs_1.Observable(observer => {
|
|
6
|
+
main(observer).then(() => observer.complete(), error => observer.error(error));
|
|
7
|
+
});
|
|
8
|
+
exports.fromAsyncOperation = fromAsyncOperation;
|
|
9
|
+
//# sourceMappingURL=observable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable.js","sourceRoot":"","sources":["../src/observable.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAG3B,MAAM,kBAAkB,GAAG,CAChC,IAA8C,EAC/B,EAAE,CACjB,IAAI,iBAAU,CAAI,QAAQ,CAAC,EAAE;IAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CACjB,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EACzB,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AARQ,QAAA,kBAAkB,sBAQ1B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BigNumber } from "bignumber.js";
|
|
2
|
+
/**
|
|
3
|
+
* Compute fee from a PSBT (v2 preferred).
|
|
4
|
+
* Returns:
|
|
5
|
+
* - BigNumber(fee) on success
|
|
6
|
+
* - null if cannot parse (caller should fallback to calculateFees()).
|
|
7
|
+
*/
|
|
8
|
+
export declare function feeFromPsbt(buf: Buffer): BigNumber | null;
|
|
9
|
+
//# sourceMappingURL=psbtFees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psbtFees.d.ts","sourceRoot":"","sources":["../src/psbtFees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAmBzC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAmDzD"}
|
package/lib/psbtFees.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.feeFromPsbt = void 0;
|
|
4
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
5
|
+
const bitcoinjs_lib_1 = require("bitcoinjs-lib");
|
|
6
|
+
const psbtv2_1 = require("@ledgerhq/psbtv2");
|
|
7
|
+
/** read uint64 little-endian into JS number (safe for BTC amounts) */
|
|
8
|
+
function readUInt64LE(buf) {
|
|
9
|
+
const lo = buf.readUInt32LE(0);
|
|
10
|
+
const hi = buf.readUInt32LE(4);
|
|
11
|
+
const loBig = BigInt(lo);
|
|
12
|
+
const hiBig = BigInt(hi);
|
|
13
|
+
const value = loBig + (hiBig << 32n);
|
|
14
|
+
if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
15
|
+
throw new Error("readUInt64LE: value exceeds Number.MAX_SAFE_INTEGER");
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Compute fee from a PSBT (v2 preferred).
|
|
21
|
+
* Returns:
|
|
22
|
+
* - BigNumber(fee) on success
|
|
23
|
+
* - null if cannot parse (caller should fallback to calculateFees()).
|
|
24
|
+
*/
|
|
25
|
+
function feeFromPsbt(buf) {
|
|
26
|
+
if (!buf || buf.length < 5)
|
|
27
|
+
return null;
|
|
28
|
+
try {
|
|
29
|
+
// Check PSBT version and use appropriate deserialization method
|
|
30
|
+
const psbtVersion = psbtv2_1.PsbtV2.getPsbtVersionNumber(buf);
|
|
31
|
+
const psbt = psbtVersion === 2 ? new psbtv2_1.PsbtV2() : psbtv2_1.PsbtV2.fromV0(buf, true);
|
|
32
|
+
if (psbtVersion === 2) {
|
|
33
|
+
psbt.deserialize(buf);
|
|
34
|
+
}
|
|
35
|
+
// Sum inputs (prefer WITNESS_UTXO; fall back to NON_WITNESS_UTXO)
|
|
36
|
+
let inSum = 0n;
|
|
37
|
+
const nIn = psbt.getGlobalInputCount();
|
|
38
|
+
for (let i = 0; i < nIn; i++) {
|
|
39
|
+
const w = psbt.getInputWitnessUtxo(i);
|
|
40
|
+
if (w) {
|
|
41
|
+
inSum += readUInt64LE(w.amount);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const nonWitness = psbt.getInputNonWitnessUtxo(i);
|
|
45
|
+
if (!nonWitness) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
// NON_WITNESS_UTXO is the full previous transaction. Use the PSBT
|
|
49
|
+
// input's referenced output index to locate the amount.
|
|
50
|
+
const prevTx = bitcoinjs_lib_1.Transaction.fromBuffer(nonWitness);
|
|
51
|
+
const prevOutIndex = psbt.getInputOutputIndex(i);
|
|
52
|
+
const prevOut = prevTx.outs[prevOutIndex];
|
|
53
|
+
if (!prevOut) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
inSum += BigInt(prevOut.value);
|
|
57
|
+
}
|
|
58
|
+
// Sum outputs
|
|
59
|
+
let outSum = 0n;
|
|
60
|
+
const nOut = psbt.getGlobalOutputCount();
|
|
61
|
+
for (let i = 0; i < nOut; i++) {
|
|
62
|
+
outSum += BigInt(psbt.getOutputAmount(i)); // number
|
|
63
|
+
}
|
|
64
|
+
if (inSum < outSum)
|
|
65
|
+
return null;
|
|
66
|
+
return new bignumber_js_1.BigNumber((inSum - outSum).toString());
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.feeFromPsbt = feeFromPsbt;
|
|
73
|
+
//# sourceMappingURL=psbtFees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"psbtFees.js","sourceRoot":"","sources":["../src/psbtFees.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAW,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAO3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA0IzC,eAAO,MAAM,kBAAkB,kBACb,aAAa,KAAG,cAAc,WAAW,CAAC,CAAC,eAAe,CAEuB,CAAC;AAEpG,eAAe,kBAAkB,CAAC"}
|
package/lib/signOperation.js
CHANGED
|
@@ -25,115 +25,110 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.buildSignOperation = void 0;
|
|
27
27
|
const bignumber_js_1 = require("bignumber.js");
|
|
28
|
-
const rxjs_1 = require("rxjs");
|
|
29
28
|
const logs_1 = require("@ledgerhq/logs");
|
|
30
29
|
const derivation_1 = require("@ledgerhq/coin-framework/derivation");
|
|
31
|
-
const operation_1 = require("@ledgerhq/coin-framework/operation");
|
|
32
30
|
const networks_1 = require("./networks");
|
|
31
|
+
const buildOptimisticOperation_1 = require("./buildOptimisticOperation");
|
|
33
32
|
const buildTransaction_1 = require("./buildTransaction");
|
|
34
33
|
const cache_1 = require("./cache");
|
|
35
34
|
const wallet_btc_1 = __importStar(require("./wallet-btc"));
|
|
36
35
|
const logic_1 = require("./logic");
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
account,
|
|
36
|
+
const observable_1 = require("./observable");
|
|
37
|
+
function buildAdditionals(currencyId, derivationMode, transaction) {
|
|
38
|
+
const perCoin = logic_1.perCoinLogic[currencyId];
|
|
39
|
+
let additionals = [currencyId];
|
|
40
|
+
if (derivationMode === "native_segwit") {
|
|
41
|
+
additionals.push("bech32");
|
|
42
|
+
}
|
|
43
|
+
if (derivationMode === "taproot") {
|
|
44
|
+
additionals.push("bech32m");
|
|
45
|
+
}
|
|
46
|
+
if (perCoin?.getAdditionals) {
|
|
47
|
+
additionals = additionals.concat(perCoin.getAdditionals({
|
|
50
48
|
transaction,
|
|
51
|
-
}).then(res => {
|
|
52
|
-
senders = new Set(res.txInputs.map(i => i.address).filter(Boolean));
|
|
53
|
-
recipients = res.txOutputs
|
|
54
|
-
.filter(o => o.address && !o.isChange)
|
|
55
|
-
.map(o => o.address);
|
|
56
|
-
fee = res.fees;
|
|
57
|
-
});
|
|
58
|
-
let lockTime;
|
|
59
|
-
// (legacy) Set lockTime for Komodo to enable reward claiming on UTXOs created by
|
|
60
|
-
// Ledger Live. We should only set this if the currency is Komodo and
|
|
61
|
-
// lockTime isn't already defined.
|
|
62
|
-
if (currency.id === "komodo" && lockTime === undefined) {
|
|
63
|
-
const unixtime = Math.floor(Date.now() / 1000);
|
|
64
|
-
lockTime = unixtime - 777;
|
|
65
|
-
}
|
|
66
|
-
const networkParams = (0, networks_1.getNetworkParameters)(currency.id);
|
|
67
|
-
const sigHashType = networkParams.sigHash;
|
|
68
|
-
if (isNaN(sigHashType)) {
|
|
69
|
-
throw new Error("sigHashType should not be NaN");
|
|
70
|
-
}
|
|
71
|
-
const segwit = (0, derivation_1.isSegwitDerivationMode)(account.derivationMode);
|
|
72
|
-
const perCoin = logic_1.perCoinLogic[currency.id];
|
|
73
|
-
let additionals = [currency.id];
|
|
74
|
-
if (account.derivationMode === "native_segwit") {
|
|
75
|
-
additionals.push("bech32");
|
|
76
|
-
}
|
|
77
|
-
if (account.derivationMode === "taproot") {
|
|
78
|
-
additionals.push("bech32m");
|
|
79
|
-
}
|
|
80
|
-
if (perCoin?.getAdditionals) {
|
|
81
|
-
additionals = additionals.concat(perCoin.getAdditionals({
|
|
82
|
-
transaction,
|
|
83
|
-
}));
|
|
84
|
-
}
|
|
85
|
-
const expiryHeight = perCoin?.hasExpiryHeight
|
|
86
|
-
? Buffer.from([0x00, 0x00, 0x00, 0x00])
|
|
87
|
-
: undefined;
|
|
88
|
-
const hasExtraData = perCoin?.hasExtraData || false;
|
|
89
|
-
const signature = await signerContext(deviceId, currency, signer => wallet_btc_1.default.signAccountTx({
|
|
90
|
-
btc: signer,
|
|
91
|
-
fromAccount: walletAccount,
|
|
92
|
-
txInfo,
|
|
93
|
-
lockTime,
|
|
94
|
-
sigHashType,
|
|
95
|
-
segwit,
|
|
96
|
-
additionals,
|
|
97
|
-
expiryHeight,
|
|
98
|
-
hasExtraData,
|
|
99
|
-
onDeviceSignatureGranted: () => o.next({
|
|
100
|
-
type: "device-signature-granted",
|
|
101
|
-
}),
|
|
102
|
-
onDeviceSignatureRequested: () => o.next({
|
|
103
|
-
type: "device-signature-requested",
|
|
104
|
-
}),
|
|
105
|
-
onDeviceStreaming: ({ progress, index, total }) => o.next({
|
|
106
|
-
type: "device-streaming",
|
|
107
|
-
progress,
|
|
108
|
-
index,
|
|
109
|
-
total,
|
|
110
|
-
}),
|
|
111
49
|
}));
|
|
112
|
-
// Build the optimistic operation
|
|
113
|
-
const operation = {
|
|
114
|
-
id: (0, operation_1.encodeOperationId)(account.id, "", "OUT"),
|
|
115
|
-
hash: "", // Will be resolved in broadcast()
|
|
116
|
-
type: "OUT",
|
|
117
|
-
value: new bignumber_js_1.BigNumber(transaction.amount).plus(fee),
|
|
118
|
-
fee,
|
|
119
|
-
blockHash: null,
|
|
120
|
-
blockHeight: null,
|
|
121
|
-
senders: Array.from(senders),
|
|
122
|
-
recipients,
|
|
123
|
-
accountId: account.id,
|
|
124
|
-
date: new Date(),
|
|
125
|
-
extra: {},
|
|
126
|
-
};
|
|
127
|
-
o.next({
|
|
128
|
-
type: "signed",
|
|
129
|
-
signedOperation: {
|
|
130
|
-
operation,
|
|
131
|
-
signature,
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
50
|
}
|
|
135
|
-
|
|
136
|
-
}
|
|
51
|
+
return additionals;
|
|
52
|
+
}
|
|
53
|
+
async function executeSignOperation(o, account, deviceId, transaction, signerContext) {
|
|
54
|
+
const { currency } = account;
|
|
55
|
+
const walletAccount = (0, wallet_btc_1.getWalletAccount)(account);
|
|
56
|
+
(0, logs_1.log)("hw", `signTransaction ${currency.id} for account ${account.id}`);
|
|
57
|
+
const txInfo = await (0, buildTransaction_1.buildTransaction)(account, transaction);
|
|
58
|
+
// Maybe better not re-calculate these fields here, instead include them
|
|
59
|
+
// in Transaction type and set them in prepareTransaction?
|
|
60
|
+
const res = await (0, cache_1.calculateFees)({
|
|
61
|
+
account,
|
|
62
|
+
transaction,
|
|
63
|
+
});
|
|
64
|
+
const senders = res.txInputs.reduce((acc, i) => {
|
|
65
|
+
if (i.address)
|
|
66
|
+
acc.add(i.address);
|
|
67
|
+
return acc;
|
|
68
|
+
}, new Set());
|
|
69
|
+
const recipients = res.txOutputs.reduce((acc, o) => {
|
|
70
|
+
if (!o.isChange && o.address)
|
|
71
|
+
acc.push(o.address);
|
|
72
|
+
return acc;
|
|
73
|
+
}, []);
|
|
74
|
+
const fee = res.fees;
|
|
75
|
+
let lockTime;
|
|
76
|
+
// (legacy) Set lockTime for Komodo to enable reward claiming on UTXOs created by
|
|
77
|
+
// Ledger Live. We should only set this if the currency is Komodo and
|
|
78
|
+
// lockTime isn't already defined.
|
|
79
|
+
if (currency.id === "komodo" && lockTime === undefined) {
|
|
80
|
+
const unixtime = Math.floor(Date.now() / 1000);
|
|
81
|
+
lockTime = unixtime - 777;
|
|
82
|
+
}
|
|
83
|
+
const networkParams = (0, networks_1.getNetworkParameters)(currency.id);
|
|
84
|
+
const sigHashType = networkParams.sigHash;
|
|
85
|
+
if (isNaN(sigHashType)) {
|
|
86
|
+
throw new Error("sigHashType should not be NaN");
|
|
87
|
+
}
|
|
88
|
+
const segwit = (0, derivation_1.isSegwitDerivationMode)(account.derivationMode);
|
|
89
|
+
const additionals = buildAdditionals(currency.id, account.derivationMode, transaction);
|
|
90
|
+
const perCoin = logic_1.perCoinLogic[currency.id];
|
|
91
|
+
const expiryHeight = perCoin?.hasExpiryHeight ? Buffer.from([0x00, 0x00, 0x00, 0x00]) : undefined;
|
|
92
|
+
const hasExtraData = perCoin?.hasExtraData || false;
|
|
93
|
+
const signature = await signerContext(deviceId, currency, signer => wallet_btc_1.default.signAccountTx({
|
|
94
|
+
btc: signer,
|
|
95
|
+
fromAccount: walletAccount,
|
|
96
|
+
txInfo,
|
|
97
|
+
lockTime,
|
|
98
|
+
sigHashType,
|
|
99
|
+
segwit,
|
|
100
|
+
additionals,
|
|
101
|
+
expiryHeight,
|
|
102
|
+
hasExtraData,
|
|
103
|
+
onDeviceSignatureGranted: () => o.next({
|
|
104
|
+
type: "device-signature-granted",
|
|
105
|
+
}),
|
|
106
|
+
onDeviceSignatureRequested: () => o.next({
|
|
107
|
+
type: "device-signature-requested",
|
|
108
|
+
}),
|
|
109
|
+
onDeviceStreaming: ({ progress, index, total }) => o.next({
|
|
110
|
+
type: "device-streaming",
|
|
111
|
+
progress,
|
|
112
|
+
index,
|
|
113
|
+
total,
|
|
114
|
+
}),
|
|
115
|
+
}));
|
|
116
|
+
const operation = (0, buildOptimisticOperation_1.buildOptimisticOperation)({
|
|
117
|
+
accountId: account.id,
|
|
118
|
+
fee,
|
|
119
|
+
value: new bignumber_js_1.BigNumber(transaction.amount).plus(fee),
|
|
120
|
+
senders: Array.from(senders),
|
|
121
|
+
recipients,
|
|
122
|
+
});
|
|
123
|
+
o.next({
|
|
124
|
+
type: "signed",
|
|
125
|
+
signedOperation: {
|
|
126
|
+
operation,
|
|
127
|
+
signature,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const buildSignOperation = (signerContext) => ({ account, deviceId, transaction }) => (0, observable_1.fromAsyncOperation)(o => executeSignOperation(o, account, deviceId, transaction, signerContext));
|
|
137
132
|
exports.buildSignOperation = buildSignOperation;
|
|
138
133
|
exports.default = exports.buildSignOperation;
|
|
139
134
|
//# sourceMappingURL=signOperation.js.map
|
package/lib/signOperation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAyC;AACzC
|
|
1
|
+
{"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../src/signOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AccountBridge } from "@ledgerhq/types-live";
|
|
2
|
+
import type { Transaction } from "./types";
|
|
3
|
+
import { SignerContext } from "./signer";
|
|
4
|
+
export declare const buildSignRawOperation: (signerContext: SignerContext) => AccountBridge<Transaction>["signRawOperation"];
|
|
5
|
+
export default buildSignRawOperation;
|
|
6
|
+
//# sourceMappingURL=signRawOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signRawOperation.d.ts","sourceRoot":"","sources":["../src/signRawOperation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C,OAAO,EAAiB,aAAa,EAAE,MAAM,UAAU,CAAC;AAmCxD,eAAO,MAAM,qBAAqB,kBAChB,aAAa,KAAG,cAAc,WAAW,CAAC,CAAC,kBAAkB,CAuDzE,CAAC;AAEP,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildSignRawOperation = void 0;
|
|
4
|
+
const bignumber_js_1 = require("bignumber.js");
|
|
5
|
+
const logs_1 = require("@ledgerhq/logs");
|
|
6
|
+
const derivation_1 = require("@ledgerhq/coin-framework/derivation");
|
|
7
|
+
const psbtv2_1 = require("@ledgerhq/psbtv2");
|
|
8
|
+
const networks_1 = require("./networks");
|
|
9
|
+
const buildOptimisticOperation_1 = require("./buildOptimisticOperation");
|
|
10
|
+
const wallet_btc_1 = require("./wallet-btc");
|
|
11
|
+
const psbtFees_1 = require("./psbtFees");
|
|
12
|
+
const observable_1 = require("./observable");
|
|
13
|
+
const signPsbtWithDevice = async (signerContext, deviceId, currency, psbtBuffer, options) => signerContext(deviceId, currency, signer => {
|
|
14
|
+
if (!signer.signPsbtBuffer) {
|
|
15
|
+
throw new Error("signPsbtBuffer not available");
|
|
16
|
+
}
|
|
17
|
+
return signer.signPsbtBuffer(psbtBuffer, {
|
|
18
|
+
accountPath: options.accountPath,
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
20
|
+
addressFormat: options.addressFormat,
|
|
21
|
+
finalizePsbt: true,
|
|
22
|
+
onDeviceSignatureRequested: options.onDeviceSignatureRequested,
|
|
23
|
+
onDeviceSignatureGranted: options.onDeviceSignatureGranted,
|
|
24
|
+
onDeviceStreaming: options.onDeviceStreaming,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
const buildSignRawOperation = (signerContext) => ({ account, deviceId, transaction: psbt }) => (0, observable_1.fromAsyncOperation)(async (o) => {
|
|
28
|
+
const { currency } = account;
|
|
29
|
+
const walletAccount = (0, wallet_btc_1.getWalletAccount)(account);
|
|
30
|
+
(0, logs_1.log)("hw", `signRawTransaction ${currency.id} for account ${account.id}`);
|
|
31
|
+
const networkParams = (0, networks_1.getNetworkParameters)(currency.id);
|
|
32
|
+
const sigHashType = networkParams.sigHash;
|
|
33
|
+
if (Number.isNaN(sigHashType)) {
|
|
34
|
+
throw new TypeError("sigHashType should not be NaN");
|
|
35
|
+
}
|
|
36
|
+
const psbtBuffer = (0, psbtv2_1.parsePsbt)(psbt);
|
|
37
|
+
const psbtResult = await signPsbtWithDevice(signerContext, deviceId, currency, psbtBuffer, {
|
|
38
|
+
accountPath: `${walletAccount.params.path}/${walletAccount.params.index}'`,
|
|
39
|
+
addressFormat: (0, derivation_1.getAddressFormatDerivationMode)(account.derivationMode),
|
|
40
|
+
onDeviceSignatureRequested: () => o.next({ type: "device-signature-requested" }),
|
|
41
|
+
onDeviceSignatureGranted: () => o.next({ type: "device-signature-granted" }),
|
|
42
|
+
onDeviceStreaming: arg => o.next({ type: "device-streaming", ...arg }),
|
|
43
|
+
});
|
|
44
|
+
if (!psbtResult) {
|
|
45
|
+
throw new Error(`PSBT signing failed: no result from device for account ${account.id} (${currency.id})`);
|
|
46
|
+
}
|
|
47
|
+
const parsedPsbtFee = (0, psbtFees_1.feeFromPsbt)(psbtBuffer);
|
|
48
|
+
if (!parsedPsbtFee) {
|
|
49
|
+
(0, logs_1.log)("hw", `Failed to extract fee from PSBT for account ${account.id} (${currency.id}); falling back to fee=0`);
|
|
50
|
+
}
|
|
51
|
+
const psbtFee = parsedPsbtFee || (0, bignumber_js_1.BigNumber)(0);
|
|
52
|
+
// Optimistic operation for PSBT (we don't know recipients/amount here)
|
|
53
|
+
const operation = (0, buildOptimisticOperation_1.buildOptimisticOperation)({
|
|
54
|
+
accountId: account.id,
|
|
55
|
+
fee: psbtFee,
|
|
56
|
+
extra: { psbt: true },
|
|
57
|
+
});
|
|
58
|
+
o.next({
|
|
59
|
+
type: "signed",
|
|
60
|
+
signedOperation: {
|
|
61
|
+
operation,
|
|
62
|
+
// Ensure non-empty signature: if not finalized, fall back to the PSBT (base64)
|
|
63
|
+
signature: psbtResult.tx || psbtResult.psbt.toString("base64"),
|
|
64
|
+
rawData: { psbtSigned: psbtResult.psbt.toString("base64") },
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
exports.buildSignRawOperation = buildSignRawOperation;
|
|
69
|
+
exports.default = exports.buildSignRawOperation;
|
|
70
|
+
//# sourceMappingURL=signRawOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signRawOperation.js","sourceRoot":"","sources":["../src/signRawOperation.ts"],"names":[],"mappings":"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"}
|
package/lib/signer.d.ts
CHANGED
|
@@ -23,6 +23,21 @@ export interface BitcoinSigner {
|
|
|
23
23
|
signMessage(path: string, messageHex: string): Promise<BitcoinSignature>;
|
|
24
24
|
splitTransaction(transactionHex: string, isSegwitSupported: boolean | null | undefined, hasExtraData: boolean | null | undefined, additionals: Array<string> | null | undefined): SignerTransaction;
|
|
25
25
|
createPaymentTransaction(arg: CreateTransaction): Promise<string>;
|
|
26
|
+
signPsbtBuffer?(psbtBuffer: Buffer, options?: {
|
|
27
|
+
finalizePsbt?: boolean;
|
|
28
|
+
accountPath?: string;
|
|
29
|
+
addressFormat?: AddressFormat;
|
|
30
|
+
onDeviceSignatureRequested: (() => void) | undefined;
|
|
31
|
+
onDeviceSignatureGranted: (() => void) | undefined;
|
|
32
|
+
onDeviceStreaming: ((arg: {
|
|
33
|
+
progress: number;
|
|
34
|
+
total: number;
|
|
35
|
+
index: number;
|
|
36
|
+
}) => void) | undefined;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
psbt: Buffer;
|
|
39
|
+
tx: string;
|
|
40
|
+
}>;
|
|
26
41
|
}
|
|
27
42
|
export type SignerResult = BitcoinXPub | BitcoinAddress | BitcoinSignature;
|
|
28
43
|
export type SignerContext = <T>(deviceId: string, crypto: CryptoCurrency, fn: (signer: BitcoinSigner) => Promise<T>) => Promise<T>;
|
package/lib/signer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAElF,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChF,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,GACA,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEzE,gBAAgB,CACd,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAC7C,YAAY,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EACxC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAC5C,iBAAiB,CAAC;IACrB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
|