@bitgo-beta/sdk-coin-kaspa 0.0.1-beta.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 (61) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +126 -0
  3. package/dist/src/index.d.ts +5 -0
  4. package/dist/src/index.d.ts.map +1 -0
  5. package/dist/src/index.js +44 -0
  6. package/dist/src/kaspa.d.ts +64 -0
  7. package/dist/src/kaspa.d.ts.map +1 -0
  8. package/dist/src/kaspa.js +246 -0
  9. package/dist/src/lib/constants.d.ts +12 -0
  10. package/dist/src/lib/constants.d.ts.map +1 -0
  11. package/dist/src/lib/constants.js +18 -0
  12. package/dist/src/lib/iface.d.ts +109 -0
  13. package/dist/src/lib/iface.d.ts.map +1 -0
  14. package/dist/src/lib/iface.js +3 -0
  15. package/dist/src/lib/index.d.ts +10 -0
  16. package/dist/src/lib/index.d.ts.map +1 -0
  17. package/dist/src/lib/index.js +36 -0
  18. package/dist/src/lib/keyPair.d.ts +22 -0
  19. package/dist/src/lib/keyPair.d.ts.map +1 -0
  20. package/dist/src/lib/keyPair.js +61 -0
  21. package/dist/src/lib/sighash.d.ts +25 -0
  22. package/dist/src/lib/sighash.d.ts.map +1 -0
  23. package/dist/src/lib/sighash.js +191 -0
  24. package/dist/src/lib/transaction.d.ts +53 -0
  25. package/dist/src/lib/transaction.d.ts.map +1 -0
  26. package/dist/src/lib/transaction.js +133 -0
  27. package/dist/src/lib/transactionBuilder.d.ts +58 -0
  28. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  29. package/dist/src/lib/transactionBuilder.js +139 -0
  30. package/dist/src/lib/transactionBuilderFactory.d.ts +15 -0
  31. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  32. package/dist/src/lib/transactionBuilderFactory.js +25 -0
  33. package/dist/src/lib/utils.d.ts +43 -0
  34. package/dist/src/lib/utils.d.ts.map +1 -0
  35. package/dist/src/lib/utils.js +236 -0
  36. package/dist/src/register.d.ts +3 -0
  37. package/dist/src/register.d.ts.map +1 -0
  38. package/dist/src/register.js +10 -0
  39. package/dist/test/fixtures/kaspa.fixtures.d.ts +29 -0
  40. package/dist/test/fixtures/kaspa.fixtures.d.ts.map +1 -0
  41. package/dist/test/fixtures/kaspa.fixtures.js +90 -0
  42. package/dist/test/unit/coin.test.d.ts +2 -0
  43. package/dist/test/unit/coin.test.d.ts.map +1 -0
  44. package/dist/test/unit/coin.test.js +225 -0
  45. package/dist/test/unit/keyPair.test.d.ts +2 -0
  46. package/dist/test/unit/keyPair.test.d.ts.map +1 -0
  47. package/dist/test/unit/keyPair.test.js +90 -0
  48. package/dist/test/unit/transaction.test.d.ts +2 -0
  49. package/dist/test/unit/transaction.test.d.ts.map +1 -0
  50. package/dist/test/unit/transaction.test.js +206 -0
  51. package/dist/test/unit/transactionBuilder.test.d.ts +2 -0
  52. package/dist/test/unit/transactionBuilder.test.d.ts.map +1 -0
  53. package/dist/test/unit/transactionBuilder.test.js +220 -0
  54. package/dist/test/unit/transactionFlow.test.d.ts +8 -0
  55. package/dist/test/unit/transactionFlow.test.d.ts.map +1 -0
  56. package/dist/test/unit/transactionFlow.test.js +105 -0
  57. package/dist/test/unit/utils.test.d.ts +2 -0
  58. package/dist/test/unit/utils.test.d.ts.map +1 -0
  59. package/dist/test/unit/utils.test.js +159 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -0
  61. package/package.json +53 -0
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const transaction_1 = require("./transaction");
6
+ const utils_1 = require("./utils");
7
+ const keyPair_1 = require("./keyPair");
8
+ const constants_1 = require("./constants");
9
+ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
10
+ constructor(coinConfig) {
11
+ super(coinConfig);
12
+ this._inputs = [];
13
+ this._outputs = [];
14
+ this._fee = constants_1.DEFAULT_FEE;
15
+ this._fromAddress = '';
16
+ this._transaction = new transaction_1.Transaction(coinConfig.name);
17
+ }
18
+ /** @inheritDoc */
19
+ get transaction() {
20
+ return this._transaction;
21
+ }
22
+ /** @inheritDoc */
23
+ set transaction(tx) {
24
+ this._transaction = tx;
25
+ }
26
+ /**
27
+ * Set the sender address.
28
+ */
29
+ sender(address) {
30
+ if (!(0, utils_1.isValidKaspaAddress)(address)) {
31
+ throw new Error(`Invalid Kaspa address: ${address}`);
32
+ }
33
+ this._fromAddress = address;
34
+ return this;
35
+ }
36
+ /**
37
+ * Add a recipient output.
38
+ */
39
+ to(address, amount) {
40
+ if (!(0, utils_1.isValidKaspaAddress)(address)) {
41
+ throw new Error(`Invalid Kaspa recipient address: ${address}`);
42
+ }
43
+ this._outputs.push({ address, amount });
44
+ return this;
45
+ }
46
+ /**
47
+ * Set transaction fee in sompi.
48
+ */
49
+ fee(fee) {
50
+ this._fee = fee;
51
+ return this;
52
+ }
53
+ /**
54
+ * Add a UTXO input.
55
+ */
56
+ addInput(utxo) {
57
+ if (!utxo.transactionId || utxo.transactionIndex === undefined) {
58
+ throw new Error('Invalid UTXO: missing transactionId or transactionIndex');
59
+ }
60
+ this._inputs.push(utxo);
61
+ return this;
62
+ }
63
+ /**
64
+ * Add multiple UTXO inputs.
65
+ */
66
+ addInputs(utxos) {
67
+ utxos.forEach((u) => this.addInput(u));
68
+ return this;
69
+ }
70
+ /** @inheritDoc */
71
+ fromImplementation(rawTransaction) {
72
+ const tx = transaction_1.Transaction.fromHex(this._coinConfig?.name || 'kaspa', rawTransaction);
73
+ this._transaction = tx;
74
+ this._inputs = tx.txData.inputs || [];
75
+ this._outputs = tx.txData.outputs || [];
76
+ this._fee = tx.txData.fee || constants_1.DEFAULT_FEE;
77
+ return tx;
78
+ }
79
+ /** @inheritDoc */
80
+ async buildImplementation() {
81
+ const txData = {
82
+ version: constants_1.TX_VERSION,
83
+ inputs: this._inputs,
84
+ outputs: this._outputs,
85
+ fee: this._fee,
86
+ lockTime: '0',
87
+ subnetworkId: '0000000000000000000000000000000000000000',
88
+ payload: '',
89
+ };
90
+ this._transaction = new transaction_1.Transaction(this._coinConfig?.name || 'kaspa', txData);
91
+ return this._transaction;
92
+ }
93
+ /** @inheritDoc */
94
+ signImplementation({ key }) {
95
+ const keyPair = new keyPair_1.KeyPair({ prv: key });
96
+ const privateKey = keyPair.getKeys().prv;
97
+ if (!privateKey) {
98
+ throw new sdk_core_1.SigningError('Missing private key');
99
+ }
100
+ this._transaction.sign(Buffer.from(privateKey, 'hex'));
101
+ return this._transaction;
102
+ }
103
+ /** @inheritDoc */
104
+ validateTransaction(_transaction) {
105
+ if (this._inputs.length === 0) {
106
+ throw new Error('At least one UTXO input is required');
107
+ }
108
+ if (this._outputs.length === 0) {
109
+ throw new Error('At least one output is required');
110
+ }
111
+ }
112
+ /** @inheritDoc */
113
+ validateKey(key) {
114
+ // Key validation handled in KeyPair
115
+ }
116
+ /** @inheritDoc */
117
+ validateAddress(address) {
118
+ if (!(0, utils_1.isValidKaspaAddress)(address.address)) {
119
+ throw new Error(`Invalid Kaspa address: ${address.address}`);
120
+ }
121
+ }
122
+ /** @inheritDoc */
123
+ validateRawTransaction(rawTransaction) {
124
+ try {
125
+ transaction_1.Transaction.fromHex(this._coinConfig?.name || 'kaspa', rawTransaction);
126
+ }
127
+ catch {
128
+ throw new Error('Invalid raw Kaspa transaction');
129
+ }
130
+ }
131
+ /** @inheritDoc */
132
+ validateValue(value) {
133
+ if (value.isLessThan(0)) {
134
+ throw new Error('Transaction value cannot be negative');
135
+ }
136
+ }
137
+ }
138
+ exports.TransactionBuilder = TransactionBuilder;
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXNHO0FBR3RHLCtDQUE0QztBQUU1QyxtQ0FBOEM7QUFDOUMsdUNBQW9DO0FBQ3BDLDJDQUFzRDtBQUV0RCxNQUFhLGtCQUFtQixTQUFRLGlDQUFzQjtJQU81RCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQU5WLFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBQy9CLGFBQVEsR0FBNkIsRUFBRSxDQUFDO1FBQ3hDLFNBQUksR0FBVyx1QkFBVyxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBSTFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVcsQ0FBQyxFQUFtQjtRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQWlCLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQWU7UUFDcEIsSUFBSSxDQUFDLElBQUEsMkJBQW1CLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUUsQ0FBQyxPQUFlLEVBQUUsTUFBYztRQUNoQyxJQUFJLENBQUMsSUFBQSwy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LENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpKRCxnREFpSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLCBCYXNlVHJhbnNhY3Rpb24sIEJhc2VLZXksIFNpZ25pbmdFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBLYXNwYVRyYW5zYWN0aW9uRGF0YSwgS2FzcGFVdHhvSW5wdXQsIEthc3BhVHJhbnNhY3Rpb25PdXRwdXQgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGlzVmFsaWRLYXNwYUFkZHJlc3MgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgREVGQVVMVF9GRUUsIFRYX1ZFUlNJT04gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfaW5wdXRzOiBLYXNwYVV0eG9JbnB1dFtdID0gW107XG4gIHByb3RlY3RlZCBfb3V0cHV0czogS2FzcGFUcmFuc2FjdGlvbk91dHB1dFtdID0gW107XG4gIHByb3RlY3RlZCBfZmVlOiBzdHJpbmcgPSBERUZBVUxUX0ZFRTtcbiAgcHJvdGVjdGVkIF9mcm9tQWRkcmVzcyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oY29pbkNvbmZpZy5uYW1lKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHg6IEJhc2VUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHggYXMgVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzZW5kZXIgYWRkcmVzcy5cbiAgICovXG4gIHNlbmRlcihhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRLYXNwYUFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBLYXNwYSBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuICAgIHRoaXMuX2Zyb21BZGRyZXNzID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSByZWNpcGllbnQgb3V0cHV0LlxuICAgKi9cbiAgdG8oYWRkcmVzczogc3RyaW5nLCBhbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEthc3BhQWRkcmVzcyhhZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEthc3BhIHJlY2lwaWVudCBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuICAgIHRoaXMuX291dHB1dHMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdHJhbnNhY3Rpb24gZmVlIGluIHNvbXBpLlxuICAgKi9cbiAgZmVlKGZlZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIFVUWE8gaW5wdXQuXG4gICAqL1xuICBhZGRJbnB1dCh1dHhvOiBLYXNwYVV0eG9JbnB1dCk6IHRoaXMge1xuICAgIGlmICghdXR4by50cmFuc2FjdGlvbklkIHx8IHV0eG8udHJhbnNhY3Rpb25JbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVVRYTzogbWlzc2luZyB0cmFuc2FjdGlvbklkIG9yIHRyYW5zYWN0aW9uSW5kZXgnKTtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRzLnB1c2godXR4byk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG11bHRpcGxlIFVUWE8gaW5wdXRzLlxuICAgKi9cbiAgYWRkSW5wdXRzKHV0eG9zOiBLYXNwYVV0eG9JbnB1dFtdKTogdGhpcyB7XG4gICAgdXR4b3MuZm9yRWFjaCgodSkgPT4gdGhpcy5hZGRJbnB1dCh1KSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gVHJhbnNhY3Rpb24uZnJvbUhleCgodGhpcyBhcyBhbnkpLl9jb2luQ29uZmlnPy5uYW1lIHx8ICdrYXNwYScsIHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuICAgIHRoaXMuX2lucHV0cyA9IHR4LnR4RGF0YS5pbnB1dHMgfHwgW107XG4gICAgdGhpcy5fb3V0cHV0cyA9IHR4LnR4RGF0YS5vdXRwdXRzIHx8IFtdO1xuICAgIHRoaXMuX2ZlZSA9IHR4LnR4RGF0YS5mZWUgfHwgREVGQVVMVF9GRUU7XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8QmFzZVRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHhEYXRhOiBLYXNwYVRyYW5zYWN0aW9uRGF0YSA9IHtcbiAgICAgIHZlcnNpb246IFRYX1ZFUlNJT04sXG4gICAgICBpbnB1dHM6IHRoaXMuX2lucHV0cyxcbiAgICAgIG91dHB1dHM6IHRoaXMuX291dHB1dHMsXG4gICAgICBmZWU6IHRoaXMuX2ZlZSxcbiAgICAgIGxvY2tUaW1lOiAnMCcsXG4gICAgICBzdWJuZXR3b3JrSWQ6ICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAgIHBheWxvYWQ6ICcnLFxuICAgIH07XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbigodGhpcyBhcyBhbnkpLl9jb2luQ29uZmlnPy5uYW1lIHx8ICdrYXNwYScsIHR4RGF0YSk7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IGtleVBhaXIuZ2V0S2V5cygpLnBydjtcbiAgICBpZiAoIXByaXZhdGVLZXkpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2lnbihCdWZmZXIuZnJvbShwcml2YXRlS2V5LCAnaGV4JykpO1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF90cmFuc2FjdGlvbj86IEJhc2VUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnB1dHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBVVFhPIGlucHV0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9vdXRwdXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdCBsZWFzdCBvbmUgb3V0cHV0IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogeyBrZXk6IHN0cmluZyB9KTogdm9pZCB7XG4gICAgLy8gS2V5IHZhbGlkYXRpb24gaGFuZGxlZCBpbiBLZXlQYWlyXG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IHsgYWRkcmVzczogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRLYXNwYUFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEthc3BhIGFkZHJlc3M6ICR7YWRkcmVzcy5hZGRyZXNzfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgVHJhbnNhY3Rpb24uZnJvbUhleCgodGhpcyBhcyBhbnkpLl9jb2luQ29uZmlnPy5uYW1lIHx8ICdrYXNwYScsIHJhd1RyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByYXcgS2FzcGEgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gdmFsdWUgY2Fubm90IGJlIG5lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
2
+ import { TransactionBuilder } from './transactionBuilder';
3
+ export declare class TransactionBuilderFactory {
4
+ protected _coinConfig: Readonly<StaticsBaseCoin>;
5
+ constructor(coinConfig: Readonly<StaticsBaseCoin>);
6
+ /**
7
+ * Get a base transaction builder for Kaspa transfers.
8
+ */
9
+ getBuilder(): TransactionBuilder;
10
+ /**
11
+ * Reconstruct a transaction builder from a raw transaction hex.
12
+ */
13
+ from(rawTransaction: string): TransactionBuilder;
14
+ }
15
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,yBAAyB;IACpC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAErC,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC;IAIjD;;OAEG;IACH,UAAU,IAAI,kBAAkB;IAIhC;;OAEG;IACH,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB;CAKjD"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionBuilderFactory = void 0;
4
+ const transactionBuilder_1 = require("./transactionBuilder");
5
+ class TransactionBuilderFactory {
6
+ constructor(coinConfig) {
7
+ this._coinConfig = coinConfig;
8
+ }
9
+ /**
10
+ * Get a base transaction builder for Kaspa transfers.
11
+ */
12
+ getBuilder() {
13
+ return new transactionBuilder_1.TransactionBuilder(this._coinConfig);
14
+ }
15
+ /**
16
+ * Reconstruct a transaction builder from a raw transaction hex.
17
+ */
18
+ from(rawTransaction) {
19
+ const builder = this.getBuilder();
20
+ builder.from(rawTransaction);
21
+ return builder;
22
+ }
23
+ }
24
+ exports.TransactionBuilderFactory = TransactionBuilderFactory;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2REFBMEQ7QUFFMUQsTUFBYSx5QkFBeUI7SUFHcEMsWUFBWSxVQUFxQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsY0FBc0I7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBdEJELDhEQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIHByb3RlY3RlZCBfY29pbkNvbmZpZzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IGNvaW5Db25maWc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgYmFzZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZvciBLYXNwYSB0cmFuc2ZlcnMuXG4gICAqL1xuICBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb25zdHJ1Y3QgYSB0cmFuc2FjdGlvbiBidWlsZGVyIGZyb20gYSByYXcgdHJhbnNhY3Rpb24gaGV4LlxuICAgKi9cbiAgZnJvbShyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBjb25zdCBidWlsZGVyID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgYnVpbGRlci5mcm9tKHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
@@ -0,0 +1,43 @@
1
+ import { BaseUtils } from '@bitgo-beta/sdk-core';
2
+ /**
3
+ * Validates a Kaspa address (mainnet or testnet)
4
+ */
5
+ export declare function isValidKaspaAddress(address: string): boolean;
6
+ /**
7
+ * Validates a Kaspa mainnet address
8
+ */
9
+ export declare function isValidMainnetAddress(address: string): boolean;
10
+ /**
11
+ * Validates a Kaspa testnet address
12
+ */
13
+ export declare function isValidTestnetAddress(address: string): boolean;
14
+ /**
15
+ * Derive a Kaspa P2PK (Schnorr) address from a compressed secp256k1 public key.
16
+ *
17
+ * @param compressedPubKey - 33-byte compressed secp256k1 public key (hex string or Buffer)
18
+ * @param hrp - human-readable part ('kaspa' or 'kaspatest')
19
+ */
20
+ export declare function pubKeyToKaspaAddress(compressedPubKey: string | Buffer, hrp: string): string;
21
+ /**
22
+ * Validates a secp256k1 public key (compressed or uncompressed)
23
+ */
24
+ export declare function isValidPublicKey(pub: string): boolean;
25
+ /**
26
+ * Validates a secp256k1 private key (32-byte hex)
27
+ */
28
+ export declare function isValidPrivateKey(prv: string): boolean;
29
+ /**
30
+ * Validates a transaction ID (64-char hex)
31
+ */
32
+ export declare function isValidTransactionId(txId: string): boolean;
33
+ export declare class Utils implements BaseUtils {
34
+ isValidAddress(address: string): boolean;
35
+ isValidBlockId(hash: string): boolean;
36
+ isValidPrivateKey(key: string): boolean;
37
+ isValidPublicKey(key: string): boolean;
38
+ isValidSignature(signature: string): boolean;
39
+ isValidTransactionId(txId: string): boolean;
40
+ }
41
+ declare const utils: Utils;
42
+ export default utils;
43
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA4B,MAAM,sBAAsB,CAAC;AAmH3E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAqB5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAoB3F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAatD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,qBAAa,KAAM,YAAW,SAAS;IACrC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG5C;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAC1B,eAAe,KAAK,CAAC"}
@@ -0,0 +1,236 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Utils = void 0;
4
+ exports.isValidKaspaAddress = isValidKaspaAddress;
5
+ exports.isValidMainnetAddress = isValidMainnetAddress;
6
+ exports.isValidTestnetAddress = isValidTestnetAddress;
7
+ exports.pubKeyToKaspaAddress = pubKeyToKaspaAddress;
8
+ exports.isValidPublicKey = isValidPublicKey;
9
+ exports.isValidPrivateKey = isValidPrivateKey;
10
+ exports.isValidTransactionId = isValidTransactionId;
11
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
12
+ const constants_1 = require("./constants");
13
+ // Kaspa address encoding uses a bech32-like scheme with ':' as separator
14
+ // and a custom checksum polynomial (same as Bitcoin Cash cashaddr).
15
+ const CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
16
+ const CHARSET_REVERSE = {};
17
+ for (let i = 0; i < CHARSET.length; i++) {
18
+ CHARSET_REVERSE[CHARSET[i]] = i;
19
+ }
20
+ const GENERATOR = [
21
+ BigInt('0x98f2bc8e61'),
22
+ BigInt('0x79b76d99e2'),
23
+ BigInt('0xf33e5fb3c4'),
24
+ BigInt('0xae2eabe2a8'),
25
+ BigInt('0x1e4f43e470'),
26
+ ];
27
+ function polymod(values) {
28
+ let c = 1n;
29
+ for (const d of values) {
30
+ const c0 = c >> 35n;
31
+ c = ((c & BigInt('0x07ffffffff')) << 5n) ^ BigInt(d);
32
+ for (let i = 0; i < 5; i++) {
33
+ if ((c0 >> BigInt(i)) & 1n) {
34
+ c ^= GENERATOR[i];
35
+ }
36
+ }
37
+ }
38
+ return c ^ 1n;
39
+ }
40
+ function prefixExpand(prefix) {
41
+ return [...prefix].map((c) => c.charCodeAt(0) & 0x1f).concat([0]);
42
+ }
43
+ function createChecksum(prefix, data) {
44
+ const values = prefixExpand(prefix).concat(data).concat([0, 0, 0, 0, 0, 0, 0, 0]);
45
+ const mod = polymod(values);
46
+ const ret = [];
47
+ for (let i = 7; i >= 0; i--) {
48
+ ret.push(Number((mod >> BigInt(5 * i)) & 31n));
49
+ }
50
+ return ret;
51
+ }
52
+ function verifyChecksum(prefix, data) {
53
+ const values = prefixExpand(prefix).concat(data);
54
+ return polymod(values) === 0n;
55
+ }
56
+ function convertBits(data, from, to, pad) {
57
+ let acc = 0;
58
+ let bits = 0;
59
+ const ret = [];
60
+ const maxv = (1 << to) - 1;
61
+ for (const value of data) {
62
+ acc = (acc << from) | value;
63
+ bits += from;
64
+ while (bits >= to) {
65
+ bits -= to;
66
+ ret.push((acc >> bits) & maxv);
67
+ }
68
+ }
69
+ if (pad && bits > 0) {
70
+ ret.push((acc << (to - bits)) & maxv);
71
+ }
72
+ return ret;
73
+ }
74
+ /**
75
+ * Encode data into a Kaspa bech32-like address.
76
+ */
77
+ function kaspaEncode(prefix, data) {
78
+ const checksum = createChecksum(prefix, data);
79
+ return (prefix +
80
+ ':' +
81
+ data
82
+ .concat(checksum)
83
+ .map((d) => CHARSET[d])
84
+ .join(''));
85
+ }
86
+ /**
87
+ * Decode a Kaspa bech32-like address.
88
+ * Returns { prefix, data } or throws on error.
89
+ */
90
+ function kaspacDecode(address) {
91
+ const colonIdx = address.lastIndexOf(':');
92
+ if (colonIdx < 1) {
93
+ throw new Error('Missing prefix separator');
94
+ }
95
+ const prefix = address.slice(0, colonIdx).toLowerCase();
96
+ const encoded = address.slice(colonIdx + 1).toLowerCase();
97
+ const data = [];
98
+ for (const c of encoded) {
99
+ const val = CHARSET_REVERSE[c];
100
+ if (val === undefined) {
101
+ throw new Error(`Invalid character: ${c}`);
102
+ }
103
+ data.push(val);
104
+ }
105
+ if (!verifyChecksum(prefix, data)) {
106
+ throw new Error('Invalid checksum');
107
+ }
108
+ return { prefix, data: data.slice(0, -8) };
109
+ }
110
+ /**
111
+ * Validates a Kaspa address (mainnet or testnet)
112
+ */
113
+ function isValidKaspaAddress(address) {
114
+ if (!address || typeof address !== 'string') {
115
+ return false;
116
+ }
117
+ const colonIdx = address.lastIndexOf(':');
118
+ if (colonIdx < 1) {
119
+ return false;
120
+ }
121
+ const prefix = address.slice(0, colonIdx).toLowerCase();
122
+ if (prefix !== constants_1.MAINNET_PREFIX && prefix !== constants_1.TESTNET_PREFIX) {
123
+ return false;
124
+ }
125
+ try {
126
+ const decoded = kaspacDecode(address);
127
+ return decoded.data.length > 0;
128
+ }
129
+ catch {
130
+ return false;
131
+ }
132
+ }
133
+ /**
134
+ * Validates a Kaspa mainnet address
135
+ */
136
+ function isValidMainnetAddress(address) {
137
+ return isValidKaspaAddress(address) && address.toLowerCase().startsWith(constants_1.MAINNET_PREFIX + ':');
138
+ }
139
+ /**
140
+ * Validates a Kaspa testnet address
141
+ */
142
+ function isValidTestnetAddress(address) {
143
+ return isValidKaspaAddress(address) && address.toLowerCase().startsWith(constants_1.TESTNET_PREFIX + ':');
144
+ }
145
+ /**
146
+ * Derive a Kaspa P2PK (Schnorr) address from a compressed secp256k1 public key.
147
+ *
148
+ * @param compressedPubKey - 33-byte compressed secp256k1 public key (hex string or Buffer)
149
+ * @param hrp - human-readable part ('kaspa' or 'kaspatest')
150
+ */
151
+ function pubKeyToKaspaAddress(compressedPubKey, hrp) {
152
+ const pubKeyBytes = Buffer.isBuffer(compressedPubKey)
153
+ ? compressedPubKey
154
+ : Buffer.from(compressedPubKey, 'hex');
155
+ if (pubKeyBytes.length !== 33) {
156
+ throw new Error(`Expected 33-byte compressed public key, got ${pubKeyBytes.length}`);
157
+ }
158
+ // X-only public key: drop the prefix byte (02 or 03), keep 32-byte x-coordinate
159
+ const xOnlyPubKey = pubKeyBytes.slice(1);
160
+ // Kaspa P2PK address:
161
+ // - version nibble: 0 (Schnorr secp256k1 P2PK)
162
+ // - payload: x-only public key (32 bytes)
163
+ const versionByte = 0;
164
+ const payload = Buffer.concat([Buffer.from([versionByte]), xOnlyPubKey]);
165
+ const words = convertBits(payload, 8, 5, true);
166
+ return kaspaEncode(hrp, words);
167
+ }
168
+ /**
169
+ * Validates a secp256k1 public key (compressed or uncompressed)
170
+ */
171
+ function isValidPublicKey(pub) {
172
+ if (!pub || typeof pub !== 'string') {
173
+ return false;
174
+ }
175
+ try {
176
+ const buf = Buffer.from(pub, 'hex');
177
+ if (buf.length === 33) {
178
+ return buf[0] === 0x02 || buf[0] === 0x03;
179
+ }
180
+ if (buf.length === 65) {
181
+ return buf[0] === 0x04;
182
+ }
183
+ return false;
184
+ }
185
+ catch {
186
+ return false;
187
+ }
188
+ }
189
+ /**
190
+ * Validates a secp256k1 private key (32-byte hex)
191
+ */
192
+ function isValidPrivateKey(prv) {
193
+ if (!prv || typeof prv !== 'string') {
194
+ return false;
195
+ }
196
+ if ((0, sdk_core_1.isValidXprv)(prv) || (0, sdk_core_1.isValidXpub)(prv)) {
197
+ return true;
198
+ }
199
+ try {
200
+ const buf = Buffer.from(prv.slice(0, 64), 'hex');
201
+ return buf.length === 32;
202
+ }
203
+ catch {
204
+ return false;
205
+ }
206
+ }
207
+ /**
208
+ * Validates a transaction ID (64-char hex)
209
+ */
210
+ function isValidTransactionId(txId) {
211
+ return /^[0-9a-fA-F]{64}$/.test(txId);
212
+ }
213
+ class Utils {
214
+ isValidAddress(address) {
215
+ return isValidKaspaAddress(address);
216
+ }
217
+ isValidBlockId(hash) {
218
+ return /^[0-9a-fA-F]{64}$/.test(hash);
219
+ }
220
+ isValidPrivateKey(key) {
221
+ return isValidPrivateKey(key);
222
+ }
223
+ isValidPublicKey(key) {
224
+ return isValidPublicKey(key);
225
+ }
226
+ isValidSignature(signature) {
227
+ return /^[0-9a-fA-F]{128,130}$/.test(signature);
228
+ }
229
+ isValidTransactionId(txId) {
230
+ return isValidTransactionId(txId);
231
+ }
232
+ }
233
+ exports.Utils = Utils;
234
+ const utils = new Utils();
235
+ exports.default = utils;
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNIQSxrREFxQkM7QUFLRCxzREFFQztBQUtELHNEQUVDO0FBUUQsb0RBb0JDO0FBS0QsNENBZ0JDO0FBS0QsOENBYUM7QUFLRCxvREFFQztBQW5PRCxtREFBMkU7QUFDM0UsMkNBQTZEO0FBRTdELHlFQUF5RTtBQUN6RSxvRUFBb0U7QUFFcEUsTUFBTSxPQUFPLEdBQUcsa0NBQWtDLENBQUM7QUFDbkQsTUFBTSxlQUFlLEdBQTJCLEVBQUUsQ0FBQztBQUNuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3hDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHO0lBQ2hCLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQztJQUN0QixNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDdEIsTUFBTSxDQUFDLGNBQWMsQ0FBQztDQUN2QixDQUFDO0FBRUYsU0FBUyxPQUFPLENBQUMsTUFBZ0I7SUFDL0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ1gsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ3BCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE1BQWM7SUFDbEMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxJQUFjO0lBQ3BELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztJQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLE1BQWMsRUFBRSxJQUFjO0lBQ3BELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUF5QixFQUFFLElBQVksRUFBRSxFQUFVLEVBQUUsR0FBWTtJQUNwRixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDWixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2IsT0FBTyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFjO0lBQ2pELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsT0FBTyxDQUNMLE1BQU07UUFDTixHQUFHO1FBQ0gsSUFBSTthQUNELE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDaEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxZQUFZLENBQUMsT0FBZTtJQUNuQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFMUQsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO0lBQzFCLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDN0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsT0FBZTtJQUNqRCxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDakIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEQsSUFBSSxNQUFNLEtBQUssMEJBQWMsSUFBSSxNQUFNLEtBQUssMEJBQWMsRUFBRSxDQUFDO1FBQzNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsT0FBZTtJQUNuRCxPQUFPLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsMEJBQWMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNoRyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxPQUFlO0lBQ25ELE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQywwQkFBYyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLGdCQUFpQyxFQUFFLEdBQVc7SUFDakYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxDQUFDLENBQUMsZ0JBQWdCO1FBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRW5ELElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekMsc0JBQXNCO0lBQ3RCLCtDQUErQztJQUMvQywwQ0FBMEM7SUFDMUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUvQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsR0FBVztJQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN0QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksSUFBQSxzQkFBVyxFQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUEsc0JBQVcsRUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsTUFBYSxLQUFLO0lBQ2hCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxHQUFXO1FBQzNCLE9BQU8saUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQVk7UUFDL0IsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUF4QkQsc0JBd0JDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUMxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVXRpbHMsIGlzVmFsaWRYcHJ2LCBpc1ZhbGlkWHB1YiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IE1BSU5ORVRfUFJFRklYLCBURVNUTkVUX1BSRUZJWCB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuLy8gS2FzcGEgYWRkcmVzcyBlbmNvZGluZyB1c2VzIGEgYmVjaDMyLWxpa2Ugc2NoZW1lIHdpdGggJzonIGFzIHNlcGFyYXRvclxuLy8gYW5kIGEgY3VzdG9tIGNoZWNrc3VtIHBvbHlub21pYWwgKHNhbWUgYXMgQml0Y29pbiBDYXNoIGNhc2hhZGRyKS5cblxuY29uc3QgQ0hBUlNFVCA9ICdxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bCc7XG5jb25zdCBDSEFSU0VUX1JFVkVSU0U6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbmZvciAobGV0IGkgPSAwOyBpIDwgQ0hBUlNFVC5sZW5ndGg7IGkrKykge1xuICBDSEFSU0VUX1JFVkVSU0VbQ0hBUlNFVFtpXV0gPSBpO1xufVxuXG5jb25zdCBHRU5FUkFUT1IgPSBbXG4gIEJpZ0ludCgnMHg5OGYyYmM4ZTYxJyksXG4gIEJpZ0ludCgnMHg3OWI3NmQ5OWUyJyksXG4gIEJpZ0ludCgnMHhmMzNlNWZiM2M0JyksXG4gIEJpZ0ludCgnMHhhZTJlYWJlMmE4JyksXG4gIEJpZ0ludCgnMHgxZTRmNDNlNDcwJyksXG5dO1xuXG5mdW5jdGlvbiBwb2x5bW9kKHZhbHVlczogbnVtYmVyW10pOiBiaWdpbnQge1xuICBsZXQgYyA9IDFuO1xuICBmb3IgKGNvbnN0IGQgb2YgdmFsdWVzKSB7XG4gICAgY29uc3QgYzAgPSBjID4+IDM1bjtcbiAgICBjID0gKChjICYgQmlnSW50KCcweDA3ZmZmZmZmZmYnKSkgPDwgNW4pIF4gQmlnSW50KGQpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgICBpZiAoKGMwID4+IEJpZ0ludChpKSkgJiAxbikge1xuICAgICAgICBjIF49IEdFTkVSQVRPUltpXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGMgXiAxbjtcbn1cblxuZnVuY3Rpb24gcHJlZml4RXhwYW5kKHByZWZpeDogc3RyaW5nKTogbnVtYmVyW10ge1xuICByZXR1cm4gWy4uLnByZWZpeF0ubWFwKChjKSA9PiBjLmNoYXJDb2RlQXQoMCkgJiAweDFmKS5jb25jYXQoWzBdKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2hlY2tzdW0ocHJlZml4OiBzdHJpbmcsIGRhdGE6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICBjb25zdCB2YWx1ZXMgPSBwcmVmaXhFeHBhbmQocHJlZml4KS5jb25jYXQoZGF0YSkuY29uY2F0KFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSk7XG4gIGNvbnN0IG1vZCA9IHBvbHltb2QodmFsdWVzKTtcbiAgY29uc3QgcmV0OiBudW1iZXJbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gNzsgaSA+PSAwOyBpLS0pIHtcbiAgICByZXQucHVzaChOdW1iZXIoKG1vZCA+PiBCaWdJbnQoNSAqIGkpKSAmIDMxbikpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUNoZWNrc3VtKHByZWZpeDogc3RyaW5nLCBkYXRhOiBudW1iZXJbXSk6IGJvb2xlYW4ge1xuICBjb25zdCB2YWx1ZXMgPSBwcmVmaXhFeHBhbmQocHJlZml4KS5jb25jYXQoZGF0YSk7XG4gIHJldHVybiBwb2x5bW9kKHZhbHVlcykgPT09IDBuO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Qml0cyhkYXRhOiBCdWZmZXIgfCBVaW50OEFycmF5LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIHBhZDogYm9vbGVhbik6IG51bWJlcltdIHtcbiAgbGV0IGFjYyA9IDA7XG4gIGxldCBiaXRzID0gMDtcbiAgY29uc3QgcmV0OiBudW1iZXJbXSA9IFtdO1xuICBjb25zdCBtYXh2ID0gKDEgPDwgdG8pIC0gMTtcbiAgZm9yIChjb25zdCB2YWx1ZSBvZiBkYXRhKSB7XG4gICAgYWNjID0gKGFjYyA8PCBmcm9tKSB8IHZhbHVlO1xuICAgIGJpdHMgKz0gZnJvbTtcbiAgICB3aGlsZSAoYml0cyA+PSB0bykge1xuICAgICAgYml0cyAtPSB0bztcbiAgICAgIHJldC5wdXNoKChhY2MgPj4gYml0cykgJiBtYXh2KTtcbiAgICB9XG4gIH1cbiAgaWYgKHBhZCAmJiBiaXRzID4gMCkge1xuICAgIHJldC5wdXNoKChhY2MgPDwgKHRvIC0gYml0cykpICYgbWF4dik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBFbmNvZGUgZGF0YSBpbnRvIGEgS2FzcGEgYmVjaDMyLWxpa2UgYWRkcmVzcy5cbiAqL1xuZnVuY3Rpb24ga2FzcGFFbmNvZGUocHJlZml4OiBzdHJpbmcsIGRhdGE6IG51bWJlcltdKTogc3RyaW5nIHtcbiAgY29uc3QgY2hlY2tzdW0gPSBjcmVhdGVDaGVja3N1bShwcmVmaXgsIGRhdGEpO1xuICByZXR1cm4gKFxuICAgIHByZWZpeCArXG4gICAgJzonICtcbiAgICBkYXRhXG4gICAgICAuY29uY2F0KGNoZWNrc3VtKVxuICAgICAgLm1hcCgoZCkgPT4gQ0hBUlNFVFtkXSlcbiAgICAgIC5qb2luKCcnKVxuICApO1xufVxuXG4vKipcbiAqIERlY29kZSBhIEthc3BhIGJlY2gzMi1saWtlIGFkZHJlc3MuXG4gKiBSZXR1cm5zIHsgcHJlZml4LCBkYXRhIH0gb3IgdGhyb3dzIG9uIGVycm9yLlxuICovXG5mdW5jdGlvbiBrYXNwYWNEZWNvZGUoYWRkcmVzczogc3RyaW5nKTogeyBwcmVmaXg6IHN0cmluZzsgZGF0YTogbnVtYmVyW10gfSB7XG4gIGNvbnN0IGNvbG9uSWR4ID0gYWRkcmVzcy5sYXN0SW5kZXhPZignOicpO1xuICBpZiAoY29sb25JZHggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByZWZpeCBzZXBhcmF0b3InKTtcbiAgfVxuICBjb25zdCBwcmVmaXggPSBhZGRyZXNzLnNsaWNlKDAsIGNvbG9uSWR4KS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBlbmNvZGVkID0gYWRkcmVzcy5zbGljZShjb2xvbklkeCArIDEpLnRvTG93ZXJDYXNlKCk7XG5cbiAgY29uc3QgZGF0YTogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBjIG9mIGVuY29kZWQpIHtcbiAgICBjb25zdCB2YWwgPSBDSEFSU0VUX1JFVkVSU0VbY107XG4gICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY2hhcmFjdGVyOiAke2N9YCk7XG4gICAgfVxuICAgIGRhdGEucHVzaCh2YWwpO1xuICB9XG5cbiAgaWYgKCF2ZXJpZnlDaGVja3N1bShwcmVmaXgsIGRhdGEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoZWNrc3VtJyk7XG4gIH1cblxuICByZXR1cm4geyBwcmVmaXgsIGRhdGE6IGRhdGEuc2xpY2UoMCwgLTgpIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgS2FzcGEgYWRkcmVzcyAobWFpbm5ldCBvciB0ZXN0bmV0KVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEthc3BhQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFhZGRyZXNzIHx8IHR5cGVvZiBhZGRyZXNzICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGNvbG9uSWR4ID0gYWRkcmVzcy5sYXN0SW5kZXhPZignOicpO1xuICBpZiAoY29sb25JZHggPCAxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgcHJlZml4ID0gYWRkcmVzcy5zbGljZSgwLCBjb2xvbklkeCkudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHByZWZpeCAhPT0gTUFJTk5FVF9QUkVGSVggJiYgcHJlZml4ICE9PSBURVNUTkVUX1BSRUZJWCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGthc3BhY0RlY29kZShhZGRyZXNzKTtcbiAgICByZXR1cm4gZGVjb2RlZC5kYXRhLmxlbmd0aCA+IDA7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIEthc3BhIG1haW5uZXQgYWRkcmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1haW5uZXRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNWYWxpZEthc3BhQWRkcmVzcyhhZGRyZXNzKSAmJiBhZGRyZXNzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChNQUlOTkVUX1BSRUZJWCArICc6Jyk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgS2FzcGEgdGVzdG5ldCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkVGVzdG5ldEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1ZhbGlkS2FzcGFBZGRyZXNzKGFkZHJlc3MpICYmIGFkZHJlc3MudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFRFU1RORVRfUFJFRklYICsgJzonKTtcbn1cblxuLyoqXG4gKiBEZXJpdmUgYSBLYXNwYSBQMlBLIChTY2hub3JyKSBhZGRyZXNzIGZyb20gYSBjb21wcmVzc2VkIHNlY3AyNTZrMSBwdWJsaWMga2V5LlxuICpcbiAqIEBwYXJhbSBjb21wcmVzc2VkUHViS2V5IC0gMzMtYnl0ZSBjb21wcmVzc2VkIHNlY3AyNTZrMSBwdWJsaWMga2V5IChoZXggc3RyaW5nIG9yIEJ1ZmZlcilcbiAqIEBwYXJhbSBocnAgLSBodW1hbi1yZWFkYWJsZSBwYXJ0ICgna2FzcGEnIG9yICdrYXNwYXRlc3QnKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHViS2V5VG9LYXNwYUFkZHJlc3MoY29tcHJlc3NlZFB1YktleTogc3RyaW5nIHwgQnVmZmVyLCBocnA6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHB1YktleUJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKGNvbXByZXNzZWRQdWJLZXkpXG4gICAgPyBjb21wcmVzc2VkUHViS2V5XG4gICAgOiBCdWZmZXIuZnJvbShjb21wcmVzc2VkUHViS2V5IGFzIHN0cmluZywgJ2hleCcpO1xuXG4gIGlmIChwdWJLZXlCeXRlcy5sZW5ndGggIT09IDMzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAzMy1ieXRlIGNvbXByZXNzZWQgcHVibGljIGtleSwgZ290ICR7cHViS2V5Qnl0ZXMubGVuZ3RofWApO1xuICB9XG5cbiAgLy8gWC1vbmx5IHB1YmxpYyBrZXk6IGRyb3AgdGhlIHByZWZpeCBieXRlICgwMiBvciAwMyksIGtlZXAgMzItYnl0ZSB4LWNvb3JkaW5hdGVcbiAgY29uc3QgeE9ubHlQdWJLZXkgPSBwdWJLZXlCeXRlcy5zbGljZSgxKTtcblxuICAvLyBLYXNwYSBQMlBLIGFkZHJlc3M6XG4gIC8vIC0gdmVyc2lvbiBuaWJibGU6IDAgKFNjaG5vcnIgc2VjcDI1NmsxIFAyUEspXG4gIC8vIC0gcGF5bG9hZDogeC1vbmx5IHB1YmxpYyBrZXkgKDMyIGJ5dGVzKVxuICBjb25zdCB2ZXJzaW9uQnl0ZSA9IDA7XG4gIGNvbnN0IHBheWxvYWQgPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbShbdmVyc2lvbkJ5dGVdKSwgeE9ubHlQdWJLZXldKTtcbiAgY29uc3Qgd29yZHMgPSBjb252ZXJ0Qml0cyhwYXlsb2FkLCA4LCA1LCB0cnVlKTtcblxuICByZXR1cm4ga2FzcGFFbmNvZGUoaHJwLCB3b3Jkcyk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgc2VjcDI1NmsxIHB1YmxpYyBrZXkgKGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YmxpY0tleShwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXB1YiB8fCB0eXBlb2YgcHViICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpO1xuICAgIGlmIChidWYubGVuZ3RoID09PSAzMykge1xuICAgICAgcmV0dXJuIGJ1ZlswXSA9PT0gMHgwMiB8fCBidWZbMF0gPT09IDB4MDM7XG4gICAgfVxuICAgIGlmIChidWYubGVuZ3RoID09PSA2NSkge1xuICAgICAgcmV0dXJuIGJ1ZlswXSA9PT0gMHgwNDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBzZWNwMjU2azEgcHJpdmF0ZSBrZXkgKDMyLWJ5dGUgaGV4KVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFByaXZhdGVLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFwcnYgfHwgdHlwZW9mIHBydiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGlzVmFsaWRYcHJ2KHBydikgfHwgaXNWYWxpZFhwdWIocHJ2KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20ocHJ2LnNsaWNlKDAsIDY0KSwgJ2hleCcpO1xuICAgIHJldHVybiBidWYubGVuZ3RoID09PSAzMjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgdHJhbnNhY3Rpb24gSUQgKDY0LWNoYXIgaGV4KVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXlswLTlhLWZBLUZdezY0fSQvLnRlc3QodHhJZCk7XG59XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkS2FzcGFBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eWzAtOWEtZkEtRl17NjR9JC8udGVzdChoYXNoKTtcbiAgfVxuXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRQcml2YXRlS2V5KGtleSk7XG4gIH1cblxuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL15bMC05YS1mQS1GXXsxMjgsMTMwfSQvLnRlc3Qoc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuZXhwb3J0IGRlZmF1bHQgdXRpbHM7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { BitGoBase } from '@bitgo-beta/sdk-core';
2
+ export declare const register: (sdk: BitGoBase) => void;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAGzC,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.register = void 0;
4
+ const kaspa_1 = require("./kaspa");
5
+ const register = (sdk) => {
6
+ sdk.register('kaspa', kaspa_1.Kaspa.createInstance);
7
+ sdk.register('tkaspa', kaspa_1.Kaspa.createInstance);
8
+ };
9
+ exports.register = register;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQWdDO0FBRXpCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYyxFQUFRLEVBQUU7SUFDL0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGFBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUM7QUFIVyxRQUFBLFFBQVEsWUFHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBLYXNwYSB9IGZyb20gJy4va2FzcGEnO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCdrYXNwYScsIEthc3BhLmNyZWF0ZUluc3RhbmNlKTtcbiAgc2RrLnJlZ2lzdGVyKCd0a2FzcGEnLCBLYXNwYS5jcmVhdGVJbnN0YW5jZSk7XG59O1xuIl19
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Kaspa (KASPA) Test Fixtures
3
+ *
4
+ * Deterministic test data derived from a fixed private key.
5
+ * Do NOT use these keys in production.
6
+ */
7
+ import { KaspaTransactionData, KaspaUtxoInput } from '../../src/lib/iface';
8
+ export declare const TEST_PRV_KEY = "b94f5374fce5edbc8e2a8697c15331677e6ebf0b000000000000000000000001";
9
+ export declare const KEYS: {
10
+ prv: string;
11
+ pub: string;
12
+ };
13
+ export declare const ADDRESSES: {
14
+ valid: string;
15
+ testnet: string;
16
+ invalid: string;
17
+ sender: string;
18
+ recipient: string;
19
+ };
20
+ export declare const SCRIPT_PUBLIC_KEY: string;
21
+ export declare const UTXOS: {
22
+ readonly simple: KaspaUtxoInput;
23
+ readonly second: KaspaUtxoInput;
24
+ };
25
+ export declare const TRANSACTIONS: {
26
+ readonly simple: KaspaTransactionData;
27
+ readonly multiInput: KaspaTransactionData;
28
+ };
29
+ //# sourceMappingURL=kaspa.fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kaspa.fixtures.d.ts","sourceRoot":"","sources":["../../../test/fixtures/kaspa.fixtures.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG3E,eAAO,MAAM,YAAY,qEAAqE,CAAC;AAO/F,eAAO,MAAM,IAAI;;;CAGhB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAmB,CAAC;AAGlD,eAAO,MAAM,KAAK;qBACF,cAAc;qBAUd,cAAc;CAU7B,CAAC;AAGF,eAAO,MAAM,YAAY;qBACT,oBAAoB;yBAmBhB,oBAAoB;CAmBvC,CAAC"}