@scure/btc-signer 1.2.2 → 1.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 (60) hide show
  1. package/README.md +19 -3
  2. package/lib/_type_test.d.ts +2 -0
  3. package/lib/_type_test.d.ts.map +1 -0
  4. package/lib/_type_test.js +59 -0
  5. package/lib/_type_test.js.map +1 -0
  6. package/lib/esm/_type_test.js +57 -0
  7. package/lib/esm/_type_test.js.map +1 -0
  8. package/lib/esm/index.js +13 -3007
  9. package/lib/esm/index.js.map +1 -1
  10. package/lib/esm/payment.js +681 -0
  11. package/lib/esm/payment.js.map +1 -0
  12. package/lib/esm/psbt.js +441 -0
  13. package/lib/esm/psbt.js.map +1 -0
  14. package/lib/esm/script.js +347 -0
  15. package/lib/esm/script.js.map +1 -0
  16. package/lib/esm/transaction.js +1013 -0
  17. package/lib/esm/transaction.js.map +1 -0
  18. package/lib/esm/utils.js +115 -0
  19. package/lib/esm/utils.js.map +1 -0
  20. package/lib/esm/utxo.js +491 -0
  21. package/lib/esm/utxo.js.map +1 -0
  22. package/lib/index.d.ts +18 -1439
  23. package/lib/index.d.ts.map +1 -1
  24. package/lib/index.js +53 -3042
  25. package/lib/index.js.map +1 -0
  26. package/lib/payment.d.ts +167 -0
  27. package/lib/payment.d.ts.map +1 -0
  28. package/lib/payment.js +704 -0
  29. package/lib/payment.js.map +1 -0
  30. package/lib/psbt.d.ts +834 -0
  31. package/lib/psbt.d.ts.map +1 -0
  32. package/lib/psbt.js +446 -0
  33. package/lib/psbt.js.map +1 -0
  34. package/lib/script.d.ts +154 -0
  35. package/lib/script.d.ts.map +1 -0
  36. package/lib/script.js +353 -0
  37. package/lib/script.js.map +1 -0
  38. package/lib/transaction.d.ts +223 -0
  39. package/lib/transaction.d.ts.map +1 -0
  40. package/lib/transaction.js +1022 -0
  41. package/lib/transaction.js.map +1 -0
  42. package/lib/utils.d.ts +30 -0
  43. package/lib/utils.d.ts.map +1 -0
  44. package/lib/utils.js +128 -0
  45. package/lib/utils.js.map +1 -0
  46. package/lib/utxo.d.ts +251 -0
  47. package/lib/utxo.d.ts.map +1 -0
  48. package/lib/utxo.js +501 -0
  49. package/lib/utxo.js.map +1 -0
  50. package/package.json +40 -10
  51. package/src/_type_test.ts +69 -0
  52. package/src/index.ts +28 -0
  53. package/src/package.json +3 -0
  54. package/src/payment.ts +749 -0
  55. package/src/psbt.ts +512 -0
  56. package/src/script.ts +236 -0
  57. package/src/transaction.ts +1065 -0
  58. package/src/utils.ts +118 -0
  59. package/src/utxo.ts +517 -0
  60. package/index.ts +0 -3067
