@bitgo-beta/sdk-coin-flrp 1.0.1-beta.66 → 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.
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/src/flrp.d.ts +0 -91
- package/dist/src/flrp.d.ts.map +0 -1
- package/dist/src/flrp.js +0 -343
- package/dist/src/iface.d.ts +0 -25
- package/dist/src/iface.d.ts.map +0 -1
- package/dist/src/iface.js +0 -3
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -45
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +0 -26
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +0 -64
- package/dist/src/lib/atomicTransactionBuilder.d.ts +0 -96
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/atomicTransactionBuilder.js +0 -318
- package/dist/src/lib/constants.d.ts +0 -170
- package/dist/src/lib/constants.d.ts.map +0 -1
- package/dist/src/lib/constants.js +0 -227
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -58
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -224
- package/dist/src/lib/errors.d.ts +0 -8
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -19
- package/dist/src/lib/exportInCTxBuilder.d.ts +0 -77
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -199
- package/dist/src/lib/exportInPTxBuilder.d.ts +0 -30
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInPTxBuilder.js +0 -120
- package/dist/src/lib/iface.d.ts +0 -119
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -22
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -67
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -403
- package/dist/src/lib/importInPTxBuilder.d.ts +0 -73
- package/dist/src/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInPTxBuilder.js +0 -464
- package/dist/src/lib/index.d.ts +0 -12
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -39
- package/dist/src/lib/keyPair.d.ts +0 -58
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -142
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -81
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +0 -248
- package/dist/src/lib/transaction.d.ts +0 -111
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -322
- package/dist/src/lib/transactionBuilder.d.ts +0 -85
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -167
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -37
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -91
- package/dist/src/lib/types.d.ts +0 -78
- package/dist/src/lib/types.d.ts.map +0 -1
- package/dist/src/lib/types.js +0 -5
- package/dist/src/lib/utils.d.ts +0 -217
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -498
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -40
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -180
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -11
- package/dist/src/tflrp.d.ts +0 -8
- package/dist/src/tflrp.d.ts.map +0 -1
- package/dist/src/tflrp.js +0 -14
- package/dist/test/unit/delegatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/delegatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/delegatorTxBuilder.test.js +0 -233
- package/dist/test/unit/flrp.d.ts +0 -2
- package/dist/test/unit/flrp.d.ts.map +0 -1
- package/dist/test/unit/flrp.js +0 -118
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +0 -2
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/atomicTransactionBuilder.js +0 -222
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportInCTxBuilder.js +0 -584
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportInPTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportInPTxBuilder.js +0 -377
- package/dist/test/unit/lib/importInCTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importInCTxBuilder.js +0 -257
- package/dist/test/unit/lib/importInPTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importInPTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importInPTxBuilder.js +0 -500
- package/dist/test/unit/lib/transaction.d.ts +0 -2
- package/dist/test/unit/lib/transaction.d.ts.map +0 -1
- package/dist/test/unit/lib/transaction.js +0 -460
- package/dist/test/unit/lib/utils.d.ts +0 -2
- package/dist/test/unit/lib/utils.d.ts.map +0 -1
- package/dist/test/unit/lib/utils.js +0 -286
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/permissionlessValidatorTxBuilder.test.js +0 -271
- package/dist/test/unit/smoke.d.ts +0 -2
- package/dist/test/unit/smoke.d.ts.map +0 -1
- package/dist/test/unit/smoke.js +0 -23
- package/dist/test/unit/transactionBuilder.test.d.ts +0 -2
- package/dist/test/unit/transactionBuilder.test.d.ts.map +0 -1
- package/dist/test/unit/transactionBuilder.test.js +0 -114
- package/dist/test/unit/validatorTxBuilder.test.d.ts +0 -2
- package/dist/test/unit/validatorTxBuilder.test.d.ts.map +0 -1
- 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==
|
package/dist/src/lib/errors.d.ts
DELETED
|
@@ -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"}
|
package/dist/src/lib/errors.js
DELETED
|
@@ -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"}
|