beignet 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/README.md +284 -1
  2. package/dist/cli/beignet-node.js +1019 -47
  3. package/dist/cli/beignet-node.js.map +1 -1
  4. package/dist/cli/cli.js +1201 -16
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/cli/config.js +21 -1
  7. package/dist/cli/config.js.map +1 -1
  8. package/dist/cli/daemon.js +342 -16
  9. package/dist/cli/daemon.js.map +1 -1
  10. package/dist/cli/errors.js +2 -0
  11. package/dist/cli/errors.js.map +1 -1
  12. package/dist/cli/openapi.js +1207 -14
  13. package/dist/cli/openapi.js.map +1 -1
  14. package/dist/cli/restore.js +89 -0
  15. package/dist/cli/restore.js.map +1 -0
  16. package/dist/cli/wallet-storage.js +34 -0
  17. package/dist/cli/wallet-storage.js.map +1 -0
  18. package/dist/electrum/index.js +105 -10
  19. package/dist/electrum/index.js.map +1 -1
  20. package/dist/lightning/advisor/fee-tuner.js +42 -0
  21. package/dist/lightning/advisor/fee-tuner.js.map +1 -0
  22. package/dist/lightning/advisor/index.js +9 -1
  23. package/dist/lightning/advisor/index.js.map +1 -1
  24. package/dist/lightning/advisor/rebalance-planner.js +55 -0
  25. package/dist/lightning/advisor/rebalance-planner.js.map +1 -0
  26. package/dist/lightning/backup/index.js +18 -0
  27. package/dist/lightning/backup/index.js.map +1 -0
  28. package/dist/lightning/backup/scb.js +42 -0
  29. package/dist/lightning/backup/scb.js.map +1 -0
  30. package/dist/lightning/chain/chain-monitor.js +27 -0
  31. package/dist/lightning/chain/chain-monitor.js.map +1 -1
  32. package/dist/lightning/chain/output-resolver.js +55 -6
  33. package/dist/lightning/chain/output-resolver.js.map +1 -1
  34. package/dist/lightning/chain/types.js +1 -0
  35. package/dist/lightning/chain/types.js.map +1 -1
  36. package/dist/lightning/channel/channel-manager.js +64 -0
  37. package/dist/lightning/channel/channel-manager.js.map +1 -1
  38. package/dist/lightning/channel/channel-state.js.map +1 -1
  39. package/dist/lightning/channel/channel.js +124 -4
  40. package/dist/lightning/channel/channel.js.map +1 -1
  41. package/dist/lightning/channel/dual-funding.js +6 -5
  42. package/dist/lightning/channel/dual-funding.js.map +1 -1
  43. package/dist/lightning/channel/types.js +3 -1
  44. package/dist/lightning/channel/types.js.map +1 -1
  45. package/dist/lightning/channel/validation.js +3 -3
  46. package/dist/lightning/channel/validation.js.map +1 -1
  47. package/dist/lightning/crypto/index.js +1 -0
  48. package/dist/lightning/crypto/index.js.map +1 -1
  49. package/dist/lightning/crypto/message-signing.js +116 -0
  50. package/dist/lightning/crypto/message-signing.js.map +1 -0
  51. package/dist/lightning/crypto/xchacha20poly1305.js +77 -0
  52. package/dist/lightning/crypto/xchacha20poly1305.js.map +1 -0
  53. package/dist/lightning/features/flags.js +1 -0
  54. package/dist/lightning/features/flags.js.map +1 -1
  55. package/dist/lightning/gossip/messages.js +37 -1
  56. package/dist/lightning/gossip/messages.js.map +1 -1
  57. package/dist/lightning/index.js +2 -1
  58. package/dist/lightning/index.js.map +1 -1
  59. package/dist/lightning/keys/wallet-keys.js +1 -0
  60. package/dist/lightning/keys/wallet-keys.js.map +1 -1
  61. package/dist/lightning/message/index.js +1 -0
  62. package/dist/lightning/message/index.js.map +1 -1
  63. package/dist/lightning/message/peer-storage.js +43 -0
  64. package/dist/lightning/message/peer-storage.js.map +1 -0
  65. package/dist/lightning/message/types.js +2 -0
  66. package/dist/lightning/message/types.js.map +1 -1
  67. package/dist/lightning/node/lightning-node.js +1583 -235
  68. package/dist/lightning/node/lightning-node.js.map +1 -1
  69. package/dist/lightning/node/types.js +18 -1
  70. package/dist/lightning/node/types.js.map +1 -1
  71. package/dist/lightning/offer/offer-manager.js +2 -5
  72. package/dist/lightning/offer/offer-manager.js.map +1 -1
  73. package/dist/lightning/offer/tlv.js +3 -1
  74. package/dist/lightning/offer/tlv.js.map +1 -1
  75. package/dist/lightning/storage/encryption.js +67 -0
  76. package/dist/lightning/storage/encryption.js.map +1 -0
  77. package/dist/lightning/storage/index.js +1 -0
  78. package/dist/lightning/storage/index.js.map +1 -1
  79. package/dist/lightning/storage/serialization.js +6 -2
  80. package/dist/lightning/storage/serialization.js.map +1 -1
  81. package/dist/lightning/storage/sqlite-storage.js +387 -33
  82. package/dist/lightning/storage/sqlite-storage.js.map +1 -1
  83. package/dist/lightning/watchtower/blob.js +135 -0
  84. package/dist/lightning/watchtower/blob.js.map +1 -0
  85. package/dist/lightning/watchtower/index.js +55 -0
  86. package/dist/lightning/watchtower/index.js.map +1 -0
  87. package/dist/lightning/watchtower/justice.js +182 -0
  88. package/dist/lightning/watchtower/justice.js.map +1 -0
  89. package/dist/lightning/watchtower/tower-connection.js +208 -0
  90. package/dist/lightning/watchtower/tower-connection.js.map +1 -0
  91. package/dist/lightning/watchtower/types.js +3 -0
  92. package/dist/lightning/watchtower/types.js.map +1 -0
  93. package/dist/lightning/watchtower/watchtower-client.js +402 -0
  94. package/dist/lightning/watchtower/watchtower-client.js.map +1 -0
  95. package/dist/lightning/watchtower/wtwire.js +201 -0
  96. package/dist/lightning/watchtower/wtwire.js.map +1 -0
  97. package/dist/shapes/electrum.js +32 -1
  98. package/dist/shapes/electrum.js.map +1 -1
  99. package/dist/shapes/wallet.js +11 -1
  100. package/dist/shapes/wallet.js.map +1 -1
  101. package/dist/transaction/index.js +163 -15
  102. package/dist/transaction/index.js.map +1 -1
  103. package/dist/types/cli/beignet-node.d.ts +144 -3
  104. package/dist/types/cli/daemon.d.ts +2 -0
  105. package/dist/types/cli/errors.d.ts +2 -0
  106. package/dist/types/cli/restore.d.ts +10 -0
  107. package/dist/types/cli/types.d.ts +228 -1
  108. package/dist/types/cli/wallet-storage.d.ts +3 -0
  109. package/dist/types/electrum/index.d.ts +12 -0
  110. package/dist/types/electrum.js +1 -0
  111. package/dist/types/electrum.js.map +1 -1
  112. package/dist/types/lightning/advisor/fee-tuner.d.ts +20 -0
  113. package/dist/types/lightning/advisor/index.d.ts +4 -0
  114. package/dist/types/lightning/advisor/rebalance-planner.d.ts +12 -0
  115. package/dist/types/lightning/backup/index.d.ts +1 -0
  116. package/dist/types/lightning/backup/scb.d.ts +24 -0
  117. package/dist/types/lightning/chain/chain-monitor.d.ts +1 -0
  118. package/dist/types/lightning/chain/types.d.ts +1 -0
  119. package/dist/types/lightning/channel/channel-manager.d.ts +7 -0
  120. package/dist/types/lightning/channel/channel-state.d.ts +2 -0
  121. package/dist/types/lightning/channel/channel.d.ts +6 -0
  122. package/dist/types/lightning/channel/dual-funding.d.ts +2 -1
  123. package/dist/types/lightning/channel/types.d.ts +2 -0
  124. package/dist/types/lightning/channel/validation.d.ts +1 -1
  125. package/dist/types/lightning/crypto/index.d.ts +1 -0
  126. package/dist/types/lightning/crypto/message-signing.d.ts +9 -0
  127. package/dist/types/lightning/crypto/xchacha20poly1305.d.ts +3 -0
  128. package/dist/types/lightning/features/flags.d.ts +1 -0
  129. package/dist/types/lightning/gossip/messages.d.ts +4 -0
  130. package/dist/types/lightning/index.d.ts +1 -0
  131. package/dist/types/lightning/keys/wallet-keys.d.ts +2 -1
  132. package/dist/types/lightning/message/index.d.ts +1 -0
  133. package/dist/types/lightning/message/peer-storage.d.ts +9 -0
  134. package/dist/types/lightning/message/types.d.ts +2 -0
  135. package/dist/types/lightning/node/lightning-node.d.ts +116 -4
  136. package/dist/types/lightning/node/types.d.ts +62 -1
  137. package/dist/types/lightning/storage/encryption.d.ts +11 -0
  138. package/dist/types/lightning/storage/index.d.ts +1 -0
  139. package/dist/types/lightning/storage/serialization.d.ts +2 -0
  140. package/dist/types/lightning/storage/sqlite-storage.d.ts +43 -3
  141. package/dist/types/lightning/storage/types.d.ts +62 -0
  142. package/dist/types/lightning/watchtower/blob.d.ts +32 -0
  143. package/dist/types/lightning/watchtower/index.d.ts +9 -0
  144. package/dist/types/lightning/watchtower/justice.d.ts +29 -0
  145. package/dist/types/lightning/watchtower/tower-connection.d.ts +34 -0
  146. package/dist/types/lightning/watchtower/types.d.ts +44 -0
  147. package/dist/types/lightning/watchtower/watchtower-client.d.ts +67 -0
  148. package/dist/types/lightning/watchtower/wtwire.d.ts +90 -0
  149. package/dist/types/shapes/electrum.d.ts +3 -1
  150. package/dist/types/transaction/index.d.ts +6 -0
  151. package/dist/types/transaction.js.map +1 -1
  152. package/dist/types/types/electrum.d.ts +3 -2
  153. package/dist/types/types/transaction.d.ts +1 -1
  154. package/dist/types/types/wallet.d.ts +78 -4
  155. package/dist/types/utils/descriptors.d.ts +2 -0
  156. package/dist/types/utils/fees.d.ts +3 -0
  157. package/dist/types/utils/helpers.d.ts +3 -1
  158. package/dist/types/utils/index.d.ts +5 -0
  159. package/dist/types/utils/multisig.d.ts +29 -0
  160. package/dist/types/utils/transaction.d.ts +7 -0
  161. package/dist/types/utils/wallet-storage-encryption.d.ts +3 -0
  162. package/dist/types/utils/wallet.d.ts +1 -1
  163. package/dist/types/utils/watch-only.d.ts +12 -0
  164. package/dist/types/wallet/constants.d.ts +1 -0
  165. package/dist/types/wallet/index.d.ts +61 -4
  166. package/dist/types/wallet.js +3 -0
  167. package/dist/types/wallet.js.map +1 -1
  168. package/dist/utils/derivation-path.js +8 -7
  169. package/dist/utils/derivation-path.js.map +1 -1
  170. package/dist/utils/descriptors.js +56 -0
  171. package/dist/utils/descriptors.js.map +1 -0
  172. package/dist/utils/electrum.js +10 -2
  173. package/dist/utils/electrum.js.map +1 -1
  174. package/dist/utils/fees.js +19 -0
  175. package/dist/utils/fees.js.map +1 -0
  176. package/dist/utils/helpers.js +22 -5
  177. package/dist/utils/helpers.js.map +1 -1
  178. package/dist/utils/index.js +5 -0
  179. package/dist/utils/index.js.map +1 -1
  180. package/dist/utils/multisig.js +90 -0
  181. package/dist/utils/multisig.js.map +1 -0
  182. package/dist/utils/transaction.js +30 -3
  183. package/dist/utils/transaction.js.map +1 -1
  184. package/dist/utils/wallet-storage-encryption.js +45 -0
  185. package/dist/utils/wallet-storage-encryption.js.map +1 -0
  186. package/dist/utils/wallet.js +3 -1
  187. package/dist/utils/wallet.js.map +1 -1
  188. package/dist/utils/watch-only.js +102 -0
  189. package/dist/utils/watch-only.js.map +1 -0
  190. package/dist/wallet/constants.js +2 -1
  191. package/dist/wallet/constants.js.map +1 -1
  192. package/dist/wallet/index.js +787 -30
  193. package/dist/wallet/index.js.map +1 -1
  194. package/docs/ROADMAP.md +292 -0
  195. package/package.json +1 -1
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeDeleteSessionReply = exports.encodeDeleteSessionReply = exports.encodeDeleteSession = exports.decodeStateUpdateReply = exports.encodeStateUpdateReply = exports.decodeStateUpdate = exports.encodeStateUpdate = exports.decodeCreateSessionReply = exports.encodeCreateSessionReply = exports.decodeCreateSession = exports.encodeCreateSession = exports.decodeError = exports.encodeError = exports.decodeInit = exports.encodeInit = exports.StateUpdateCode = exports.CreateSessionCode = exports.WtErrorCode = exports.WtFeatureBit = exports.WtMessageType = void 0;
4
+ var WtMessageType;
5
+ (function (WtMessageType) {
6
+ WtMessageType[WtMessageType["INIT"] = 600] = "INIT";
7
+ WtMessageType[WtMessageType["ERROR"] = 601] = "ERROR";
8
+ WtMessageType[WtMessageType["CREATE_SESSION"] = 602] = "CREATE_SESSION";
9
+ WtMessageType[WtMessageType["CREATE_SESSION_REPLY"] = 603] = "CREATE_SESSION_REPLY";
10
+ WtMessageType[WtMessageType["STATE_UPDATE"] = 604] = "STATE_UPDATE";
11
+ WtMessageType[WtMessageType["STATE_UPDATE_REPLY"] = 605] = "STATE_UPDATE_REPLY";
12
+ WtMessageType[WtMessageType["DELETE_SESSION"] = 606] = "DELETE_SESSION";
13
+ WtMessageType[WtMessageType["DELETE_SESSION_REPLY"] = 607] = "DELETE_SESSION_REPLY";
14
+ })(WtMessageType = exports.WtMessageType || (exports.WtMessageType = {}));
15
+ var WtFeatureBit;
16
+ (function (WtFeatureBit) {
17
+ WtFeatureBit[WtFeatureBit["ALTRUIST_SESSIONS_REQUIRED"] = 0] = "ALTRUIST_SESSIONS_REQUIRED";
18
+ WtFeatureBit[WtFeatureBit["ALTRUIST_SESSIONS_OPTIONAL"] = 1] = "ALTRUIST_SESSIONS_OPTIONAL";
19
+ WtFeatureBit[WtFeatureBit["ANCHOR_COMMIT_REQUIRED"] = 2] = "ANCHOR_COMMIT_REQUIRED";
20
+ WtFeatureBit[WtFeatureBit["ANCHOR_COMMIT_OPTIONAL"] = 3] = "ANCHOR_COMMIT_OPTIONAL";
21
+ WtFeatureBit[WtFeatureBit["TAPROOT_COMMIT_REQUIRED"] = 4] = "TAPROOT_COMMIT_REQUIRED";
22
+ WtFeatureBit[WtFeatureBit["TAPROOT_COMMIT_OPTIONAL"] = 5] = "TAPROOT_COMMIT_OPTIONAL";
23
+ })(WtFeatureBit = exports.WtFeatureBit || (exports.WtFeatureBit = {}));
24
+ var WtErrorCode;
25
+ (function (WtErrorCode) {
26
+ WtErrorCode[WtErrorCode["OK"] = 0] = "OK";
27
+ WtErrorCode[WtErrorCode["TEMPORARY_FAILURE"] = 40] = "TEMPORARY_FAILURE";
28
+ WtErrorCode[WtErrorCode["PERMANENT_FAILURE"] = 50] = "PERMANENT_FAILURE";
29
+ })(WtErrorCode = exports.WtErrorCode || (exports.WtErrorCode = {}));
30
+ var CreateSessionCode;
31
+ (function (CreateSessionCode) {
32
+ CreateSessionCode[CreateSessionCode["OK"] = 0] = "OK";
33
+ CreateSessionCode[CreateSessionCode["REJECT_ALREADY_EXISTS"] = 60] = "REJECT_ALREADY_EXISTS";
34
+ CreateSessionCode[CreateSessionCode["REJECT_MAX_UPDATES"] = 61] = "REJECT_MAX_UPDATES";
35
+ CreateSessionCode[CreateSessionCode["REJECT_REWARD_RATE"] = 62] = "REJECT_REWARD_RATE";
36
+ CreateSessionCode[CreateSessionCode["REJECT_SWEEP_FEE_RATE"] = 63] = "REJECT_SWEEP_FEE_RATE";
37
+ CreateSessionCode[CreateSessionCode["REJECT_BLOB_TYPE"] = 64] = "REJECT_BLOB_TYPE";
38
+ })(CreateSessionCode = exports.CreateSessionCode || (exports.CreateSessionCode = {}));
39
+ var StateUpdateCode;
40
+ (function (StateUpdateCode) {
41
+ StateUpdateCode[StateUpdateCode["OK"] = 0] = "OK";
42
+ StateUpdateCode[StateUpdateCode["CLIENT_BEHIND"] = 40] = "CLIENT_BEHIND";
43
+ StateUpdateCode[StateUpdateCode["MAX_UPDATES_EXCEEDED"] = 41] = "MAX_UPDATES_EXCEEDED";
44
+ StateUpdateCode[StateUpdateCode["SEQ_NUM_OUT_OF_ORDER"] = 42] = "SEQ_NUM_OUT_OF_ORDER";
45
+ })(StateUpdateCode = exports.StateUpdateCode || (exports.StateUpdateCode = {}));
46
+ function writeVarBytes(buf) {
47
+ return Buffer.concat([writeVarInt(buf.length), buf]);
48
+ }
49
+ function writeVarInt(n) {
50
+ if (n < 0xfd) {
51
+ return Buffer.from([n]);
52
+ }
53
+ if (n <= 0xffff) {
54
+ const b = Buffer.alloc(3);
55
+ b[0] = 0xfd;
56
+ b.writeUInt16LE(n, 1);
57
+ return b;
58
+ }
59
+ if (n <= 0xffffffff) {
60
+ const b = Buffer.alloc(5);
61
+ b[0] = 0xfe;
62
+ b.writeUInt32LE(n, 1);
63
+ return b;
64
+ }
65
+ const b = Buffer.alloc(9);
66
+ b[0] = 0xff;
67
+ b.writeBigUInt64LE(BigInt(n), 1);
68
+ return b;
69
+ }
70
+ function readVarInt(buf, offset) {
71
+ const first = buf.readUInt8(offset);
72
+ if (first < 0xfd) {
73
+ return { value: first, next: offset + 1 };
74
+ }
75
+ if (first === 0xfd) {
76
+ return { value: buf.readUInt16LE(offset + 1), next: offset + 3 };
77
+ }
78
+ if (first === 0xfe) {
79
+ return { value: buf.readUInt32LE(offset + 1), next: offset + 5 };
80
+ }
81
+ return { value: Number(buf.readBigUInt64LE(offset + 1)), next: offset + 9 };
82
+ }
83
+ function readVarBytes(buf, offset) {
84
+ const { value: len, next } = readVarInt(buf, offset);
85
+ if (next + len > buf.length) {
86
+ throw new Error('wtwire: var bytes length exceeds buffer');
87
+ }
88
+ return { value: buf.subarray(next, next + len), next: next + len };
89
+ }
90
+ function encodeInit(msg) {
91
+ if (msg.chainHash.length !== 32) {
92
+ throw new Error('wtwire init: chainHash must be 32 bytes');
93
+ }
94
+ const feat = Buffer.concat([u16(msg.connFeatures.length), msg.connFeatures]);
95
+ return Buffer.concat([feat, msg.chainHash]);
96
+ }
97
+ exports.encodeInit = encodeInit;
98
+ function decodeInit(payload) {
99
+ const featLen = payload.readUInt16BE(0);
100
+ const connFeatures = payload.subarray(2, 2 + featLen);
101
+ const chainHash = payload.subarray(2 + featLen, 2 + featLen + 32);
102
+ if (chainHash.length !== 32) {
103
+ throw new Error('wtwire init: truncated chainHash');
104
+ }
105
+ return { connFeatures, chainHash };
106
+ }
107
+ exports.decodeInit = decodeInit;
108
+ function encodeError(msg) {
109
+ return Buffer.concat([u16(msg.code), writeVarBytes(msg.data)]);
110
+ }
111
+ exports.encodeError = encodeError;
112
+ function decodeError(payload) {
113
+ const code = payload.readUInt16BE(0);
114
+ const { value: data } = readVarBytes(payload, 2);
115
+ return { code, data };
116
+ }
117
+ exports.decodeError = decodeError;
118
+ function encodeCreateSession(msg) {
119
+ const b = Buffer.alloc(20);
120
+ b.writeUInt16BE(msg.blobType, 0);
121
+ b.writeUInt16BE(msg.maxUpdates, 2);
122
+ b.writeUInt32BE(msg.rewardBase, 4);
123
+ b.writeUInt32BE(msg.rewardRate, 8);
124
+ b.writeBigUInt64BE(msg.sweepFeeRate, 12);
125
+ return b;
126
+ }
127
+ exports.encodeCreateSession = encodeCreateSession;
128
+ function decodeCreateSession(payload) {
129
+ return {
130
+ blobType: payload.readUInt16BE(0),
131
+ maxUpdates: payload.readUInt16BE(2),
132
+ rewardBase: payload.readUInt32BE(4),
133
+ rewardRate: payload.readUInt32BE(8),
134
+ sweepFeeRate: payload.readBigUInt64BE(12)
135
+ };
136
+ }
137
+ exports.decodeCreateSession = decodeCreateSession;
138
+ function encodeCreateSessionReply(msg) {
139
+ return Buffer.concat([
140
+ u16(msg.code),
141
+ u16(msg.lastApplied),
142
+ writeVarBytes(msg.data)
143
+ ]);
144
+ }
145
+ exports.encodeCreateSessionReply = encodeCreateSessionReply;
146
+ function decodeCreateSessionReply(payload) {
147
+ const code = payload.readUInt16BE(0);
148
+ const lastApplied = payload.readUInt16BE(2);
149
+ const { value: data } = readVarBytes(payload, 4);
150
+ return { code, lastApplied, data };
151
+ }
152
+ exports.decodeCreateSessionReply = decodeCreateSessionReply;
153
+ function encodeStateUpdate(msg) {
154
+ if (msg.hint.length !== 16) {
155
+ throw new Error('wtwire state_update: hint must be 16 bytes');
156
+ }
157
+ const head = Buffer.alloc(5);
158
+ head.writeUInt16BE(msg.seqNum, 0);
159
+ head.writeUInt16BE(msg.lastApplied, 2);
160
+ head.writeUInt8(msg.isComplete, 4);
161
+ return Buffer.concat([head, msg.hint, writeVarBytes(msg.encryptedBlob)]);
162
+ }
163
+ exports.encodeStateUpdate = encodeStateUpdate;
164
+ function decodeStateUpdate(payload) {
165
+ const seqNum = payload.readUInt16BE(0);
166
+ const lastApplied = payload.readUInt16BE(2);
167
+ const isComplete = payload.readUInt8(4);
168
+ const hint = payload.subarray(5, 21);
169
+ const { value: encryptedBlob } = readVarBytes(payload, 21);
170
+ return { seqNum, lastApplied, isComplete, hint, encryptedBlob };
171
+ }
172
+ exports.decodeStateUpdate = decodeStateUpdate;
173
+ function encodeStateUpdateReply(msg) {
174
+ return Buffer.concat([u16(msg.code), u16(msg.lastApplied)]);
175
+ }
176
+ exports.encodeStateUpdateReply = encodeStateUpdateReply;
177
+ function decodeStateUpdateReply(payload) {
178
+ return {
179
+ code: payload.readUInt16BE(0),
180
+ lastApplied: payload.readUInt16BE(2)
181
+ };
182
+ }
183
+ exports.decodeStateUpdateReply = decodeStateUpdateReply;
184
+ function encodeDeleteSession() {
185
+ return Buffer.alloc(0);
186
+ }
187
+ exports.encodeDeleteSession = encodeDeleteSession;
188
+ function encodeDeleteSessionReply(msg) {
189
+ return u16(msg.code);
190
+ }
191
+ exports.encodeDeleteSessionReply = encodeDeleteSessionReply;
192
+ function decodeDeleteSessionReply(payload) {
193
+ return { code: payload.readUInt16BE(0) };
194
+ }
195
+ exports.decodeDeleteSessionReply = decodeDeleteSessionReply;
196
+ function u16(n) {
197
+ const b = Buffer.alloc(2);
198
+ b.writeUInt16BE(n, 0);
199
+ return b;
200
+ }
201
+ //# sourceMappingURL=wtwire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wtwire.js","sourceRoot":"","sources":["../../../src/lightning/watchtower/wtwire.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.POLLING_INTERVAL = exports.onMessageKeys = void 0;
3
+ exports.defaultElectrumPeers = exports.ELECTRUM_SERVER_COOLDOWN_MS = exports.POLLING_INTERVAL = exports.onMessageKeys = void 0;
4
+ const types_1 = require("../types");
4
5
  exports.onMessageKeys = {
5
6
  newBlock: 'newBlock',
6
7
  transactionReceived: 'transactionReceived',
@@ -11,4 +12,34 @@ exports.onMessageKeys = {
11
12
  connectedToElectrum: 'connectedToElectrum'
12
13
  };
13
14
  exports.POLLING_INTERVAL = 1000 * 10;
15
+ exports.ELECTRUM_SERVER_COOLDOWN_MS = 1000 * 60;
16
+ exports.defaultElectrumPeers = {
17
+ [types_1.EElectrumNetworks.bitcoin]: [
18
+ { host: '35.187.18.233', ssl: 8900, tcp: 8911, protocol: types_1.EProtocol.ssl },
19
+ {
20
+ host: 'electrum.aantonop.com',
21
+ ssl: 50002,
22
+ tcp: 50001,
23
+ protocol: types_1.EProtocol.ssl
24
+ },
25
+ { host: 'bitcoin.lu.ke', ssl: 50002, tcp: 50001, protocol: types_1.EProtocol.ssl },
26
+ {
27
+ host: 'kirsche.emzy.de',
28
+ ssl: 50002,
29
+ tcp: 50001,
30
+ protocol: types_1.EProtocol.ssl
31
+ }
32
+ ],
33
+ [types_1.EElectrumNetworks.bitcoinTestnet]: [
34
+ {
35
+ host: 'testnet.aranguren.org',
36
+ ssl: 51002,
37
+ tcp: 51001,
38
+ protocol: types_1.EProtocol.ssl
39
+ }
40
+ ],
41
+ [types_1.EElectrumNetworks.bitcoinSignet]: [
42
+ { host: 'mempool.space', ssl: 60602, tcp: 60601, protocol: types_1.EProtocol.ssl }
43
+ ]
44
+ };
14
45
  //# sourceMappingURL=electrum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"electrum.js","sourceRoot":"","sources":["../../src/shapes/electrum.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAA+B;IACxD,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,mBAAmB,EAAE,qBAAqB;CAC1C,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"electrum.js","sourceRoot":"","sources":["../../src/shapes/electrum.ts"],"names":[],"mappings":";;;AAAA,oCAA+E;AAElE,QAAA,aAAa,GAA+B;IACxD,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,mBAAmB,EAAE,qBAAqB;CAC1C,CAAC;AAEW,QAAA,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAM7B,QAAA,2BAA2B,GAAG,IAAI,GAAG,EAAE,CAAC;AAQxC,QAAA,oBAAoB,GAE7B;IACH,CAAC,yBAAiB,CAAC,OAAO,CAAC,EAAE;QAC5B,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAS,CAAC,GAAG,EAAE;QACxE;YACC,IAAI,EAAE,uBAAuB;YAC7B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,iBAAS,CAAC,GAAG;SACvB;QACD,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAS,CAAC,GAAG,EAAE;QAC1E;YACC,IAAI,EAAE,iBAAiB;YACvB,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,iBAAS,CAAC,GAAG;SACvB;KACD;IACD,CAAC,yBAAiB,CAAC,cAAc,CAAC,EAAE;QACnC;YACC,IAAI,EAAE,uBAAuB;YAC7B,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,iBAAS,CAAC,GAAG;SACvB;KACD;IACD,CAAC,yBAAiB,CAAC,aAAa,CAAC,EAAE;QAClC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAS,CAAC,GAAG,EAAE;KAC1E;CACD,CAAC"}
@@ -39,6 +39,14 @@ exports.addressTypes = {
39
39
  shortName: 'Taproot',
40
40
  description: 'Taproot Address',
41
41
  example: '(bc1px...)'
42
+ },
43
+ [types_1.EAddressType.p2wsh]: {
44
+ type: types_1.EAddressType.p2wsh,
45
+ path: "m/48'/0'/0'/2'/0/0",
46
+ name: 'Multisig Segwit P2WSH',
47
+ shortName: 'Multisig',
48
+ description: 'Pay-to-witness-script-hash sorted multisig',
49
+ example: '(bc1q... 62 chars)'
42
50
  }
43
51
  };
