@bitgo-beta/abstract-lightning 1.0.0-alpha.31 → 1.0.0-alpha.310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/abstractLightningCoin.d.ts +3 -2
- package/dist/src/abstractLightningCoin.d.ts.map +1 -1
- package/dist/src/abstractLightningCoin.js +7 -2
- package/dist/src/codecs/api/backup.d.ts +15 -0
- package/dist/src/codecs/api/backup.d.ts.map +1 -0
- package/dist/src/codecs/api/backup.js +47 -0
- package/dist/src/codecs/api/balance.d.ts +156 -0
- package/dist/src/codecs/api/balance.d.ts.map +1 -0
- package/dist/src/codecs/api/balance.js +107 -0
- package/dist/src/codecs/api/index.d.ts +8 -0
- package/dist/src/codecs/api/index.d.ts.map +1 -0
- package/dist/src/codecs/api/index.js +24 -0
- package/dist/src/codecs/api/invoice.d.ts +66 -0
- package/dist/src/codecs/api/invoice.d.ts.map +1 -0
- package/dist/src/codecs/api/invoice.js +102 -0
- package/dist/src/codecs/api/payment.d.ts +107 -0
- package/dist/src/codecs/api/payment.d.ts.map +1 -0
- package/dist/src/codecs/api/payment.js +153 -0
- package/dist/src/codecs/api/transaction.d.ts +138 -0
- package/dist/src/codecs/api/transaction.d.ts.map +1 -0
- package/dist/src/codecs/api/transaction.js +122 -0
- package/dist/src/codecs/api/wallet.d.ts +99 -0
- package/dist/src/codecs/api/wallet.d.ts.map +1 -0
- package/dist/src/codecs/api/wallet.js +103 -0
- package/dist/src/codecs/api/withdraw.d.ts +92 -0
- package/dist/src/codecs/api/withdraw.d.ts.map +1 -0
- package/dist/src/codecs/api/withdraw.js +92 -0
- package/dist/src/codecs/index.d.ts +3 -0
- package/dist/src/codecs/index.d.ts.map +1 -0
- package/dist/src/codecs/index.js +19 -0
- package/dist/src/codecs/shared.d.ts +7 -0
- package/dist/src/codecs/shared.d.ts.map +1 -0
- package/dist/src/codecs/shared.js +42 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/lightning/index.d.ts +5 -0
- package/dist/src/lightning/index.d.ts.map +1 -0
- package/dist/src/lightning/index.js +21 -0
- package/dist/src/lightning/lightningUtils.d.ts +90 -0
- package/dist/src/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/src/lightning/lightningUtils.js +290 -0
- package/dist/src/lightning/parseWithdrawPsbt.d.ts +11 -0
- package/dist/src/lightning/parseWithdrawPsbt.d.ts.map +1 -0
- package/dist/src/lightning/parseWithdrawPsbt.js +159 -0
- package/dist/src/lightning/signableJson.d.ts +17 -0
- package/dist/src/lightning/signableJson.d.ts.map +1 -0
- package/dist/src/lightning/signableJson.js +29 -0
- package/dist/src/lightning/signature.d.ts +22 -0
- package/dist/src/lightning/signature.d.ts.map +1 -0
- package/dist/src/lightning/signature.js +69 -0
- package/dist/src/wallet/custodialLightning.d.ts +7 -0
- package/dist/src/wallet/custodialLightning.d.ts.map +1 -0
- package/dist/src/wallet/custodialLightning.js +14 -0
- package/dist/src/wallet/index.d.ts +5 -0
- package/dist/src/wallet/index.d.ts.map +1 -0
- package/dist/src/wallet/index.js +21 -0
- package/dist/src/wallet/lightning.d.ts +141 -0
- package/dist/src/wallet/lightning.d.ts.map +1 -0
- package/dist/src/wallet/lightning.js +288 -0
- package/dist/src/wallet/selfCustodialLightning.d.ts +32 -0
- package/dist/src/wallet/selfCustodialLightning.d.ts.map +1 -0
- package/dist/src/wallet/selfCustodialLightning.js +131 -0
- package/dist/src/wallet/wallet.d.ts +7 -0
- package/dist/src/wallet/wallet.d.ts.map +1 -0
- package/dist/src/wallet/wallet.js +22 -0
- package/dist/test/unit/lightning/codecs.d.ts +2 -0
- package/dist/test/unit/lightning/codecs.d.ts.map +1 -0
- package/dist/test/unit/lightning/codecs.js +151 -0
- package/dist/test/unit/lightning/createPsbt.d.ts +27 -0
- package/dist/test/unit/lightning/createPsbt.d.ts.map +1 -0
- package/dist/test/unit/lightning/createPsbt.js +162 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts +4 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.d.ts.map +1 -0
- package/dist/test/unit/lightning/createWatchOnlyFixture.js +1561 -0
- package/dist/test/unit/lightning/lightningUtils.d.ts +2 -0
- package/dist/test/unit/lightning/lightningUtils.d.ts.map +1 -0
- package/dist/test/unit/lightning/lightningUtils.js +123 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts +2 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.d.ts.map +1 -0
- package/dist/test/unit/lightning/parseWithdrawPsbt.js +441 -0
- package/dist/test/unit/lightning/signableJson.d.ts +2 -0
- package/dist/test/unit/lightning/signableJson.d.ts.map +1 -0
- package/dist/test/unit/lightning/signableJson.js +52 -0
- package/dist/test/unit/lightning/signature.d.ts +2 -0
- package/dist/test/unit/lightning/signature.d.ts.map +1 -0
- package/dist/test/unit/lightning/signature.js +91 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +19 -6
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -40
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const E = __importStar(require("fp-ts/Either"));
|
|
41
|
+
const function_1 = require("fp-ts/function");
|
|
42
|
+
const codecs_1 = require("../../../src/codecs");
|
|
43
|
+
function describeCodec(c, valid, invalid) {
|
|
44
|
+
describe('Codec ' + c.name, function () {
|
|
45
|
+
it('parses valid inputs', function () {
|
|
46
|
+
valid.forEach((v) => {
|
|
47
|
+
assert_1.default.strictEqual(E.isRight(c.decode(v)), true);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
it('rejects invalid inputs', function () {
|
|
51
|
+
invalid.forEach((v) => {
|
|
52
|
+
assert_1.default.strictEqual(E.isRight(c.decode(v)), false);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
it('encode ∘ decode', function () {
|
|
56
|
+
valid.forEach((v) => {
|
|
57
|
+
const roundTripped = (0, function_1.pipe)(v, c.decode, E.map(c.encode));
|
|
58
|
+
assert_1.default.deepStrictEqual(roundTripped, E.right(v));
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
describe('Codecs', function () {
|
|
64
|
+
describeCodec(codecs_1.LightningKeychain, [
|
|
65
|
+
{
|
|
66
|
+
id: 'id',
|
|
67
|
+
pub: 'xpub',
|
|
68
|
+
encryptedPrv: 'encryptedPrv',
|
|
69
|
+
source: 'user',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 'id',
|
|
73
|
+
pub: 'xpub',
|
|
74
|
+
source: 'user',
|
|
75
|
+
},
|
|
76
|
+
], [
|
|
77
|
+
null,
|
|
78
|
+
'abg',
|
|
79
|
+
1,
|
|
80
|
+
{
|
|
81
|
+
id: 'id',
|
|
82
|
+
pub: 'xpub',
|
|
83
|
+
encryptedPrv: 'encryptedPrv',
|
|
84
|
+
source: 'backup',
|
|
85
|
+
},
|
|
86
|
+
]);
|
|
87
|
+
describeCodec(codecs_1.LightningAuthKeychain, [
|
|
88
|
+
{
|
|
89
|
+
id: 'id',
|
|
90
|
+
pub: 'xpub',
|
|
91
|
+
encryptedPrv: 'encryptedPrv',
|
|
92
|
+
source: 'user',
|
|
93
|
+
coinSpecific: {
|
|
94
|
+
lnbtc: {
|
|
95
|
+
purpose: 'userAuth',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 'id',
|
|
101
|
+
pub: 'xpub',
|
|
102
|
+
source: 'user',
|
|
103
|
+
coinSpecific: {
|
|
104
|
+
lnbtc: {
|
|
105
|
+
purpose: 'userAuth',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
], [
|
|
110
|
+
null,
|
|
111
|
+
'abg',
|
|
112
|
+
1,
|
|
113
|
+
{
|
|
114
|
+
id: 'id',
|
|
115
|
+
pub: 'xpub',
|
|
116
|
+
encryptedPrv: 'encryptedPrv',
|
|
117
|
+
source: 'user',
|
|
118
|
+
coinSpecific: {
|
|
119
|
+
lnbtc: {
|
|
120
|
+
purpose: 'dummy',
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'id',
|
|
126
|
+
pub: 'xpub',
|
|
127
|
+
encryptedPrv: 'encryptedPrv',
|
|
128
|
+
},
|
|
129
|
+
]);
|
|
130
|
+
describeCodec(codecs_1.UpdateLightningWalletClientRequest, [
|
|
131
|
+
{
|
|
132
|
+
signerAdminMacaroon: 'signerAdminMacaroon',
|
|
133
|
+
signerHost: '127.0.0.1',
|
|
134
|
+
signerTlsCert: 'signerTlsCert',
|
|
135
|
+
signerTlsKey: 'signerTlsKey',
|
|
136
|
+
watchOnly: {
|
|
137
|
+
master_key_birthday_timestamp: 'master_key_birthday_timestamp',
|
|
138
|
+
master_key_fingerprint: 'master_key_fingerprint',
|
|
139
|
+
accounts: [{ purpose: 1, coin_type: 1, account: 1, xpub: 'xpub' }],
|
|
140
|
+
},
|
|
141
|
+
signerMacaroon: 'signerMacaroon',
|
|
142
|
+
passphrase: 'passphrase',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
signerAdminMacaroon: 'signerAdminMacaroon',
|
|
146
|
+
passphrase: 'passphrase',
|
|
147
|
+
},
|
|
148
|
+
{ passphrase: 'passphrase' },
|
|
149
|
+
], [null, 'abg', 1]);
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2xpZ2h0bmluZy9jb2RlY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvREFBNEI7QUFDNUIsZ0RBQWtDO0FBQ2xDLDZDQUFzQztBQUN0QyxnREFBbUg7QUFFbkgsU0FBUyxhQUFhLENBQUMsQ0FBYyxFQUFFLEtBQWdCLEVBQUUsT0FBa0I7SUFDekUsUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFO1FBQzFCLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtZQUN4QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xCLGdCQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0JBQXdCLEVBQUU7WUFDM0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNwQixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGlCQUFpQixFQUFFO1lBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBQSxlQUFJLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsUUFBUSxDQUFDLFFBQVEsRUFBRTtJQUNqQixhQUFhLENBQ1gsMEJBQWlCLEVBQ2pCO1FBQ0U7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLEdBQUcsRUFBRSxNQUFNO1lBQ1gsWUFBWSxFQUFFLGNBQWM7WUFDNUIsTUFBTSxFQUFFLE1BQU07U0FDZjtRQUNEO1lBQ0UsRUFBRSxFQUFFLElBQUk7WUFDUixHQUFHLEVBQUUsTUFBTTtZQUNYLE1BQU0sRUFBRSxNQUFNO1NBQ2Y7S0FDRixFQUNEO1FBQ0UsSUFBSTtRQUNKLEtBQUs7UUFDTCxDQUFDO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLEdBQUcsRUFBRSxNQUFNO1lBQ1gsWUFBWSxFQUFFLGNBQWM7WUFDNUIsTUFBTSxFQUFFLFFBQVE7U0FDakI7S0FDRixDQUNGLENBQUM7SUFFRixhQUFhLENBQ1gsOEJBQXFCLEVBQ3JCO1FBQ0U7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLEdBQUcsRUFBRSxNQUFNO1lBQ1gsWUFBWSxFQUFFLGNBQWM7WUFDNUIsTUFBTSxFQUFFLE1BQU07WUFDZCxZQUFZLEVBQUU7Z0JBQ1osS0FBSyxFQUFFO29CQUNMLE9BQU8sRUFBRSxVQUFVO2lCQUNwQjthQUNGO1NBQ0Y7UUFDRDtZQUNFLEVBQUUsRUFBRSxJQUFJO1lBQ1IsR0FBRyxFQUFFLE1BQU07WUFDWCxNQUFNLEVBQUUsTUFBTTtZQUNkLFlBQVksRUFBRTtnQkFDWixLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLFVBQVU7aUJBQ3BCO2FBQ0Y7U0FDRjtLQUNGLEVBQ0Q7UUFDRSxJQUFJO1FBQ0osS0FBSztRQUNMLENBQUM7UUFDRDtZQUNFLEVBQUUsRUFBRSxJQUFJO1lBQ1IsR0FBRyxFQUFFLE1BQU07WUFDWCxZQUFZLEVBQUUsY0FBYztZQUM1QixNQUFNLEVBQUUsTUFBTTtZQUNkLFlBQVksRUFBRTtnQkFDWixLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLE9BQU87aUJBQ2pCO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLElBQUk7WUFDUixHQUFHLEVBQUUsTUFBTTtZQUNYLFlBQVksRUFBRSxjQUFjO1NBQzdCO0tBQ0YsQ0FDRixDQUFDO0lBRUYsYUFBYSxDQUNYLDJDQUFrQyxFQUNsQztRQUNFO1lBQ0UsbUJBQW1CLEVBQUUscUJBQXFCO1lBQzFDLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLGFBQWEsRUFBRSxlQUFlO1lBQzlCLFlBQVksRUFBRSxjQUFjO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCw2QkFBNkIsRUFBRSwrQkFBK0I7Z0JBQzlELHNCQUFzQixFQUFFLHdCQUF3QjtnQkFDaEQsUUFBUSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDbkU7WUFDRCxjQUFjLEVBQUUsZ0JBQWdCO1lBQ2hDLFVBQVUsRUFBRSxZQUFZO1NBQ3pCO1FBQ0Q7WUFDRSxtQkFBbUIsRUFBRSxxQkFBcUI7WUFDMUMsVUFBVSxFQUFFLFlBQVk7U0FDekI7UUFDRCxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUU7S0FDN0IsRUFDRCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ2pCLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgRSBmcm9tICdmcC10cy9FaXRoZXInO1xuaW1wb3J0IHsgcGlwZSB9IGZyb20gJ2ZwLXRzL2Z1bmN0aW9uJztcbmltcG9ydCB7IExpZ2h0bmluZ0F1dGhLZXljaGFpbiwgTGlnaHRuaW5nS2V5Y2hhaW4sIFVwZGF0ZUxpZ2h0bmluZ1dhbGxldENsaWVudFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9zcmMvY29kZWNzJztcblxuZnVuY3Rpb24gZGVzY3JpYmVDb2RlYyhjOiB0LlR5cGU8YW55PiwgdmFsaWQ6IHVua25vd25bXSwgaW52YWxpZDogdW5rbm93bltdKSB7XG4gIGRlc2NyaWJlKCdDb2RlYyAnICsgYy5uYW1lLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3BhcnNlcyB2YWxpZCBpbnB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YWxpZC5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChFLmlzUmlnaHQoYy5kZWNvZGUodikpLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgaW52YWxpZCBpbnB1dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpbnZhbGlkLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKEUuaXNSaWdodChjLmRlY29kZSh2KSksIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VuY29kZSDiiJggZGVjb2RlJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsaWQuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICBjb25zdCByb3VuZFRyaXBwZWQgPSBwaXBlKHYsIGMuZGVjb2RlLCBFLm1hcChjLmVuY29kZSkpO1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJvdW5kVHJpcHBlZCwgRS5yaWdodCh2KSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmRlc2NyaWJlKCdDb2RlY3MnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlQ29kZWMoXG4gICAgTGlnaHRuaW5nS2V5Y2hhaW4sXG4gICAgW1xuICAgICAge1xuICAgICAgICBpZDogJ2lkJyxcbiAgICAgICAgcHViOiAneHB1YicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogJ2VuY3J5cHRlZFBydicsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdpZCcsXG4gICAgICAgIHB1YjogJ3hwdWInLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBudWxsLFxuICAgICAgJ2FiZycsXG4gICAgICAxLFxuICAgICAge1xuICAgICAgICBpZDogJ2lkJyxcbiAgICAgICAgcHViOiAneHB1YicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogJ2VuY3J5cHRlZFBydicsXG4gICAgICAgIHNvdXJjZTogJ2JhY2t1cCcsXG4gICAgICB9LFxuICAgIF1cbiAgKTtcblxuICBkZXNjcmliZUNvZGVjKFxuICAgIExpZ2h0bmluZ0F1dGhLZXljaGFpbixcbiAgICBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnaWQnLFxuICAgICAgICBwdWI6ICd4cHViJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiAnZW5jcnlwdGVkUHJ2JyxcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIGxuYnRjOiB7XG4gICAgICAgICAgICBwdXJwb3NlOiAndXNlckF1dGgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ2lkJyxcbiAgICAgICAgcHViOiAneHB1YicsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBjb2luU3BlY2lmaWM6IHtcbiAgICAgICAgICBsbmJ0Yzoge1xuICAgICAgICAgICAgcHVycG9zZTogJ3VzZXJBdXRoJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtcbiAgICAgIG51bGwsXG4gICAgICAnYWJnJyxcbiAgICAgIDEsXG4gICAgICB7XG4gICAgICAgIGlkOiAnaWQnLFxuICAgICAgICBwdWI6ICd4cHViJyxcbiAgICAgICAgZW5jcnlwdGVkUHJ2OiAnZW5jcnlwdGVkUHJ2JyxcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge1xuICAgICAgICAgIGxuYnRjOiB7XG4gICAgICAgICAgICBwdXJwb3NlOiAnZHVtbXknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ2lkJyxcbiAgICAgICAgcHViOiAneHB1YicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogJ2VuY3J5cHRlZFBydicsXG4gICAgICB9LFxuICAgIF1cbiAgKTtcblxuICBkZXNjcmliZUNvZGVjKFxuICAgIFVwZGF0ZUxpZ2h0bmluZ1dhbGxldENsaWVudFJlcXVlc3QsXG4gICAgW1xuICAgICAge1xuICAgICAgICBzaWduZXJBZG1pbk1hY2Fyb29uOiAnc2lnbmVyQWRtaW5NYWNhcm9vbicsXG4gICAgICAgIHNpZ25lckhvc3Q6ICcxMjcuMC4wLjEnLFxuICAgICAgICBzaWduZXJUbHNDZXJ0OiAnc2lnbmVyVGxzQ2VydCcsXG4gICAgICAgIHNpZ25lclRsc0tleTogJ3NpZ25lclRsc0tleScsXG4gICAgICAgIHdhdGNoT25seToge1xuICAgICAgICAgIG1hc3Rlcl9rZXlfYmlydGhkYXlfdGltZXN0YW1wOiAnbWFzdGVyX2tleV9iaXJ0aGRheV90aW1lc3RhbXAnLFxuICAgICAgICAgIG1hc3Rlcl9rZXlfZmluZ2VycHJpbnQ6ICdtYXN0ZXJfa2V5X2ZpbmdlcnByaW50JyxcbiAgICAgICAgICBhY2NvdW50czogW3sgcHVycG9zZTogMSwgY29pbl90eXBlOiAxLCBhY2NvdW50OiAxLCB4cHViOiAneHB1YicgfV0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpZ25lck1hY2Fyb29uOiAnc2lnbmVyTWFjYXJvb24nLFxuICAgICAgICBwYXNzcGhyYXNlOiAncGFzc3BocmFzZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzaWduZXJBZG1pbk1hY2Fyb29uOiAnc2lnbmVyQWRtaW5NYWNhcm9vbicsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwYXNzcGhyYXNlJyxcbiAgICAgIH0sXG4gICAgICB7IHBhc3NwaHJhc2U6ICdwYXNzcGhyYXNlJyB9LFxuICAgIF0sXG4gICAgW251bGwsICdhYmcnLCAxXVxuICApO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
export interface PsbtCreationOptions {
|
|
3
|
+
network: utxolib.Network;
|
|
4
|
+
inputValue?: number;
|
|
5
|
+
outputValue?: number;
|
|
6
|
+
outputAddress?: string;
|
|
7
|
+
changeValue?: number;
|
|
8
|
+
changeDerivationPath?: string;
|
|
9
|
+
changePurpose?: 49 | 84 | 86;
|
|
10
|
+
includeChangeOutput?: boolean;
|
|
11
|
+
masterKey?: utxolib.BIP32Interface;
|
|
12
|
+
}
|
|
13
|
+
export interface PsbtCreationResult {
|
|
14
|
+
psbt: utxolib.Psbt;
|
|
15
|
+
masterKey: utxolib.BIP32Interface;
|
|
16
|
+
changeDerivationPath: string;
|
|
17
|
+
changePurpose: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a PSBT for testing purposes with customizable options.
|
|
21
|
+
* This helper function generates a PSBT with a fake input and configurable outputs.
|
|
22
|
+
*
|
|
23
|
+
* @param options - Configuration options for PSBT creation
|
|
24
|
+
* @returns A constructed PSBT instance and the master key used
|
|
25
|
+
*/
|
|
26
|
+
export declare function createTestPsbt(options: PsbtCreationOptions): PsbtCreationResult;
|
|
27
|
+
//# sourceMappingURL=createPsbt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAkJ/E"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createTestPsbt = createTestPsbt;
|
|
37
|
+
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
38
|
+
/**
|
|
39
|
+
* Creates a PSBT for testing purposes with customizable options.
|
|
40
|
+
* This helper function generates a PSBT with a fake input and configurable outputs.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Configuration options for PSBT creation
|
|
43
|
+
* @returns A constructed PSBT instance and the master key used
|
|
44
|
+
*/
|
|
45
|
+
function createTestPsbt(options) {
|
|
46
|
+
const { network, inputValue = 500000, outputValue = 100000, outputAddress, changeValue, changeDerivationPath = "m/84'/0'/0'/1/6", changePurpose = 84, includeChangeOutput = true, masterKey, } = options;
|
|
47
|
+
const fixedSeed = Buffer.from('0101010101010101010101010101010101010101010101010101010101010101', 'hex');
|
|
48
|
+
const accountMasterKey = masterKey || utxolib.bip32.fromSeed(fixedSeed, network);
|
|
49
|
+
const inputPrivateKey = Buffer.from('0202020202020202020202020202020202020202020202020202020202020202', 'hex');
|
|
50
|
+
const inputKeyPair = utxolib.ECPair.fromPrivateKey(inputPrivateKey, { network });
|
|
51
|
+
const p2wpkhInput = utxolib.payments.p2wpkh({
|
|
52
|
+
pubkey: Buffer.from(inputKeyPair.publicKey),
|
|
53
|
+
network,
|
|
54
|
+
});
|
|
55
|
+
// Create a new PSBT instance
|
|
56
|
+
const psbt = new utxolib.Psbt({ network });
|
|
57
|
+
// Add a fake input to the PSBT
|
|
58
|
+
const fakeTxId = 'ca6852598b48230ac870814b935b0d982d3968eb00a1d97332dceb6cd9b8505e';
|
|
59
|
+
const fakeVout = 1;
|
|
60
|
+
psbt.addInput({
|
|
61
|
+
hash: fakeTxId,
|
|
62
|
+
index: fakeVout,
|
|
63
|
+
witnessUtxo: {
|
|
64
|
+
script: p2wpkhInput.output,
|
|
65
|
+
value: BigInt(inputValue),
|
|
66
|
+
},
|
|
67
|
+
bip32Derivation: [
|
|
68
|
+
{
|
|
69
|
+
masterFingerprint: Buffer.alloc(4, 0),
|
|
70
|
+
path: "m/84'/0'/0'/0/0",
|
|
71
|
+
pubkey: Buffer.from(inputKeyPair.publicKey),
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
});
|
|
75
|
+
// Add recipient output
|
|
76
|
+
let recipientAddress;
|
|
77
|
+
if (outputAddress) {
|
|
78
|
+
recipientAddress = outputAddress;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const recipientPrivateKey = Buffer.from('0303030303030303030303030303030303030303030303030303030303030303', 'hex');
|
|
82
|
+
const recipientKeyPair = utxolib.ECPair.fromPrivateKey(recipientPrivateKey, { network });
|
|
83
|
+
// P2TR requires x-only pubkey (32 bytes, without the prefix byte)
|
|
84
|
+
const xOnlyPubkey = recipientKeyPair.publicKey.length === 33
|
|
85
|
+
? recipientKeyPair.publicKey.subarray(1, 33)
|
|
86
|
+
: recipientKeyPair.publicKey;
|
|
87
|
+
const recipientP2tr = utxolib.payments.p2tr({
|
|
88
|
+
pubkey: xOnlyPubkey,
|
|
89
|
+
network,
|
|
90
|
+
}, { eccLib: utxolib.ecc });
|
|
91
|
+
recipientAddress = recipientP2tr.address;
|
|
92
|
+
}
|
|
93
|
+
psbt.addOutput({
|
|
94
|
+
address: recipientAddress,
|
|
95
|
+
value: BigInt(outputValue),
|
|
96
|
+
});
|
|
97
|
+
// Add change output if requested
|
|
98
|
+
if (includeChangeOutput) {
|
|
99
|
+
const calculatedChangeValue = changeValue !== undefined ? changeValue : inputValue - outputValue - 10000; // 10k sats fee
|
|
100
|
+
// Parse the derivation path to get the change and address indices
|
|
101
|
+
// Expected format: m/purpose'/coin_type'/account'/change/address_index
|
|
102
|
+
const pathSegments = changeDerivationPath.split('/');
|
|
103
|
+
const changeIndex = Number(pathSegments[pathSegments.length - 2]);
|
|
104
|
+
const addressIndex = Number(pathSegments[pathSegments.length - 1]);
|
|
105
|
+
// Derive the change key from the master key
|
|
106
|
+
const changeNode = accountMasterKey.derive(changeIndex).derive(addressIndex);
|
|
107
|
+
const changePubkey = changeNode.publicKey;
|
|
108
|
+
let changeAddress;
|
|
109
|
+
let changePayment;
|
|
110
|
+
// Create change address based on purpose
|
|
111
|
+
switch (changePurpose) {
|
|
112
|
+
case 49: // P2SH-P2WPKH
|
|
113
|
+
changePayment = utxolib.payments.p2sh({
|
|
114
|
+
redeem: utxolib.payments.p2wpkh({
|
|
115
|
+
pubkey: changePubkey,
|
|
116
|
+
network,
|
|
117
|
+
}),
|
|
118
|
+
network,
|
|
119
|
+
});
|
|
120
|
+
changeAddress = changePayment.address;
|
|
121
|
+
break;
|
|
122
|
+
case 84: // P2WPKH
|
|
123
|
+
changePayment = utxolib.payments.p2wpkh({
|
|
124
|
+
pubkey: changePubkey,
|
|
125
|
+
network,
|
|
126
|
+
});
|
|
127
|
+
changeAddress = changePayment.address;
|
|
128
|
+
break;
|
|
129
|
+
case 86: // P2TR
|
|
130
|
+
const xOnlyChangePubkey = changePubkey.length === 33 ? changePubkey.subarray(1, 33) : changePubkey;
|
|
131
|
+
changePayment = utxolib.payments.p2tr({
|
|
132
|
+
pubkey: xOnlyChangePubkey,
|
|
133
|
+
network,
|
|
134
|
+
}, { eccLib: utxolib.ecc });
|
|
135
|
+
changeAddress = changePayment.address;
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
throw new Error(`Unsupported purpose: ${changePurpose}`);
|
|
139
|
+
}
|
|
140
|
+
psbt.addOutput({
|
|
141
|
+
address: changeAddress,
|
|
142
|
+
value: BigInt(calculatedChangeValue),
|
|
143
|
+
});
|
|
144
|
+
// Add bip32Derivation to the change output
|
|
145
|
+
psbt.updateOutput(1, {
|
|
146
|
+
bip32Derivation: [
|
|
147
|
+
{
|
|
148
|
+
masterFingerprint: Buffer.alloc(4, 0),
|
|
149
|
+
path: changeDerivationPath,
|
|
150
|
+
pubkey: changePubkey,
|
|
151
|
+
},
|
|
152
|
+
],
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
psbt,
|
|
157
|
+
masterKey: accountMasterKey,
|
|
158
|
+
changeDerivationPath,
|
|
159
|
+
changePurpose,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9saWdodG5pbmcvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQSx3Q0FrSkM7QUE5S0QsOERBQWdEO0FBcUJoRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBNEI7SUFDekQsTUFBTSxFQUNKLE9BQU8sRUFDUCxVQUFVLEdBQUcsTUFBTSxFQUNuQixXQUFXLEdBQUcsTUFBTSxFQUNwQixhQUFhLEVBQ2IsV0FBVyxFQUNYLG9CQUFvQixHQUFHLGlCQUFpQixFQUN4QyxhQUFhLEdBQUcsRUFBRSxFQUNsQixtQkFBbUIsR0FBRyxJQUFJLEVBQzFCLFNBQVMsR0FDVixHQUFHLE9BQU8sQ0FBQztJQUNaLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekcsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0csTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNDLE9BQU87S0FDUixDQUFDLENBQUM7SUFFSCw2QkFBNkI7SUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFB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QUMscUJBQXFCLENBQUM7U0FDckMsQ0FBQyxDQUFDO1FBRUgsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFO1lBQ25CLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLE1BQU0sRUFBRSxZQUFZO2lCQUNyQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJO1FBQ0osU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixvQkFBb0I7UUFDcEIsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHNidENyZWF0aW9uT3B0aW9ucyB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgaW5wdXRWYWx1ZT86IG51bWJlcjtcbiAgb3V0cHV0VmFsdWU/OiBudW1iZXI7XG4gIG91dHB1dEFkZHJlc3M/OiBzdHJpbmc7XG4gIGNoYW5nZVZhbHVlPzogbnVtYmVyO1xuICBjaGFuZ2VEZXJpdmF0aW9uUGF0aD86IHN0cmluZztcbiAgY2hhbmdlUHVycG9zZT86IDQ5IHwgODQgfCA4NjtcbiAgaW5jbHVkZUNoYW5nZU91dHB1dD86IGJvb2xlYW47XG4gIG1hc3RlcktleT86IHV0eG9saWIuQklQMzJJbnRlcmZhY2U7IC8vIE9wdGlvbmFsIG1hc3RlciBrZXkgZm9yIGRlcml2aW5nIGFkZHJlc3Nlc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBzYnRDcmVhdGlvblJlc3VsdCB7XG4gIHBzYnQ6IHV0eG9saWIuUHNidDtcbiAgbWFzdGVyS2V5OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlO1xuICBjaGFuZ2VEZXJpdmF0aW9uUGF0aDogc3RyaW5nO1xuICBjaGFuZ2VQdXJwb3NlOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFBTQlQgZm9yIHRlc3RpbmcgcHVycG9zZXMgd2l0aCBjdXN0b21pemFibGUgb3B0aW9ucy5cbiAqIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIFBTQlQgd2l0aCBhIGZha2UgaW5wdXQgYW5kIGNvbmZpZ3VyYWJsZSBvdXRwdXRzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQU0JUIGNyZWF0aW9uXG4gKiBAcmV0dXJucyBBIGNvbnN0cnVjdGVkIFBTQlQgaW5zdGFuY2UgYW5kIHRoZSBtYXN0ZXIga2V5IHVzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlc3RQc2J0KG9wdGlvbnM6IFBzYnRDcmVhdGlvbk9wdGlvbnMpOiBQc2J0Q3JlYXRpb25SZXN1bHQge1xuICBjb25zdCB7XG4gICAgbmV0d29yayxcbiAgICBpbnB1dFZhbHVlID0gNTAwMDAwLFxuICAgIG91dHB1dFZhbHVlID0gMTAwMDAwLFxuICAgIG91dHB1dEFkZHJlc3MsXG4gICAgY2hhbmdlVmFsdWUsXG4gICAgY2hhbmdlRGVyaXZhdGlvblBhdGggPSBcIm0vODQnLzAnLzAnLzEvNlwiLFxuICAgIGNoYW5nZVB1cnBvc2UgPSA4NCxcbiAgICBpbmNsdWRlQ2hhbmdlT3V0cHV0ID0gdHJ1ZSxcbiAgICBtYXN0ZXJLZXksXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmaXhlZFNlZWQgPSBCdWZmZXIuZnJvbSgnMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMScsICdoZXgnKTtcbiAgY29uc3QgYWNjb3VudE1hc3RlcktleSA9IG1hc3RlcktleSB8fCB1dHhvbGliLmJpcDMyLmZyb21TZWVkKGZpeGVkU2VlZCwgbmV0d29yayk7XG5cbiAgY29uc3QgaW5wdXRQcml2YXRlS2V5ID0gQnVmZmVyLmZyb20oJzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDInLCAnaGV4Jyk7XG4gIGNvbnN0IGlucHV0S2V5UGFpciA9IHV0eG9saWIuRUNQYWlyLmZyb21Qcml2YXRlS2V5KGlucHV0UHJpdmF0ZUtleSwgeyBuZXR3b3JrIH0pO1xuICBjb25zdCBwMndwa2hJbnB1dCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICBwdWJrZXk6IEJ1ZmZlci5mcm9tKGlucHV0S2V5UGFpci5wdWJsaWNLZXkpLFxuICAgIG5ldHdvcmssXG4gIH0pO1xuXG4gIC8vIENyZWF0ZSBhIG5ldyBQU0JUIGluc3RhbmNlXG4gIGNvbnN0IHBzYnQgPSBuZXcgdXR4b2xpYi5Qc2J0KHsgbmV0d29yayB9KTtcblxuICAvLyBBZGQgYSBmYWtlIGlucHV0IHRvIHRoZSBQU0JUXG4gIGNvbnN0IGZha2VUeElkID0gJ2NhNjg1MjU5OGI0ODIzMGFjODcwODE0YjkzNWIwZDk4MmQzOTY4ZWIwMGExZDk3MzMyZGNlYjZjZDliODUwNWUnO1xuICBjb25zdCBmYWtlVm91dCA9IDE7XG5cbiAgcHNidC5hZGRJbnB1dCh7XG4gICAgaGFzaDogZmFrZVR4SWQsXG4gICAgaW5kZXg6IGZha2VWb3V0LFxuICAgIHdpdG5lc3NVdHhvOiB7XG4gICAgICBzY3JpcHQ6IHAyd3BraElucHV0Lm91dHB1dCEsXG4gICAgICB2YWx1ZTogQmlnSW50KGlucHV0VmFsdWUpLFxuICAgIH0sXG4gICAgYmlwMzJEZXJpdmF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIG1hc3RlckZpbmdlcnByaW50OiBCdWZmZXIuYWxsb2MoNCwgMCksXG4gICAgICAgIHBhdGg6IFwibS84NCcvMCcvMCcvMC8wXCIsXG4gICAgICAgIHB1YmtleTogQnVmZmVyLmZyb20oaW5wdXRLZXlQYWlyLnB1YmxpY0tleSksXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIEFkZCByZWNpcGllbnQgb3V0cHV0XG4gIGxldCByZWNpcGllbnRBZGRyZXNzOiBzdHJpbmc7XG4gIGlmIChvdXRwdXRBZGRyZXNzKSB7XG4gICAgcmVjaXBpZW50QWRkcmVzcyA9IG91dHB1dEFkZHJlc3M7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVjaXBpZW50UHJpdmF0ZUtleSA9IEJ1ZmZlci5mcm9tKCcwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzJywgJ2hleCcpO1xuICAgIGNvbnN0IHJlY2lwaWVudEtleVBhaXIgPSB1dHhvbGliLkVDUGFpci5mcm9tUHJpdmF0ZUtleShyZWNpcGllbnRQcml2YXRlS2V5LCB7IG5ldHdvcmsgfSk7XG4gICAgLy8gUDJUUiByZXF1aXJlcyB4LW9ubHkgcHVia2V5ICgzMiBieXRlcywgd2l0aG91dCB0aGUgcHJlZml4IGJ5dGUpXG4gICAgY29uc3QgeE9ubHlQdWJrZXkgPVxuICAgICAgcmVjaXBpZW50S2V5UGFpci5wdWJsaWNLZXkubGVuZ3RoID09PSAzM1xuICAgICAgICA/IHJlY2lwaWVudEtleVBhaXIucHVibGljS2V5LnN1YmFycmF5KDEsIDMzKVxuICAgICAgICA6IHJlY2lwaWVudEtleVBhaXIucHVibGljS2V5O1xuICAgIGNvbnN0IHJlY2lwaWVudFAydHIgPSB1dHhvbGliLnBheW1lbnRzLnAydHIoXG4gICAgICB7XG4gICAgICAgIHB1YmtleTogeE9ubHlQdWJrZXksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9LFxuICAgICAgeyBlY2NMaWI6IHV0eG9saWIuZWNjIH1cbiAgICApO1xuICAgIHJlY2lwaWVudEFkZHJlc3MgPSByZWNpcGllbnRQMnRyLmFkZHJlc3MhO1xuICB9XG5cbiAgcHNidC5hZGRPdXRwdXQoe1xuICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgdmFsdWU6IEJpZ0ludChvdXRwdXRWYWx1ZSksXG4gIH0pO1xuXG4gIC8vIEFkZCBjaGFuZ2Ugb3V0cHV0IGlmIHJlcXVlc3RlZFxuICBpZiAoaW5jbHVkZUNoYW5nZU91dHB1dCkge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRDaGFuZ2VWYWx1ZSA9IGNoYW5nZVZhbHVlICE9PSB1bmRlZmluZWQgPyBjaGFuZ2VWYWx1ZSA6IGlucHV0VmFsdWUgLSBvdXRwdXRWYWx1ZSAtIDEwMDAwOyAvLyAxMGsgc2F0cyBmZWVcblxuICAgIC8vIFBhcnNlIHRoZSBkZXJpdmF0aW9uIHBhdGggdG8gZ2V0IHRoZSBjaGFuZ2UgYW5kIGFkZHJlc3MgaW5kaWNlc1xuICAgIC8vIEV4cGVjdGVkIGZvcm1hdDogbS9wdXJwb3NlJy9jb2luX3R5cGUnL2FjY291bnQnL2NoYW5nZS9hZGRyZXNzX2luZGV4XG4gICAgY29uc3QgcGF0aFNlZ21lbnRzID0gY2hhbmdlRGVyaXZhdGlvblBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBjaGFuZ2VJbmRleCA9IE51bWJlcihwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDJdKTtcbiAgICBjb25zdCBhZGRyZXNzSW5kZXggPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSk7XG5cbiAgICAvLyBEZXJpdmUgdGhlIGNoYW5nZSBrZXkgZnJvbSB0aGUgbWFzdGVyIGtleVxuICAgIGNvbnN0IGNoYW5nZU5vZGUgPSBhY2NvdW50TWFzdGVyS2V5LmRlcml2ZShjaGFuZ2VJbmRleCkuZGVyaXZlKGFkZHJlc3NJbmRleCk7XG4gICAgY29uc3QgY2hhbmdlUHVia2V5ID0gY2hhbmdlTm9kZS5wdWJsaWNLZXk7XG5cbiAgICBsZXQgY2hhbmdlQWRkcmVzczogc3RyaW5nO1xuICAgIGxldCBjaGFuZ2VQYXltZW50O1xuXG4gICAgLy8gQ3JlYXRlIGNoYW5nZSBhZGRyZXNzIGJhc2VkIG9uIHB1cnBvc2VcbiAgICBzd2l0Y2ggKGNoYW5nZVB1cnBvc2UpIHtcbiAgICAgIGNhc2UgNDk6IC8vIFAyU0gtUDJXUEtIXG4gICAgICAgIGNoYW5nZVBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAyc2goe1xuICAgICAgICAgIHJlZGVlbTogdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICAgICAgcHVia2V5OiBjaGFuZ2VQdWJrZXksXG4gICAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgIH0pO1xuICAgICAgICBjaGFuZ2VBZGRyZXNzID0gY2hhbmdlUGF5bWVudC5hZGRyZXNzITtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDg0OiAvLyBQMldQS0hcbiAgICAgICAgY2hhbmdlUGF5bWVudCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgICBwdWJrZXk6IGNoYW5nZVB1YmtleSxcbiAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICB9KTtcbiAgICAgICAgY2hhbmdlQWRkcmVzcyA9IGNoYW5nZVBheW1lbnQuYWRkcmVzcyE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4NjogLy8gUDJUUlxuICAgICAgICBjb25zdCB4T25seUNoYW5nZVB1YmtleSA9IGNoYW5nZVB1YmtleS5sZW5ndGggPT09IDMzID8gY2hhbmdlUHVia2V5LnN1YmFycmF5KDEsIDMzKSA6IGNoYW5nZVB1YmtleTtcbiAgICAgICAgY2hhbmdlUGF5bWVudCA9IHV0eG9saWIucGF5bWVudHMucDJ0cihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdWJrZXk6IHhPbmx5Q2hhbmdlUHVia2V5LFxuICAgICAgICAgICAgbmV0d29yayxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgZWNjTGliOiB1dHhvbGliLmVjYyB9XG4gICAgICAgICk7XG4gICAgICAgIGNoYW5nZUFkZHJlc3MgPSBjaGFuZ2VQYXltZW50LmFkZHJlc3MhO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHVycG9zZTogJHtjaGFuZ2VQdXJwb3NlfWApO1xuICAgIH1cblxuICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgIGFkZHJlc3M6IGNoYW5nZUFkZHJlc3MsXG4gICAgICB2YWx1ZTogQmlnSW50KGNhbGN1bGF0ZWRDaGFuZ2VWYWx1ZSksXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYmlwMzJEZXJpdmF0aW9uIHRvIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gICAgcHNidC51cGRhdGVPdXRwdXQoMSwge1xuICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYXN0ZXJGaW5nZXJwcmludDogQnVmZmVyLmFsbG9jKDQsIDApLFxuICAgICAgICAgIHBhdGg6IGNoYW5nZURlcml2YXRpb25QYXRoLFxuICAgICAgICAgIHB1YmtleTogY2hhbmdlUHVia2V5LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHNidCxcbiAgICBtYXN0ZXJLZXk6IGFjY291bnRNYXN0ZXJLZXksXG4gICAgY2hhbmdlRGVyaXZhdGlvblBhdGgsXG4gICAgY2hhbmdlUHVycG9zZSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { WatchOnlyAccount } from '../../../src';
|
|
2
|
+
export declare const signerRootKey = "tprv8ZgxMBicQKsPe6jS4vDm2n7s42Q6MpvghUQqMmSKG7bTZvGKtjrcU3PGzMNG37yzxywrcdvgkwrr8eYXJmbwdvUNVT4Ucv7ris4jvA7BUmg";
|
|
3
|
+
export declare const accounts: WatchOnlyAccount[];
|
|
4
|
+
//# sourceMappingURL=createWatchOnlyFixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createWatchOnlyFixture.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/createWatchOnlyFixture.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,aAAa,oHACyF,CAAC;AAEpH,eAAO,MAAM,QAAQ,EAAE,gBAAgB,EAmhDtC,CAAC"}
|