@bitgo-beta/sdk-coin-flrp 0.0.0-semantic-release-managed

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 (76) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.json +7 -0
  3. package/.mocharc.yml +8 -0
  4. package/CHANGELOG.md +0 -0
  5. package/LICENSE +191 -0
  6. package/dist/src/flrp.d.ts +91 -0
  7. package/dist/src/flrp.d.ts.map +1 -0
  8. package/dist/src/flrp.js +343 -0
  9. package/dist/src/iface.d.ts +25 -0
  10. package/dist/src/iface.d.ts.map +1 -0
  11. package/dist/src/iface.js +3 -0
  12. package/dist/src/index.d.ts +6 -0
  13. package/dist/src/index.d.ts.map +1 -0
  14. package/dist/src/index.js +45 -0
  15. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +26 -0
  16. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -0
  17. package/dist/src/lib/atomicInCTransactionBuilder.js +64 -0
  18. package/dist/src/lib/atomicTransactionBuilder.d.ts +93 -0
  19. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/atomicTransactionBuilder.js +252 -0
  21. package/dist/src/lib/constants.d.ts +11 -0
  22. package/dist/src/lib/constants.d.ts.map +1 -0
  23. package/dist/src/lib/constants.js +17 -0
  24. package/dist/src/lib/errors.d.ts +8 -0
  25. package/dist/src/lib/errors.d.ts.map +1 -0
  26. package/dist/src/lib/errors.js +19 -0
  27. package/dist/src/lib/exportInCTxBuilder.d.ts +77 -0
  28. package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -0
  29. package/dist/src/lib/exportInCTxBuilder.js +170 -0
  30. package/dist/src/lib/exportInPTxBuilder.d.ts +30 -0
  31. package/dist/src/lib/exportInPTxBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/exportInPTxBuilder.js +56 -0
  33. package/dist/src/lib/iface.d.ts +119 -0
  34. package/dist/src/lib/iface.d.ts.map +1 -0
  35. package/dist/src/lib/iface.js +22 -0
  36. package/dist/src/lib/index.d.ts +7 -0
  37. package/dist/src/lib/index.d.ts.map +1 -0
  38. package/dist/src/lib/index.js +30 -0
  39. package/dist/src/lib/keyPair.d.ts +58 -0
  40. package/dist/src/lib/keyPair.d.ts.map +1 -0
  41. package/dist/src/lib/keyPair.js +142 -0
  42. package/dist/src/lib/transaction.d.ts +111 -0
  43. package/dist/src/lib/transaction.d.ts.map +1 -0
  44. package/dist/src/lib/transaction.js +321 -0
  45. package/dist/src/lib/transactionBuilderFactory.d.ts +37 -0
  46. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  47. package/dist/src/lib/transactionBuilderFactory.js +91 -0
  48. package/dist/src/lib/utils.d.ts +215 -0
  49. package/dist/src/lib/utils.d.ts.map +1 -0
  50. package/dist/src/lib/utils.js +487 -0
  51. package/dist/src/register.d.ts +3 -0
  52. package/dist/src/register.d.ts.map +1 -0
  53. package/dist/src/register.js +11 -0
  54. package/dist/src/tflrp.d.ts +8 -0
  55. package/dist/src/tflrp.d.ts.map +1 -0
  56. package/dist/src/tflrp.js +14 -0
  57. package/dist/test/unit/flrp.d.ts +2 -0
  58. package/dist/test/unit/flrp.d.ts.map +1 -0
  59. package/dist/test/unit/flrp.js +118 -0
  60. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +2 -0
  61. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +1 -0
  62. package/dist/test/unit/lib/atomicTransactionBuilder.js +222 -0
  63. package/dist/test/unit/lib/exportTxBuilder.d.ts +2 -0
  64. package/dist/test/unit/lib/exportTxBuilder.d.ts.map +1 -0
  65. package/dist/test/unit/lib/exportTxBuilder.js +45 -0
  66. package/dist/test/unit/lib/transaction.d.ts +2 -0
  67. package/dist/test/unit/lib/transaction.d.ts.map +1 -0
  68. package/dist/test/unit/lib/transaction.js +460 -0
  69. package/dist/test/unit/lib/utils.d.ts +2 -0
  70. package/dist/test/unit/lib/utils.d.ts.map +1 -0
  71. package/dist/test/unit/lib/utils.js +286 -0
  72. package/dist/test/unit/smoke.d.ts +2 -0
  73. package/dist/test/unit/smoke.d.ts.map +1 -0
  74. package/dist/test/unit/smoke.js +23 -0
  75. package/dist/tsconfig.tsbuildinfo +1 -0
  76. package/package.json +57 -0
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExportInCTxBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const atomicInCTransactionBuilder_1 = require("./atomicInCTransactionBuilder");
6
+ class ExportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransactionBuilder {
7
+ constructor(_coinConfig) {
8
+ super(_coinConfig);
9
+ }
10
+ /**
11
+ * Utxos are not required in Export Tx in C-Chain.
12
+ * Override utxos to prevent used by throwing a error.
13
+ *
14
+ * @param {DecodedUtxoObj[]} value ignored
15
+ */
16
+ utxos(_value) {
17
+ throw new sdk_core_1.BuildTransactionError('utxos are not required in Export Tx in C-Chain');
18
+ }
19
+ /**
20
+ * Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
21
+ * The transaction output amount add a fixed fee that will be paid upon import.
22
+ *
23
+ * @param {BN | string} amount The withdrawal amount
24
+ */
25
+ amount(amount) {
26
+ const n = typeof amount === 'bigint' ? amount : BigInt(amount);
27
+ this.validateAmount(n);
28
+ this._amount = n;
29
+ return this;
30
+ }
31
+ /**
32
+ * Set the nonce of C-Chain sender address
33
+ *
34
+ * @param {number | string} nonce - number that can be only used once
35
+ */
36
+ nonce(nonce) {
37
+ const n = typeof nonce === 'bigint' ? nonce : BigInt(nonce);
38
+ this.validateNonce(n);
39
+ this._nonce = n;
40
+ return this;
41
+ }
42
+ /**
43
+ * Export tx target P wallet.
44
+ *
45
+ * @param pAddresses
46
+ */
47
+ to(pAddresses) {
48
+ const pubKeys = Array.isArray(pAddresses) ? pAddresses : pAddresses.split('~');
49
+ // For now ensure they are stored as bech32 / string addresses directly
50
+ this.transaction._to = pubKeys.map((a) => a.toString());
51
+ return this;
52
+ }
53
+ get transactionType() {
54
+ return sdk_core_1.TransactionType.Export;
55
+ }
56
+ initBuilder(raw) {
57
+ // Basic shape validation
58
+ const unsigned = raw.unsignedTx;
59
+ if (unsigned.networkId !== this.transaction._networkID) {
60
+ throw new Error('Network ID mismatch');
61
+ }
62
+ if (!unsigned.sourceBlockchainId.equals(this.transaction._blockchainID)) {
63
+ throw new Error('Blockchain ID mismatch');
64
+ }
65
+ if (unsigned.outputs.length !== 1) {
66
+ throw new sdk_core_1.BuildTransactionError('Transaction can have one output');
67
+ }
68
+ if (unsigned.inputs.length !== 1) {
69
+ throw new sdk_core_1.BuildTransactionError('Transaction can have one input');
70
+ }
71
+ const out = unsigned.outputs[0];
72
+ const inp = unsigned.inputs[0];
73
+ if (!out.assetId.equals(this.transaction._assetId) || !inp.assetId.equals(this.transaction._assetId)) {
74
+ throw new Error('AssetID mismatch');
75
+ }
76
+ this.transaction._to = out.addresses;
77
+ this._amount = out.amount;
78
+ const fee = inp.amount - out.amount;
79
+ if (fee < 0n) {
80
+ throw new sdk_core_1.BuildTransactionError('Computed fee is negative');
81
+ }
82
+ const fixed = this.fixedFee;
83
+ const feeRate = fee - fixed;
84
+ this.transaction._fee.feeRate = feeRate.toString();
85
+ this.transaction._fee.fee = fee.toString();
86
+ this.transaction._fee.size = 1;
87
+ this.transaction._fromAddresses = [inp.address];
88
+ this._nonce = inp.nonce;
89
+ this.transaction.setTransaction(raw);
90
+ return this;
91
+ }
92
+ // For parity with Avalanche builder interfaces; always returns true for placeholder
93
+ //TODO: WIN-6322
94
+ static verifyTxType(_tx) {
95
+ return true;
96
+ }
97
+ verifyTxType(_tx) {
98
+ return ExportInCTxBuilder.verifyTxType(_tx);
99
+ }
100
+ /**
101
+ * Build the export in C-chain transaction
102
+ * @protected
103
+ */
104
+ buildFlareTransaction() {
105
+ if (this.transaction.hasCredentials) {
106
+ return; // placeholder: credentials not yet implemented
107
+ }
108
+ if (this._amount === undefined) {
109
+ throw new Error('amount is required');
110
+ }
111
+ if (this.transaction._fromAddresses.length !== 1) {
112
+ throw new Error('sender is one and required');
113
+ }
114
+ if (this.transaction._to.length === 0) {
115
+ throw new Error('to is required');
116
+ }
117
+ if (!this.transaction._fee.feeRate) {
118
+ throw new Error('fee rate is required');
119
+ }
120
+ if (this._nonce === undefined) {
121
+ throw new Error('nonce is required');
122
+ }
123
+ // Compose placeholder unsigned tx shape
124
+ const feeRate = BigInt(this.transaction._fee.feeRate);
125
+ const fixed = this.fixedFee;
126
+ const totalFee = feeRate + fixed;
127
+ const input = {
128
+ address: this.transaction._fromAddresses[0],
129
+ amount: this._amount + totalFee,
130
+ assetId: this.transaction._assetId,
131
+ nonce: this._nonce,
132
+ };
133
+ const output = {
134
+ addresses: this.transaction._to,
135
+ amount: this._amount,
136
+ assetId: this.transaction._assetId,
137
+ };
138
+ const unsigned = {
139
+ networkId: this.transaction._networkID,
140
+ sourceBlockchainId: this.transaction._blockchainID,
141
+ destinationBlockchainId: this._externalChainId || Buffer.alloc(0),
142
+ inputs: [input],
143
+ outputs: [output],
144
+ };
145
+ const signed = { unsignedTx: unsigned, credentials: [] };
146
+ this.transaction._fee.fee = totalFee.toString();
147
+ this.transaction._fee.size = 1;
148
+ this.transaction.setTransaction(signed);
149
+ }
150
+ /** @inheritdoc */
151
+ fromImplementation(raw) {
152
+ if (typeof raw === 'string') {
153
+ // Future: parse hex or serialized form. For now treat as opaque raw tx.
154
+ this.transaction.setTransaction(raw);
155
+ return this.transaction;
156
+ }
157
+ return this.initBuilder(raw).transaction;
158
+ }
159
+ /**
160
+ * Check the amount is positive.
161
+ * @param amount
162
+ */
163
+ validateNonce(nonce) {
164
+ if (nonce < 0n) {
165
+ throw new sdk_core_1.BuildTransactionError('Nonce must be greater or equal than 0');
166
+ }
167
+ }
168
+ }
169
+ exports.ExportInCTxBuilder = ExportInCTxBuilder;
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0SW5DVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRJbkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQThFO0FBRTlFLCtFQUE0RTtBQWdDNUUsTUFBYSxrQkFBbUIsU0FBUSx5REFBMkI7SUFJakUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQWlCO1FBQ3JCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFnQztRQUNyQyxNQUFNLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUErQjtRQUNuQyxNQUFNLENBQUMsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEVBQUUsQ0FBQyxVQUE2QjtRQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FB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LEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLEdBQThCO1FBQ3pELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsd0VBQXdFO1lBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksZ0NBQXFCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBakxELGdEQWlMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG4vLyBMaWdodHdlaWdodCBpbnRlcmZhY2UgcGxhY2Vob2xkZXJzIHJlcGxhY2luZyBBdmFsYW5jaGUgU0RLIHRyYW5zYWN0aW9uIHNoYXBlc1xuaW50ZXJmYWNlIEZsYXJlRXhwb3J0SW5wdXRTaGFwZSB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBiaWdpbnQ7IC8vIGluY2x1ZGVzIGV4cG9ydGVkIGFtb3VudCArIGZlZVxuICBhc3NldElkOiBCdWZmZXI7XG4gIG5vbmNlOiBiaWdpbnQ7XG59XG5cbmludGVyZmFjZSBGbGFyZUV4cG9ydE91dHB1dFNoYXBlIHtcbiAgYWRkcmVzc2VzOiBzdHJpbmdbXTsgLy8gZGVzdGluYXRpb24gUC1jaGFpbiBhZGRyZXNzZXNcbiAgYW1vdW50OiBiaWdpbnQ7IC8vIGV4cG9ydGVkIGFtb3VudFxuICBhc3NldElkOiBCdWZmZXI7XG59XG5cbmludGVyZmFjZSBGbGFyZVVuc2lnbmVkRXhwb3J0VHgge1xuICBuZXR3b3JrSWQ6IG51bWJlcjtcbiAgc291cmNlQmxvY2tjaGFpbklkOiBCdWZmZXI7IC8vIEMtY2hhaW4gaWRcbiAgZGVzdGluYXRpb25CbG9ja2NoYWluSWQ6IEJ1ZmZlcjsgLy8gUC1jaGFpbiBpZFxuICBpbnB1dHM6IEZsYXJlRXhwb3J0SW5wdXRTaGFwZVtdO1xuICBvdXRwdXRzOiBGbGFyZUV4cG9ydE91dHB1dFNoYXBlW107XG59XG5cbmludGVyZmFjZSBGbGFyZVNpZ25lZEV4cG9ydFR4IHtcbiAgdW5zaWduZWRUeDogRmxhcmVVbnNpZ25lZEV4cG9ydFR4O1xuICAvLyBjcmVkZW50aWFscyBwbGFjZWhvbGRlclxuICBjcmVkZW50aWFsczogdW5rbm93bltdO1xufVxuXG50eXBlIFJhd0ZsYXJlRXhwb3J0VHggPSBGbGFyZVNpZ25lZEV4cG9ydFR4OyAvLyBmb3Igbm93IHRyZWF0IHRoZW0gdGhlIHNhbWVcblxuZXhwb3J0IGNsYXNzIEV4cG9ydEluQ1R4QnVpbGRlciBleHRlbmRzIEF0b21pY0luQ1RyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2Ftb3VudD86IGJpZ2ludDtcbiAgcHJpdmF0ZSBfbm9uY2U/OiBiaWdpbnQ7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFV0eG9zIGFyZSBub3QgcmVxdWlyZWQgaW4gRXhwb3J0IFR4IGluIEMtQ2hhaW4uXG4gICAqIE92ZXJyaWRlIHV0eG9zIHRvIHByZXZlbnQgdXNlZCBieSB0aHJvd2luZyBhIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0ge0RlY29kZWRVdHhvT2JqW119IHZhbHVlIGlnbm9yZWRcbiAgICovXG4gIHV0eG9zKF92YWx1ZTogdW5rbm93bltdKTogdGhpcyB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndXR4b3MgYXJlIG5vdCByZXF1aXJlZCBpbiBFeHBvcnQgVHggaW4gQy1DaGFpbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFtb3VudCBpcyBhIGxvbmcgdGhhdCBzcGVjaWZpZXMgdGhlIHF1YW50aXR5IG9mIHRoZSBhc3NldCB0aGF0IHRoaXMgb3V0cHV0IG93bnMuIE11c3QgYmUgcG9zaXRpdmUuXG4gICAqIFRoZSB0cmFuc2FjdGlvbiBvdXRwdXQgYW1vdW50IGFkZCBhIGZpeGVkIGZlZSB0aGF0IHdpbGwgYmUgcGFpZCB1cG9uIGltcG9ydC5cbiAgICpcbiAgICogQHBhcmFtIHtCTiB8IHN0cmluZ30gYW1vdW50IFRoZSB3aXRoZHJhd2FsIGFtb3VudFxuICAgKi9cbiAgYW1vdW50KGFtb3VudDogYmlnaW50IHwgbnVtYmVyIHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgbiA9IHR5cGVvZiBhbW91bnQgPT09ICdiaWdpbnQnID8gYW1vdW50IDogQmlnSW50KGFtb3VudCk7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudChuKTtcbiAgICB0aGlzLl9hbW91bnQgPSBuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbm9uY2Ugb2YgQy1DaGFpbiBzZW5kZXIgYWRkcmVzc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlciB8IHN0cmluZ30gbm9uY2UgLSBudW1iZXIgdGhhdCBjYW4gYmUgb25seSB1c2VkIG9uY2VcbiAgICovXG4gIG5vbmNlKG5vbmNlOiBiaWdpbnQgfCBudW1iZXIgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBuID0gdHlwZW9mIG5vbmNlID09PSAnYmlnaW50JyA/IG5vbmNlIDogQmlnSW50KG5vbmNlKTtcbiAgICB0aGlzLnZhbGlkYXRlTm9uY2Uobik7XG4gICAgdGhpcy5fbm9uY2UgPSBuO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCB0eCB0YXJnZXQgUCB3YWxsZXQuXG4gICAqXG4gICAqIEBwYXJhbSBwQWRkcmVzc2VzXG4gICAqL1xuICB0byhwQWRkcmVzc2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGNvbnN0IHB1YktleXMgPSBBcnJheS5pc0FycmF5KHBBZGRyZXNzZXMpID8gcEFkZHJlc3NlcyA6IHBBZGRyZXNzZXMuc3BsaXQoJ34nKTtcbiAgICAvLyBGb3Igbm93IGVuc3VyZSB0aGV5IGFyZSBzdG9yZWQgYXMgYmVjaDMyIC8gc3RyaW5nIGFkZHJlc3NlcyBkaXJlY3RseVxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvID0gcHViS2V5cy5tYXAoKGEpID0+IGEudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuRXhwb3J0O1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIocmF3OiBSYXdGbGFyZUV4cG9ydFR4KTogdGhpcyB7XG4gICAgLy8gQmFzaWMgc2hhcGUgdmFsaWRhdGlvblxuICAgIGNvbnN0IHVuc2lnbmVkID0gcmF3LnVuc2lnbmVkVHg7XG4gICAgaWYgKHVuc2lnbmVkLm5ldHdvcmtJZCAhPT0gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29ya0lEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05ldHdvcmsgSUQgbWlzbWF0Y2gnKTtcbiAgICB9XG4gICAgaWYgKCF1bnNpZ25lZC5zb3VyY2VCbG9ja2NoYWluSWQuZXF1YWxzKHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQmxvY2tjaGFpbiBJRCBtaXNtYXRjaCcpO1xuICAgIH1cbiAgICBpZiAodW5zaWduZWQub3V0cHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbiBoYXZlIG9uZSBvdXRwdXQnKTtcbiAgICB9XG4gICAgaWYgKHVuc2lnbmVkLmlucHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbiBoYXZlIG9uZSBpbnB1dCcpO1xuICAgIH1cbiAgICBjb25zdCBvdXQgPSB1bnNpZ25lZC5vdXRwdXRzWzBdO1xuICAgIGNvbnN0IGlucCA9IHVuc2lnbmVkLmlucHV0c1swXTtcbiAgICBpZiAoIW91dC5hc3NldElkLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSB8fCAhaW5wLmFzc2V0SWQuZXF1YWxzKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0SUQgbWlzbWF0Y2gnKTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdG8gPSBvdXQuYWRkcmVzc2VzO1xuICAgIHRoaXMuX2Ftb3VudCA9IG91dC5hbW91bnQ7XG4gICAgY29uc3QgZmVlID0gaW5wLmFtb3VudCAtIG91dC5hbW91bnQ7XG4gICAgaWYgKGZlZSA8IDBuKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdDb21wdXRlZCBmZWUgaXMgbmVnYXRpdmUnKTtcbiAgICB9XG4gICAgY29uc3QgZml4ZWQgPSB0aGlzLmZpeGVkRmVlO1xuICAgIGNvbnN0IGZlZVJhdGUgPSBmZWUgLSBmaXhlZDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlUmF0ZSA9IGZlZVJhdGUudG9TdHJpbmcoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gZmVlLnRvU3RyaW5nKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLnNpemUgPSAxO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBbaW5wLmFkZHJlc3NdO1xuICAgIHRoaXMuX25vbmNlID0gaW5wLm5vbmNlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24ocmF3KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEZvciBwYXJpdHkgd2l0aCBBdmFsYW5jaGUgYnVpbGRlciBpbnRlcmZhY2VzOyBhbHdheXMgcmV0dXJucyB0cnVlIGZvciBwbGFjZWhvbGRlclxuICAvL1RPRE86IFdJTi02MzIyXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoX3R4OiB1bmtub3duKTogX3R4IGlzIEZsYXJlVW5zaWduZWRFeHBvcnRUeCB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoX3R4OiB1bmtub3duKTogX3R4IGlzIEZsYXJlVW5zaWduZWRFeHBvcnRUeCB7XG4gICAgcmV0dXJuIEV4cG9ydEluQ1R4QnVpbGRlci52ZXJpZnlUeFR5cGUoX3R4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgZXhwb3J0IGluIEMtY2hhaW4gdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5oYXNDcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuOyAvLyBwbGFjZWhvbGRlcjogY3JlZGVudGlhbHMgbm90IHlldCBpbXBsZW1lbnRlZFxuICAgIH1cbiAgICBpZiAodGhpcy5fYW1vdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYW1vdW50IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZW5kZXIgaXMgb25lIGFuZCByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5fdG8ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZVJhdGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmVlIHJhdGUgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX25vbmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbm9uY2UgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICAvLyBDb21wb3NlIHBsYWNlaG9sZGVyIHVuc2lnbmVkIHR4IHNoYXBlXG4gICAgY29uc3QgZmVlUmF0ZSA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlUmF0ZSk7XG4gICAgY29uc3QgZml4ZWQgPSB0aGlzLmZpeGVkRmVlO1xuICAgIGNvbnN0IHRvdGFsRmVlID0gZmVlUmF0ZSArIGZpeGVkO1xuICAgIGNvbnN0IGlucHV0OiBGbGFyZUV4cG9ydElucHV0U2hhcGUgPSB7XG4gICAgICBhZGRyZXNzOiB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzWzBdLFxuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQgKyB0b3RhbEZlZSxcbiAgICAgIGFzc2V0SWQ6IHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICBub25jZTogdGhpcy5fbm9uY2UsXG4gICAgfTtcbiAgICBjb25zdCBvdXRwdXQ6IEZsYXJlRXhwb3J0T3V0cHV0U2hhcGUgPSB7XG4gICAgICBhZGRyZXNzZXM6IHRoaXMudHJhbnNhY3Rpb24uX3RvLFxuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICBhc3NldElkOiB0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkLFxuICAgIH07XG4gICAgY29uc3QgdW5zaWduZWQ6IEZsYXJlVW5zaWduZWRFeHBvcnRUeCA9IHtcbiAgICAgIG5ldHdvcmtJZDogdGhpcy50cmFuc2FjdGlvbi5fbmV0d29ya0lELFxuICAgICAgc291cmNlQmxvY2tjaGFpbklkOiB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICBkZXN0aW5hdGlvbkJsb2NrY2hhaW5JZDogdGhpcy5fZXh0ZXJuYWxDaGFpbklkIHx8IEJ1ZmZlci5hbGxvYygwKSxcbiAgICAgIGlucHV0czogW2lucHV0XSxcbiAgICAgIG91dHB1dHM6IFtvdXRwdXRdLFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmVkOiBGbGFyZVNpZ25lZEV4cG9ydFR4ID0geyB1bnNpZ25lZFR4OiB1bnNpZ25lZCwgY3JlZGVudGlhbHM6IFtdIH07XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRvdGFsRmVlLnRvU3RyaW5nKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLnNpemUgPSAxO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24oc2lnbmVkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhdzogc3RyaW5nIHwgUmF3RmxhcmVFeHBvcnRUeCk6IHsgX3R4PzogdW5rbm93biB9IHtcbiAgICBpZiAodHlwZW9mIHJhdyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIEZ1dHVyZTogcGFyc2UgaGV4IG9yIHNlcmlhbGl6ZWQgZm9ybS4gRm9yIG5vdyB0cmVhdCBhcyBvcGFxdWUgcmF3IHR4LlxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmluaXRCdWlsZGVyKHJhdykudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIGFtb3VudCBpcyBwb3NpdGl2ZS5cbiAgICogQHBhcmFtIGFtb3VudFxuICAgKi9cbiAgdmFsaWRhdGVOb25jZShub25jZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKG5vbmNlIDwgMG4pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vbmNlIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0aGFuIDAnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
4
+ export declare class ExportInPTxBuilder extends AtomicTransactionBuilder {
5
+ private _amount;
6
+ constructor(_coinConfig: Readonly<CoinConfig>);
7
+ protected get transactionType(): TransactionType;
8
+ /**
9
+ * Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
10
+ *
11
+ * @param {BN | string} amount The withdrawal amount
12
+ */
13
+ amount(value: bigint | string | number): this;
14
+ /** @inheritdoc */
15
+ initBuilder(_tx: unknown): this;
16
+ static verifyTxType(_baseTx: unknown): boolean;
17
+ verifyTxType(_baseTx: unknown): boolean;
18
+ /**
19
+ * Create the internal transaction.
20
+ * @protected
21
+ */
22
+ protected buildFlareTransaction(): void;
23
+ /**
24
+ * Create the ExportedOut where the recipient address are the sender.
25
+ * Later a importTx should complete the operations signing with the same keys.
26
+ * @protected
27
+ */
28
+ protected exportedOutputs(): unknown[];
29
+ }
30
+ //# sourceMappingURL=exportInPTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportInPTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportInPTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,OAAO,CAAC,OAAO,CAAM;gBAET,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAO7C,kBAAkB;IAElB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAM/B,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAI9C,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIvC;;;OAGG;IAEH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,OAAO,EAAE;CAGvC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExportInPTxBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
6
+ class ExportInPTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
7
+ constructor(_coinConfig) {
8
+ super(_coinConfig);
9
+ this._amount = 0n;
10
+ }
11
+ get transactionType() {
12
+ return sdk_core_1.TransactionType.Export;
13
+ }
14
+ /**
15
+ * Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
16
+ *
17
+ * @param {BN | string} amount The withdrawal amount
18
+ */
19
+ amount(value) {
20
+ const v = typeof value === 'bigint' ? value : BigInt(value);
21
+ this.validateAmount(v);
22
+ this._amount = v;
23
+ return this;
24
+ }
25
+ /** @inheritdoc */
26
+ // Placeholder: parsing existing ExportTx not yet supported on Flare P-chain
27
+ initBuilder(_tx) {
28
+ super.initBuilder(_tx);
29
+ return this;
30
+ }
31
+ // Type verification not yet implemented for Flare P-chain
32
+ static verifyTxType(_baseTx) {
33
+ return false;
34
+ }
35
+ verifyTxType(_baseTx) {
36
+ return ExportInPTxBuilder.verifyTxType(_baseTx);
37
+ }
38
+ /**
39
+ * Create the internal transaction.
40
+ * @protected
41
+ */
42
+ // Build not implemented yet
43
+ buildFlareTransaction() {
44
+ throw new Error('Flare P-chain export transaction build not implemented');
45
+ }
46
+ /**
47
+ * Create the ExportedOut where the recipient address are the sender.
48
+ * Later a importTx should complete the operations signing with the same keys.
49
+ * @protected
50
+ */
51
+ exportedOutputs() {
52
+ return [];
53
+ }
54
+ }
55
+ exports.ExportInPTxBuilder = ExportInPTxBuilder;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0SW5QVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRJblBUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQXVEO0FBQ3ZELHlFQUFzRTtBQUV0RSxNQUFhLGtCQUFtQixTQUFRLG1EQUF3QjtJQUc5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLFlBQU8sR0FBRyxFQUFFLENBQUM7SUFJckIsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQStCO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNEVBQTRFO0lBQzVFLFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMERBQTBEO0lBQzFELE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBZ0I7UUFDbEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWdCO1FBQzNCLE9BQU8sa0JBQWtCLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCw0QkFBNEI7SUFDbEIscUJBQXFCO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGVBQWU7UUFDdkIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0Y7QUF4REQsZ0RBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgRXhwb3J0SW5QVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfYW1vdW50ID0gMG47XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkV4cG9ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbW91bnQgaXMgYSBsb25nIHRoYXQgc3BlY2lmaWVzIHRoZSBxdWFudGl0eSBvZiB0aGUgYXNzZXQgdGhhdCB0aGlzIG91dHB1dCBvd25zLiBNdXN0IGJlIHBvc2l0aXZlLlxuICAgKlxuICAgKiBAcGFyYW0ge0JOIHwgc3RyaW5nfSBhbW91bnQgVGhlIHdpdGhkcmF3YWwgYW1vdW50XG4gICAqL1xuICBhbW91bnQodmFsdWU6IGJpZ2ludCB8IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIGNvbnN0IHYgPSB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnID8gdmFsdWUgOiBCaWdJbnQodmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnQodik7XG4gICAgdGhpcy5fYW1vdW50ID0gdjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICAvLyBQbGFjZWhvbGRlcjogcGFyc2luZyBleGlzdGluZyBFeHBvcnRUeCBub3QgeWV0IHN1cHBvcnRlZCBvbiBGbGFyZSBQLWNoYWluXG4gIGluaXRCdWlsZGVyKF90eDogdW5rbm93bik6IHRoaXMge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKF90eCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBUeXBlIHZlcmlmaWNhdGlvbiBub3QgeWV0IGltcGxlbWVudGVkIGZvciBGbGFyZSBQLWNoYWluXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoX2Jhc2VUeDogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZlcmlmeVR4VHlwZShfYmFzZVR4OiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEV4cG9ydEluUFR4QnVpbGRlci52ZXJpZnlUeFR5cGUoX2Jhc2VUeCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBpbnRlcm5hbCB0cmFuc2FjdGlvbi5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgLy8gQnVpbGQgbm90IGltcGxlbWVudGVkIHlldFxuICBwcm90ZWN0ZWQgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignRmxhcmUgUC1jaGFpbiBleHBvcnQgdHJhbnNhY3Rpb24gYnVpbGQgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBFeHBvcnRlZE91dCB3aGVyZSB0aGUgcmVjaXBpZW50IGFkZHJlc3MgYXJlIHRoZSBzZW5kZXIuXG4gICAqIExhdGVyIGEgaW1wb3J0VHggc2hvdWxkIGNvbXBsZXRlIHRoZSBvcGVyYXRpb25zIHNpZ25pbmcgd2l0aCB0aGUgc2FtZSBrZXlzLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZXhwb3J0ZWRPdXRwdXRzKCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,119 @@
1
+ import { TransactionExplanation as BaseTransactionExplanation, Entry, TransactionType, SignTransactionOptions, VerifyTransactionOptions, TransactionParams } from '@bitgo-beta/sdk-core';
2
+ import { UnsignedTx, TransferableOutput, avaxSerial } from '@flarenetwork/flarejs';
3
+ export interface FlrpEntry extends Entry {
4
+ id: string;
5
+ }
6
+ export interface TransactionExplanation extends BaseTransactionExplanation {
7
+ type: TransactionType;
8
+ rewardAddresses: string[];
9
+ inputs: Entry[];
10
+ }
11
+ /**
12
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
13
+ */
14
+ export declare enum MethodNames {
15
+ addDelegator = 0,
16
+ addValidator = 1
17
+ }
18
+ /**
19
+ * The transaction data returned from the toJson() function of a transaction
20
+ */
21
+ export interface TxData {
22
+ id: string;
23
+ inputs: Entry[];
24
+ type: TransactionType;
25
+ fromAddresses: string[];
26
+ threshold: number;
27
+ locktime: string;
28
+ signatures: string[];
29
+ outputs: Entry[];
30
+ changeOutputs: Entry[];
31
+ sourceChain?: string;
32
+ destinationChain?: string;
33
+ memo?: string;
34
+ }
35
+ /**
36
+ * Decoded UTXO object. This is for a single utxo
37
+ *
38
+ * @param {number} outputID
39
+ * @param {string} amount Amount as a Big Number string
40
+ * @param {string} txid Transaction ID encoded as cb58
41
+ * @param {string} outputidx Output index as a string
42
+ */
43
+ export type DecodedUtxoObj = {
44
+ outputID: number;
45
+ amount: string;
46
+ txid: string;
47
+ outputidx: string;
48
+ threshold: number;
49
+ addresses: string[];
50
+ addressesIndex?: number[];
51
+ };
52
+ /**
53
+ * FlareJS uses string-based TypeSymbols instead of numeric type IDs
54
+ * For SECP256K1 Transfer Output, use TypeSymbols.TransferOutput from @flarenetwork/flarejs
55
+ *
56
+ * @see https://docs.flare.network/ for Flare network documentation
57
+ * @deprecated Use TypeSymbols.TransferOutput from @flarenetwork/flarejs instead
58
+ */
59
+ export declare const SECP256K1_Transfer_Output = 7;
60
+ export declare const ADDRESS_SEPARATOR = "~";
61
+ export declare const INPUT_SEPARATOR = ":";
62
+ export type DeprecatedTx = unknown;
63
+ export type DeprecatedBaseTx = unknown;
64
+ export type Tx = UnsignedTx;
65
+ export type BaseTx = avaxSerial.BaseTx;
66
+ export type AvaxTx = avaxSerial.AvaxTx;
67
+ export type DeprecatedOutput = unknown;
68
+ export type Output = TransferableOutput;
69
+ export interface FlrpSignTransactionOptions extends SignTransactionOptions {
70
+ txPrebuild: {
71
+ txHex: string;
72
+ };
73
+ prv: string;
74
+ }
75
+ export interface FlrpVerifyTransactionOptions extends VerifyTransactionOptions {
76
+ txParams: FlrpTransactionParams;
77
+ }
78
+ export interface FlrpTransactionStakingOptions {
79
+ nodeID: string;
80
+ amount: string;
81
+ startTime?: string;
82
+ endTime?: string;
83
+ delegationFeeRate?: number;
84
+ }
85
+ export interface FlrpTransactionParams extends TransactionParams {
86
+ type: string;
87
+ recipients?: Array<{
88
+ address: string;
89
+ amount: string;
90
+ }>;
91
+ stakingOptions?: FlrpTransactionStakingOptions;
92
+ unspents?: string[];
93
+ }
94
+ export interface ExplainTransactionOptions {
95
+ txHex?: string;
96
+ halfSigned?: {
97
+ txHex: string;
98
+ };
99
+ }
100
+ /**
101
+ * Memo utility interfaces for FlareJS integration
102
+ */
103
+ export interface MemoData {
104
+ text?: string;
105
+ bytes?: Uint8Array;
106
+ json?: Record<string, unknown>;
107
+ }
108
+ /**
109
+ * SpendOptions interface matching FlareJS patterns
110
+ * Based on FlareJS SpendOptions with memo support
111
+ */
112
+ export interface FlrpSpendOptions {
113
+ minIssuanceTime?: bigint;
114
+ changeAddresses?: string[];
115
+ threshold?: number;
116
+ memo?: Uint8Array;
117
+ locktime?: bigint;
118
+ }
119
+ //# sourceMappingURL=iface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INPUT_SEPARATOR = exports.ADDRESS_SEPARATOR = exports.SECP256K1_Transfer_Output = exports.MethodNames = void 0;
4
+ /**
5
+ * Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
6
+ */
7
+ var MethodNames;
8
+ (function (MethodNames) {
9
+ MethodNames[MethodNames["addDelegator"] = 0] = "addDelegator";
10
+ MethodNames[MethodNames["addValidator"] = 1] = "addValidator";
11
+ })(MethodNames || (exports.MethodNames = MethodNames = {}));
12
+ /**
13
+ * FlareJS uses string-based TypeSymbols instead of numeric type IDs
14
+ * For SECP256K1 Transfer Output, use TypeSymbols.TransferOutput from @flarenetwork/flarejs
15
+ *
16
+ * @see https://docs.flare.network/ for Flare network documentation
17
+ * @deprecated Use TypeSymbols.TransferOutput from @flarenetwork/flarejs instead
18
+ */
19
+ exports.SECP256K1_Transfer_Output = 7; // Legacy - FlareJS uses TypeSymbols.TransferOutput
20
+ exports.ADDRESS_SEPARATOR = '~';
21
+ exports.INPUT_SEPARATOR = ':';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWtCQTs7R0FFRztBQUNILElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNyQiw2REFBWSxDQUFBO0lBQ1osNkRBQVksQ0FBQTtBQUNkLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFzQ0Q7Ozs7OztHQU1HO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxtREFBbUQ7QUFFbEYsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDeEIsUUFBQSxlQUFlLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgRW50cnksXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVW5zaWduZWRUeCwgVHJhbnNmZXJhYmxlT3V0cHV0LCBhdmF4U2VyaWFsIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmV4cG9ydCBpbnRlcmZhY2UgRmxycEVudHJ5IGV4dGVuZHMgRW50cnkge1xuICBpZDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHJld2FyZEFkZHJlc3Nlczogc3RyaW5nW107XG4gIGlucHV0czogRW50cnlbXTtcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ2JvbmQnIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZW51bSBNZXRob2ROYW1lcyB7XG4gIGFkZERlbGVnYXRvcixcbiAgYWRkVmFsaWRhdG9yLFxufVxuXG4vKipcbiAqIFRoZSB0cmFuc2FjdGlvbiBkYXRhIHJldHVybmVkIGZyb20gdGhlIHRvSnNvbigpIGZ1bmN0aW9uIG9mIGEgdHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeERhdGEge1xuICBpZDogc3RyaW5nO1xuICBpbnB1dHM6IEVudHJ5W107XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgZnJvbUFkZHJlc3Nlczogc3RyaW5nW107XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBsb2NrdGltZTogc3RyaW5nO1xuICBzaWduYXR1cmVzOiBzdHJpbmdbXTtcbiAgb3V0cHV0czogRW50cnlbXTtcbiAgY2hhbmdlT3V0cHV0czogRW50cnlbXTtcbiAgc291cmNlQ2hhaW4/OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uQ2hhaW4/OiBzdHJpbmc7XG4gIG1lbW8/OiBzdHJpbmc7IC8vIE1lbW8gZmllbGQgZm9yIHRyYW5zYWN0aW9uIG1ldGFkYXRhXG59XG5cbi8qKlxuICogRGVjb2RlZCBVVFhPIG9iamVjdC4gVGhpcyBpcyBmb3IgYSBzaW5nbGUgdXR4b1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBvdXRwdXRJRFxuICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCBBbW91bnQgYXMgYSBCaWcgTnVtYmVyIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHR4aWQgVHJhbnNhY3Rpb24gSUQgZW5jb2RlZCBhcyBjYjU4XG4gKiBAcGFyYW0ge3N0cmluZ30gb3V0cHV0aWR4IE91dHB1dCBpbmRleCBhcyBhIHN0cmluZ1xuICovXG5leHBvcnQgdHlwZSBEZWNvZGVkVXR4b09iaiA9IHtcbiAgb3V0cHV0SUQ6IG51bWJlcjtcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBGbGFyZUpTIHVzZXMgc3RyaW5nLWJhc2VkIFR5cGVTeW1ib2xzIGluc3RlYWQgb2YgbnVtZXJpYyB0eXBlIElEc1xuICogRm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXQsIHVzZSBUeXBlU3ltYm9scy5UcmFuc2Zlck91dHB1dCBmcm9tIEBmbGFyZW5ldHdvcmsvZmxhcmVqc1xuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmZsYXJlLm5ldHdvcmsvIGZvciBGbGFyZSBuZXR3b3JrIGRvY3VtZW50YXRpb25cbiAqIEBkZXByZWNhdGVkIFVzZSBUeXBlU3ltYm9scy5UcmFuc2Zlck91dHB1dCBmcm9tIEBmbGFyZW5ldHdvcmsvZmxhcmVqcyBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0ID0gNzsgLy8gTGVnYWN5IC0gRmxhcmVKUyB1c2VzIFR5cGVTeW1ib2xzLlRyYW5zZmVyT3V0cHV0XG5cbmV4cG9ydCBjb25zdCBBRERSRVNTX1NFUEFSQVRPUiA9ICd+JztcbmV4cG9ydCBjb25zdCBJTlBVVF9TRVBBUkFUT1IgPSAnOic7XG5cbi8vIEZsYXJlSlMgMS4zLjIgdHlwZSBkZWZpbml0aW9ucyAtIHVzaW5nIGF2bSBhbmQgcGxhdGZvcm12bSBtb2R1bGVzXG5leHBvcnQgdHlwZSBEZXByZWNhdGVkVHggPSB1bmtub3duOyAvLyBQbGFjZWhvbGRlciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHR5cGUgRGVwcmVjYXRlZEJhc2VUeCA9IHVua25vd247IC8vIFBsYWNlaG9sZGVyIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgdHlwZSBUeCA9IFVuc2lnbmVkVHg7IC8vIEZsYXJlSlMgVW5zaWduZWRUeCAodW5pZmllZCB0eXBlIGluIDQuMC41KVxuZXhwb3J0IHR5cGUgQmFzZVR4ID0gYXZheFNlcmlhbC5CYXNlVHg7IC8vIEZsYXJlSlMgQmFzZVR4XG5leHBvcnQgdHlwZSBBdmF4VHggPSBhdmF4U2VyaWFsLkF2YXhUeDsgLy8gRmxhcmVKUyBBdmF4VHhcbmV4cG9ydCB0eXBlIERlcHJlY2F0ZWRPdXRwdXQgPSB1bmtub3duOyAvLyBQbGFjZWhvbGRlciBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHR5cGUgT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0OyAvLyBGbGFyZUpTIFRyYW5zZmVyYWJsZU91dHB1dCAodW5pZmllZCB0eXBlIGluIDQuMC41KVxuXG4vLyBGTFJQLXNwZWNpZmljIGludGVyZmFjZXMgZXh0ZW5kaW5nIFNESy1jb3JlIGludGVyZmFjZXNcbmV4cG9ydCBpbnRlcmZhY2UgRmxycFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBTaWduVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG4gIHBydjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFBhcmFtczogRmxycFRyYW5zYWN0aW9uUGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBUcmFuc2FjdGlvblN0YWtpbmdPcHRpb25zIHtcbiAgbm9kZUlEOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBzdGFydFRpbWU/OiBzdHJpbmc7XG4gIGVuZFRpbWU/OiBzdHJpbmc7XG4gIGRlbGVnYXRpb25GZWVSYXRlPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBUcmFuc2FjdGlvblBhcmFtcyBleHRlbmRzIFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHlwZTogc3RyaW5nO1xuICByZWNpcGllbnRzPzogQXJyYXk8e1xuICAgIGFkZHJlc3M6IHN0cmluZztcbiAgICBhbW91bnQ6IHN0cmluZztcbiAgfT47XG4gIHN0YWtpbmdPcHRpb25zPzogRmxycFRyYW5zYWN0aW9uU3Rha2luZ09wdGlvbnM7XG4gIHVuc3BlbnRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4Pzogc3RyaW5nO1xuICBoYWxmU2lnbmVkPzoge1xuICAgIHR4SGV4OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogTWVtbyB1dGlsaXR5IGludGVyZmFjZXMgZm9yIEZsYXJlSlMgaW50ZWdyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vRGF0YSB7XG4gIHRleHQ/OiBzdHJpbmc7IC8vIFVURi04IHN0cmluZyBtZW1vXG4gIGJ5dGVzPzogVWludDhBcnJheTsgLy8gUmF3IGJ5dGUgYXJyYXkgbWVtb1xuICBqc29uPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IC8vIEpTT04gb2JqZWN0IG1lbW8gKHdpbGwgYmUgc3RyaW5naWZpZWQpXG59XG5cbi8qKlxuICogU3BlbmRPcHRpb25zIGludGVyZmFjZSBtYXRjaGluZyBGbGFyZUpTIHBhdHRlcm5zXG4gKiBCYXNlZCBvbiBGbGFyZUpTIFNwZW5kT3B0aW9ucyB3aXRoIG1lbW8gc3VwcG9ydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZscnBTcGVuZE9wdGlvbnMge1xuICBtaW5Jc3N1YW5jZVRpbWU/OiBiaWdpbnQ7XG4gIGNoYW5nZUFkZHJlc3Nlcz86IHN0cmluZ1tdOyAvLyBCaXRHbyB1c2VzIHN0cmluZyBhZGRyZXNzZXMsIEZsYXJlSlMgdXNlcyBVaW50OEFycmF5W11cbiAgdGhyZXNob2xkPzogbnVtYmVyO1xuICBtZW1vPzogVWludDhBcnJheTsgLy8gRmxhcmVKUyBtZW1vIGZvcm1hdCAoYnl0ZSBhcnJheSlcbiAgbG9ja3RpbWU/OiBiaWdpbnQ7XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import Utils from './utils';
2
+ export * from './iface';
3
+ export { KeyPair } from './keyPair';
4
+ export { Utils };
5
+ export { TransactionBuilderFactory } from './transactionBuilderFactory';
6
+ export { Transaction } from './transaction';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,30 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Transaction = exports.TransactionBuilderFactory = exports.Utils = exports.KeyPair = void 0;
21
+ const utils_1 = __importDefault(require("./utils"));
22
+ exports.Utils = utils_1.default;
23
+ __exportStar(require("./iface"), exports);
24
+ var keyPair_1 = require("./keyPair");
25
+ Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
26
+ var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
27
+ Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
28
+ var transaction_1 = require("./transaction");
29
+ Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBR25CLGdCQUhGLGVBQUssQ0FHRTtBQUZkLDBDQUF3QjtBQUN4QixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBRWhCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQTtBQUNsQyw2Q0FBNEM7QUFBbkMsMEdBQUEsV0FBVyxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFV0aWxzIH07XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { DefaultKeys, KeyPairOptions, Secp256k1ExtendedKeyPair } from '@bitgo-beta/sdk-core';
2
+ export declare enum addressFormat {
3
+ testnet = "fuji",
4
+ mainnet = "flr"
5
+ }
6
+ export declare class KeyPair extends Secp256k1ExtendedKeyPair {
7
+ /**
8
+ * Public constructor. By default, creates a key pair with a random master seed.
9
+ *
10
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
11
+ */
12
+ constructor(source?: KeyPairOptions);
13
+ /**
14
+ * Build a keypair from a protocol private key or extended private key.
15
+ *
16
+ * @param {string} prv A raw private key
17
+ */
18
+ recordKeysFromPrivateKey(prv: string): void;
19
+ /**
20
+ * Build an ECPair from a protocol public key or extended public key.
21
+ *
22
+ * @param {string} pub A raw public key
23
+ */
24
+ recordKeysFromPublicKey(pub: string): void;
25
+ /**
26
+ * Default keys format is a pair of Uint8Array keys
27
+ *
28
+ * @returns { DefaultKeys } The keys in the defined format
29
+ */
30
+ getKeys(): DefaultKeys;
31
+ /**
32
+ * Get a Flare P-Chain public mainnet address
33
+ *
34
+ * @param {string} format - flare hrp selector: Mainnet(flr) or Testnet(fuji)
35
+ * @returns {string} The mainnet address derived from the public key
36
+ */
37
+ getAddress(format?: string): string;
38
+ /**
39
+ * Get a public address of public key.
40
+ *
41
+ * @param {string} hrp - select Mainnet(flr) or Testnet(fuji) for the address
42
+ * @returns {string} The address derived from the public key and hrp
43
+ */
44
+ getFlrPAddress(hrp: string): string;
45
+ /**
46
+ * Get a Flare P-Chain public mainnet address buffer
47
+ *
48
+ * @returns {Buffer} The address buffer derived from the public key
49
+ */
50
+ private getAddressBuffer;
51
+ /**
52
+ * Use the safe Buffer instead of the regular buffer to derive the address buffer. Used in the OVC.
53
+ *
54
+ * @returns {Buffer}
55
+ */
56
+ private getAddressSafeBuffer;
57
+ }
58
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAMX,cAAc,EACd,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAM9B,oBAAY,aAAa;IACvB,OAAO,SAAS;IAChB,OAAO,QAAQ;CAChB;AAED,qBAAa,OAAQ,SAAQ,wBAAwB;IACnD;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAoBnC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAkB1C;;;;OAIG;IACH,OAAO,IAAI,WAAW;IAOtB;;;;;OAKG;IACH,UAAU,CAAC,MAAM,SAAY,GAAG,MAAM;IAGtC;;;;;OAKG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKnC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAK7B"}