@bitgo-beta/utxo-staking 1.1.1-beta.27 → 1.1.1-beta.270

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 (39) hide show
  1. package/dist/src/babylon/delegationMessage.d.ts +38 -0
  2. package/dist/src/babylon/delegationMessage.d.ts.map +1 -0
  3. package/dist/src/babylon/delegationMessage.js +189 -0
  4. package/dist/src/babylon/descriptor.d.ts +29 -0
  5. package/dist/src/babylon/descriptor.d.ts.map +1 -0
  6. package/dist/src/babylon/descriptor.js +78 -0
  7. package/dist/src/babylon/index.d.ts +5 -0
  8. package/dist/src/babylon/index.d.ts.map +1 -0
  9. package/dist/src/babylon/index.js +48 -0
  10. package/dist/src/babylon/network.d.ts +7 -0
  11. package/dist/src/babylon/network.d.ts.map +1 -0
  12. package/dist/src/babylon/network.js +66 -0
  13. package/dist/src/babylon/params.mainnet.json +1 -0
  14. package/dist/src/babylon/params.testnet.json +205 -0
  15. package/dist/src/babylon/stakingManager.d.ts +6 -0
  16. package/dist/src/babylon/stakingManager.d.ts.map +1 -0
  17. package/dist/src/babylon/stakingManager.js +65 -0
  18. package/dist/src/babylon/stakingParams.d.ts +39 -0
  19. package/dist/src/babylon/stakingParams.d.ts.map +1 -0
  20. package/dist/src/babylon/stakingParams.js +131 -0
  21. package/dist/src/coreDao/descriptor.d.ts +4 -4
  22. package/dist/src/coreDao/descriptor.d.ts.map +1 -1
  23. package/dist/src/coreDao/descriptor.js +12 -5
  24. package/dist/src/coreDao/opReturn.d.ts +5 -5
  25. package/dist/src/coreDao/opReturn.d.ts.map +1 -1
  26. package/dist/src/coreDao/opReturn.js +19 -11
  27. package/dist/src/coreDao/transaction.d.ts +15 -8
  28. package/dist/src/coreDao/transaction.d.ts.map +1 -1
  29. package/dist/src/coreDao/transaction.js +13 -6
  30. package/dist/src/index.d.ts +1 -0
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +26 -3
  33. package/dist/src/transaction.d.ts +0 -2
  34. package/dist/src/transaction.d.ts.map +1 -1
  35. package/dist/src/transaction.js +38 -4
  36. package/package.json +19 -7
  37. package/.eslintignore +0 -5
  38. package/.mocharc.yml +0 -8
  39. package/CHANGELOG.md +0 -39