44
52
  exports.defaultAddressContent = {
@@ -110,7 +118,9 @@ exports.defaultWalletData = {
110
118
  slow: 3,
111
119
  minimum: 2,
112
120
  timestamp: 0
113
- }
121
+ },
122
+ addressLabels: {},
123
+ birthdayHeight: 0
114
124
  };
115
125
  exports.defaultFeesShape = {
116
126
  fast: 4,
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/shapes/wallet.ts"],"names":[],"mappings":";;;;;;AAOA,wEAAyC;AACzC,oCAMkB;AAClB,oCAAkC;AAErB,QAAA,YAAY,GAA4B;IACpD,CAAC,oBAAY,CAAC,MAAM,CAAC,EAAE;QACtB,IAAI,EAAE,oBAAY,CAAC,MAAM;QACzB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,sBAAsB;QAC5B,SAAS,EAAE,eAAe;QAC1B,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,WAAW;KACpB;IACD,CAAC,oBAAY,CAAC,IAAI,CAAC,EAAE;QACpB,IAAI,EAAE,oBAAY,CAAC,IAAI;QACvB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,SAAS;KAClB;IACD,CAAC,oBAAY,CAAC,KAAK,CAAC,EAAE;QACrB,IAAI,EAAE,oBAAY,CAAC,KAAK;QACxB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,wBAAwB;QACrC,OAAO,EAAE,SAAS;KAClB;IACD,CAAC,oBAAY,CAAC,IAAI,CAAC,EAAE;QACpB,IAAI,EAAE,oBAAY,CAAC,IAAI;QACvB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,YAAY;KACrB;CACD,CAAC;AAEW,QAAA,qBAAqB,GAAuB;IACxD,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,UAAU,EAAE,EAAE;IACd,SAAS,EAAE,EAAE;CACb,CAAC;AAEW,QAAA,sBAAsB,GAAqB;IACvD,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,CAAC;IACb,GAAG,EAAE,GAAG;IACR,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,kBAAU,CAAC,IAAI;IAC1B,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,EAAE;IACR,gBAAgB,EAAE,EAAE;IACpB,aAAa,EAAE,cAAM,CAAC,IAAI;CAC1B,CAAC;AAEK,MAAM,yBAAyB,GAAG,GAAqB,EAAE;IAC/D,OAAO,IAAA,0BAAS,EAAC,8BAAsB,CAAC,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,yBAAyB,6BAEpC;AAEK,MAAM,qBAAqB,GAAG,CACpC,IAAO,EAC4B,EAAE;IACrC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,EAA4B,CAAC;IAE7C,eAAe,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACvC,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,IAAA,0BAAS,EAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC;AAXW,QAAA,qBAAqB,yBAWhC;AAEK,MAAM,gBAAgB,GAAG,GAAY,EAAE;IAC7C,OAAO,IAAA,0BAAS,EAAC;QAChB,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,EAAE;QACR,GAAG,EAAE,EAAE;KACP,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B;AAEW,QAAA,iBAAiB,GAA0B;IACvD,EAAE,EAAE,EAAE;IACN,WAAW,EAAE,oBAAY,CAAC,MAAM;IAChC,MAAM,EAAE,IAAA,wBAAgB,GAAE;IAC1B,SAAS,EAAE,IAAA,6BAAqB,EAAa,EAAE,CAAC;IAChD,eAAe,EAAE,IAAA,6BAAqB,EAAa,EAAE,CAAC;IACtD,YAAY,EAAE,IAAA,6BAAqB,EAAW,6BAAqB,CAAC;IACpE,kBAAkB,EAAE,IAAA,6BAAqB,EAAW,6BAAqB,CAAC;IAC1E,oBAAoB,EAAE,IAAA,6BAAqB,EAAW,6BAAqB,CAAC;IAC5E,0BAA0B,EAAE,IAAA,6BAAqB,EAChD,6BAAqB,CACrB;IACD,KAAK,EAAE,EAAE;IACT,gBAAgB,EAAE,EAAE;IACpB,uBAAuB,EAAE,EAAE;IAC3B,YAAY,EAAE,EAAE;IAChB,mBAAmB,EAAE,EAAE;IACvB,WAAW,EAAE,IAAA,iCAAyB,GAAE;IACxC,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,cAAM,CAAC,MAAM;IAC5B,YAAY,EAAE;QACb,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;QACV,SAAS,EAAE,CAAC;KACZ;CACD,CAAC;AAEW,QAAA,gBAAgB,GAAiB;IAE7C,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC;CAC1C,CAAC;AAEK,MAAM,eAAe,GAAG,GAAmB,EAAE;IACnD,OAAO,IAAA,0BAAS,EAAC,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/shapes/wallet.ts"],"names":[],"mappings":"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"}
@@ -33,10 +33,10 @@ const utils_1 = require("../utils");
33
33
  const utils_2 = require("../utils");
34
34
  const constants_1 = require("../wallet/constants");
35
35
  const utils_3 = require("../utils");
36
- const bitcoinjs_lib_1 = require("bitcoinjs-lib");
37
36
  const secp256k1_1 = __importDefault(require("@bitcoinerlab/secp256k1"));
38
37
  const bitcoin = __importStar(require("bitcoinjs-lib"));
39
38
  const bitcoin_address_validation_1 = require("bitcoin-address-validation");
39
+ const bip371_1 = require("bitcoinjs-lib/src/psbt/bip371");
40
40
  bitcoin.initEccLib(secp256k1_1.default);
41
41
  class Transaction {
42
42
  constructor({ wallet }) {
@@ -65,7 +65,7 @@ class Transaction {
65
65
  if (changeAddress && !transaction.max) {
66
66
  outputAddresses.push(changeAddress);
67
67
  }
68
- const inputParam = (0, utils_3.constructByteCountParam)(inputAddresses);
68
+ const inputParam = this.applyMultisigInputWeights((0, utils_3.constructByteCountParam)(inputAddresses));
69
69
  const outputParam = (0, utils_3.constructByteCountParam)(outputAddresses);
70
70
  if (fundingLightning) {
71
71
  outputParam.P2WPKH = (outputParam.P2WPKH || 0) + 1;
@@ -123,7 +123,7 @@ class Transaction {
123
123
  if (changeAddress && !transaction.max) {
124
124
  outputAddresses.push(changeAddress);
125
125
  }
126
- const inputParam = (0, utils_3.constructByteCountParam)(inputAddresses);
126
+ const inputParam = this.applyMultisigInputWeights((0, utils_3.constructByteCountParam)(inputAddresses));
127
127
  const outputParam = (0, utils_3.constructByteCountParam)(outputAddresses, [
128
128
  { addrType: this._wallet.addressType, count: increaseAddressCount }
129
129
  ]);
@@ -271,7 +271,7 @@ class Transaction {
271
271
  if ((0, utils_1.isP2trPrefix)(input.address)) {
272
272
  const tapRootAddress = (0, utils_1.getTapRootAddressFromPublicKey)({
273
273
  publicKey: keyPair.publicKey,
274
- network: bitcoinjs_lib_1.networks[this._wallet.network]
274
+ network: (0, utils_2.getBitcoinJsNetwork)(this._wallet.network)
275
275
  });
276
276
  if (tapRootAddress.isErr())
277
277
  return (0, utils_1.err)(tapRootAddress.error.message);
@@ -299,7 +299,7 @@ class Transaction {
299
299
  const outputValue = this.getTransactionOutputValue({
300
300
  outputs
301
301
  });
302
- const network = bitcoinjs_lib_1.networks[this._wallet.network];
302
+ const network = (0, utils_2.getBitcoinJsNetwork)(this._wallet.network);
303
303
  let targets = outputs.concat();
304
304
  if (changeAddress) {
305
305
  const changeAddressValue = balance - (outputValue + fee);
@@ -339,7 +339,7 @@ class Transaction {
339
339
  });
340
340
  targets.push({ script: embed.output, value: 0, index: targets.length });
341
341
  }
342
- if (!bip32Interface) {
342
+ if (!bip32Interface && !this._wallet.isWatchOnly) {
343
343
  const bip32InterfaceRes = await this._wallet.getBip32Interface();
344
344
  if (bip32InterfaceRes.isErr()) {
345
345
  return (0, utils_1.err)(bip32InterfaceRes.error.message);
@@ -350,9 +350,24 @@ class Transaction {
350
350
  const psbt = new bitcoin.Psbt({ network });
351
351
  try {
352
352
  for (const input of inputs) {
353
+ if (this._wallet.isMultisig) {
354
+ const addRes = await this.addInput({ psbt, input });
355
+ if (addRes.isErr())
356
+ return (0, utils_1.err)(addRes.error.message);
357
+ continue;
358
+ }
353
359
  let keyPair = input?.keyPair;
354
360
  if (!keyPair && input?.path) {
355
- keyPair = root.derivePath(input.path);
361
+ if (root) {
362
+ keyPair = root.derivePath(input.path);
363
+ }
364
+ else {
365
+ const publicNodeRes = this._wallet.derivePublicNode(input.path);
366
+ if (publicNodeRes.isErr()) {
367
+ return (0, utils_1.err)(publicNodeRes.error.message);
368
+ }
369
+ keyPair = publicNodeRes.value;
370
+ }
356
371
  }
357
372
  if (!keyPair) {
358
373
  return (0, utils_1.err)('Unable to derive keyPair.');
@@ -396,9 +411,47 @@ class Transaction {
396
411
  });
397
412
  return (0, utils_1.ok)(psbt);
398
413
  };
414
+ this.createUnsignedPsbt = async ({ transactionData = this.data, shuffleOutputs = true } = {}) => {
415
+ (0, utils_3.removeDustOutputs)(transactionData.outputs);
416
+ const inputValue = this.getTransactionInputValue({
417
+ inputs: transactionData.inputs
418
+ });
419
+ const outputValue = this.getTransactionOutputValue({
420
+ outputs: transactionData.outputs
421
+ });
422
+ if (inputValue === 0) {
423
+ return (0, utils_1.err)('No inputs to spend.');
424
+ }
425
+ const fee = inputValue - outputValue;
426
+ if (fee > inputValue) {
427
+ return (0, utils_1.err)('Fee is larger than the intended payment.');
428
+ }
429
+ const validateRes = (0, utils_1.validateTransaction)(transactionData);
430
+ if (validateRes.isErr())
431
+ return (0, utils_1.err)(validateRes.error.message);
432
+ try {
433
+ const psbtRes = await this.createPsbtFromTransactionData({
434
+ transactionData,
435
+ shuffleTargets: shuffleOutputs
436
+ });
437
+ if (psbtRes.isErr())
438
+ return (0, utils_1.err)(psbtRes.error);
439
+ const psbt = psbtRes.value;
440
+ const metadataRes = this.addSignerMetadata({
441
+ psbt,
442
+ inputs: transactionData.inputs
443
+ });
444
+ if (metadataRes.isErr())
445
+ return (0, utils_1.err)(metadataRes.error.message);
446
+ return (0, utils_1.ok)(psbt);
447
+ }
448
+ catch (e) {
449
+ return (0, utils_1.err)(e);
450
+ }
451
+ };
399
452
  this.addInput = async ({ psbt, keyPair, input }) => {
400
453
  try {
401
- const network = bitcoinjs_lib_1.networks[this._wallet.network];
454
+ const network = (0, utils_2.getBitcoinJsNetwork)(this._wallet.network);
402
455
  const { type } = (0, bitcoin_address_validation_1.getAddressInfo)(input.address);
403
456
  if (!input.value) {
404
457
  return (0, utils_1.err)('No input provided.');
@@ -409,6 +462,28 @@ class Transaction {
409
462
  if (input?.keyPair) {
410
463
  keyPair = input.keyPair;
411
464
  }
465
+ if (type === 'p2wsh') {
466
+ const paymentRes = this._wallet.getMultisigPayment(input.path);
467
+ if (paymentRes.isErr())
468
+ return (0, utils_1.err)(paymentRes.error.message);
469
+ const { address, output, witnessScript } = paymentRes.value;
470
+ if (address !== input.address) {
471
+ return (0, utils_1.err)(`Multisig script for path ${input.path} does not produce address ${input.address}.`);
472
+ }
473
+ psbt.addInput({
474
+ hash: input.tx_hash,
475
+ index: input.tx_pos,
476
+ witnessUtxo: {
477
+ script: output,
478
+ value: input.value
479
+ },
480
+ witnessScript
481
+ });
482
+ return (0, utils_1.ok)('Success');
483
+ }
484
+ if (!keyPair) {
485
+ return (0, utils_1.err)('Unable to derive keyPair.');
486
+ }
412
487
  if (type === 'p2wpkh') {
413
488
  const p2wpkh = bitcoin.payments.p2wpkh({
414
489
  pubkey: keyPair.publicKey,
@@ -654,15 +729,15 @@ class Transaction {
654
729
  const transaction = currentWallet.transaction;
655
730
  let inputs = [];
656
731
  if (inputTxHashes) {
657
- inputs = currentWallet.utxos.filter((utxo) => {
732
+ inputs = this.removeBlackListedUtxos(currentWallet.utxos.filter((utxo) => {
658
733
  return inputTxHashes.includes(utxo.tx_hash);
659
- });
734
+ }));
660
735
  }
661
736
  else if (utxos) {
662
737
  inputs = utxos;
663
738
  }
664
739
  else {
665
- inputs = currentWallet.utxos;
740
+ inputs = this.removeBlackListedUtxos(currentWallet.utxos);
666
741
  }
667
742
  if (!inputs.length) {
668
743
  if (transaction.inputs.length > 0) {
@@ -747,12 +822,85 @@ class Transaction {
747
822
  }
748
823
  const blacklistedUtxos = this._wallet.data.blacklistedUtxos;
749
824
  return utxos.filter((utxo) => {
750
- return !blacklistedUtxos.find((blacklistedUtxo) => utxo.address === blacklistedUtxo.address &&
751
- utxo.height === blacklistedUtxo.height &&
752
- utxo.tx_hash === blacklistedUtxo.tx_hash &&
825
+ return !blacklistedUtxos.find((blacklistedUtxo) => utxo.tx_hash === blacklistedUtxo.tx_hash &&
753
826
  utxo.tx_pos === blacklistedUtxo.tx_pos);
754
827
  });
755
828
  }
829
+ applyMultisigInputWeights(param) {
830
+ const info = this._wallet?.multisigInfo;
831
+ if (!info)
832
+ return param;
833
+ const record = param;
834
+ const count = record.P2WSH ?? record.p2wsh ?? 0;
835
+ if (count > 0) {
836
+ delete record.P2WSH;
837
+ delete record.p2wsh;
838
+ record[`MULTISIG-P2WSH:${info.threshold}-${info.totalCosigners}`] = count;
839
+ }
840
+ return param;
841
+ }
842
+ addSignerMetadata({ psbt, inputs }) {
843
+ try {
844
+ if (this._wallet.isMultisig) {
845
+ inputs.forEach((input, index) => {
846
+ if (!input.path)
847
+ return;
848
+ const paymentRes = this._wallet.getMultisigPayment(input.path);
849
+ if (paymentRes.isErr())
850
+ throw paymentRes.error;
851
+ psbt.updateInput(index, {
852
+ bip32Derivation: paymentRes.value.derivations
853
+ });
854
+ });
855
+ return (0, utils_1.ok)('Signer metadata added.');
856
+ }
857
+ const masterFingerprint = this._wallet.getMasterFingerprint();
858
+ inputs.forEach((input, index) => {
859
+ if (!input.path)
860
+ return;
861
+ let pubkey;
862
+ if (input.publicKey) {
863
+ pubkey = Buffer.from(input.publicKey, 'hex');
864
+ }
865
+ else if (input.keyPair) {
866
+ pubkey = input.keyPair.publicKey;
867
+ }
868
+ else {
869
+ const publicNodeRes = this._wallet.derivePublicNode(input.path);
870
+ if (publicNodeRes.isErr())
871
+ throw publicNodeRes.error;
872
+ pubkey = publicNodeRes.value.publicKey;
873
+ }
874
+ if ((0, utils_1.isP2trPrefix)(input.address)) {
875
+ psbt.updateInput(index, {
876
+ tapBip32Derivation: [
877
+ {
878
+ masterFingerprint,
879
+ path: input.path,
880
+ pubkey: (0, bip371_1.toXOnly)(pubkey),
881
+ leafHashes: []
882
+ }
883
+ ]
884
+ });
885
+ }
886
+ else {
887
+ psbt.updateInput(index, {
888
+ bip32Derivation: [
889
+ {
890
+ masterFingerprint,
891
+ path: input.path,
892
+ pubkey
893
+ }
894
+ ]
895
+ });
896
+ }
897
+ });
898
+ return (0, utils_1.ok)('Signer metadata added.');
899
+ }
900
+ catch (e) {
901
+ return (0, utils_1.err)(e);
902
+ }
903
+ }
756
904
  addExternalInputs({ inputs, keyPair }) {
757
905
  if (!inputs || !inputs.length)
758
906
  return (0, utils_1.err)('No inputs provided.');
@@ -1062,7 +1210,7 @@ class Transaction {
1062
1210
  addressTypes.outputs[type] = 1;
1063
1211
  }
1064
1212
  });
1065
- let baseFee = (0, utils_3.getByteCount)(addressTypes.inputs, addressTypes.outputs, message);
1213
+ let baseFee = (0, utils_3.getByteCount)(this.applyMultisigInputWeights(addressTypes.inputs), addressTypes.outputs, message);
1066
1214
  if (satsPerByte < 2) {
1067
1215
  const minByteCount = constants_1.TRANSACTION_DEFAULTS.recommendedBaseFee;
1068
1216
  if (baseFee < minByteCount)