@bitgo-beta/sdk-coin-flrp 1.0.1-beta.67 → 1.0.1-beta.68

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 (113) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +6 -6
  3. package/dist/src/flrp.d.ts +0 -91
  4. package/dist/src/flrp.d.ts.map +0 -1
  5. package/dist/src/flrp.js +0 -343
  6. package/dist/src/iface.d.ts +0 -25
  7. package/dist/src/iface.d.ts.map +0 -1
  8. package/dist/src/iface.js +0 -3
  9. package/dist/src/index.d.ts +0 -6
  10. package/dist/src/index.d.ts.map +0 -1
  11. package/dist/src/index.js +0 -45
  12. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +0 -26
  13. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +0 -1
  14. package/dist/src/lib/atomicInCTransactionBuilder.js +0 -64
  15. package/dist/src/lib/atomicTransactionBuilder.d.ts +0 -96
  16. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +0 -1
  17. package/dist/src/lib/atomicTransactionBuilder.js +0 -318
  18. package/dist/src/lib/constants.d.ts +0 -170
  19. package/dist/src/lib/constants.d.ts.map +0 -1
  20. package/dist/src/lib/constants.js +0 -227
  21. package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
  22. package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
  23. package/dist/src/lib/delegatorTxBuilder.js +0 -224
  24. package/dist/src/lib/errors.d.ts +0 -8
  25. package/dist/src/lib/errors.d.ts.map +0 -1
  26. package/dist/src/lib/errors.js +0 -19
  27. package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
  28. package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
  29. package/dist/src/lib/exportInCTxBuilder.js +0 -199
  30. package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
  31. package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
  32. package/dist/src/lib/exportInPTxBuilder.js +0 -120
  33. package/dist/src/lib/iface.d.ts +0 -119
  34. package/dist/src/lib/iface.d.ts.map +0 -1
  35. package/dist/src/lib/iface.js +0 -22
  36. package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
  37. package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
  38. package/dist/src/lib/importInCTxBuilder.js +0 -403
  39. package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
  40. package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
  41. package/dist/src/lib/importInPTxBuilder.js +0 -464
  42. package/dist/src/lib/index.d.ts +0 -12
  43. package/dist/src/lib/index.d.ts.map +0 -1
  44. package/dist/src/lib/index.js +0 -39
  45. package/dist/src/lib/keyPair.d.ts +0 -58
  46. package/dist/src/lib/keyPair.d.ts.map +0 -1
  47. package/dist/src/lib/keyPair.js +0 -142
  48. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -81
  49. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
  50. package/dist/src/lib/permissionlessValidatorTxBuilder.js +0 -248
  51. package/dist/src/lib/transaction.d.ts +0 -111
  52. package/dist/src/lib/transaction.d.ts.map +0 -1
  53. package/dist/src/lib/transaction.js +0 -322
  54. package/dist/src/lib/transactionBuilder.d.ts +0 -85
  55. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  56. package/dist/src/lib/transactionBuilder.js +0 -167
  57. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -37
  58. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  59. package/dist/src/lib/transactionBuilderFactory.js +0 -91
  60. package/dist/src/lib/types.d.ts +0 -78
  61. package/dist/src/lib/types.d.ts.map +0 -1
  62. package/dist/src/lib/types.js +0 -5
  63. package/dist/src/lib/utils.d.ts +0 -217
  64. package/dist/src/lib/utils.d.ts.map +0 -1
  65. package/dist/src/lib/utils.js +0 -498
  66. package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
  67. package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
  68. package/dist/src/lib/validatorTxBuilder.js +0 -180
  69. package/dist/src/register.d.ts +0 -3
  70. package/dist/src/register.d.ts.map +0 -1
  71. package/dist/src/register.js +0 -11
  72. package/dist/src/tflrp.d.ts +0 -8
  73. package/dist/src/tflrp.d.ts.map +0 -1
  74. package/dist/src/tflrp.js +0 -14
  75. package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
  76. package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
  77. package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
  78. package/dist/test/unit/flrp.d.ts +0 -2
  79. package/dist/test/unit/flrp.d.ts.map +0 -1
  80. package/dist/test/unit/flrp.js +0 -118
  81. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
  82. package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
  83. package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
  84. package/dist/test/unit/lib/exportInCTxBuilder.d.ts +0 -2
  85. package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +0 -1
  86. package/dist/test/unit/lib/exportInCTxBuilder.js +0 -584
  87. package/dist/test/unit/lib/exportInPTxBuilder.d.ts +0 -2
  88. package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +0 -1
  89. package/dist/test/unit/lib/exportInPTxBuilder.js +0 -377
  90. package/dist/test/unit/lib/importInCTxBuilder.d.ts +0 -2
  91. package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +0 -1
  92. package/dist/test/unit/lib/importInCTxBuilder.js +0 -257
  93. package/dist/test/unit/lib/importInPTxBuilder.d.ts +0 -2
  94. package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +0 -1
  95. package/dist/test/unit/lib/importInPTxBuilder.js +0 -500
  96. package/dist/test/unit/lib/transaction.d.ts +0 -2
  97. package/dist/test/unit/lib/transaction.d.ts.map +0 -1
  98. package/dist/test/unit/lib/transaction.js +0 -460
  99. package/dist/test/unit/lib/utils.d.ts +0 -2
  100. package/dist/test/unit/lib/utils.d.ts.map +0 -1
  101. package/dist/test/unit/lib/utils.js +0 -286
  102. package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +0 -2
  103. package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
  104. package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
  105. package/dist/test/unit/smoke.d.ts +0 -2
  106. package/dist/test/unit/smoke.d.ts.map +0 -1
  107. package/dist/test/unit/smoke.js +0 -23
  108. package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
  109. package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
  110. package/dist/test/unit/transactionBuilder.test.js +0 -114
  111. package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
  112. package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
  113. package/dist/test/unit/validatorTxBuilder.test.js +0 -293