package/lib/script.js ADDED
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawTx = exports.RawOutput = exports.RawInput = exports.BTCArray = exports.RawWitness = exports.VarBytes = exports.CompactSizeLen = exports.CompactSize = exports.Script = exports.OpToNum = exports.ScriptNum = exports.OP = exports.MAX_SCRIPT_BYTE_LENGTH = void 0;
4
+ const P = require("micro-packed");
5
+ exports.MAX_SCRIPT_BYTE_LENGTH = 520;
6
+ // prettier-ignore
7
+ var OP;
8
+ (function (OP) {
9
+ OP[OP["OP_0"] = 0] = "OP_0";
10
+ OP[OP["PUSHDATA1"] = 76] = "PUSHDATA1";
11
+ OP[OP["PUSHDATA2"] = 77] = "PUSHDATA2";
12
+ OP[OP["PUSHDATA4"] = 78] = "PUSHDATA4";
13
+ OP[OP["1NEGATE"] = 79] = "1NEGATE";
14
+ OP[OP["RESERVED"] = 80] = "RESERVED";
15
+ OP[OP["OP_1"] = 81] = "OP_1";
16
+ OP[OP["OP_2"] = 82] = "OP_2";
17
+ OP[OP["OP_3"] = 83] = "OP_3";
18
+ OP[OP["OP_4"] = 84] = "OP_4";
19
+ OP[OP["OP_5"] = 85] = "OP_5";
20
+ OP[OP["OP_6"] = 86] = "OP_6";
21
+ OP[OP["OP_7"] = 87] = "OP_7";
22
+ OP[OP["OP_8"] = 88] = "OP_8";
23
+ OP[OP["OP_9"] = 89] = "OP_9";
24
+ OP[OP["OP_10"] = 90] = "OP_10";
25
+ OP[OP["OP_11"] = 91] = "OP_11";
26
+ OP[OP["OP_12"] = 92] = "OP_12";
27
+ OP[OP["OP_13"] = 93] = "OP_13";
28
+ OP[OP["OP_14"] = 94] = "OP_14";
29
+ OP[OP["OP_15"] = 95] = "OP_15";
30
+ OP[OP["OP_16"] = 96] = "OP_16";
31
+ // Control
32
+ OP[OP["NOP"] = 97] = "NOP";
33
+ OP[OP["VER"] = 98] = "VER";
34
+ OP[OP["IF"] = 99] = "IF";
35
+ OP[OP["NOTIF"] = 100] = "NOTIF";
36
+ OP[OP["VERIF"] = 101] = "VERIF";
37
+ OP[OP["VERNOTIF"] = 102] = "VERNOTIF";
38
+ OP[OP["ELSE"] = 103] = "ELSE";
39
+ OP[OP["ENDIF"] = 104] = "ENDIF";
40
+ OP[OP["VERIFY"] = 105] = "VERIFY";
41
+ OP[OP["RETURN"] = 106] = "RETURN";
42
+ // Stack
43
+ OP[OP["TOALTSTACK"] = 107] = "TOALTSTACK";
44
+ OP[OP["FROMALTSTACK"] = 108] = "FROMALTSTACK";
45
+ OP[OP["2DROP"] = 109] = "2DROP";
46
+ OP[OP["2DUP"] = 110] = "2DUP";
47
+ OP[OP["3DUP"] = 111] = "3DUP";
48
+ OP[OP["2OVER"] = 112] = "2OVER";
49
+ OP[OP["2ROT"] = 113] = "2ROT";
50
+ OP[OP["2SWAP"] = 114] = "2SWAP";
51
+ OP[OP["IFDUP"] = 115] = "IFDUP";
52
+ OP[OP["DEPTH"] = 116] = "DEPTH";
53
+ OP[OP["DROP"] = 117] = "DROP";
54
+ OP[OP["DUP"] = 118] = "DUP";
55
+ OP[OP["NIP"] = 119] = "NIP";
56
+ OP[OP["OVER"] = 120] = "OVER";
57
+ OP[OP["PICK"] = 121] = "PICK";
58
+ OP[OP["ROLL"] = 122] = "ROLL";
59
+ OP[OP["ROT"] = 123] = "ROT";
60
+ OP[OP["SWAP"] = 124] = "SWAP";
61
+ OP[OP["TUCK"] = 125] = "TUCK";
62
+ // Splice
63
+ OP[OP["CAT"] = 126] = "CAT";
64
+ OP[OP["SUBSTR"] = 127] = "SUBSTR";
65
+ OP[OP["LEFT"] = 128] = "LEFT";
66
+ OP[OP["RIGHT"] = 129] = "RIGHT";
67
+ OP[OP["SIZE"] = 130] = "SIZE";
68
+ // Boolean logic
69
+ OP[OP["INVERT"] = 131] = "INVERT";
70
+ OP[OP["AND"] = 132] = "AND";
71
+ OP[OP["OR"] = 133] = "OR";
72
+ OP[OP["XOR"] = 134] = "XOR";
73
+ OP[OP["EQUAL"] = 135] = "EQUAL";
74
+ OP[OP["EQUALVERIFY"] = 136] = "EQUALVERIFY";
75
+ OP[OP["RESERVED1"] = 137] = "RESERVED1";
76
+ OP[OP["RESERVED2"] = 138] = "RESERVED2";
77
+ // Numbers
78
+ OP[OP["1ADD"] = 139] = "1ADD";
79
+ OP[OP["1SUB"] = 140] = "1SUB";
80
+ OP[OP["2MUL"] = 141] = "2MUL";
81
+ OP[OP["2DIV"] = 142] = "2DIV";
82
+ OP[OP["NEGATE"] = 143] = "NEGATE";
83
+ OP[OP["ABS"] = 144] = "ABS";
84
+ OP[OP["NOT"] = 145] = "NOT";
85
+ OP[OP["0NOTEQUAL"] = 146] = "0NOTEQUAL";
86
+ OP[OP["ADD"] = 147] = "ADD";
87
+ OP[OP["SUB"] = 148] = "SUB";
88
+ OP[OP["MUL"] = 149] = "MUL";
89
+ OP[OP["DIV"] = 150] = "DIV";
90
+ OP[OP["MOD"] = 151] = "MOD";
91
+ OP[OP["LSHIFT"] = 152] = "LSHIFT";
92
+ OP[OP["RSHIFT"] = 153] = "RSHIFT";
93
+ OP[OP["BOOLAND"] = 154] = "BOOLAND";
94
+ OP[OP["BOOLOR"] = 155] = "BOOLOR";
95
+ OP[OP["NUMEQUAL"] = 156] = "NUMEQUAL";
96
+ OP[OP["NUMEQUALVERIFY"] = 157] = "NUMEQUALVERIFY";
97
+ OP[OP["NUMNOTEQUAL"] = 158] = "NUMNOTEQUAL";
98
+ OP[OP["LESSTHAN"] = 159] = "LESSTHAN";
99
+ OP[OP["GREATERTHAN"] = 160] = "GREATERTHAN";
100
+ OP[OP["LESSTHANOREQUAL"] = 161] = "LESSTHANOREQUAL";
101
+ OP[OP["GREATERTHANOREQUAL"] = 162] = "GREATERTHANOREQUAL";
102
+ OP[OP["MIN"] = 163] = "MIN";
103
+ OP[OP["MAX"] = 164] = "MAX";
104
+ OP[OP["WITHIN"] = 165] = "WITHIN";
105
+ // Crypto
106
+ OP[OP["RIPEMD160"] = 166] = "RIPEMD160";
107
+ OP[OP["SHA1"] = 167] = "SHA1";
108
+ OP[OP["SHA256"] = 168] = "SHA256";
109
+ OP[OP["HASH160"] = 169] = "HASH160";
110
+ OP[OP["HASH256"] = 170] = "HASH256";
111
+ OP[OP["CODESEPARATOR"] = 171] = "CODESEPARATOR";
112
+ OP[OP["CHECKSIG"] = 172] = "CHECKSIG";
113
+ OP[OP["CHECKSIGVERIFY"] = 173] = "CHECKSIGVERIFY";
114
+ OP[OP["CHECKMULTISIG"] = 174] = "CHECKMULTISIG";
115
+ OP[OP["CHECKMULTISIGVERIFY"] = 175] = "CHECKMULTISIGVERIFY";
116
+ // Expansion
117
+ OP[OP["NOP1"] = 176] = "NOP1";
118
+ OP[OP["CHECKLOCKTIMEVERIFY"] = 177] = "CHECKLOCKTIMEVERIFY";
119
+ OP[OP["CHECKSEQUENCEVERIFY"] = 178] = "CHECKSEQUENCEVERIFY";
120
+ OP[OP["NOP4"] = 179] = "NOP4";
121
+ OP[OP["NOP5"] = 180] = "NOP5";
122
+ OP[OP["NOP6"] = 181] = "NOP6";
123
+ OP[OP["NOP7"] = 182] = "NOP7";
124
+ OP[OP["NOP8"] = 183] = "NOP8";
125
+ OP[OP["NOP9"] = 184] = "NOP9";
126
+ OP[OP["NOP10"] = 185] = "NOP10";
127
+ // BIP 342
128
+ OP[OP["CHECKSIGADD"] = 186] = "CHECKSIGADD";
129
+ // Invalid
130
+ OP[OP["INVALID"] = 255] = "INVALID";
131
+ })(OP || (exports.OP = OP = {}));
132
+ // We can encode almost any number as ScriptNum, however, parsing will be a problem
133
+ // since we can't know if buffer is a number or something else.
134
+ function ScriptNum(bytesLimit = 6, forceMinimal = false) {
135
+ return P.wrap({
136
+ encodeStream: (w, value) => {
137
+ if (value === 0n)
138
+ return;
139
+ const neg = value < 0;
140
+ const val = BigInt(value);
141
+ const nums = [];
142
+ for (let abs = neg ? -val : val; abs; abs >>= 8n)
143
+ nums.push(Number(abs & 0xffn));
144
+ if (nums[nums.length - 1] >= 0x80)
145
+ nums.push(neg ? 0x80 : 0);
146
+ else if (neg)
147
+ nums[nums.length - 1] |= 0x80;
148
+ w.bytes(new Uint8Array(nums));
149
+ },
150
+ decodeStream: (r) => {
151
+ const len = r.leftBytes;
152
+ if (len > bytesLimit)
153
+ throw new Error(`ScriptNum: number (${len}) bigger than limit=${bytesLimit}`);
154
+ if (len === 0)
155
+ return 0n;
156
+ if (forceMinimal) {
157
+ // MSB is zero (without sign bit) -> not minimally encoded
158
+ if ((r.data[len - 1] & 0x7f) === 0) {
159
+ // exception
160
+ if (len <= 1 || (r.data[len - 2] & 0x80) === 0)
161
+ throw new Error('Non-minimally encoded ScriptNum');
162
+ }
163
+ }
164
+ let last = 0;
165
+ let res = 0n;
166
+ for (let i = 0; i < len; ++i) {
167
+ last = r.byte();
168
+ res |= BigInt(last) << (8n * BigInt(i));
169
+ }
170
+ if (last >= 0x80) {
171
+ res &= (2n ** BigInt(len * 8) - 1n) >> 1n;
172
+ res = -res;
173
+ }
174
+ return res;
175
+ },
176
+ });
177
+ }
178
+ exports.ScriptNum = ScriptNum;
179
+ function OpToNum(op, bytesLimit = 4, forceMinimal = true) {
180
+ if (typeof op === 'number')
181
+ return op;
182
+ if (P.isBytes(op)) {
183
+ try {
184
+ const val = ScriptNum(bytesLimit, forceMinimal).decode(op);
185
+ if (val > Number.MAX_SAFE_INTEGER)
186
+ return;
187
+ return Number(val);
188
+ }
189
+ catch (e) {
190
+ return;
191
+ }
192
+ }
193
+ return;
194
+ }
195
+ exports.OpToNum = OpToNum;
196
+ // Converts script bytes to parsed script
197
+ // 5221030000000000000000000000000000000000000000000000000000000000000001210300000000000000000000000000000000000000000000000000000000000000022103000000000000000000000000000000000000000000000000000000000000000353ae
198
+ // =>
199
+ // OP_2
200
+ // 030000000000000000000000000000000000000000000000000000000000000001
201
+ // 030000000000000000000000000000000000000000000000000000000000000002
202
+ // 030000000000000000000000000000000000000000000000000000000000000003
203
+ // OP_3
204
+ // CHECKMULTISIG
205
+ exports.Script = P.wrap({
206
+ encodeStream: (w, value) => {
207
+ for (let o of value) {
208
+ if (typeof o === 'string') {
209
+ if (OP[o] === undefined)
210
+ throw new Error(`Unknown opcode=${o}`);
211
+ w.byte(OP[o]);
212
+ continue;
213
+ }
214
+ else if (typeof o === 'number') {
215
+ if (o === 0x00) {
216
+ w.byte(0x00);
217
+ continue;
218
+ }
219
+ else if (1 <= o && o <= 16) {
220
+ w.byte(OP.OP_1 - 1 + o);
221
+ continue;
222
+ }
223
+ }
224
+ // Encode big numbers
225
+ if (typeof o === 'number')
226
+ o = ScriptNum().encode(BigInt(o));
227
+ if (!P.isBytes(o))
228
+ throw new Error(`Wrong Script OP=${o} (${typeof o})`);
229
+ // Bytes
230
+ const len = o.length;
231
+ if (len < OP.PUSHDATA1)
232
+ w.byte(len);
233
+ else if (len <= 0xff) {
234
+ w.byte(OP.PUSHDATA1);
235
+ w.byte(len);
236
+ }
237
+ else if (len <= 0xffff) {
238
+ w.byte(OP.PUSHDATA2);
239
+ w.bytes(P.U16LE.encode(len));
240
+ }
241
+ else {
242
+ w.byte(OP.PUSHDATA4);
243
+ w.bytes(P.U32LE.encode(len));
244
+ }
245
+ w.bytes(o);
246
+ }
247
+ },
248
+ decodeStream: (r) => {
249
+ const out = [];
250
+ while (!r.isEnd()) {
251
+ const cur = r.byte();
252
+ // if 0 < cur < 78
253
+ if (OP.OP_0 < cur && cur <= OP.PUSHDATA4) {
254
+ let len;
255
+ if (cur < OP.PUSHDATA1)
256
+ len = cur;
257
+ else if (cur === OP.PUSHDATA1)
258
+ len = P.U8.decodeStream(r);
259
+ else if (cur === OP.PUSHDATA2)
260
+ len = P.U16LE.decodeStream(r);
261
+ else if (cur === OP.PUSHDATA4)
262
+ len = P.U32LE.decodeStream(r);
263
+ else
264
+ throw new Error('Should be not possible');
265
+ out.push(r.bytes(len));
266
+ }
267
+ else if (cur === 0x00) {
268
+ out.push(0);
269
+ }
270
+ else if (OP.OP_1 <= cur && cur <= OP.OP_16) {
271
+ out.push(cur - (OP.OP_1 - 1));
272
+ }
273
+ else {
274
+ const op = OP[cur];
275
+ if (op === undefined)
276
+ throw new Error(`Unknown opcode=${cur.toString(16)}`);
277
+ out.push(op);
278
+ }
279
+ }
280
+ return out;
281
+ },
282
+ });
283
+ // BTC specific variable length integer encoding
284
+ // https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer
285
+ const CSLimits = {
286
+ 0xfd: [0xfd, 2, 253n, 65535n],
287
+ 0xfe: [0xfe, 4, 65536n, 4294967295n],
288
+ 0xff: [0xff, 8, 4294967296n, 18446744073709551615n],
289
+ };
290
+ exports.CompactSize = P.wrap({
291
+ encodeStream: (w, value) => {
292
+ if (typeof value === 'number')
293
+ value = BigInt(value);
294
+ if (0n <= value && value <= 252n)
295
+ return w.byte(Number(value));
296
+ for (const [flag, bytes, start, stop] of Object.values(CSLimits)) {
297
+ if (start > value || value > stop)
298
+ continue;
299
+ w.byte(flag);
300
+ for (let i = 0; i < bytes; i++)
301
+ w.byte(Number((value >> (8n * BigInt(i))) & 0xffn));
302
+ return;
303
+ }
304
+ throw w.err(`VarInt too big: ${value}`);
305
+ },
306
+ decodeStream: (r) => {
307
+ const b0 = r.byte();
308
+ if (b0 <= 0xfc)
309
+ return BigInt(b0);
310
+ const [_, bytes, start] = CSLimits[b0];
311
+ let num = 0n;
312
+ for (let i = 0; i < bytes; i++)
313
+ num |= BigInt(r.byte()) << (8n * BigInt(i));
314
+ if (num < start)
315
+ throw r.err(`Wrong CompactSize(${8 * bytes})`);
316
+ return num;
317
+ },
318
+ });
319
+ // Same thing, but in number instead of bigint. Checks for safe integer inside
320
+ exports.CompactSizeLen = P.apply(exports.CompactSize, P.coders.number);
321
+ // ui8a of size <CompactSize>
322
+ exports.VarBytes = P.bytes(exports.CompactSize);
323
+ // SegWit v0 stack of witness buffers
324
+ exports.RawWitness = P.array(exports.CompactSizeLen, exports.VarBytes);
325
+ // Array of size <CompactSize>
326
+ const BTCArray = (t) => P.array(exports.CompactSize, t);
327
+ exports.BTCArray = BTCArray;
328
+ exports.RawInput = P.struct({
329
+ txid: P.bytes(32, true), // hash(prev_tx),
330
+ index: P.U32LE, // output number of previous tx
331
+ finalScriptSig: exports.VarBytes, // btc merges input and output script, executes it. If ok = tx passes
332
+ sequence: P.U32LE, // ?
333
+ });
334
+ exports.RawOutput = P.struct({ amount: P.U64LE, script: exports.VarBytes });
335
+ // https://en.bitcoin.it/wiki/Protocol_documentation#tx
336
+ const _RawTx = P.struct({
337
+ version: P.I32LE,
338
+ segwitFlag: P.flag(new Uint8Array([0x00, 0x01])),
339
+ inputs: (0, exports.BTCArray)(exports.RawInput),
340
+ outputs: (0, exports.BTCArray)(exports.RawOutput),
341
+ witnesses: P.flagged('segwitFlag', P.array('inputs/length', exports.RawWitness)),
342
+ // < 500000000 Block number at which this transaction is unlocked
343
+ // >= 500000000 UNIX timestamp at which this transaction is unlocked
344
+ // Handled as part of PSBTv2
345
+ lockTime: P.U32LE,
346
+ });
347
+ function validateRawTx(tx) {
348
+ if (tx.segwitFlag && tx.witnesses && !tx.witnesses.length)
349
+ throw new Error('Segwit flag with empty witnesses array');
350
+ return tx;
351
+ }
352
+ exports.RawTx = P.validate(_RawTx, validateRawTx);
353
+ //# sourceMappingURL=script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import * as P from 'micro-packed';
2
+ import { CustomScript } from './payment.js';
3
+ import * as psbt from './psbt.js';
4
+ import { Bytes } from './utils.js';
5
+ interface HDKey {
6
+ publicKey: Bytes;
7
+ privateKey: Bytes;
8
+ fingerprint: number;
9
+ derive(path: string): HDKey;
10
+ deriveChild(index: number): HDKey;
11
+ sign(hash: Bytes): Bytes;
12
+ }
13
+ export type Signer = Bytes | HDKey;
14
+ export declare const PRECISION = 8;
15
+ export declare const DEFAULT_VERSION = 2;
16
+ export declare const DEFAULT_LOCKTIME = 0;
17
+ export declare const DEFAULT_SEQUENCE = 4294967295;
18
+ export declare const Decimal: {
19
+ encode: (from: bigint) => string;
20
+ decode: (to: string) => bigint;
21
+ };
22
+ export declare const def: <T>(value: T | undefined, def: T) => T;
23
+ export declare function cloneDeep<T>(obj: T): T;
24
+ export type TxOpts = {
25
+ version?: number;
26
+ lockTime?: number;
27
+ PSBTVersion?: number;
28
+ /** @deprecated Use `allowUnknownOutputs` */
29
+ allowUnknowOutput?: boolean;
30
+ allowUnknownOutputs?: boolean;
31
+ /** @deprecated Use `allowUnknownInputs` */
32
+ allowUnknowInput?: boolean;
33
+ allowUnknownInputs?: boolean;
34
+ disableScriptCheck?: boolean;
35
+ bip174jsCompat?: boolean;
36
+ allowLegacyWitnessUtxo?: boolean;
37
+ lowR?: boolean;
38
+ customScripts?: CustomScript[];
39
+ };
40
+ /**
41
+ * Internal, exported only for backwards-compat. Use `SigHash` instead.
42
+ * @deprecated
43
+ */
44
+ export declare enum SignatureHash {
45
+ DEFAULT = 0,
46
+ ALL = 1,
47
+ NONE = 2,
48
+ SINGLE = 3,
49
+ ANYONECANPAY = 128
50
+ }
51
+ export declare enum SigHash {
52
+ DEFAULT = 0,
53
+ ALL = 1,
54
+ NONE = 2,
55
+ SINGLE = 3,
56
+ DEFAULT_ANYONECANPAY = 128,
57
+ ALL_ANYONECANPAY = 129,
58
+ NONE_ANYONECANPAY = 130,
59
+ SINGLE_ANYONECANPAY = 131
60
+ }
61
+ export type TransactionInputRequired = {
62
+ txid: Bytes;
63
+ index: number;
64
+ sequence: number;
65
+ finalScriptSig: Bytes;
66
+ };
67
+ export declare function inputBeforeSign(i: psbt.TransactionInput): TransactionInputRequired;
68
+ declare function validateOpts(opts: TxOpts): Readonly<{
69
+ version: number;
70
+ lockTime: number;
71
+ PSBTVersion: number;
72
+ /** @deprecated Use `allowUnknownOutputs` */
73
+ allowUnknowOutput?: boolean | undefined;
74
+ allowUnknownOutputs?: boolean | undefined;
75
+ /** @deprecated Use `allowUnknownInputs` */
76
+ allowUnknowInput?: boolean | undefined;
77
+ allowUnknownInputs?: boolean | undefined;
78
+ disableScriptCheck?: boolean | undefined;
79
+ bip174jsCompat?: boolean | undefined;
80
+ allowLegacyWitnessUtxo?: boolean | undefined;
81
+ lowR?: boolean | undefined;
82
+ customScripts?: CustomScript[] | undefined;
83
+ }>;
84
+ export declare class Transaction {
85
+ private global;
86
+ private inputs;
87
+ private outputs;
88
+ readonly opts: ReturnType<typeof validateOpts>;
89
+ constructor(opts?: TxOpts);
90
+ static fromRaw(raw: Bytes, opts?: TxOpts): Transaction;
91
+ static fromPSBT(psbt_: Bytes, opts?: TxOpts): Transaction;
92
+ toPSBT(PSBTVersion?: number): Uint8Array;
93
+ get lockTime(): number;
94
+ get version(): number;
95
+ private inputStatus;
96
+ private inputSighash;
97
+ private signStatus;
98
+ get isFinal(): boolean;
99
+ get hasWitnesses(): boolean;
100
+ get weight(): number;
101
+ get vsize(): number;
102
+ toBytes(withScriptSig?: boolean, withWitness?: boolean): Uint8Array;
103
+ get unsignedTx(): Bytes;
104
+ get hex(): string;
105
+ get hash(): string;
106
+ get id(): string;
107
+ private checkInputIdx;
108
+ getInput(idx: number): psbt.PSBTKeyMapKeys<{
109
+ readonly nonWitnessUtxo: readonly [0, false, P.CoderType<P.StructInput<{
110
+ version: number;
111
+ segwitFlag: boolean;
112
+ inputs: P.StructInput<{
113
+ txid: any;
114
+ index: any;
115
+ finalScriptSig: any;
116
+ sequence: any;
117
+ }>[];
118
+ outputs: P.StructInput<{
119
+ amount: any;
120
+ script: any;
121
+ }>[];
122
+ witnesses: P.Option<Uint8Array[][]>;
123
+ lockTime: number;
124
+ }>>, readonly [], readonly [0, 2], false];
125
+ readonly witnessUtxo: readonly [1, false, P.CoderType<P.StructInput<{
126
+ amount: bigint;
127
+ script: Uint8Array;
128
+ }>>, readonly [], readonly [0, 2], false];
129
+ readonly partialSig: readonly [2, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
130
+ readonly sighashType: readonly [3, false, P.CoderType<number>, readonly [], readonly [0, 2], false];
131
+ readonly redeemScript: readonly [4, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
132
+ readonly witnessScript: readonly [5, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
133
+ readonly bip32Derivation: readonly [6, P.CoderType<Uint8Array>, P.CoderType<P.StructInput<{
134
+ fingerprint: number;
135
+ path: number[];
136
+ }>>, readonly [], readonly [0, 2], false];
137
+ readonly finalScriptSig: readonly [7, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
138
+ readonly finalScriptWitness: readonly [8, false, P.CoderType<Uint8Array[]>, readonly [], readonly [0, 2], false];
139
+ readonly porCommitment: readonly [9, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
140
+ readonly ripemd160: readonly [10, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
141
+ readonly sha256: readonly [11, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
142
+ readonly hash160: readonly [12, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
143
+ readonly hash256: readonly [13, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
144
+ readonly txid: readonly [14, false, P.CoderType<Uint8Array>, readonly [2], readonly [2], true];
145
+ readonly index: readonly [15, false, P.CoderType<number>, readonly [2], readonly [2], true];
146
+ readonly sequence: readonly [16, false, P.CoderType<number>, readonly [], readonly [2], true];
147
+ readonly requiredTimeLocktime: readonly [17, false, P.CoderType<number>, readonly [], readonly [2], false];
148
+ readonly requiredHeightLocktime: readonly [18, false, P.CoderType<number>, readonly [], readonly [2], false];
149
+ readonly tapKeySig: readonly [19, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
150
+ readonly tapScriptSig: readonly [20, P.CoderType<P.StructInput<{
151
+ pubKey: Uint8Array;
152
+ leafHash: Uint8Array;
153
+ }>>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
154
+ readonly tapLeafScript: readonly [21, P.CoderType<P.StructInput<{
155
+ version: number;
156
+ internalKey: Uint8Array;
157
+ merklePath: Uint8Array[];
158
+ }>>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
159
+ readonly tapBip32Derivation: readonly [22, P.CoderType<Uint8Array>, P.CoderType<P.StructInput<{
160
+ hashes: Uint8Array[];
161
+ der: P.StructInput<{
162
+ fingerprint: any;
163
+ path: any;
164
+ }>;
165
+ }>>, readonly [], readonly [0, 2], false];
166
+ readonly tapInternalKey: readonly [23, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
167
+ readonly tapMerkleRoot: readonly [24, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
168
+ readonly proprietary: readonly [252, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
169
+ }>;
170
+ get inputsLength(): number;
171
+ addInput(input: psbt.TransactionInputUpdate, _ignoreSignStatus?: boolean): number;
172
+ updateInput(idx: number, input: psbt.TransactionInputUpdate, _ignoreSignStatus?: boolean): void;
173
+ private checkOutputIdx;
174
+ getOutput(idx: number): psbt.PSBTKeyMapKeys<{
175
+ readonly redeemScript: readonly [0, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
176
+ readonly witnessScript: readonly [1, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
177
+ readonly bip32Derivation: readonly [2, P.CoderType<Uint8Array>, P.CoderType<P.StructInput<{
178
+ fingerprint: number;
179
+ path: number[];
180
+ }>>, readonly [], readonly [0, 2], false];
181
+ readonly amount: readonly [3, false, P.CoderType<bigint>, readonly [2], readonly [2], true];
182
+ readonly script: readonly [4, false, P.CoderType<Uint8Array>, readonly [2], readonly [2], true];
183
+ readonly tapInternalKey: readonly [5, false, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
184
+ readonly tapTree: readonly [6, false, P.CoderType<P.StructInput<{
185
+ depth: number;
186
+ version: number;
187
+ script: Uint8Array;
188
+ }>[]>, readonly [], readonly [0, 2], false];
189
+ readonly tapBip32Derivation: readonly [7, P.CoderType<Uint8Array>, P.CoderType<P.StructInput<{
190
+ hashes: Uint8Array[];
191
+ der: P.StructInput<{
192
+ fingerprint: any;
193
+ path: any;
194
+ }>;
195
+ }>>, readonly [], readonly [0, 2], false];
196
+ readonly proprietary: readonly [252, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
197
+ }>;
198
+ get outputsLength(): number;
199
+ private normalizeOutput;
200
+ addOutput(o: psbt.TransactionOutputUpdate, _ignoreSignStatus?: boolean): number;
201
+ updateOutput(idx: number, output: psbt.TransactionOutputUpdate, _ignoreSignStatus?: boolean): void;
202
+ addOutputAddress(address: string, amount: bigint, network?: {
203
+ bech32: string;
204
+ pubKeyHash: number;
205
+ scriptHash: number;
206
+ wif: number;
207
+ }): number;
208
+ get fee(): bigint;
209
+ private preimageLegacy;
210
+ preimageWitnessV0(idx: number, prevOutScript: Bytes, hashType: number, amount: bigint): Uint8Array;
211
+ preimageWitnessV1(idx: number, prevOutScript: Bytes[], hashType: number, amount: bigint[], codeSeparator?: number, leafScript?: Bytes, leafVer?: number, annex?: Bytes): Uint8Array;
212
+ signIdx(privateKey: Signer, idx: number, allowedSighash?: SigHash[], _auxRand?: Bytes): boolean;
213
+ sign(privateKey: Signer, allowedSighash?: number[], _auxRand?: Bytes): number;
214
+ finalizeIdx(idx: number): void;
215
+ finalize(): void;
216
+ extract(): Uint8Array;
217
+ combine(other: Transaction): this;
218
+ clone(): Transaction;
219
+ }
220
+ export declare function PSBTCombine(psbts: Bytes[]): Bytes;
221
+ export declare function bip32Path(path: string): number[];
222
+ export {};
223
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}