@@ -0,0 +1,205 @@
1
+ [
2
+ {
3
+ "params": {
4
+ "covenant_pks": [
5
+ "49766ccd9e3cd94343e2040474a77fb37cdfd30530d05f9f1e96ae1e2102c86e",
6
+ "76d1ae01f8fb6bf30108731c884cddcf57ef6eef2d9d9559e130894e0e40c62c",
7
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
8
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
9
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
10
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
11
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
12
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
13
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
14
+ ],
15
+ "covenant_quorum": 6,
16
+ "min_staking_value_sat": "50000",
17
+ "max_staking_value_sat": "5000000",
18
+ "min_staking_time_blocks": 64000,
19
+ "max_staking_time_blocks": 64000,
20
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
21
+ "min_slashing_tx_fee_sat": "1000",
22
+ "slashing_rate": "0.100000000000000000",
23
+ "unbonding_time_blocks": 1008,
24
+ "unbonding_fee_sat": "2000",
25
+ "min_commission_rate": "0.030000000000000000",
26
+ "delegation_creation_base_gas_fee": "1000",
27
+ "allow_list_expiration_height": "26120",
28
+ "btc_activation_height": 197535
29
+ }
30
+ },
31
+ {
32
+ "params": {
33
+ "covenant_pks": [
34
+ "09585ab55a971a231c945790a0a81df754e5a07263a5c20829931cc24683bbb7",
35
+ "76d1ae01f8fb6bf30108731c884cddcf57ef6eef2d9d9559e130894e0e40c62c",
36
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
37
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
38
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
39
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
40
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
41
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
42
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
43
+ ],
44
+ "covenant_quorum": 6,
45
+ "min_staking_value_sat": "50000",
46
+ "max_staking_value_sat": "5000000",
47
+ "min_staking_time_blocks": 64000,
48
+ "max_staking_time_blocks": 64000,
49
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
50
+ "min_slashing_tx_fee_sat": "1000",
51
+ "slashing_rate": "0.100000000000000000",
52
+ "unbonding_time_blocks": 1008,
53
+ "unbonding_fee_sat": "10000",
54
+ "min_commission_rate": "0.030000000000000000",
55
+ "delegation_creation_base_gas_fee": "1000",
56
+ "allow_list_expiration_height": "26120",
57
+ "btc_activation_height": 198665
58
+ }
59
+ },
60
+ {
61
+ "params": {
62
+ "covenant_pks": [
63
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
64
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
65
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
66
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
67
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
68
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
69
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
70
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
71
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
72
+ ],
73
+ "covenant_quorum": 6,
74
+ "min_staking_value_sat": "50000",
75
+ "max_staking_value_sat": "5000000",
76
+ "min_staking_time_blocks": 64000,
77
+ "max_staking_time_blocks": 64000,
78
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
79
+ "min_slashing_tx_fee_sat": "1000",
80
+ "slashing_rate": "0.100000000000000000",
81
+ "unbonding_time_blocks": 1008,
82
+ "unbonding_fee_sat": "10000",
83
+ "min_commission_rate": "0.030000000000000000",
84
+ "delegation_creation_base_gas_fee": "1000",
85
+ "allow_list_expiration_height": "26120",
86
+ "btc_activation_height": 200665
87
+ }
88
+ },
89
+ {
90
+ "params": {
91
+ "covenant_pks": [
92
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
93
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
94
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
95
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
96
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
97
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
98
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
99
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
100
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
101
+ ],
102
+ "covenant_quorum": 6,
103
+ "min_staking_value_sat": "50000",
104
+ "max_staking_value_sat": "50000000",
105
+ "min_staking_time_blocks": 64000,
106
+ "max_staking_time_blocks": 64000,
107
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
108
+ "min_slashing_tx_fee_sat": "1000",
109
+ "slashing_rate": "0.100000000000000000",
110
+ "unbonding_time_blocks": 1008,
111
+ "unbonding_fee_sat": "5000",
112
+ "min_commission_rate": "0.030000000000000000",
113
+ "delegation_creation_base_gas_fee": "1000",
114
+ "allow_list_expiration_height": "26120",
115
+ "btc_activation_height": 215968
116
+ }
117
+ },
118
+ {
119
+ "params": {
120
+ "covenant_pks": [
121
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
122
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
123
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
124
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
125
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
126
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
127
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
128
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
129
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
130
+ ],
131
+ "covenant_quorum": 6,
132
+ "min_staking_value_sat": "50000",
133
+ "max_staking_value_sat": "50000000",
134
+ "min_staking_time_blocks": 64000,
135
+ "max_staking_time_blocks": 64000,
136
+ "slashing_pk_script": "dqkUAQEBAQEBAQEBAQEBAQEBAQEBAQGIrA==",
137
+ "min_slashing_tx_fee_sat": "1000",
138
+ "slashing_rate": "0.100000000000000000",
139
+ "unbonding_time_blocks": 1008,
140
+ "unbonding_fee_sat": "5000",
141
+ "min_commission_rate": "0.030000000000000000",
142
+ "delegation_creation_base_gas_fee": "1000",
143
+ "allow_list_expiration_height": "26120",
144
+ "btc_activation_height": 220637
145
+ }
146
+ },
147
+ {
148
+ "params": {
149
+ "covenant_pks": [
150
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
151
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
152
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
153
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
154
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
155
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
156
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
157
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
158
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
159
+ ],
160
+ "covenant_quorum": 6,
161
+ "min_staking_value_sat": "50000",
162
+ "max_staking_value_sat": "35000000000",
163
+ "min_staking_time_blocks": 10000,
164
+ "max_staking_time_blocks": 64000,
165
+ "slashing_pk_script": "ABRb4SYk0IorQkCV18ByIcM0UNFL8Q==",
166
+ "min_slashing_tx_fee_sat": "5000",
167
+ "slashing_rate": "0.050000000000000000",
168
+ "unbonding_time_blocks": 1008,
169
+ "unbonding_fee_sat": "2000",
170
+ "min_commission_rate": "0.030000000000000000",
171
+ "delegation_creation_base_gas_fee": "1095000",
172
+ "allow_list_expiration_height": "26124",
173
+ "btc_activation_height": 227174
174
+ }
175
+ },
176
+ {
177
+ "params": {
178
+ "covenant_pks": [
179
+ "fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
180
+ "0aee0509b16db71c999238a4827db945526859b13c95487ab46725357c9a9f25",
181
+ "17921cf156ccb4e73d428f996ed11b245313e37e27c978ac4d2cc21eca4672e4",
182
+ "113c3a32a9d320b72190a04a020a0db3976ef36972673258e9a38a364f3dc3b0",
183
+ "79a71ffd71c503ef2e2f91bccfc8fcda7946f4653cef0d9f3dde20795ef3b9f0",
184
+ "3bb93dfc8b61887d771f3630e9a63e97cbafcfcc78556a474df83a31a0ef899c",
185
+ "d21faf78c6751a0d38e6bd8028b907ff07e9a869a43fc837d6b3f8dff6119a36",
186
+ "40afaf47c4ffa56de86410d8e47baa2bb6f04b604f4ea24323737ddc3fe092df",
187
+ "f5199efae3f28bb82476163a7e458c7ad445d9bffb0682d10d3bdb2cb41f8e8e"
188
+ ],
189
+ "covenant_quorum": 6,
190
+ "min_staking_value_sat": "50000",
191
+ "max_staking_value_sat": "35000000000",
192
+ "min_staking_time_blocks": 10000,
193
+ "max_staking_time_blocks": 64000,
194
+ "slashing_pk_script": "ABRb4SYk0IorQkCV18ByIcM0UNFL8Q==",
195
+ "min_slashing_tx_fee_sat": "6000",
196
+ "slashing_rate": "0.050000000000000000",
197
+ "unbonding_time_blocks": 1008,
198
+ "unbonding_fee_sat": "2000",
199
+ "min_commission_rate": "0.030000000000000000",
200
+ "delegation_creation_base_gas_fee": "1095000",
201
+ "allow_list_expiration_height": "26124",
202
+ "btc_activation_height": 235952
203
+ }
204
+ }
205
+ ]
@@ -0,0 +1,6 @@
1
+ import * as bitcoinjslib from 'bitcoinjs-lib';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ import * as vendor from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
4
+ export declare const mockBabylonProvider: vendor.BabylonProvider;
5
+ export declare function createStakingManager(network: bitcoinjslib.Network | utxolib.Network, btcProvider: vendor.BtcProvider, stakingParams?: vendor.VersionedStakingParams[], babylonProvider?: vendor.BabylonProvider): vendor.BabylonBtcStakingManager;
6
+ //# sourceMappingURL=stakingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingManager.d.ts","sourceRoot":"","sources":["../../../src/babylon/stakingManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,2CAA2C,CAAC;AAIpE,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,eAIxC,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,aAAa,CAAC,EAAE,MAAM,CAAC,sBAAsB,EAAE,EAC/C,eAAe,yBAAsB,GACpC,MAAM,CAAC,wBAAwB,CAsBjC"}
@@ -0,0 +1,65 @@
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.mockBabylonProvider = void 0;
37
+ exports.createStakingManager = createStakingManager;
38
+ const bitcoinjslib = __importStar(require("bitcoinjs-lib"));
39
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
40
+ const vendor = __importStar(require("@bitgo-beta/babylonlabs-io-btc-staking-ts"));
41
+ const stakingParams_1 = require("./stakingParams");
42
+ exports.mockBabylonProvider = {
43
+ signTransaction() {
44
+ throw new Error('Function not implemented.');
45
+ },
46
+ };
47
+ function createStakingManager(network, btcProvider, stakingParams, babylonProvider = exports.mockBabylonProvider) {
48
+ if (utxolib.isValidNetwork(network)) {
49
+ switch (network) {
50
+ case utxolib.networks.bitcoin:
51
+ network = bitcoinjslib.networks.bitcoin;
52
+ break;
53
+ case utxolib.networks.testnet:
54
+ case utxolib.networks.bitcoinTestnet4:
55
+ throw new Error('Unsupported bitcoin testnet network - only signet is supported');
56
+ case utxolib.networks.bitcoinPublicSignet:
57
+ network = bitcoinjslib.networks.testnet;
58
+ break;
59
+ default:
60
+ throw new Error('Unsupported network');
61
+ }
62
+ }
63
+ return new vendor.BabylonBtcStakingManager(network, stakingParams ?? (0, stakingParams_1.getStakingParams)(network), btcProvider, babylonProvider);
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFieWxvbi9zdGFraW5nTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQSxvREEyQkM7QUF2Q0QsNERBQThDO0FBQzlDLDhEQUFnRDtBQUNoRCxrRkFBb0U7QUFFcEUsbURBQW1EO0FBRXRDLFFBQUEsbUJBQW1CLEdBQTJCO0lBQ3pELGVBQWU7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFnQixvQkFBb0IsQ0FDbEMsT0FBK0MsRUFDL0MsV0FBK0IsRUFDL0IsYUFBK0MsRUFDL0MsZUFBZSxHQUFHLDJCQUFtQjtJQUVyQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxRQUFRLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPO2dCQUMzQixPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3hDLE1BQU07WUFDUixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzlCLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxlQUFlO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7WUFDcEYsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtnQkFDdkMsT0FBTyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUN4QyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDeEMsT0FBTyxFQUNQLGFBQWEsSUFBSSxJQUFBLGdDQUFnQixFQUFDLE9BQU8sQ0FBQyxFQUMxQyxXQUFXLEVBQ1gsZUFBZSxDQUNoQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5qc2xpYiBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgdmVuZG9yIGZyb20gJ0BiaXRnby1iZXRhL2JhYnlsb25sYWJzLWlvLWJ0Yy1zdGFraW5nLXRzJztcblxuaW1wb3J0IHsgZ2V0U3Rha2luZ1BhcmFtcyB9IGZyb20gJy4vc3Rha2luZ1BhcmFtcyc7XG5cbmV4cG9ydCBjb25zdCBtb2NrQmFieWxvblByb3ZpZGVyOiB2ZW5kb3IuQmFieWxvblByb3ZpZGVyID0ge1xuICBzaWduVHJhbnNhY3Rpb24oKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Rha2luZ01hbmFnZXIoXG4gIG5ldHdvcms6IGJpdGNvaW5qc2xpYi5OZXR3b3JrIHwgdXR4b2xpYi5OZXR3b3JrLFxuICBidGNQcm92aWRlcjogdmVuZG9yLkJ0Y1Byb3ZpZGVyLFxuICBzdGFraW5nUGFyYW1zPzogdmVuZG9yLlZlcnNpb25lZFN0YWtpbmdQYXJhbXNbXSxcbiAgYmFieWxvblByb3ZpZGVyID0gbW9ja0JhYnlsb25Qcm92aWRlclxuKTogdmVuZG9yLkJhYnlsb25CdGNTdGFraW5nTWFuYWdlciB7XG4gIGlmICh1dHhvbGliLmlzVmFsaWROZXR3b3JrKG5ldHdvcmspKSB7XG4gICAgc3dpdGNoIChuZXR3b3JrKSB7XG4gICAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbjpcbiAgICAgICAgbmV0d29yayA9IGJpdGNvaW5qc2xpYi5uZXR3b3Jrcy5iaXRjb2luO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0OlxuICAgICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5UZXN0bmV0NDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBiaXRjb2luIHRlc3RuZXQgbmV0d29yayAtIG9ubHkgc2lnbmV0IGlzIHN1cHBvcnRlZCcpO1xuICAgICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5QdWJsaWNTaWduZXQ6XG4gICAgICAgIG5ldHdvcmsgPSBiaXRjb2luanNsaWIubmV0d29ya3MudGVzdG5ldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG5ldHdvcmsnKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyB2ZW5kb3IuQmFieWxvbkJ0Y1N0YWtpbmdNYW5hZ2VyKFxuICAgIG5ldHdvcmssXG4gICAgc3Rha2luZ1BhcmFtcyA/PyBnZXRTdGFraW5nUGFyYW1zKG5ldHdvcmspLFxuICAgIGJ0Y1Byb3ZpZGVyLFxuICAgIGJhYnlsb25Qcm92aWRlclxuICApO1xufVxuIl19
@@ -0,0 +1,39 @@
1
+ import * as t from 'io-ts';
2
+ import * as tt from 'io-ts-types';
3
+ import * as utxolib from '@bitgo-beta/utxo-lib';
4
+ import { StakerInfo, StakingInputs, StakingParams, VersionedStakingParams } from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
5
+ export { getBabylonParamByVersion, getBabylonParamByBtcHeight } from '@bitgo-beta/babylonlabs-io-btc-staking-ts';
6
+ import { BabylonDescriptorBuilder } from './descriptor';
7
+ import { BabylonNetworkLike } from './network';
8
+ declare const BabylonParamsJSON: t.TypeC<{
9
+ covenant_pks: t.ArrayC<t.StringC>;
10
+ covenant_quorum: t.NumberC;
11
+ min_staking_value_sat: tt.NumberFromStringC;
12
+ max_staking_value_sat: tt.NumberFromStringC;
13
+ min_staking_time_blocks: t.NumberC;
14
+ max_staking_time_blocks: t.NumberC;
15
+ slashing_pk_script: t.StringC;
16
+ min_slashing_tx_fee_sat: tt.NumberFromStringC;
17
+ slashing_rate: t.StringC;
18
+ unbonding_time_blocks: t.NumberC;
19
+ unbonding_fee_sat: tt.NumberFromStringC;
20
+ min_commission_rate: tt.NumberFromStringC;
21
+ delegation_creation_base_gas_fee: tt.NumberFromStringC;
22
+ allow_list_expiration_height: tt.NumberFromStringC;
23
+ btc_activation_height: t.NumberC;
24
+ }>;
25
+ type BabylonParamsJSON = t.TypeOf<typeof BabylonParamsJSON>;
26
+ export declare function toVersionedParams(ps: BabylonParamsJSON[]): VersionedStakingParams[];
27
+ export declare const mainnetStakingParams: readonly VersionedStakingParams[];
28
+ export declare const testnetStakingParams: readonly VersionedStakingParams[];
29
+ export declare function getStakingParams(network: BabylonNetworkLike): VersionedStakingParams[];
30
+ export declare const testnetFinalityProvider0: Buffer<ArrayBuffer>;
31
+ type DescriptorStakingParams = Pick<StakingParams, 'covenantNoCoordPks' | 'covenantQuorum' | 'minStakingTimeBlocks' | 'unbondingTime'>;
32
+ export declare function getDescriptorBuilderForParams(userKey: utxolib.BIP32Interface | utxolib.ECPairInterface | Buffer, finalityProviderKeys: Buffer[], stakingTimelock: number, params: DescriptorStakingParams): BabylonDescriptorBuilder;
33
+ export declare function getDescriptorProviderForStakingParams(stakerBtcInfo: Pick<StakerInfo, 'publicKeyNoCoordHex'>, stakingInput: StakingInputs, stakingParams: DescriptorStakingParams): BabylonDescriptorBuilder;
34
+ export declare function getTestnetDescriptorBuilder(userKey: utxolib.BIP32Interface | utxolib.ECPairInterface | Buffer, { finalityProviderKeys, params, stakingTimelock, }?: {
35
+ finalityProviderKeys?: Buffer[];
36
+ params?: StakingParams;
37
+ stakingTimelock?: number;
38
+ }): BabylonDescriptorBuilder;
39
+ //# sourceMappingURL=stakingParams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakingParams.d.ts","sourceRoot":"","sources":["../../../src/babylon/stakingParams.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlC,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAEL,UAAU,EACV,aAAa,EACb,aAAa,EACb,sBAAsB,EACvB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEjH,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,WAAW,CAAC;AAEjE,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAgBrB,CAAC;AAEH,KAAK,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,EAAE,CAkBnF;AAeD,eAAO,MAAM,oBAAoB,EAAE,SAAS,sBAAsB,EAEjE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAAS,sBAAsB,EAEjE,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,sBAAsB,EAAE,CAStF;AAGD,eAAO,MAAM,wBAAwB,qBAGpC,CAAC;AAEF,KAAK,uBAAuB,GAAG,IAAI,CACjC,aAAa,EACb,oBAAoB,GAAG,gBAAgB,GAAG,sBAAsB,GAAG,eAAe,CACnF,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,MAAM,EAClE,oBAAoB,EAAE,MAAM,EAAE,EAC9B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,uBAAuB,GAC9B,wBAAwB,CAY1B;AAED,wBAAgB,qCAAqC,CACnD,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,EACtD,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,uBAAuB,GACrC,wBAAwB,CAI1B;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,MAAM,EAClE,EACE,oBAAiD,EACjD,MAAiE,EACjE,eAA6C,GAC9C,GAAE;IACD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GACL,wBAAwB,CAE1B"}
@@ -0,0 +1,131 @@
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
+ exports.testnetFinalityProvider0 = exports.testnetStakingParams = exports.mainnetStakingParams = exports.getBabylonParamByBtcHeight = exports.getBabylonParamByVersion = void 0;
40
+ exports.toVersionedParams = toVersionedParams;
41
+ exports.getStakingParams = getStakingParams;
42
+ exports.getDescriptorBuilderForParams = getDescriptorBuilderForParams;
43
+ exports.getDescriptorProviderForStakingParams = getDescriptorProviderForStakingParams;
44
+ exports.getTestnetDescriptorBuilder = getTestnetDescriptorBuilder;
45
+ const t = __importStar(require("io-ts"));
46
+ const tt = __importStar(require("io-ts-types"));
47
+ const Either_1 = require("fp-ts/Either");
48
+ const PathReporter_1 = require("io-ts/lib/PathReporter");
49
+ const babylonlabs_io_btc_staking_ts_1 = require("@bitgo-beta/babylonlabs-io-btc-staking-ts");
50
+ var babylonlabs_io_btc_staking_ts_2 = require("@bitgo-beta/babylonlabs-io-btc-staking-ts");
51
+ Object.defineProperty(exports, "getBabylonParamByVersion", { enumerable: true, get: function () { return babylonlabs_io_btc_staking_ts_2.getBabylonParamByVersion; } });
52
+ Object.defineProperty(exports, "getBabylonParamByBtcHeight", { enumerable: true, get: function () { return babylonlabs_io_btc_staking_ts_2.getBabylonParamByBtcHeight; } });
53
+ const descriptor_1 = require("./descriptor");
54
+ const params_mainnet_json_1 = __importDefault(require("./params.mainnet.json"));
55
+ const params_testnet_json_1 = __importDefault(require("./params.testnet.json"));
56
+ const network_1 = require("./network");
57
+ const BabylonParamsJSON = t.type({
58
+ covenant_pks: t.array(t.string),
59
+ covenant_quorum: t.number,
60
+ min_staking_value_sat: tt.NumberFromString,
61
+ max_staking_value_sat: tt.NumberFromString,
62
+ min_staking_time_blocks: t.number,
63
+ max_staking_time_blocks: t.number,
64
+ slashing_pk_script: t.string,
65
+ min_slashing_tx_fee_sat: tt.NumberFromString,
66
+ slashing_rate: t.string,
67
+ unbonding_time_blocks: t.number,
68
+ unbonding_fee_sat: tt.NumberFromString,
69
+ min_commission_rate: tt.NumberFromString,
70
+ delegation_creation_base_gas_fee: tt.NumberFromString,
71
+ allow_list_expiration_height: tt.NumberFromString,
72
+ btc_activation_height: t.number,
73
+ });
74
+ function toVersionedParams(ps) {
75
+ return ps.map((p, version) => ({
76
+ version,
77
+ btcActivationHeight: p.btc_activation_height,
78
+ covenantNoCoordPks: p.covenant_pks,
79
+ covenantQuorum: p.covenant_quorum,
80
+ unbondingTime: p.unbonding_time_blocks,
81
+ unbondingFeeSat: p.unbonding_fee_sat,
82
+ maxStakingAmountSat: p.max_staking_value_sat,
83
+ minStakingAmountSat: p.min_staking_value_sat,
84
+ maxStakingTimeBlocks: p.max_staking_time_blocks,
85
+ minStakingTimeBlocks: p.min_staking_time_blocks,
86
+ slashing: {
87
+ slashingPkScriptHex: Buffer.from(p.slashing_pk_script, 'base64').toString('hex'),
88
+ slashingRate: parseFloat(p.slashing_rate),
89
+ minSlashingTxFeeSat: p.min_slashing_tx_fee_sat,
90
+ },
91
+ }));
92
+ }
93
+ function toVersionedParamsFromJson(jsonParams) {
94
+ return toVersionedParams(jsonParams.map((p) => {
95
+ const result = t.type({ params: BabylonParamsJSON }).decode(p);
96
+ if ((0, Either_1.isLeft)(result)) {
97
+ const msg = PathReporter_1.PathReporter.report(result).join('\n');
98
+ throw new Error(`Invalid testnet params: ${msg}`);
99
+ }
100
+ return result.right.params;
101
+ }));
102
+ }
103
+ exports.mainnetStakingParams = Object.freeze(toVersionedParamsFromJson(params_mainnet_json_1.default));
104
+ exports.testnetStakingParams = Object.freeze(toVersionedParamsFromJson(params_testnet_json_1.default));
105
+ function getStakingParams(network) {
106
+ switch ((0, network_1.toBabylonNetwork)(network)) {
107
+ case 'mainnet':
108
+ return [...exports.mainnetStakingParams];
109
+ case 'testnet':
110
+ return [...exports.testnetStakingParams];
111
+ default:
112
+ throw new Error('Unsupported network');
113
+ }
114
+ }
115
+ // Source: https://btcstaking.testnet.babylonlabs.io/ "Babylon Foundation 0"
116
+ exports.testnetFinalityProvider0 = Buffer.from('d23c2c25e1fcf8fd1c21b9a402c19e2e309e531e45e92fb1e9805b6056b0cc76', 'hex');
117
+ function getDescriptorBuilderForParams(userKey, finalityProviderKeys, stakingTimelock, params) {
118
+ if (!Buffer.isBuffer(userKey)) {
119
+ userKey = userKey.publicKey;
120
+ }
121
+ return new descriptor_1.BabylonDescriptorBuilder(userKey, finalityProviderKeys, params.covenantNoCoordPks.map((pk) => Buffer.from(pk, 'hex')), params.covenantQuorum, stakingTimelock, params.unbondingTime);
122
+ }
123
+ function getDescriptorProviderForStakingParams(stakerBtcInfo, stakingInput, stakingParams) {
124
+ const userKey = Buffer.from(stakerBtcInfo.publicKeyNoCoordHex, 'hex');
125
+ const finalityProviderKey = Buffer.from(stakingInput.finalityProviderPkNoCoordHex, 'hex');
126
+ return getDescriptorBuilderForParams(userKey, [finalityProviderKey], stakingInput.stakingTimelock, stakingParams);
127
+ }
128
+ function getTestnetDescriptorBuilder(userKey, { finalityProviderKeys = [exports.testnetFinalityProvider0], params = (0, babylonlabs_io_btc_staking_ts_1.getBabylonParamByVersion)(5, getStakingParams('testnet')), stakingTimelock = params.minStakingTimeBlocks, } = {}) {
129
+ return getDescriptorBuilderForParams(userKey, finalityProviderKeys, stakingTimelock, params);
130
+ }
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1BhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWJ5bG9uL3N0YWtpbmdQYXJhbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUNBLDhDQWtCQztBQXVCRCw0Q0FTQztBQWFELHNFQWlCQztBQUVELHNGQVFDO0FBRUQsa0VBYUM7QUFoSkQseUNBQTJCO0FBQzNCLGdEQUFrQztBQUNsQyx5Q0FBc0M7QUFDdEMseURBQXNEO0FBRXRELDZGQU1tRDtBQUNuRCwyRkFBaUg7QUFBeEcseUlBQUEsd0JBQXdCLE9BQUE7QUFBRSwySUFBQSwwQkFBMEIsT0FBQTtBQUU3RCw2Q0FBd0Q7QUFDeEQsZ0ZBQXNEO0FBQ3RELGdGQUFzRDtBQUN0RCx1Q0FBaUU7QUFFakUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9CLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ3pCLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxnQkFBZ0I7SUFDMUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQjtJQUMxQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNqQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNqQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUM1Qix1QkFBdUIsRUFBRSxFQUFFLENBQUMsZ0JBQWdCO0lBQzVDLGFBQWEsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUN2QixxQkFBcUIsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUMvQixpQkFBaUIsRUFBRSxFQUFFLENBQUMsZ0JBQWdCO0lBQ3RDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxnQkFBZ0I7SUFDeEMsZ0NBQWdDLEVBQUUsRUFBRSxDQUFD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cm9tICdpby10cyc7XG5pbXBvcnQgKiBhcyB0dCBmcm9tICdpby10cy10eXBlcyc7XG5pbXBvcnQgeyBpc0xlZnQgfSBmcm9tICdmcC10cy9FaXRoZXInO1xuaW1wb3J0IHsgUGF0aFJlcG9ydGVyIH0gZnJvbSAnaW8tdHMvbGliL1BhdGhSZXBvcnRlcic7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7XG4gIGdldEJhYnlsb25QYXJhbUJ5VmVyc2lvbixcbiAgU3Rha2VySW5mbyxcbiAgU3Rha2luZ0lucHV0cyxcbiAgU3Rha2luZ1BhcmFtcyxcbiAgVmVyc2lvbmVkU3Rha2luZ1BhcmFtcyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvYmFieWxvbmxhYnMtaW8tYnRjLXN0YWtpbmctdHMnO1xuZXhwb3J0IHsgZ2V0QmFieWxvblBhcmFtQnlWZXJzaW9uLCBnZXRCYWJ5bG9uUGFyYW1CeUJ0Y0hlaWdodCB9IGZyb20gJ0BiaXRnby1iZXRhL2JhYnlsb25sYWJzLWlvLWJ0Yy1zdGFraW5nLXRzJztcblxuaW1wb3J0IHsgQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCBqc29uTWFpbm5ldFBhcmFtcyBmcm9tICcuL3BhcmFtcy5tYWlubmV0Lmpzb24nO1xuaW1wb3J0IGpzb25UZXN0bmV0UGFyYW1zIGZyb20gJy4vcGFyYW1zLnRlc3RuZXQuanNvbic7XG5pbXBvcnQgeyBCYWJ5bG9uTmV0d29ya0xpa2UsIHRvQmFieWxvbk5ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsnO1xuXG5jb25zdCBCYWJ5bG9uUGFyYW1zSlNPTiA9IHQudHlwZSh7XG4gIGNvdmVuYW50X3BrczogdC5hcnJheSh0LnN0cmluZyksXG4gIGNvdmVuYW50X3F1b3J1bTogdC5udW1iZXIsXG4gIG1pbl9zdGFraW5nX3ZhbHVlX3NhdDogdHQuTnVtYmVyRnJvbVN0cmluZyxcbiAgbWF4X3N0YWtpbmdfdmFsdWVfc2F0OiB0dC5OdW1iZXJGcm9tU3RyaW5nLFxuICBtaW5fc3Rha2luZ190aW1lX2Jsb2NrczogdC5udW1iZXIsXG4gIG1heF9zdGFraW5nX3RpbWVfYmxvY2tzOiB0Lm51bWJlcixcbiAgc2xhc2hpbmdfcGtfc2NyaXB0OiB0LnN0cmluZyxcbiAgbWluX3NsYXNoaW5nX3R4X2ZlZV9zYXQ6IHR0Lk51bWJlckZyb21TdHJpbmcsXG4gIHNsYXNoaW5nX3JhdGU6IHQuc3RyaW5nLFxuICB1bmJvbmRpbmdfdGltZV9ibG9ja3M6IHQubnVtYmVyLFxuICB1bmJvbmRpbmdfZmVlX3NhdDogdHQuTnVtYmVyRnJvbVN0cmluZyxcbiAgbWluX2NvbW1pc3Npb25fcmF0ZTogdHQuTnVtYmVyRnJvbVN0cmluZyxcbiAgZGVsZWdhdGlvbl9jcmVhdGlvbl9iYXNlX2dhc19mZWU6IHR0Lk51bWJlckZyb21TdHJpbmcsXG4gIGFsbG93X2xpc3RfZXhwaXJhdGlvbl9oZWlnaHQ6IHR0Lk51bWJlckZyb21TdHJpbmcsXG4gIGJ0Y19hY3RpdmF0aW9uX2hlaWdodDogdC5udW1iZXIsXG59KTtcblxudHlwZSBCYWJ5bG9uUGFyYW1zSlNPTiA9IHQuVHlwZU9mPHR5cGVvZiBCYWJ5bG9uUGFyYW1zSlNPTj47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1ZlcnNpb25lZFBhcmFtcyhwczogQmFieWxvblBhcmFtc0pTT05bXSk6IFZlcnNpb25lZFN0YWtpbmdQYXJhbXNbXSB7XG4gIHJldHVybiBwcy5tYXAoKHAsIHZlcnNpb24pID0+ICh7XG4gICAgdmVyc2lvbixcbiAgICBidGNBY3RpdmF0aW9uSGVpZ2h0OiBwLmJ0Y19hY3RpdmF0aW9uX2hlaWdodCxcbiAgICBjb3ZlbmFudE5vQ29vcmRQa3M6IHAuY292ZW5hbnRfcGtzLFxuICAgIGNvdmVuYW50UXVvcnVtOiBwLmNvdmVuYW50X3F1b3J1bSxcbiAgICB1bmJvbmRpbmdUaW1lOiBwLnVuYm9uZGluZ190aW1lX2Jsb2NrcyxcbiAgICB1bmJvbmRpbmdGZWVTYXQ6IHAudW5ib25kaW5nX2ZlZV9zYXQsXG4gICAgbWF4U3Rha2luZ0Ftb3VudFNhdDogcC5tYXhfc3Rha2luZ192YWx1ZV9zYXQsXG4gICAgbWluU3Rha2luZ0Ftb3VudFNhdDogcC5taW5fc3Rha2luZ192YWx1ZV9zYXQsXG4gICAgbWF4U3Rha2luZ1RpbWVCbG9ja3M6IHAubWF4X3N0YWtpbmdfdGltZV9ibG9ja3MsXG4gICAgbWluU3Rha2luZ1RpbWVCbG9ja3M6IHAubWluX3N0YWtpbmdfdGltZV9ibG9ja3MsXG4gICAgc2xhc2hpbmc6IHtcbiAgICAgIHNsYXNoaW5nUGtTY3JpcHRIZXg6IEJ1ZmZlci5mcm9tKHAuc2xhc2hpbmdfcGtfc2NyaXB0LCAnYmFzZTY0JykudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgc2xhc2hpbmdSYXRlOiBwYXJzZUZsb2F0KHAuc2xhc2hpbmdfcmF0ZSksXG4gICAgICBtaW5TbGFzaGluZ1R4RmVlU2F0OiBwLm1pbl9zbGFzaGluZ190eF9mZWVfc2F0LFxuICAgIH0sXG4gIH0pKTtcbn1cblxuZnVuY3Rpb24gdG9WZXJzaW9uZWRQYXJhbXNGcm9tSnNvbihqc29uUGFyYW1zOiB1bmtub3duW10pOiBWZXJzaW9uZWRTdGFraW5nUGFyYW1zW10ge1xuICByZXR1cm4gdG9WZXJzaW9uZWRQYXJhbXMoXG4gICAganNvblBhcmFtcy5tYXAoKHApOiBCYWJ5bG9uUGFyYW1zSlNPTiA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0LnR5cGUoeyBwYXJhbXM6IEJhYnlsb25QYXJhbXNKU09OIH0pLmRlY29kZShwKTtcbiAgICAgIGlmIChpc0xlZnQocmVzdWx0KSkge1xuICAgICAgICBjb25zdCBtc2cgPSBQYXRoUmVwb3J0ZXIucmVwb3J0KHJlc3VsdCkuam9pbignXFxuJyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZXN0bmV0IHBhcmFtczogJHttc2d9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0LnJpZ2h0LnBhcmFtcztcbiAgICB9KVxuICApO1xufVxuXG5leHBvcnQgY29uc3QgbWFpbm5ldFN0YWtpbmdQYXJhbXM6IHJlYWRvbmx5IFZlcnNpb25lZFN0YWtpbmdQYXJhbXNbXSA9IE9iamVjdC5mcmVlemUoXG4gIHRvVmVyc2lvbmVkUGFyYW1zRnJvbUpzb24oanNvbk1haW5uZXRQYXJhbXMpXG4pO1xuXG5leHBvcnQgY29uc3QgdGVzdG5ldFN0YWtpbmdQYXJhbXM6IHJlYWRvbmx5IFZlcnNpb25lZFN0YWtpbmdQYXJhbXNbXSA9IE9iamVjdC5mcmVlemUoXG4gIHRvVmVyc2lvbmVkUGFyYW1zRnJvbUpzb24oanNvblRlc3RuZXRQYXJhbXMpXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3Rha2luZ1BhcmFtcyhuZXR3b3JrOiBCYWJ5bG9uTmV0d29ya0xpa2UpOiBWZXJzaW9uZWRTdGFraW5nUGFyYW1zW10ge1xuICBzd2l0Y2ggKHRvQmFieWxvbk5ldHdvcmsobmV0d29yaykpIHtcbiAgICBjYXNlICdtYWlubmV0JzpcbiAgICAgIHJldHVybiBbLi4ubWFpbm5ldFN0YWtpbmdQYXJhbXNdO1xuICAgIGNhc2UgJ3Rlc3RuZXQnOlxuICAgICAgcmV0dXJuIFsuLi50ZXN0bmV0U3Rha2luZ1BhcmFtc107XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbmV0d29yaycpO1xuICB9XG59XG5cbi8vIFNvdXJjZTogaHR0cHM6Ly9idGNzdGFraW5nLnRlc3RuZXQuYmFieWxvbmxhYnMuaW8vIFwiQmFieWxvbiBGb3VuZGF0aW9uIDBcIlxuZXhwb3J0IGNvbnN0IHRlc3RuZXRGaW5hbGl0eVByb3ZpZGVyMCA9IEJ1ZmZlci5mcm9tKFxuICAnZDIzYzJjMjVlMWZjZjhmZDFjMjFiOWE0MDJjMTllMmUzMDllNTMxZTQ1ZTkyZmIxZTk4MDViNjA1NmIwY2M3NicsXG4gICdoZXgnXG4pO1xuXG50eXBlIERlc2NyaXB0b3JTdGFraW5nUGFyYW1zID0gUGljazxcbiAgU3Rha2luZ1BhcmFtcyxcbiAgJ2NvdmVuYW50Tm9Db29yZFBrcycgfCAnY292ZW5hbnRRdW9ydW0nIHwgJ21pblN0YWtpbmdUaW1lQmxvY2tzJyB8ICd1bmJvbmRpbmdUaW1lJ1xuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JCdWlsZGVyRm9yUGFyYW1zKFxuICB1c2VyS2V5OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlIHwgdXR4b2xpYi5FQ1BhaXJJbnRlcmZhY2UgfCBCdWZmZXIsXG4gIGZpbmFsaXR5UHJvdmlkZXJLZXlzOiBCdWZmZXJbXSxcbiAgc3Rha2luZ1RpbWVsb2NrOiBudW1iZXIsXG4gIHBhcmFtczogRGVzY3JpcHRvclN0YWtpbmdQYXJhbXNcbik6IEJhYnlsb25EZXNjcmlwdG9yQnVpbGRlciB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHVzZXJLZXkpKSB7XG4gICAgdXNlcktleSA9IHVzZXJLZXkucHVibGljS2V5O1xuICB9XG4gIHJldHVybiBuZXcgQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyKFxuICAgIHVzZXJLZXksXG4gICAgZmluYWxpdHlQcm92aWRlcktleXMsXG4gICAgcGFyYW1zLmNvdmVuYW50Tm9Db29yZFBrcy5tYXAoKHBrKSA9PiBCdWZmZXIuZnJvbShwaywgJ2hleCcpKSxcbiAgICBwYXJhbXMuY292ZW5hbnRRdW9ydW0sXG4gICAgc3Rha2luZ1RpbWVsb2NrLFxuICAgIHBhcmFtcy51bmJvbmRpbmdUaW1lXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNjcmlwdG9yUHJvdmlkZXJGb3JTdGFraW5nUGFyYW1zKFxuICBzdGFrZXJCdGNJbmZvOiBQaWNrPFN0YWtlckluZm8sICdwdWJsaWNLZXlOb0Nvb3JkSGV4Jz4sXG4gIHN0YWtpbmdJbnB1dDogU3Rha2luZ0lucHV0cyxcbiAgc3Rha2luZ1BhcmFtczogRGVzY3JpcHRvclN0YWtpbmdQYXJhbXNcbik6IEJhYnlsb25EZXNjcmlwdG9yQnVpbGRlciB7XG4gIGNvbnN0IHVzZXJLZXkgPSBCdWZmZXIuZnJvbShzdGFrZXJCdGNJbmZvLnB1YmxpY0tleU5vQ29vcmRIZXgsICdoZXgnKTtcbiAgY29uc3QgZmluYWxpdHlQcm92aWRlcktleSA9IEJ1ZmZlci5mcm9tKHN0YWtpbmdJbnB1dC5maW5hbGl0eVByb3ZpZGVyUGtOb0Nvb3JkSGV4LCAnaGV4Jyk7XG4gIHJldHVybiBnZXREZXNjcmlwdG9yQnVpbGRlckZvclBhcmFtcyh1c2VyS2V5LCBbZmluYWxpdHlQcm92aWRlcktleV0sIHN0YWtpbmdJbnB1dC5zdGFraW5nVGltZWxvY2ssIHN0YWtpbmdQYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVzdG5ldERlc2NyaXB0b3JCdWlsZGVyKFxuICB1c2VyS2V5OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlIHwgdXR4b2xpYi5FQ1BhaXJJbnRlcmZhY2UgfCBCdWZmZXIsXG4gIHtcbiAgICBmaW5hbGl0eVByb3ZpZGVyS2V5cyA9IFt0ZXN0bmV0RmluYWxpdHlQcm92aWRlcjBdLFxuICAgIHBhcmFtcyA9IGdldEJhYnlsb25QYXJhbUJ5VmVyc2lvbig1LCBnZXRTdGFraW5nUGFyYW1zKCd0ZXN0bmV0JykpLFxuICAgIHN0YWtpbmdUaW1lbG9jayA9IHBhcmFtcy5taW5TdGFraW5nVGltZUJsb2NrcyxcbiAgfToge1xuICAgIGZpbmFsaXR5UHJvdmlkZXJLZXlzPzogQnVmZmVyW107XG4gICAgcGFyYW1zPzogU3Rha2luZ1BhcmFtcztcbiAgICBzdGFraW5nVGltZWxvY2s/OiBudW1iZXI7XG4gIH0gPSB7fVxuKTogQmFieWxvbkRlc2NyaXB0b3JCdWlsZGVyIHtcbiAgcmV0dXJuIGdldERlc2NyaXB0b3JCdWlsZGVyRm9yUGFyYW1zKHVzZXJLZXksIGZpbmFsaXR5UHJvdmlkZXJLZXlzLCBzdGFraW5nVGltZWxvY2ssIHBhcmFtcyk7XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { BIP32Interface } from '@bitgo-beta/utxo-lib';
4
2
  /**
5
- * Script type for a descriptor. This is either a p2sh (sh) or a p2sh-p2wsh (sh-wsh) script.
3
+ * Script type for a descriptor.
4
+ *
5
+ * See https://docs.coredao.org/docs/Learn/products/btc-staking/design#p2shp2wsh-output
6
6
  */
7
- export type ScriptType = 'sh' | 'sh-wsh';
7
+ export type ScriptType = 'sh' | 'sh-wsh' | 'wsh';
8
8
  /**
9
9
  * Create a multi-sig descriptor to produce a coredao staking address
10
10
  * @param scriptType segwit or legacy
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/coreDao/descriptor.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC;AASzC;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,EACxC,QAAQ,UAAO,GACd,MAAM,CAYR"}
1
+ {"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/coreDao/descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;AASjD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,EACxC,QAAQ,UAAO,GACd,MAAM,CAmBR"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMultiSigDescriptor = void 0;
3
+ exports.createMultiSigDescriptor = createMultiSigDescriptor;
4
+ const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
4
5
  function asDescriptorKey(key, neutered) {
5
6
  if (Buffer.isBuffer(key)) {
6
7
  return key.toString('hex');
@@ -24,8 +25,14 @@ function createMultiSigDescriptor(scriptType, locktime, m, orderedKeys, neutered
24
25
  throw new Error(`locktime (${locktime}) must be greater than 0`);
25
26
  }
26
27
  const keys = orderedKeys.map((key) => asDescriptorKey(key, neutered));
27
- const inner = `and_v(r:after(${locktime}),multi(${m},${keys.join(',')}))`;
28
- return scriptType === 'sh' ? `sh(${inner})` : `sh(wsh(${inner}))`;
28
+ const inner = { and_v: [{ 'r:after': locktime }, { multi: [m, ...keys] }] };
29
+ switch (scriptType) {
30
+ case 'sh':
31
+ return wasm_miniscript_1.ast.formatNode({ sh: inner });
32
+ case 'sh-wsh':
33
+ return wasm_miniscript_1.ast.formatNode({ sh: { wsh: inner } });
34
+ case 'wsh':
35
+ return wasm_miniscript_1.ast.formatNode({ wsh: inner });
36
+ }
29
37
  }
30
- exports.createMultiSigDescriptor = createMultiSigDescriptor;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlRGFvL2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsU0FBUyxlQUFlLENBQUMsR0FBNEIsRUFBRSxRQUFpQjtJQUN0RSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzVCO0lBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDN0QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQ3RDLFVBQXNCLEVBQ3RCLFFBQWdCLEVBQ2hCLENBQVMsRUFDVCxXQUF3QyxFQUN4QyxRQUFRLEdBQUcsSUFBSTtJQUVmLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLE1BQU0sQ0FBQyx1REFBdUQsV0FBVyxDQUFDLE1BQU0sc0JBQXNCLENBQ3ZHLENBQUM7S0FDSDtJQUNELElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsUUFBUSwwQkFBMEIsQ0FBQyxDQUFDO0tBQ2xFO0lBQ0QsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixRQUFRLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztJQUMxRSxPQUFPLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUM7QUFDcEUsQ0FBQztBQWxCRCw0REFrQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuLyoqXG4gKiBTY3JpcHQgdHlwZSBmb3IgYSBkZXNjcmlwdG9yLiBUaGlzIGlzIGVpdGhlciBhIHAyc2ggKHNoKSBvciBhIHAyc2gtcDJ3c2ggKHNoLXdzaCkgc2NyaXB0LlxuICovXG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlID0gJ3NoJyB8ICdzaC13c2gnO1xuXG5mdW5jdGlvbiBhc0Rlc2NyaXB0b3JLZXkoa2V5OiBCSVAzMkludGVyZmFjZSB8IEJ1ZmZlciwgbmV1dGVyZWQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGtleSkpIHtcbiAgICByZXR1cm4ga2V5LnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuICByZXR1cm4gKG5ldXRlcmVkID8ga2V5Lm5ldXRlcmVkKCkgOiBrZXkpLnRvQmFzZTU4KCkgKyAnLyonO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIG11bHRpLXNpZyBkZXNjcmlwdG9yIHRvIHByb2R1Y2UgYSBjb3JlZGFvIHN0YWtpbmcgYWRkcmVzc1xuICogQHBhcmFtIHNjcmlwdFR5cGUgc2Vnd2l0IG9yIGxlZ2FjeVxuICogQHBhcmFtIGxvY2t0aW1lIGxvY2t0aW1lIGZvciBDTFRWXG4gKiBAcGFyYW0gbSBUb3RhbCBudW1iZXIgb2Yga2V5cyByZXF1aXJlZCB0byB1bmxvY2tcbiAqIEBwYXJhbSBvcmRlcmVkS2V5cyBJZiBCaXAzMkludGVyZmFjZXMsIHRoZXNlIGFyZSB4cHJ2cyBvciB4cHVicyBhbmQgYXJlIGRlcml2YWJsZS5cbiAqICAgICAgICAgICAgICAgICAgICBJZiB0aGV5IGFyZSBidWZmZXJzLCB0aGVuIHRoZXkgYXJlIHB1Yi9wcnYga2V5cyBhbmQgYXJlIG5vdCBkZXJpdmFibGUuXG4gKiBAcGFyYW0gbmV1dGVyZWQgSWYgdHJ1ZSwgbmV1dGVyIHRoZSBrZXlzLiBEZWZhdWx0IHRvIHRydWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU11bHRpU2lnRGVzY3JpcHRvcihcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZSxcbiAgbG9ja3RpbWU6IG51bWJlcixcbiAgbTogbnVtYmVyLFxuICBvcmRlcmVkS2V5czogKEJJUDMySW50ZXJmYWNlIHwgQnVmZmVyKVtdLFxuICBuZXV0ZXJlZCA9IHRydWVcbik6IHN0cmluZyB7XG4gIGlmIChtID4gb3JkZXJlZEtleXMubGVuZ3RoIHx8IG0gPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYG0gKCR7bX0pIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2Yga2V5cyAoJHtvcmRlcmVkS2V5cy5sZW5ndGh9KSBhbmQgZ3JlYXRlciB0aGFuIDBgXG4gICAgKTtcbiAgfVxuICBpZiAobG9ja3RpbWUgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbG9ja3RpbWUgKCR7bG9ja3RpbWV9KSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwYCk7XG4gIH1cbiAgY29uc3Qga2V5cyA9IG9yZGVyZWRLZXlzLm1hcCgoa2V5KSA9PiBhc0Rlc2NyaXB0b3JLZXkoa2V5LCBuZXV0ZXJlZCkpO1xuICBjb25zdCBpbm5lciA9IGBhbmRfdihyOmFmdGVyKCR7bG9ja3RpbWV9KSxtdWx0aSgke219LCR7a2V5cy5qb2luKCcsJyl9KSlgO1xuICByZXR1cm4gc2NyaXB0VHlwZSA9PT0gJ3NoJyA/IGBzaCgke2lubmVyfSlgIDogYHNoKHdzaCgke2lubmVyfSkpYDtcbn1cbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlRGFvL2Rlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEwQkEsNERBeUJDO0FBbERELDREQUE2QztBQVM3QyxTQUFTLGVBQWUsQ0FBQyxHQUE0QixFQUFFLFFBQWlCO0lBQ3RFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDN0QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQ3RDLFVBQXNCLEVBQ3RCLFFBQWdCLEVBQ2hCLENBQVMsRUFDVCxXQUF3QyxFQUN4QyxRQUFRLEdBQUcsSUFBSTtJQUVmLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2IsTUFBTSxDQUFDLHVEQUF1RCxXQUFXLENBQUMsTUFBTSxzQkFBc0IsQ0FDdkcsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsUUFBUSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdEUsTUFBTSxLQUFLLEdBQXVCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNoRyxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssSUFBSTtZQUNQLE9BQU8scUJBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2QyxLQUFLLFFBQVE7WUFDWCxPQUFPLHFCQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCxLQUFLLEtBQUs7WUFDUixPQUFPLHFCQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGFzdCB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG4vKipcbiAqIFNjcmlwdCB0eXBlIGZvciBhIGRlc2NyaXB0b3IuXG4gKlxuICogU2VlIGh0dHBzOi8vZG9jcy5jb3JlZGFvLm9yZy9kb2NzL0xlYXJuL3Byb2R1Y3RzL2J0Yy1zdGFraW5nL2Rlc2lnbiNwMnNocDJ3c2gtb3V0cHV0XG4gKi9cbmV4cG9ydCB0eXBlIFNjcmlwdFR5cGUgPSAnc2gnIHwgJ3NoLXdzaCcgfCAnd3NoJztcblxuZnVuY3Rpb24gYXNEZXNjcmlwdG9yS2V5KGtleTogQklQMzJJbnRlcmZhY2UgfCBCdWZmZXIsIG5ldXRlcmVkOiBib29sZWFuKTogc3RyaW5nIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihrZXkpKSB7XG4gICAgcmV0dXJuIGtleS50b1N0cmluZygnaGV4Jyk7XG4gIH1cbiAgcmV0dXJuIChuZXV0ZXJlZCA/IGtleS5uZXV0ZXJlZCgpIDoga2V5KS50b0Jhc2U1OCgpICsgJy8qJztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtdWx0aS1zaWcgZGVzY3JpcHRvciB0byBwcm9kdWNlIGEgY29yZWRhbyBzdGFraW5nIGFkZHJlc3NcbiAqIEBwYXJhbSBzY3JpcHRUeXBlIHNlZ3dpdCBvciBsZWdhY3lcbiAqIEBwYXJhbSBsb2NrdGltZSBsb2NrdGltZSBmb3IgQ0xUVlxuICogQHBhcmFtIG0gVG90YWwgbnVtYmVyIG9mIGtleXMgcmVxdWlyZWQgdG8gdW5sb2NrXG4gKiBAcGFyYW0gb3JkZXJlZEtleXMgSWYgQmlwMzJJbnRlcmZhY2VzLCB0aGVzZSBhcmUgeHBydnMgb3IgeHB1YnMgYW5kIGFyZSBkZXJpdmFibGUuXG4gKiAgICAgICAgICAgICAgICAgICAgSWYgdGhleSBhcmUgYnVmZmVycywgdGhlbiB0aGV5IGFyZSBwdWIvcHJ2IGtleXMgYW5kIGFyZSBub3QgZGVyaXZhYmxlLlxuICogQHBhcmFtIG5ldXRlcmVkIElmIHRydWUsIG5ldXRlciB0aGUga2V5cy4gRGVmYXVsdCB0byB0cnVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNdWx0aVNpZ0Rlc2NyaXB0b3IoXG4gIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGUsXG4gIGxvY2t0aW1lOiBudW1iZXIsXG4gIG06IG51bWJlcixcbiAgb3JkZXJlZEtleXM6IChCSVAzMkludGVyZmFjZSB8IEJ1ZmZlcilbXSxcbiAgbmV1dGVyZWQgPSB0cnVlXG4pOiBzdHJpbmcge1xuICBpZiAobSA+IG9yZGVyZWRLZXlzLmxlbmd0aCB8fCBtIDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBtICgke219KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGtleXMgKCR7b3JkZXJlZEtleXMubGVuZ3RofSkgYW5kIGdyZWF0ZXIgdGhhbiAwYFxuICAgICk7XG4gIH1cbiAgaWYgKGxvY2t0aW1lIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGxvY2t0aW1lICgke2xvY2t0aW1lfSkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMGApO1xuICB9XG4gIGNvbnN0IGtleXMgPSBvcmRlcmVkS2V5cy5tYXAoKGtleSkgPT4gYXNEZXNjcmlwdG9yS2V5KGtleSwgbmV1dGVyZWQpKTtcbiAgY29uc3QgaW5uZXI6IGFzdC5NaW5pc2NyaXB0Tm9kZSA9IHsgYW5kX3Y6IFt7ICdyOmFmdGVyJzogbG9ja3RpbWUgfSwgeyBtdWx0aTogW20sIC4uLmtleXNdIH1dIH07XG4gIHN3aXRjaCAoc2NyaXB0VHlwZSkge1xuICAgIGNhc2UgJ3NoJzpcbiAgICAgIHJldHVybiBhc3QuZm9ybWF0Tm9kZSh7IHNoOiBpbm5lciB9KTtcbiAgICBjYXNlICdzaC13c2gnOlxuICAgICAgcmV0dXJuIGFzdC5mb3JtYXROb2RlKHsgc2g6IHsgd3NoOiBpbm5lciB9IH0pO1xuICAgIGNhc2UgJ3dzaCc6XG4gICAgICByZXR1cm4gYXN0LmZvcm1hdE5vZGUoeyB3c2g6IGlubmVyIH0pO1xuICB9XG59XG4iXX0=
@@ -1,8 +1,8 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- export declare const CORE_DAO_TESTNET_CHAIN_ID: Buffer;
4
- export declare const CORE_DAO_MAINNET_CHAIN_ID: Buffer;
5
- export declare const CORE_DAO_SATOSHI_PLUS_IDENTIFIER: Buffer;
1
+ export declare const CORE_DAO_DEVNET_CHAIN_ID: Buffer<ArrayBuffer>;
2
+ export declare const CORE_DAO_TESTNET2_CHAIN_ID: Buffer<ArrayBuffer>;
3
+ export declare const CORE_DAO_TESTNET_CHAIN_ID: Buffer<ArrayBuffer>;
4
+ export declare const CORE_DAO_MAINNET_CHAIN_ID: Buffer<ArrayBuffer>;
5
+ export declare const CORE_DAO_SATOSHI_PLUS_IDENTIFIER: Buffer<ArrayBuffer>;
6
6
  export declare function encodeTimelock(timelock: number): Buffer;
7
7
  export declare function decodeTimelock(buffer: Buffer): number;
8
8
  type BaseParams = {
@@ -1 +1 @@
1
- {"version":3,"file":"opReturn.d.ts","sourceRoot":"","sources":["../../../src/coreDao/opReturn.ts"],"names":[],"mappings":";;AAGA,eAAO,MAAM,yBAAyB,QAA6B,CAAC;AACpE,eAAO,MAAM,yBAAyB,QAA6B,CAAC;AACpE,eAAO,MAAM,gCAAgC,QAAiC,CAAC;AAI/E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,CAAC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE5F;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAAC,EAChD,OAAO,EACP,OAAO,EACP,SAAS,EACT,SAAS,EACT,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,GAAG,MAAM,CAgFzB;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAyD/E;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAUvD"}
1
+ {"version":3,"file":"opReturn.d.ts","sourceRoot":"","sources":["../../../src/coreDao/opReturn.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,wBAAwB,qBAA6B,CAAC;AACnE,eAAO,MAAM,0BAA0B,qBAA6B,CAAC;AACrE,eAAO,MAAM,yBAAyB,qBAA6B,CAAC;AACpE,eAAO,MAAM,yBAAyB,qBAA6B,CAAC;AACpE,eAAO,MAAM,gCAAgC,qBAAiC,CAAC;AAI/E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,CAAC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE5F;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAAC,EAChD,OAAO,EACP,OAAO,EACP,SAAS,EACT,SAAS,EACT,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,GAAG,MAAM,CAuFzB;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAkE/E;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAUvD"}