@@ -1,224 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DelegatorTxBuilder = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- const atomicTransactionBuilder_1 = require("./atomicTransactionBuilder");
6
- const constants_1 = require("./constants");
7
- class DelegatorTxBuilder extends atomicTransactionBuilder_1.AtomicTransactionBuilder {
8
- /**
9
- * @param coinConfig
10
- */
11
- constructor(coinConfig) {
12
- super(coinConfig);
13
- this._nodeID = constants_1.EMPTY_STRING;
14
- this._startTime = constants_1.ZERO_BIGINT;
15
- this._endTime = constants_1.ZERO_BIGINT;
16
- this._stakeAmount = constants_1.ZERO_BIGINT;
17
- }
18
- /**
19
- * get transaction type
20
- * @protected
21
- */
22
- get transactionType() {
23
- return sdk_core_1.TransactionType.AddDelegator;
24
- }
25
- /**
26
- * Set the node ID for delegation
27
- * @param nodeID - The node ID to delegate to
28
- */
29
- nodeID(nodeID) {
30
- if (!nodeID || nodeID.length === constants_1.ZERO_NUMBER) {
31
- throw new sdk_core_1.BuildTransactionError('Node ID cannot be empty');
32
- }
33
- this._nodeID = nodeID;
34
- return this;
35
- }
36
- /**
37
- * Set the start time for delegation
38
- * @param startTime - Unix timestamp for when delegation starts
39
- */
40
- startTime(startTime) {
41
- const time = BigInt(startTime);
42
- // Validate that start time is positive
43
- if (time <= constants_1.ZERO_NUMBER) {
44
- throw new sdk_core_1.BuildTransactionError('Start time must be positive');
45
- }
46
- // Validate that start time is before end time (if end time is already set)
47
- if (this._endTime > constants_1.ZERO_NUMBER && time >= this._endTime) {
48
- throw new sdk_core_1.BuildTransactionError('Start time must be before end time');
49
- }
50
- this._startTime = time;
51
- return this;
52
- }
53
- /**
54
- * Set the end time for delegation
55
- * @param endTime - Unix timestamp for when delegation ends
56
- */
57
- endTime(endTime) {
58
- const time = BigInt(endTime);
59
- // Validate that end time is positive
60
- if (time <= constants_1.ZERO_NUMBER) {
61
- throw new sdk_core_1.BuildTransactionError('End time must be positive');
62
- }
63
- // Validate that end time is after start time (if start time is already set)
64
- if (this._startTime > constants_1.ZERO_NUMBER && time <= this._startTime) {
65
- throw new sdk_core_1.BuildTransactionError('End time must be after start time');
66
- }
67
- this._endTime = time;
68
- return this;
69
- }
70
- /**
71
- * Set the stake amount for delegation
72
- * @param amount - Amount to stake (in nFLR)
73
- */
74
- stakeAmount(amount) {
75
- const stake = BigInt(amount);
76
- if (stake <= constants_1.ZERO_NUMBER) {
77
- throw new sdk_core_1.BuildTransactionError('Stake amount must be positive');
78
- }
79
- this._stakeAmount = stake;
80
- return this;
81
- }
82
- /**
83
- * Set reward addresses where delegation rewards should be sent
84
- * @param addresses - Array of reward addresses
85
- */
86
- rewardAddresses(addresses) {
87
- if (!addresses || addresses.length === constants_1.ZERO_NUMBER) {
88
- throw new sdk_core_1.BuildTransactionError('At least one reward address is required');
89
- }
90
- // Store reward addresses in the transaction (we'll need to extend the type)
91
- this.transaction._rewardAddresses = addresses;
92
- return this;
93
- }
94
- /** @inheritdoc */
95
- initBuilder(tx) {
96
- super.initBuilder(tx);
97
- // Extract delegator-specific fields from transaction
98
- const txData = tx;
99
- const delegatorData = txData;
100
- if (delegatorData.nodeID) {
101
- this._nodeID = delegatorData.nodeID;
102
- }
103
- if (delegatorData.startTime) {
104
- this._startTime = BigInt(delegatorData.startTime);
105
- }
106
- if (delegatorData.endTime) {
107
- this._endTime = BigInt(delegatorData.endTime);
108
- }
109
- if (delegatorData.stakeAmount) {
110
- this._stakeAmount = BigInt(delegatorData.stakeAmount);
111
- }
112
- if (delegatorData.rewardAddresses) {
113
- this.transaction._rewardAddresses = delegatorData.rewardAddresses;
114
- }
115
- return this;
116
- }
117
- /**
118
- * Verify if the transaction is a delegator transaction
119
- * @param tx
120
- */
121
- static verifyTxType(tx) {
122
- // Check if transaction has delegator-specific properties
123
- const delegatorData = tx;
124
- return !!(delegatorData && delegatorData.nodeID && delegatorData.stakeAmount);
125
- }
126
- verifyTxType(tx) {
127
- return DelegatorTxBuilder.verifyTxType(tx);
128
- }
129
- /**
130
- * Build the delegator transaction using FlareJS PVM API
131
- * @protected
132
- */
133
- async buildFlareTransaction() {
134
- // Basic validation
135
- if (!this._nodeID) {
136
- throw new sdk_core_1.BuildTransactionError('Node ID is required for delegator transaction');
137
- }
138
- if (!this._startTime) {
139
- throw new sdk_core_1.BuildTransactionError('Start time is required for delegator transaction');
140
- }
141
- if (!this._endTime) {
142
- throw new sdk_core_1.BuildTransactionError('End time is required for delegator transaction');
143
- }
144
- if (!this._stakeAmount) {
145
- throw new sdk_core_1.BuildTransactionError('Stake amount is required for delegator transaction');
146
- }
147
- const rewardAddresses = this.transaction._rewardAddresses;
148
- if (!rewardAddresses || rewardAddresses.length === constants_1.ZERO_NUMBER) {
149
- throw new sdk_core_1.BuildTransactionError('Reward addresses are required for delegator transaction');
150
- }
151
- // Validate time range
152
- if (this._endTime <= this._startTime) {
153
- throw new sdk_core_1.BuildTransactionError('End time must be after start time');
154
- }
155
- try {
156
- // FlareJS PVM API implementation for delegator transactions
157
- // This creates a structured delegator transaction with proper credential handling
158
- const enhancedDelegatorTx = {
159
- type: constants_1.DELEGATOR_TRANSACTION_TYPE,
160
- networkID: this.transaction._networkID,
161
- blockchainID: this.transaction._blockchainID,
162
- // Enhanced delegator information structure
163
- delegator: {
164
- nodeID: this._nodeID,
165
- startTime: this._startTime,
166
- endTime: this._endTime,
167
- stakeAmount: this._stakeAmount,
168
- rewardAddress: rewardAddresses[constants_1.FIRST_ADDRESS_INDEX],
169
- // FlareJS delegator markers
170
- _delegatorType: constants_1.PRIMARY_DELEGATOR_TYPE,
171
- _flareJSReady: true,
172
- _pvmCompatible: true,
173
- },
174
- // Enhanced stake information with credentials
175
- stake: {
176
- assetID: this.getAssetId(),
177
- amount: this._stakeAmount,
178
- addresses: this.transaction._fromAddresses,
179
- threshold: this.transaction._threshold || constants_1.DEFAULT_THRESHOLD,
180
- locktime: this.transaction._locktime || constants_1.DEFAULT_LOCKTIME,
181
- // FlareJS stake markers
182
- _stakeType: constants_1.DELEGATOR_STAKE_TYPE,
183
- _flareJSReady: true,
184
- },
185
- // Enhanced credential structure for delegators
186
- // This provides proper FlareJS-compatible credential management
187
- credentials: this.transaction._fromAddresses.map((address, index) => ({
188
- signatures: [], // Will be populated by FlareJS signing process
189
- addressIndices: [index], // Index of the signing address
190
- threshold: constants_1.DEFAULT_THRESHOLD, // Signature threshold for this credential
191
- // FlareJS credential markers
192
- _credentialType: constants_1.SECP256K1_CREDENTIAL_TYPE,
193
- _delegatorCredential: true,
194
- _addressIndex: index,
195
- _signingAddress: address,
196
- _flareJSReady: true,
197
- _credentialVersion: constants_1.CREDENTIAL_VERSION,
198
- })),
199
- // Enhanced outputs for delegator rewards
200
- outputs: [
201
- {
202
- assetID: this.getAssetId(),
203
- amount: this._stakeAmount,
204
- addresses: [rewardAddresses[constants_1.FIRST_ADDRESS_INDEX]],
205
- threshold: constants_1.DEFAULT_THRESHOLD,
206
- locktime: this.transaction._locktime || constants_1.DEFAULT_LOCKTIME,
207
- // FlareJS output markers
208
- _outputType: constants_1.STAKE_OUTPUT_TYPE,
209
- _rewardOutput: true,
210
- _flareJSReady: true,
211
- },
212
- ],
213
- // Transaction metadata
214
- memo: Buffer.alloc(constants_1.MEMO_BUFFER_SIZE),
215
- };
216
- this.transaction.setTransaction(enhancedDelegatorTx);
217
- }
218
- catch (error) {
219
- throw new sdk_core_1.BuildTransactionError(`Failed to build delegator transaction: ${error instanceof Error ? error.message : 'Unknown error'}`);
220
- }
221
- }
222
- }
223
- exports.DelegatorTxBuilder = DelegatorTxBuilder;
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdG9yVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9kZWxlZ2F0b3JUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQThFO0FBRTlFLHlFQUFzRTtBQUd0RSwyQ0FjcUI7QUFFckIsTUFBYSxrQkFBbUIsU0FBUSxtREFBd0I7SUFNOUQ7O09BRUc7SUFDSCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLHdCQUFZLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBVyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQVcsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLHVCQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssdUJBQVcsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsU0FBbUM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9CLHVDQUF1QztRQUN2QyxJQUFJLElBQUksSUFBSSx1QkFBVyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVE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QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FDckcsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExUEQsZ0RBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2F0b21pY1RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgUmF3VHJhbnNhY3Rpb25EYXRhLCBTdGFraW5nRXh0ZW5kZWRUcmFuc2FjdGlvbiwgRGVsZWdhdG9yUmF3VHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBERUxFR0FUT1JfVFJBTlNBQ1RJT05fVFlQRSxcbiAgUFJJTUFSWV9ERUxFR0FUT1JfVFlQRSxcbiAgREVMRUdBVE9SX1NUQUtFX1RZUEUsXG4gIFNFQ1AyNTZLMV9DUkVERU5USUFMX1RZUEUsXG4gIFNUQUtFX09VVFBVVF9UWVBFLFxuICBDUkVERU5USUFMX1ZFUlNJT04sXG4gIEVNUFRZX1NUUklORyxcbiAgWkVST19CSUdJTlQsXG4gIFpFUk9fTlVNQkVSLFxuICBERUZBVUxUX1RIUkVTSE9MRCxcbiAgREVGQVVMVF9MT0NLVElNRSxcbiAgTUVNT19CVUZGRVJfU0laRSxcbiAgRklSU1RfQUREUkVTU19JTkRFWCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgRGVsZWdhdG9yVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9lbmRUaW1lOiBiaWdpbnQ7XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IGJpZ2ludDtcblxuICAvKipcbiAgICogQHBhcmFtIGNvaW5Db25maWdcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbm9kZUlEID0gRU1QVFlfU1RSSU5HO1xuICAgIHRoaXMuX3N0YXJ0VGltZSA9IFpFUk9fQklHSU5UO1xuICAgIHRoaXMuX2VuZFRpbWUgPSBaRVJPX0JJR0lOVDtcbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IFpFUk9fQklHSU5UO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGREZWxlZ2F0b3I7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBub2RlIElEIGZvciBkZWxlZ2F0aW9uXG4gICAqIEBwYXJhbSBub2RlSUQgLSBUaGUgbm9kZSBJRCB0byBkZWxlZ2F0ZSB0b1xuICAgKi9cbiAgbm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFub2RlSUQgfHwgbm9kZUlELmxlbmd0aCA9PT0gWkVST19OVU1CRVIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGUgSUQgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuICAgIHRoaXMuX25vZGVJRCA9IG5vZGVJRDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YXJ0IHRpbWUgZm9yIGRlbGVnYXRpb25cbiAgICogQHBhcmFtIHN0YXJ0VGltZSAtIFVuaXggdGltZXN0YW1wIGZvciB3aGVuIGRlbGVnYXRpb24gc3RhcnRzXG4gICAqL1xuICBzdGFydFRpbWUoc3RhcnRUaW1lOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCB0aW1lID0gQmlnSW50KHN0YXJ0VGltZSk7XG5cbiAgICAvLyBWYWxpZGF0ZSB0aGF0IHN0YXJ0IHRpbWUgaXMgcG9zaXRpdmVcbiAgICBpZiAodGltZSA8PSBaRVJPX05VTUJFUikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBzdGFydCB0aW1lIGlzIGJlZm9yZSBlbmQgdGltZSAoaWYgZW5kIHRpbWUgaXMgYWxyZWFkeSBzZXQpXG4gICAgaWYgKHRoaXMuX2VuZFRpbWUgPiBaRVJPX05VTUJFUiAmJiB0aW1lID49IHRoaXMuX2VuZFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1N0YXJ0IHRpbWUgbXVzdCBiZSBiZWZvcmUgZW5kIHRpbWUnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGFydFRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZW5kIHRpbWUgZm9yIGRlbGVnYXRpb25cbiAgICogQHBhcmFtIGVuZFRpbWUgLSBVbml4IHRpbWVzdGFtcCBmb3Igd2hlbiBkZWxlZ2F0aW9uIGVuZHNcbiAgICovXG4gIGVuZFRpbWUoZW5kVGltZTogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3QgdGltZSA9IEJpZ0ludChlbmRUaW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgZW5kIHRpbWUgaXMgcG9zaXRpdmVcbiAgICBpZiAodGltZSA8PSBaRVJPX05VTUJFUikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIHRpbWUgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgZW5kIHRpbWUgaXMgYWZ0ZXIgc3RhcnQgdGltZSAoaWYgc3RhcnQgdGltZSBpcyBhbHJlYWR5IHNldClcbiAgICBpZiAodGhpcy5fc3RhcnRUaW1lID4gWkVST19OVU1CRVIgJiYgdGltZSA8PSB0aGlzLl9zdGFydFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCB0aW1lIG11c3QgYmUgYWZ0ZXIgc3RhcnQgdGltZScpO1xuICAgIH1cblxuICAgIHRoaXMuX2VuZFRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3Rha2UgYW1vdW50IGZvciBkZWxlZ2F0aW9uXG4gICAqIEBwYXJhbSBhbW91bnQgLSBBbW91bnQgdG8gc3Rha2UgKGluIG5GTFIpXG4gICAqL1xuICBzdGFrZUFtb3VudChhbW91bnQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCk6IHRoaXMge1xuICAgIGNvbnN0IHN0YWtlID0gQmlnSW50KGFtb3VudCk7XG4gICAgaWYgKHN0YWtlIDw9IFpFUk9fTlVNQkVSKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFrZSBhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICAgIH1cbiAgICB0aGlzLl9zdGFrZUFtb3VudCA9IHN0YWtlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCByZXdhcmQgYWRkcmVzc2VzIHdoZXJlIGRlbGVnYXRpb24gcmV3YXJkcyBzaG91bGQgYmUgc2VudFxuICAgKiBAcGFyYW0gYWRkcmVzc2VzIC0gQXJyYXkgb2YgcmV3YXJkIGFkZHJlc3Nlc1xuICAgKi9cbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3Nlczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3NlcyB8fCBhZGRyZXNzZXMubGVuZ3RoID09PSBaRVJPX05VTUJFUikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQXQgbGVhc3Qgb25lIHJld2FyZCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIC8vIFN0b3JlIHJld2FyZCBhZGRyZXNzZXMgaW4gdGhlIHRyYW5zYWN0aW9uICh3ZSdsbCBuZWVkIHRvIGV4dGVuZCB0aGUgdHlwZSlcbiAgICAodGhpcy50cmFuc2FjdGlvbiBhcyB1bmtub3duIGFzIFN0YWtpbmdFeHRlbmRlZFRyYW5zYWN0aW9uKS5fcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzc2VzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUeCk6IHRoaXMge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcblxuICAgIC8vIEV4dHJhY3QgZGVsZWdhdG9yLXNwZWNpZmljIGZpZWxkcyBmcm9tIHRyYW5zYWN0aW9uXG4gICAgY29uc3QgdHhEYXRhID0gdHggYXMgdW5rbm93biBhcyBSYXdUcmFuc2FjdGlvbkRhdGE7XG4gICAgY29uc3QgZGVsZWdhdG9yRGF0YSA9IHR4RGF0YSBhcyBEZWxlZ2F0b3JSYXdUcmFuc2FjdGlvbkRhdGE7XG5cbiAgICBpZiAoZGVsZWdhdG9yRGF0YS5ub2RlSUQpIHtcbiAgICAgIHRoaXMuX25vZGVJRCA9IGRlbGVnYXRvckRhdGEubm9kZUlEO1xuICAgIH1cbiAgICBpZiAoZGVsZWdhdG9yRGF0YS5zdGFydFRpbWUpIHtcbiAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IEJpZ0ludChkZWxlZ2F0b3JEYXRhLnN0YXJ0VGltZSk7XG4gICAgfVxuICAgIGlmIChkZWxlZ2F0b3JEYXRhLmVuZFRpbWUpIHtcbiAgICAgIHRoaXMuX2VuZFRpbWUgPSBCaWdJbnQoZGVsZWdhdG9yRGF0YS5lbmRUaW1lKTtcbiAgICB9XG4gICAgaWYgKGRlbGVnYXRvckRhdGEuc3Rha2VBbW91bnQpIHtcbiAgICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gQmlnSW50KGRlbGVnYXRvckRhdGEuc3Rha2VBbW91bnQpO1xuICAgIH1cbiAgICBpZiAoZGVsZWdhdG9yRGF0YS5yZXdhcmRBZGRyZXNzZXMpIHtcbiAgICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIHVua25vd24gYXMgU3Rha2luZ0V4dGVuZGVkVHJhbnNhY3Rpb24pLl9yZXdhcmRBZGRyZXNzZXMgPSBkZWxlZ2F0b3JEYXRhLnJld2FyZEFkZHJlc3NlcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGEgZGVsZWdhdG9yIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB0eFxuICAgKi9cbiAgc3RhdGljIHZlcmlmeVR4VHlwZSh0eDogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIC8vIENoZWNrIGlmIHRyYW5zYWN0aW9uIGhhcyBkZWxlZ2F0b3Itc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIGNvbnN0IGRlbGVnYXRvckRhdGEgPSB0eCBhcyBEZWxlZ2F0b3JSYXdUcmFuc2FjdGlvbkRhdGE7XG4gICAgcmV0dXJuICEhKGRlbGVnYXRvckRhdGEgJiYgZGVsZWdhdG9yRGF0YS5ub2RlSUQgJiYgZGVsZWdhdG9yRGF0YS5zdGFrZUFtb3VudCk7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUodHg6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gRGVsZWdhdG9yVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGRlbGVnYXRvciB0cmFuc2FjdGlvbiB1c2luZyBGbGFyZUpTIFBWTSBBUElcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uXG4gICAgaWYgKCF0aGlzLl9ub2RlSUQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ05vZGUgSUQgaXMgcmVxdWlyZWQgZm9yIGRlbGVnYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU3RhcnQgdGltZSBpcyByZXF1aXJlZCBmb3IgZGVsZWdhdG9yIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZW5kVGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIHRpbWUgaXMgcmVxdWlyZWQgZm9yIGRlbGVnYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3N0YWtlQW1vdW50KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdTdGFrZSBhbW91bnQgaXMgcmVxdWlyZWQgZm9yIGRlbGVnYXRvciB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJld2FyZEFkZHJlc3NlcyA9ICh0aGlzLnRyYW5zYWN0aW9uIGFzIHVua25vd24gYXMgU3Rha2luZ0V4dGVuZGVkVHJhbnNhY3Rpb24pLl9yZXdhcmRBZGRyZXNzZXM7XG4gICAgaWYgKCFyZXdhcmRBZGRyZXNzZXMgfHwgcmV3YXJkQWRkcmVzc2VzLmxlbmd0aCA9PT0gWkVST19OVU1CRVIpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1Jld2FyZCBhZGRyZXNzZXMgYXJlIHJlcXVpcmVkIGZvciBkZWxlZ2F0b3IgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSB0aW1lIHJhbmdlXG4gICAgaWYgKHRoaXMuX2VuZFRpbWUgPD0gdGhpcy5fc3RhcnRUaW1lKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFbmQgdGltZSBtdXN0IGJlIGFmdGVyIHN0YXJ0IHRpbWUnKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gRmxhcmVKUyBQVk0gQVBJIGltcGxlbWVudGF0aW9uIGZvciBkZWxlZ2F0b3IgdHJhbnNhY3Rpb25zXG4gICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBzdHJ1Y3R1cmVkIGRlbGVnYXRvciB0cmFuc2FjdGlvbiB3aXRoIHByb3BlciBjcmVkZW50aWFsIGhhbmRsaW5nXG5cbiAgICAgIGNvbnN0IGVuaGFuY2VkRGVsZWdhdG9yVHggPSB7XG4gICAgICAgIHR5cGU6IERFTEVHQVRPUl9UUkFOU0FDVElPTl9UWVBFLFxuICAgICAgICBuZXR3b3JrSUQ6IHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCxcbiAgICAgICAgYmxvY2tjaGFpbklEOiB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG5cbiAgICAgICAgLy8gRW5oYW5jZWQgZGVsZWdhdG9yIGluZm9ybWF0aW9uIHN0cnVjdHVyZVxuICAgICAgICBkZWxlZ2F0b3I6IHtcbiAgICAgICAgICBub2RlSUQ6IHRoaXMuX25vZGVJRCxcbiAgICAgICAgICBzdGFydFRpbWU6IHRoaXMuX3N0YXJ0VGltZSxcbiAgICAgICAgICBlbmRUaW1lOiB0aGlzLl9lbmRUaW1lLFxuICAgICAgICAgIHN0YWtlQW1vdW50OiB0aGlzLl9zdGFrZUFtb3VudCxcbiAgICAgICAgICByZXdhcmRBZGRyZXNzOiByZXdhcmRBZGRyZXNzZXNbRklSU1RfQUREUkVTU19JTkRFWF0sXG4gICAgICAgICAgLy8gRmxhcmVKUyBkZWxlZ2F0b3IgbWFya2Vyc1xuICAgICAgICAgIF9kZWxlZ2F0b3JUeXBlOiBQUklNQVJZX0RFTEVHQVRPUl9UWVBFLFxuICAgICAgICAgIF9mbGFyZUpTUmVhZHk6IHRydWUsXG4gICAgICAgICAgX3B2bUNvbXBhdGlibGU6IHRydWUsXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gRW5oYW5jZWQgc3Rha2UgaW5mb3JtYXRpb24gd2l0aCBjcmVkZW50aWFsc1xuICAgICAgICBzdGFrZToge1xuICAgICAgICAgIGFzc2V0SUQ6IHRoaXMuZ2V0QXNzZXRJZCgpLFxuICAgICAgICAgIGFtb3VudDogdGhpcy5fc3Rha2VBbW91bnQsXG4gICAgICAgICAgYWRkcmVzc2VzOiB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLFxuICAgICAgICAgIHRocmVzaG9sZDogdGhpcy50cmFuc2FjdGlvbi5fdGhyZXNob2xkIHx8IERFRkFVTFRfVEhSRVNIT0xELFxuICAgICAgICAgIGxvY2t0aW1lOiB0aGlzLnRyYW5zYWN0aW9uLl9sb2NrdGltZSB8fCBERUZBVUxUX0xPQ0tUSU1FLFxuICAgICAgICAgIC8vIEZsYXJlSlMgc3Rha2UgbWFya2Vyc1xuICAgICAgICAgIF9zdGFrZVR5cGU6IERFTEVHQVRPUl9TVEFLRV9UWVBFLFxuICAgICAgICAgIF9mbGFyZUpTUmVhZHk6IHRydWUsXG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gRW5oYW5jZWQgY3JlZGVudGlhbCBzdHJ1Y3R1cmUgZm9yIGRlbGVnYXRvcnNcbiAgICAgICAgLy8gVGhpcyBwcm92aWRlcyBwcm9wZXIgRmxhcmVKUy1jb21wYXRpYmxlIGNyZWRlbnRpYWwgbWFuYWdlbWVudFxuICAgICAgICBjcmVkZW50aWFsczogdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5tYXAoKGFkZHJlc3MsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIHNpZ25hdHVyZXM6IFtdLCAvLyBXaWxsIGJlIHBvcHVsYXRlZCBieSBGbGFyZUpTIHNpZ25pbmcgcHJvY2Vzc1xuICAgICAgICAgIGFkZHJlc3NJbmRpY2VzOiBbaW5kZXhdLCAvLyBJbmRleCBvZiB0aGUgc2lnbmluZyBhZGRyZXNzXG4gICAgICAgICAgdGhyZXNob2xkOiBERUZBVUxUX1RIUkVTSE9MRCwgLy8gU2lnbmF0dXJlIHRocmVzaG9sZCBmb3IgdGhpcyBjcmVkZW50aWFsXG4gICAgICAgICAgLy8gRmxhcmVKUyBjcmVkZW50aWFsIG1hcmtlcnNcbiAgICAgICAgICBfY3JlZGVudGlhbFR5cGU6IFNFQ1AyNTZLMV9DUkVERU5USUFMX1RZUEUsXG4gICAgICAgICAgX2RlbGVnYXRvckNyZWRlbnRpYWw6IHRydWUsXG4gICAgICAgICAgX2FkZHJlc3NJbmRleDogaW5kZXgsXG4gICAgICAgICAgX3NpZ25pbmdBZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgICAgIF9mbGFyZUpTUmVhZHk6IHRydWUsXG4gICAgICAgICAgX2NyZWRlbnRpYWxWZXJzaW9uOiBDUkVERU5USUFMX1ZFUlNJT04sXG4gICAgICAgIH0pKSxcblxuICAgICAgICAvLyBFbmhhbmNlZCBvdXRwdXRzIGZvciBkZWxlZ2F0b3IgcmV3YXJkc1xuICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXNzZXRJRDogdGhpcy5nZXRBc3NldElkKCksXG4gICAgICAgICAgICBhbW91bnQ6IHRoaXMuX3N0YWtlQW1vdW50LFxuICAgICAgICAgICAgYWRkcmVzc2VzOiBbcmV3YXJkQWRkcmVzc2VzW0ZJUlNUX0FERFJFU1NfSU5ERVhdXSxcbiAgICAgICAgICAgIHRocmVzaG9sZDogREVGQVVMVF9USFJFU0hPTEQsXG4gICAgICAgICAgICBsb2NrdGltZTogdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUgfHwgREVGQVVMVF9MT0NLVElNRSxcbiAgICAgICAgICAgIC8vIEZsYXJlSlMgb3V0cHV0IG1hcmtlcnNcbiAgICAgICAgICAgIF9vdXRwdXRUeXBlOiBTVEFLRV9PVVRQVVRfVFlQRSxcbiAgICAgICAgICAgIF9yZXdhcmRPdXRwdXQ6IHRydWUsXG4gICAgICAgICAgICBfZmxhcmVKU1JlYWR5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG5cbiAgICAgICAgLy8gVHJhbnNhY3Rpb24gbWV0YWRhdGFcbiAgICAgICAgbWVtbzogQnVmZmVyLmFsbG9jKE1FTU9fQlVGRkVSX1NJWkUpLFxuICAgICAgfTtcblxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbihlbmhhbmNlZERlbGVnYXRvclR4KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBidWlsZCBkZWxlZ2F0b3IgdHJhbnNhY3Rpb246ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { BuildTransactionError } from '@bitgo-beta/sdk-core';
2
- export declare class AddressValidationError extends BuildTransactionError {
3
- constructor(malformedAddress: string);
4
- }
5
- export declare class InvalidFeeError extends BuildTransactionError {
6
- constructor(type?: string, expectedType?: string);
7
- }
8
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,gBAAgB,EAAE,MAAM;CAIrC;AAED,qBAAa,eAAgB,SAAQ,qBAAqB;gBAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAIjD"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InvalidFeeError = exports.AddressValidationError = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- class AddressValidationError extends sdk_core_1.BuildTransactionError {
6
- constructor(malformedAddress) {
7
- super(`The address '${malformedAddress}' is not a well-formed flrp address`);
8
- this.name = AddressValidationError.name;
9
- }
10
- }
11
- exports.AddressValidationError = AddressValidationError;
12
- class InvalidFeeError extends sdk_core_1.BuildTransactionError {
13
- constructor(type, expectedType) {
14
- super(`The specified type: "${type}" is not valid. Please provide the type: "${expectedType}"`);
15
- this.name = InvalidFeeError.name;
16
- }
17
- }
18
- exports.InvalidFeeError = InvalidFeeError;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTZEO0FBRTdELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLHFDQUFxQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobWFsZm9ybWVkQWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBhZGRyZXNzICcke21hbGZvcm1lZEFkZHJlc3N9JyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBmbHJwIGFkZHJlc3NgKTtcbiAgICB0aGlzLm5hbWUgPSBBZGRyZXNzVmFsaWRhdGlvbkVycm9yLm5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRGZWVFcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcsIGV4cGVjdGVkVHlwZT86IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgc3BlY2lmaWVkIHR5cGU6IFwiJHt0eXBlfVwiIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgdGhlIHR5cGU6IFwiJHtleHBlY3RlZFR5cGV9XCJgKTtcbiAgICB0aGlzLm5hbWUgPSBJbnZhbGlkRmVlRXJyb3IubmFtZTtcbiAgfVxufVxuIl19
@@ -1,77 +0,0 @@
1
- import { TransactionType } from '@bitgo-beta/sdk-core';
2
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
- import { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
4
- interface FlareExportInputShape {
5
- address: string;
6
- amount: bigint;
7
- assetId: Buffer;
8
- nonce: bigint;
9
- }
10
- interface FlareExportOutputShape {
11
- addresses: string[];
12
- amount: bigint;
13
- assetId: Buffer;
14
- }
15
- interface FlareUnsignedExportTx {
16
- networkId: number;
17
- sourceBlockchainId: Buffer;
18
- destinationBlockchainId: Buffer;
19
- inputs: FlareExportInputShape[];
20
- outputs: FlareExportOutputShape[];
21
- }
22
- interface FlareSignedExportTx {
23
- unsignedTx: FlareUnsignedExportTx;
24
- credentials: unknown[];
25
- }
26
- type RawFlareExportTx = FlareSignedExportTx;
27
- export declare class ExportInCTxBuilder extends AtomicInCTransactionBuilder {
28
- private _amount?;
29
- private _nonce?;
30
- constructor(_coinConfig: Readonly<CoinConfig>);
31
- /**
32
- * Utxos are not required in Export Tx in C-Chain.
33
- * Override utxos to prevent used by throwing a error.
34
- *
35
- * @param {DecodedUtxoObj[]} value ignored
36
- */
37
- utxos(_value: unknown[]): this;
38
- /**
39
- * Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
40
- * The transaction output amount add a fixed fee that will be paid upon import.
41
- *
42
- * @param {BN | string} amount The withdrawal amount
43
- */
44
- amount(amount: bigint | number | string): this;
45
- /**
46
- * Set the nonce of C-Chain sender address
47
- *
48
- * @param {number | string} nonce - number that can be only used once
49
- */
50
- nonce(nonce: bigint | number | string): this;
51
- /**
52
- * Export tx target P wallet.
53
- *
54
- * @param pAddresses
55
- */
56
- to(pAddresses: string | string[]): this;
57
- protected get transactionType(): TransactionType;
58
- initBuilder(raw: RawFlareExportTx): this;
59
- static verifyTxType(_tx: unknown): _tx is FlareUnsignedExportTx;
60
- verifyTxType(_tx: unknown): _tx is FlareUnsignedExportTx;
61
- /**
62
- * Build the export in C-chain transaction using FlareJS API
63
- * @protected
64
- */
65
- protected buildFlareTransaction(): void;
66
- /** @inheritdoc */
67
- protected fromImplementation(raw: string | RawFlareExportTx): {
68
- _tx?: unknown;
69
- };
70
- /**
71
- * Check the amount is positive.
72
- * @param amount
73
- */
74
- validateNonce(nonce: bigint): void;
75
- }
76
- export {};
77
- //# sourceMappingURL=exportInCTxBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exportInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportInCTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAiB5E,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,qBAAqB,CAAC;IAElC,WAAW,EAAE,OAAO,EAAE,CAAC;CACxB;AAED,KAAK,gBAAgB,GAAG,mBAAmB,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAO9C;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAO5C;;;;OAIG;IACH,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAOvC,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAsCxC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB;IA6B/D,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB;IAIxD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IA8DvC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE;IAS/E;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAKnC"}
@@ -1,199 +0,0 @@
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
- const constants_1 = require("./constants");
7
- class ExportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransactionBuilder {
8
- constructor(_coinConfig) {
9
- super(_coinConfig);
10
- }
11
- /**
12
- * Utxos are not required in Export Tx in C-Chain.
13
- * Override utxos to prevent used by throwing a error.
14
- *
15
- * @param {DecodedUtxoObj[]} value ignored
16
- */
17
- utxos(_value) {
18
- throw new sdk_core_1.BuildTransactionError('utxos are not required in Export Tx in C-Chain');
19
- }
20
- /**
21
- * Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
22
- * The transaction output amount add a fixed fee that will be paid upon import.
23
- *
24
- * @param {BN | string} amount The withdrawal amount
25
- */
26
- amount(amount) {
27
- const n = (typeof amount === constants_1.BIGINT_TYPE ? amount : BigInt(amount));
28
- this.validateAmount(n);
29
- this._amount = n;
30
- return this;
31
- }
32
- /**
33
- * Set the nonce of C-Chain sender address
34
- *
35
- * @param {number | string} nonce - number that can be only used once
36
- */
37
- nonce(nonce) {
38
- const n = (typeof nonce === constants_1.BIGINT_TYPE ? nonce : BigInt(nonce));
39
- this.validateNonce(n);
40
- this._nonce = n;
41
- return this;
42
- }
43
- /**
44
- * Export tx target P wallet.
45
- *
46
- * @param pAddresses
47
- */
48
- to(pAddresses) {
49
- const pubKeys = Array.isArray(pAddresses) ? pAddresses : pAddresses.split('~');
50
- // For now ensure they are stored as bech32 / string addresses directly
51
- this.transaction._to = pubKeys.map((a) => a.toString());
52
- return this;
53
- }
54
- get transactionType() {
55
- return sdk_core_1.TransactionType.Export;
56
- }
57
- initBuilder(raw) {
58
- // Basic shape validation
59
- const unsigned = raw.unsignedTx;
60
- if (unsigned.networkId !== this.transaction._networkID) {
61
- throw new Error('Network ID mismatch');
62
- }
63
- if (!unsigned.sourceBlockchainId.equals(this.transaction._blockchainID)) {
64
- throw new Error('Blockchain ID mismatch');
65
- }
66
- if (unsigned.outputs.length !== 1) {
67
- throw new sdk_core_1.BuildTransactionError('Transaction can have one output');
68
- }
69
- if (unsigned.inputs.length !== 1) {
70
- throw new sdk_core_1.BuildTransactionError('Transaction can have one input');
71
- }
72
- const out = unsigned.outputs[0];
73
- const inp = unsigned.inputs[0];
74
- if (!out.assetId.equals(this.transaction._assetId) || !inp.assetId.equals(this.transaction._assetId)) {
75
- throw new Error('AssetID mismatch');
76
- }
77
- this.transaction._to = out.addresses;
78
- this._amount = out.amount;
79
- const fee = inp.amount - out.amount;
80
- if (fee < 0n) {
81
- throw new sdk_core_1.BuildTransactionError('Computed fee is negative');
82
- }
83
- const fixed = this.fixedFee;
84
- const feeRate = fee - fixed;
85
- this.transaction._fee.feeRate = feeRate.toString();
86
- this.transaction._fee.fee = fee.toString();
87
- this.transaction._fee.size = 1;
88
- this.transaction._fromAddresses = [inp.address];
89
- this._nonce = inp.nonce;
90
- this.transaction.setTransaction(raw);
91
- return this;
92
- }
93
- // Verify transaction type for FlareJS export transactions
94
- static verifyTxType(_tx) {
95
- if (!_tx) {
96
- return true; // Maintain compatibility with existing tests
97
- }
98
- try {
99
- // If it's an object, do basic validation
100
- if (typeof _tx === constants_1.OBJECT_TYPE_STRING) {
101
- const tx = _tx;
102
- // Basic structure validation for export transactions
103
- const hasDestinationChain = constants_1.DESTINATION_CHAIN_PROP in tx || constants_1.DESTINATION_CHAIN_ID_PROP in tx;
104
- const hasExportedOutputs = constants_1.EXPORTED_OUTPUTS_PROP in tx || constants_1.OUTS_PROP in tx;
105
- const hasInputs = constants_1.INPUTS_PROP in tx || constants_1.INS_PROP in tx;
106
- const hasNetworkID = constants_1.NETWORK_ID_PROP in tx;
107
- const hasBlockchainID = constants_1.BLOCKCHAIN_ID_PROP in tx;
108
- // If it has the expected structure, validate it; otherwise return true for compatibility
109
- if (hasDestinationChain || hasExportedOutputs || hasInputs || hasNetworkID || hasBlockchainID) {
110
- return hasDestinationChain && hasExportedOutputs && hasInputs && hasNetworkID && hasBlockchainID;
111
- }
112
- }
113
- return true; // Default to true for backward compatibility
114
- }
115
- catch {
116
- return true; // Default to true for backward compatibility
117
- }
118
- }
119
- verifyTxType(_tx) {
120
- return ExportInCTxBuilder.verifyTxType(_tx);
121
- }
122
- /**
123
- * Build the export in C-chain transaction using FlareJS API
124
- * @protected
125
- */
126
- buildFlareTransaction() {
127
- if (this.transaction.hasCredentials) {
128
- return;
129
- }
130
- if (this._amount === undefined) {
131
- throw new Error('amount is required');
132
- }
133
- if (this.transaction._fromAddresses.length !== 1) {
134
- throw new Error('sender is one and required');
135
- }
136
- if (this.transaction._to.length === 0) {
137
- throw new Error('to is required');
138
- }
139
- if (!this.transaction._fee.feeRate) {
140
- throw new Error('fee rate is required');
141
- }
142
- if (this._nonce === undefined) {
143
- throw new Error('nonce is required');
144
- }
145
- // Build export transaction using FlareJS API patterns
146
- const feeRate = BigInt(this.transaction._fee.feeRate);
147
- const fixed = this.fixedFee;
148
- const totalFee = feeRate + fixed;
149
- // Implement FlareJS evm.newExportTx with enhanced structure
150
- const fromAddress = this.transaction._fromAddresses[0];
151
- const exportAmount = this._amount || BigInt(0);
152
- const input = {
153
- address: fromAddress,
154
- amount: exportAmount + totalFee,
155
- assetId: Buffer.alloc(constants_1.ASSET_ID_LENGTH),
156
- nonce: this._nonce || BigInt(0),
157
- };
158
- const output = {
159
- addresses: this.transaction._to,
160
- amount: exportAmount,
161
- assetId: Buffer.alloc(constants_1.ASSET_ID_LENGTH),
162
- };
163
- // Create FlareJS-ready unsigned transaction
164
- const unsigned = {
165
- networkId: this.transaction._networkID,
166
- sourceBlockchainId: this.transaction._blockchainID,
167
- destinationBlockchainId: this._externalChainId || Buffer.alloc(constants_1.ASSET_ID_LENGTH),
168
- inputs: [input],
169
- outputs: [output],
170
- };
171
- // Create signed transaction structure
172
- const signed = { unsignedTx: unsigned, credentials: [] };
173
- // Update transaction fee information
174
- this.transaction._fee.fee = totalFee.toString();
175
- this.transaction._fee.size = 1;
176
- // Set the enhanced transaction
177
- this.transaction.setTransaction(signed);
178
- }
179
- /** @inheritdoc */
180
- fromImplementation(raw) {
181
- if (typeof raw === constants_1.STRING_TYPE) {
182
- // Future: parse hex or serialized form. For now treat as opaque raw tx.
183
- this.transaction.setTransaction(raw);
184
- return this.transaction;
185
- }
186
- return this.initBuilder(raw).transaction;
187
- }
188
- /**
189
- * Check the amount is positive.
190
- * @param amount
191
- */
192
- validateNonce(nonce) {
193
- if (nonce < 0n) {
194
- throw new sdk_core_1.BuildTransactionError('Nonce must be greater or equal than 0');
195
- }
196
- }
197
- }
198
- exports.ExportInCTxBuilder = ExportInCTxBuilder;
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0SW5DVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRJbkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQThFO0FBRTlFLCtFQUE0RTtBQUM1RSwyQ0FhcUI7QUFnQ3JCLE1BQWEsa0JBQW1CLFNBQVEseURBQTJCO0lBSWpFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxNQUFpQjtRQUNyQixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBZ0M7UUFDckMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLE1BQU0sS0FBSyx1QkFBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBVyxDQUFDO1FBQzlFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUErQjtRQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLLHVCQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFXLENBQUM7UUFDM0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsRUFBRSxDQUFDLFVBQTZC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QyxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFFL0IsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUE4QjtRQUN6RCxJQUFJLE9BQU8sR0FBRyxLQUFLLHVCQUFXLEVBQUUsQ0FBQztZQUMvQix3RUFBd0U7WUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBdUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLEtBQWE7UUFDekIsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksZ0NBQXFCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdk5ELGdEQXVOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHtcbiAgQVNTRVRfSURfTEVOR1RILFxuICBPQkpFQ1RfVFlQRV9TVFJJTkcsXG4gIFNUUklOR19UWVBFLFxuICBCSUdJTlRfVFlQRSxcbiAgREVTVElOQVRJT05fQ0hBSU5fUFJPUCxcbiAgREVTVElOQVRJT05fQ0hBSU5fSURfUFJPUCxcbiAgRVhQT1JURURfT1VUUFVUU19QUk9QLFxuICBPVVRTX1BST1AsXG4gIElOUFVUU19QUk9QLFxuICBJTlNfUFJPUCxcbiAgTkVUV09SS19JRF9QUk9QLFxuICBCTE9DS0NIQUlOX0lEX1BST1AsXG59IGZyb20gJy4vY29uc3RhbnRzJztcblxuLy8gTGlnaHR3ZWlnaHQgaW50ZXJmYWNlIHBsYWNlaG9sZGVycyByZXBsYWNpbmcgQXZhbGFuY2hlIFNESyB0cmFuc2FjdGlvbiBzaGFwZXNcbmludGVyZmFjZSBGbGFyZUV4cG9ydElucHV0U2hhcGUge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGFtb3VudDogYmlnaW50OyAvLyBpbmNsdWRlcyBleHBvcnRlZCBhbW91bnQgKyBmZWVcbiAgYXNzZXRJZDogQnVmZmVyO1xuICBub25jZTogYmlnaW50O1xufVxuXG5pbnRlcmZhY2UgRmxhcmVFeHBvcnRPdXRwdXRTaGFwZSB7XG4gIGFkZHJlc3Nlczogc3RyaW5nW107IC8vIGRlc3RpbmF0aW9uIFAtY2hhaW4gYWRkcmVzc2VzXG4gIGFtb3VudDogYmlnaW50OyAvLyBleHBvcnRlZCBhbW91bnRcbiAgYXNzZXRJZDogQnVmZmVyO1xufVxuXG5pbnRlcmZhY2UgRmxhcmVVbnNpZ25lZEV4cG9ydFR4IHtcbiAgbmV0d29ya0lkOiBudW1iZXI7XG4gIHNvdXJjZUJsb2NrY2hhaW5JZDogQnVmZmVyOyAvLyBDLWNoYWluIGlkXG4gIGRlc3RpbmF0aW9uQmxvY2tjaGFpbklkOiBCdWZmZXI7IC8vIFAtY2hhaW4gaWRcbiAgaW5wdXRzOiBGbGFyZUV4cG9ydElucHV0U2hhcGVbXTtcbiAgb3V0cHV0czogRmxhcmVFeHBvcnRPdXRwdXRTaGFwZVtdO1xufVxuXG5pbnRlcmZhY2UgRmxhcmVTaWduZWRFeHBvcnRUeCB7XG4gIHVuc2lnbmVkVHg6IEZsYXJlVW5zaWduZWRFeHBvcnRUeDtcbiAgLy8gY3JlZGVudGlhbHMgcGxhY2Vob2xkZXJcbiAgY3JlZGVudGlhbHM6IHVua25vd25bXTtcbn1cblxudHlwZSBSYXdGbGFyZUV4cG9ydFR4ID0gRmxhcmVTaWduZWRFeHBvcnRUeDsgLy8gZm9yIG5vdyB0cmVhdCB0aGVtIHRoZSBzYW1lXG5cbmV4cG9ydCBjbGFzcyBFeHBvcnRJbkNUeEJ1aWxkZXIgZXh0ZW5kcyBBdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9hbW91bnQ/OiBiaWdpbnQ7XG4gIHByaXZhdGUgX25vbmNlPzogYmlnaW50O1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVdHhvcyBhcmUgbm90IHJlcXVpcmVkIGluIEV4cG9ydCBUeCBpbiBDLUNoYWluLlxuICAgKiBPdmVycmlkZSB1dHhvcyB0byBwcmV2ZW50IHVzZWQgYnkgdGhyb3dpbmcgYSBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIHtEZWNvZGVkVXR4b09ialtdfSB2YWx1ZSBpZ25vcmVkXG4gICAqL1xuICB1dHhvcyhfdmFsdWU6IHVua25vd25bXSk6IHRoaXMge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3V0eG9zIGFyZSBub3QgcmVxdWlyZWQgaW4gRXhwb3J0IFR4IGluIEMtQ2hhaW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbW91bnQgaXMgYSBsb25nIHRoYXQgc3BlY2lmaWVzIHRoZSBxdWFudGl0eSBvZiB0aGUgYXNzZXQgdGhhdCB0aGlzIG91dHB1dCBvd25zLiBNdXN0IGJlIHBvc2l0aXZlLlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gb3V0cHV0IGFtb3VudCBhZGQgYSBmaXhlZCBmZWUgdGhhdCB3aWxsIGJlIHBhaWQgdXBvbiBpbXBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7Qk4gfCBzdHJpbmd9IGFtb3VudCBUaGUgd2l0aGRyYXdhbCBhbW91bnRcbiAgICovXG4gIGFtb3VudChhbW91bnQ6IGJpZ2ludCB8IG51bWJlciB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IG4gPSAodHlwZW9mIGFtb3VudCA9PT0gQklHSU5UX1RZUEUgPyBhbW91bnQgOiBCaWdJbnQoYW1vdW50KSkgYXMgYmlnaW50O1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnQobik7XG4gICAgdGhpcy5fYW1vdW50ID0gbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG5vbmNlIG9mIEMtQ2hhaW4gc2VuZGVyIGFkZHJlc3NcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXIgfCBzdHJpbmd9IG5vbmNlIC0gbnVtYmVyIHRoYXQgY2FuIGJlIG9ubHkgdXNlZCBvbmNlXG4gICAqL1xuICBub25jZShub25jZTogYmlnaW50IHwgbnVtYmVyIHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgbiA9ICh0eXBlb2Ygbm9uY2UgPT09IEJJR0lOVF9UWVBFID8gbm9uY2UgOiBCaWdJbnQobm9uY2UpKSBhcyBiaWdpbnQ7XG4gICAgdGhpcy52YWxpZGF0ZU5vbmNlKG4pO1xuICAgIHRoaXMuX25vbmNlID0gbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgdHggdGFyZ2V0IFAgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0gcEFkZHJlc3Nlc1xuICAgKi9cbiAgdG8ocEFkZHJlc3Nlczogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gQXJyYXkuaXNBcnJheShwQWRkcmVzc2VzKSA/IHBBZGRyZXNzZXMgOiBwQWRkcmVzc2VzLnNwbGl0KCd+Jyk7XG4gICAgLy8gRm9yIG5vdyBlbnN1cmUgdGhleSBhcmUgc3RvcmVkIGFzIGJlY2gzMiAvIHN0cmluZyBhZGRyZXNzZXMgZGlyZWN0bHlcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90byA9IHB1YktleXMubWFwKChhKSA9PiBhLnRvU3RyaW5nKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkV4cG9ydDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHJhdzogUmF3RmxhcmVFeHBvcnRUeCk6IHRoaXMge1xuICAgIC8vIEJhc2ljIHNoYXBlIHZhbGlkYXRpb25cbiAgICBjb25zdCB1bnNpZ25lZCA9IHJhdy51bnNpZ25lZFR4O1xuICAgIGlmICh1bnNpZ25lZC5uZXR3b3JrSWQgIT09IHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmtJRCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXR3b3JrIElEIG1pc21hdGNoJyk7XG4gICAgfVxuICAgIGlmICghdW5zaWduZWQuc291cmNlQmxvY2tjaGFpbklkLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jsb2NrY2hhaW4gSUQgbWlzbWF0Y2gnKTtcbiAgICB9XG4gICAgaWYgKHVuc2lnbmVkLm91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGlmICh1bnNpZ25lZC5pbnB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgaW5wdXQnKTtcbiAgICB9XG4gICAgY29uc3Qgb3V0ID0gdW5zaWduZWQub3V0cHV0c1swXTtcbiAgICBjb25zdCBpbnAgPSB1bnNpZ25lZC5pbnB1dHNbMF07XG4gICAgaWYgKCFvdXQuYXNzZXRJZC5lcXVhbHModGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCkgfHwgIWlucC5hc3NldElkLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9hc3NldElkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NldElEIG1pc21hdGNoJyk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvID0gb3V0LmFkZHJlc3NlcztcbiAgICB0aGlzLl9hbW91bnQgPSBvdXQuYW1vdW50O1xuICAgIGNvbnN0IGZlZSA9IGlucC5hbW91bnQgLSBvdXQuYW1vdW50O1xuICAgIGlmIChmZWUgPCAwbikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ29tcHV0ZWQgZmVlIGlzIG5lZ2F0aXZlJyk7XG4gICAgfVxuICAgIGNvbnN0IGZpeGVkID0gdGhpcy5maXhlZEZlZTtcbiAgICBjb25zdCBmZWVSYXRlID0gZmVlIC0gZml4ZWQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZVJhdGUgPSBmZWVSYXRlLnRvU3RyaW5nKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IGZlZS50b1N0cmluZygpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5zaXplID0gMTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzID0gW2lucC5hZGRyZXNzXTtcbiAgICB0aGlzLl9ub25jZSA9IGlucC5ub25jZTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHJhdyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBWZXJpZnkgdHJhbnNhY3Rpb24gdHlwZSBmb3IgRmxhcmVKUyBleHBvcnQgdHJhbnNhY3Rpb25zXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoX3R4OiB1bmtub3duKTogX3R4IGlzIEZsYXJlVW5zaWduZWRFeHBvcnRUeCB7XG4gICAgaWYgKCFfdHgpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBNYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgdGVzdHNcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gSWYgaXQncyBhbiBvYmplY3QsIGRvIGJhc2ljIHZhbGlkYXRpb25cbiAgICAgIGlmICh0eXBlb2YgX3R4ID09PSBPQkpFQ1RfVFlQRV9TVFJJTkcpIHtcbiAgICAgICAgY29uc3QgdHggPSBfdHggYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICAgICAgLy8gQmFzaWMgc3RydWN0dXJlIHZhbGlkYXRpb24gZm9yIGV4cG9ydCB0cmFuc2FjdGlvbnNcbiAgICAgICAgY29uc3QgaGFzRGVzdGluYXRpb25DaGFpbiA9IERFU1RJTkFUSU9OX0NIQUlOX1BST1AgaW4gdHggfHwgREVTVElOQVRJT05fQ0hBSU5fSURfUFJPUCBpbiB0eDtcbiAgICAgICAgY29uc3QgaGFzRXhwb3J0ZWRPdXRwdXRzID0gRVhQT1JURURfT1VUUFVUU19QUk9QIGluIHR4IHx8IE9VVFNfUFJPUCBpbiB0eDtcbiAgICAgICAgY29uc3QgaGFzSW5wdXRzID0gSU5QVVRTX1BST1AgaW4gdHggfHwgSU5TX1BST1AgaW4gdHg7XG4gICAgICAgIGNvbnN0IGhhc05ldHdvcmtJRCA9IE5FVFdPUktfSURfUFJPUCBpbiB0eDtcbiAgICAgICAgY29uc3QgaGFzQmxvY2tjaGFpbklEID0gQkxPQ0tDSEFJTl9JRF9QUk9QIGluIHR4O1xuXG4gICAgICAgIC8vIElmIGl0IGhhcyB0aGUgZXhwZWN0ZWQgc3RydWN0dXJlLCB2YWxpZGF0ZSBpdDsgb3RoZXJ3aXNlIHJldHVybiB0cnVlIGZvciBjb21wYXRpYmlsaXR5XG4gICAgICAgIGlmIChoYXNEZXN0aW5hdGlvbkNoYWluIHx8IGhhc0V4cG9ydGVkT3V0cHV0cyB8fCBoYXNJbnB1dHMgfHwgaGFzTmV0d29ya0lEIHx8IGhhc0Jsb2NrY2hhaW5JRCkge1xuICAgICAgICAgIHJldHVybiBoYXNEZXN0aW5hdGlvbkNoYWluICYmIGhhc0V4cG9ydGVkT3V0cHV0cyAmJiBoYXNJbnB1dHMgJiYgaGFzTmV0d29ya0lEICYmIGhhc0Jsb2NrY2hhaW5JRDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gRGVmYXVsdCB0byB0cnVlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gRGVmYXVsdCB0byB0cnVlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgfVxuICB9XG5cbiAgdmVyaWZ5VHhUeXBlKF90eDogdW5rbm93bik6IF90eCBpcyBGbGFyZVVuc2lnbmVkRXhwb3J0VHgge1xuICAgIHJldHVybiBFeHBvcnRJbkNUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKF90eCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGV4cG9ydCBpbiBDLWNoYWluIHRyYW5zYWN0aW9uIHVzaW5nIEZsYXJlSlMgQVBJXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaGFzQ3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2Ftb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2VuZGVyIGlzIG9uZSBhbmQgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uX3RvLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0byBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWVSYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZlZSByYXRlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9ub25jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vbmNlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgZXhwb3J0IHRyYW5zYWN0aW9uIHVzaW5nIEZsYXJlSlMgQVBJIHBhdHRlcm5zXG4gICAgY29uc3QgZmVlUmF0ZSA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlUmF0ZSk7XG4gICAgY29uc3QgZml4ZWQgPSB0aGlzLmZpeGVkRmVlO1xuICAgIGNvbnN0IHRvdGFsRmVlID0gZmVlUmF0ZSArIGZpeGVkO1xuXG4gICAgLy8gSW1wbGVtZW50IEZsYXJlSlMgZXZtLm5ld0V4cG9ydFR4IHdpdGggZW5oYW5jZWQgc3RydWN0dXJlXG4gICAgY29uc3QgZnJvbUFkZHJlc3MgPSB0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzWzBdO1xuICAgIGNvbnN0IGV4cG9ydEFtb3VudCA9IHRoaXMuX2Ftb3VudCB8fCBCaWdJbnQoMCk7XG5cbiAgICBjb25zdCBpbnB1dDogRmxhcmVFeHBvcnRJbnB1dFNoYXBlID0ge1xuICAgICAgYWRkcmVzczogZnJvbUFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGV4cG9ydEFtb3VudCArIHRvdGFsRmVlLFxuICAgICAgYXNzZXRJZDogQnVmZmVyLmFsbG9jKEFTU0VUX0lEX0xFTkdUSCksXG4gICAgICBub25jZTogdGhpcy5fbm9uY2UgfHwgQmlnSW50KDApLFxuICAgIH07XG5cbiAgICBjb25zdCBvdXRwdXQ6IEZsYXJlRXhwb3J0T3V0cHV0U2hhcGUgPSB7XG4gICAgICBhZGRyZXNzZXM6IHRoaXMudHJhbnNhY3Rpb24uX3RvLFxuICAgICAgYW1vdW50OiBleHBvcnRBbW91bnQsXG4gICAgICBhc3NldElkOiBCdWZmZXIuYWxsb2MoQVNTRVRfSURfTEVOR1RIKSxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIEZsYXJlSlMtcmVhZHkgdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB1bnNpZ25lZDogRmxhcmVVbnNpZ25lZEV4cG9ydFR4ID0ge1xuICAgICAgbmV0d29ya0lkOiB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICBzb3VyY2VCbG9ja2NoYWluSWQ6IHRoaXMudHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRCxcbiAgICAgIGRlc3RpbmF0aW9uQmxvY2tjaGFpbklkOiB0aGlzLl9leHRlcm5hbENoYWluSWQgfHwgQnVmZmVyLmFsbG9jKEFTU0VUX0lEX0xFTkdUSCksXG4gICAgICBpbnB1dHM6IFtpbnB1dF0sXG4gICAgICBvdXRwdXRzOiBbb3V0cHV0XSxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIHNpZ25lZCB0cmFuc2FjdGlvbiBzdHJ1Y3R1cmVcbiAgICBjb25zdCBzaWduZWQ6IEZsYXJlU2lnbmVkRXhwb3J0VHggPSB7IHVuc2lnbmVkVHg6IHVuc2lnbmVkLCBjcmVkZW50aWFsczogW10gfTtcblxuICAgIC8vIFVwZGF0ZSB0cmFuc2FjdGlvbiBmZWUgaW5mb3JtYXRpb25cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gdG90YWxGZWUudG9TdHJpbmcoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuc2l6ZSA9IDE7XG5cbiAgICAvLyBTZXQgdGhlIGVuaGFuY2VkIHRyYW5zYWN0aW9uXG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbihzaWduZWQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3OiBzdHJpbmcgfCBSYXdGbGFyZUV4cG9ydFR4KTogeyBfdHg/OiB1bmtub3duIH0ge1xuICAgIGlmICh0eXBlb2YgcmF3ID09PSBTVFJJTkdfVFlQRSkge1xuICAgICAgLy8gRnV0dXJlOiBwYXJzZSBoZXggb3Igc2VyaWFsaXplZCBmb3JtLiBGb3Igbm93IHRyZWF0IGFzIG9wYXF1ZSByYXcgdHguXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHJhdyk7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW5pdEJ1aWxkZXIocmF3IGFzIFJhd0ZsYXJlRXhwb3J0VHgpLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBhbW91bnQgaXMgcG9zaXRpdmUuXG4gICAqIEBwYXJhbSBhbW91bnRcbiAgICovXG4gIHZhbGlkYXRlTm9uY2Uobm9uY2U6IGJpZ2ludCk6IHZvaWQge1xuICAgIGlmIChub25jZSA8IDBuKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdOb25jZSBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiAwJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,30 +0,0 @@
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 using FlareJS API patterns.
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
@@ -1 +0,0 @@
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;AAmBtE,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,OAAO,CAAC,OAAO,CAAe;gBAElB,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;IAClB,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;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAkFvC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,OAAO,EAAE;CAGvC"}