@bitgo/sdk-coin-avaxp 5.2.13 → 5.2.15
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/CHANGELOG.md +8 -0
- package/package.json +6 -6
- package/LICENSE +0 -191
- package/dist/src/avaxp.d.ts +0 -91
- package/dist/src/avaxp.d.ts.map +0 -1
- package/dist/src/avaxp.js +0 -343
- package/dist/src/iface.d.ts +0 -42
- 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 -21
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/atomicInCTransactionBuilder.js +0 -49
- package/dist/src/lib/atomicTransactionBuilder.d.ts +0 -38
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/atomicTransactionBuilder.js +0 -129
- package/dist/src/lib/delegatorTxBuilder.d.ts +0 -95
- package/dist/src/lib/delegatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/delegatorTxBuilder.js +0 -285
- package/dist/src/lib/deprecatedTransaction.d.ts +0 -98
- package/dist/src/lib/deprecatedTransaction.d.ts.map +0 -1
- package/dist/src/lib/deprecatedTransaction.js +0 -344
- package/dist/src/lib/deprecatedTransactionBuilder.d.ts +0 -114
- package/dist/src/lib/deprecatedTransactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/deprecatedTransactionBuilder.js +0 -210
- 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 -55
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportInCTxBuilder.js +0 -159
- package/dist/src/lib/exportTxBuilder.d.ts +0 -33
- package/dist/src/lib/exportTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/exportTxBuilder.js +0 -88
- package/dist/src/lib/iface.d.ts +0 -68
- package/dist/src/lib/iface.d.ts.map +0 -1
- package/dist/src/lib/iface.js +0 -20
- package/dist/src/lib/importInCTxBuilder.d.ts +0 -44
- package/dist/src/lib/importInCTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importInCTxBuilder.js +0 -131
- package/dist/src/lib/importTxBuilder.d.ts +0 -18
- package/dist/src/lib/importTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/importTxBuilder.js +0 -67
- package/dist/src/lib/index.d.ts +0 -11
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -37
- 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 -150
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -154
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +0 -452
- package/dist/src/lib/transaction.d.ts +0 -78
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -254
- package/dist/src/lib/transactionBuilder.d.ts +0 -71
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -138
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -57
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -178
- package/dist/src/lib/utils.d.ts +0 -184
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -378
- package/dist/src/lib/utxoEngine.d.ts +0 -53
- package/dist/src/lib/utxoEngine.d.ts.map +0 -1
- package/dist/src/lib/utxoEngine.js +0 -112
- package/dist/src/lib/validatorTxBuilder.d.ts +0 -37
- package/dist/src/lib/validatorTxBuilder.d.ts.map +0 -1
- package/dist/src/lib/validatorTxBuilder.js +0 -69
- 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/tavaxp.d.ts +0 -9
- package/dist/src/tavaxp.d.ts.map +0 -1
- package/dist/src/tavaxp.js +0 -14
- package/dist/test/resources/avaxp.d.ts +0 -259
- package/dist/test/resources/avaxp.d.ts.map +0 -1
- package/dist/test/resources/avaxp.js +0 -1093
- package/dist/test/resources/errors.d.ts +0 -19
- package/dist/test/resources/errors.d.ts.map +0 -1
- package/dist/test/resources/errors.js +0 -22
- package/dist/test/resources/keychains.d.ts +0 -18
- package/dist/test/resources/keychains.d.ts.map +0 -1
- package/dist/test/resources/keychains.js +0 -30
- package/dist/test/resources/tx/exportC.d.ts +0 -14
- package/dist/test/resources/tx/exportC.d.ts.map +0 -1
- package/dist/test/resources/tx/exportC.js +0 -21
- package/dist/test/resources/tx/importC.d.ts +0 -29
- package/dist/test/resources/tx/importC.d.ts.map +0 -1
- package/dist/test/resources/tx/importC.js +0 -42
- package/dist/test/resources/tx/importP.d.ts +0 -29
- package/dist/test/resources/tx/importP.d.ts.map +0 -1
- package/dist/test/resources/tx/importP.js +0 -42
- package/dist/test/unit/avaxp.d.ts +0 -2
- package/dist/test/unit/avaxp.d.ts.map +0 -1
- package/dist/test/unit/avaxp.js +0 -732
- package/dist/test/unit/lib/exportC2PTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportC2PTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportC2PTxBuilder.js +0 -125
- package/dist/test/unit/lib/exportP2CTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/exportP2CTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/exportP2CTxBuilder.js +0 -183
- package/dist/test/unit/lib/importC2PTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importC2PTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importC2PTxBuilder.js +0 -99
- package/dist/test/unit/lib/importP2CTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/importP2CTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/importP2CTxBuilder.js +0 -137
- package/dist/test/unit/lib/keyPair.d.ts +0 -2
- package/dist/test/unit/lib/keyPair.d.ts.map +0 -1
- package/dist/test/unit/lib/keyPair.js +0 -186
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/permissionlessValidatorTxBuilder.js +0 -341
- package/dist/test/unit/lib/signFlowTestSuit.d.ts +0 -20
- package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +0 -1
- package/dist/test/unit/lib/signFlowTestSuit.js +0 -80
- package/dist/test/unit/lib/transactionBuilderFactory.d.ts +0 -2
- package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/test/unit/lib/transactionBuilderFactory.js +0 -179
- 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 -83
- package/dist/test/unit/lib/utxoEngine.d.ts +0 -2
- package/dist/test/unit/lib/utxoEngine.d.ts.map +0 -1
- package/dist/test/unit/lib/utxoEngine.js +0 -168
- package/dist/test/unit/lib/validateTxBuilder.d.ts +0 -2
- package/dist/test/unit/lib/validateTxBuilder.d.ts.map +0 -1
- package/dist/test/unit/lib/validateTxBuilder.js +0 -327
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DeprecatedTransactionBuilder = void 0;
|
|
7
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
-
const deprecatedTransaction_1 = require("./deprecatedTransaction");
|
|
9
|
-
const keyPair_1 = require("./keyPair");
|
|
10
|
-
const avalanche_1 = require("avalanche");
|
|
11
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
12
|
-
const platformvm_1 = require("avalanche/dist/apis/platformvm");
|
|
13
|
-
class DeprecatedTransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
14
|
-
constructor(_coinConfig) {
|
|
15
|
-
super(_coinConfig);
|
|
16
|
-
this._signer = [];
|
|
17
|
-
this.recoverSigner = false;
|
|
18
|
-
this._transaction = new deprecatedTransaction_1.DeprecatedTransaction(_coinConfig);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Initialize the transaction builder fields using the decoded transaction data
|
|
22
|
-
*
|
|
23
|
-
* @param {DeprecatedTx} tx the transaction data
|
|
24
|
-
* @returns itself
|
|
25
|
-
*/
|
|
26
|
-
initBuilder(tx) {
|
|
27
|
-
const baseTx = tx.getUnsignedTx().getTransaction();
|
|
28
|
-
if (baseTx.getNetworkID() !== this._transaction._networkID ||
|
|
29
|
-
!baseTx.getBlockchainID().equals(this._transaction._blockchainID)) {
|
|
30
|
-
throw new Error('Network or blockchain is not equals');
|
|
31
|
-
}
|
|
32
|
-
this._transaction.setTransaction(tx);
|
|
33
|
-
return this;
|
|
34
|
-
}
|
|
35
|
-
/** @inheritdoc */
|
|
36
|
-
fromImplementation(rawTransaction) {
|
|
37
|
-
const tx = new platformvm_1.Tx();
|
|
38
|
-
tx.fromBuffer(avalanche_1.Buffer.from(rawTransaction, 'hex'));
|
|
39
|
-
this.initBuilder(tx);
|
|
40
|
-
return this.transaction;
|
|
41
|
-
}
|
|
42
|
-
/** @inheritdoc */
|
|
43
|
-
async buildImplementation() {
|
|
44
|
-
this.buildAvaxTransaction();
|
|
45
|
-
this.transaction.setTransactionType(this.transactionType);
|
|
46
|
-
if (this.hasSigner) {
|
|
47
|
-
this._signer.forEach((keyPair) => this.transaction.sign(keyPair));
|
|
48
|
-
}
|
|
49
|
-
return this.transaction;
|
|
50
|
-
}
|
|
51
|
-
// region Getters and Setters
|
|
52
|
-
/**
|
|
53
|
-
* When using recovery key must be set here
|
|
54
|
-
* TODO: STLX-17317 recovery key signing
|
|
55
|
-
* @param {boolean} true if it's recovery signer, default true.
|
|
56
|
-
*/
|
|
57
|
-
recoverMode(recoverSigner = true) {
|
|
58
|
-
this.recoverSigner = recoverSigner;
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Threshold is an int that names the number of unique signatures required to spend the output.
|
|
63
|
-
* Must be less than or equal to the length of Addresses.
|
|
64
|
-
* @param {number}
|
|
65
|
-
*/
|
|
66
|
-
threshold(value) {
|
|
67
|
-
this.validateThreshold(value);
|
|
68
|
-
this._transaction._threshold = value;
|
|
69
|
-
return this;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Locktime is a long that contains the unix timestamp that this output can be spent after.
|
|
73
|
-
* The unix timestamp is specific to the second.
|
|
74
|
-
* @param value
|
|
75
|
-
*/
|
|
76
|
-
locktime(value) {
|
|
77
|
-
this.validateLocktime(new avalanche_1.BN(value));
|
|
78
|
-
this._transaction._locktime = new avalanche_1.BN(value);
|
|
79
|
-
return this;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* fromPubKey is a list of unique addresses that correspond to the private keys that can be used to spend this output.
|
|
83
|
-
* @param {string | stirng[]} senderPubKey
|
|
84
|
-
*/
|
|
85
|
-
fromPubKey(senderPubKey) {
|
|
86
|
-
const pubKeys = senderPubKey instanceof Array ? senderPubKey : [senderPubKey];
|
|
87
|
-
this._transaction._fromAddresses = pubKeys.map(utils_1.default.parseAddress);
|
|
88
|
-
return this;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* List of UTXO required as inputs.
|
|
92
|
-
* A UTXO is a standalone representation of a transaction output.
|
|
93
|
-
*
|
|
94
|
-
* @param {DecodedUtxoObj[]} list of UTXOS
|
|
95
|
-
*/
|
|
96
|
-
utxos(value) {
|
|
97
|
-
this.validateUtxos(value);
|
|
98
|
-
this._transaction._utxos = value;
|
|
99
|
-
return this;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Getter for know if build should sign
|
|
103
|
-
*/
|
|
104
|
-
get hasSigner() {
|
|
105
|
-
return this._signer !== undefined && this._signer.length > 0;
|
|
106
|
-
}
|
|
107
|
-
/** @inheritdoc */
|
|
108
|
-
get transaction() {
|
|
109
|
-
return this._transaction;
|
|
110
|
-
}
|
|
111
|
-
set transaction(transaction) {
|
|
112
|
-
this._transaction = transaction;
|
|
113
|
-
}
|
|
114
|
-
/** @inheritdoc */
|
|
115
|
-
signImplementation({ key }) {
|
|
116
|
-
this._signer.push(new keyPair_1.KeyPair({ prv: key }));
|
|
117
|
-
return this.transaction;
|
|
118
|
-
}
|
|
119
|
-
// endregion
|
|
120
|
-
// region Validators
|
|
121
|
-
/**
|
|
122
|
-
* Validates the threshold
|
|
123
|
-
* @param threshold
|
|
124
|
-
*/
|
|
125
|
-
validateThreshold(threshold) {
|
|
126
|
-
if (!threshold || threshold !== 2) {
|
|
127
|
-
throw new sdk_core_1.BuildTransactionError('Invalid transaction: threshold must be set to 2');
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Validates locktime
|
|
132
|
-
* @param locktime
|
|
133
|
-
*/
|
|
134
|
-
validateLocktime(locktime) {
|
|
135
|
-
if (!locktime || locktime.lt(new avalanche_1.BN(0))) {
|
|
136
|
-
throw new sdk_core_1.BuildTransactionError('Invalid transaction: locktime must be 0 or higher');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
/** @inheritdoc */
|
|
140
|
-
validateAddress(address, addressFormat) {
|
|
141
|
-
if (!utils_1.default.isValidAddress(address.address)) {
|
|
142
|
-
throw new sdk_core_1.BuildTransactionError('Invalid address');
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/** @inheritdoc */
|
|
146
|
-
validateKey({ key }) {
|
|
147
|
-
if (!new keyPair_1.KeyPair({ prv: key })) {
|
|
148
|
-
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
153
|
-
* It overrides abstract method from BaseTransactionBuilder
|
|
154
|
-
*
|
|
155
|
-
* @param rawTransaction Transaction in any format
|
|
156
|
-
*/
|
|
157
|
-
validateRawTransaction(rawTransaction) {
|
|
158
|
-
utils_1.default.validateRawTransaction(rawTransaction);
|
|
159
|
-
}
|
|
160
|
-
/** @inheritdoc */
|
|
161
|
-
validateTransaction(transaction) {
|
|
162
|
-
// throw new NotImplementedError('validateTransaction not implemented');
|
|
163
|
-
}
|
|
164
|
-
/** @inheritdoc */
|
|
165
|
-
validateValue(value) {
|
|
166
|
-
if (value.isLessThan(0)) {
|
|
167
|
-
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Check the list of UTXOS is empty and check each UTXO.
|
|
172
|
-
* @param values
|
|
173
|
-
*/
|
|
174
|
-
validateUtxos(values) {
|
|
175
|
-
if (values.length === 0) {
|
|
176
|
-
throw new sdk_core_1.BuildTransactionError("Utxos can't be empty array");
|
|
177
|
-
}
|
|
178
|
-
values.forEach(this.validateUtxo);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Check the UTXO has expected fields.
|
|
182
|
-
* @param UTXO
|
|
183
|
-
*/
|
|
184
|
-
validateUtxo(value) {
|
|
185
|
-
['outputID', 'amount', 'txid', 'outputidx'].forEach((field) => {
|
|
186
|
-
if (!value.hasOwnProperty(field))
|
|
187
|
-
throw new sdk_core_1.BuildTransactionError(`Utxos required ${field}`);
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Check the amount is positive.
|
|
192
|
-
* @param amount
|
|
193
|
-
*/
|
|
194
|
-
validateAmount(amount) {
|
|
195
|
-
if (amount.lten(0)) {
|
|
196
|
-
throw new sdk_core_1.BuildTransactionError('Amount must be greater than 0');
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Check the buffer has 32 byte long.
|
|
201
|
-
* @param chainID
|
|
202
|
-
*/
|
|
203
|
-
validateChainId(chainID) {
|
|
204
|
-
if (chainID.length !== 32) {
|
|
205
|
-
throw new sdk_core_1.BuildTransactionError('Chain id are 32 byte size');
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
exports.DeprecatedTransactionBuilder = DeprecatedTransactionBuilder;
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZGVwcmVjYXRlZFRyYW5zYWN0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSw4Q0FPeUI7QUFDekIsbUVBQWdFO0FBQ2hFLHVDQUFvQztBQUNwQyx5Q0FBcUQ7QUFDckQsb0RBQTRCO0FBRTVCLCtEQUE2RDtBQUU3RCxNQUFzQiw0QkFBNkIsU0FBUSxpQ0FBc0I7SUFLL0UsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFKZCxZQUFPLEdBQWMsRUFBRSxDQUFDO1FBQ3JCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSTlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsRUFBZ0I7UUFDMUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25ELElBQ0UsTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTtZQUN0RCxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsRUFDakUsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsY0FBc0I7UUFDakQsTUFBTSxFQUFFLEdBQUcsSUFBSSxlQUFLLEVBQUUsQ0FBQztRQUN2QixFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQU9ELDZCQUE2QjtJQUM3Qjs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsS0FBc0I7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksY0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFlBQStCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLFlBQVksWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxLQUF1QjtRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYyxXQUFXLENBQUMsV0FBa0M7UUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxFQUFXO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFJRCxZQUFZO0lBQ1osb0JBQW9CO0lBRXBCOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFNBQWlCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsUUFBWTtRQUMzQixJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxjQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxPQUFvQixFQUFFLGFBQXNCO1FBQzFELElBQUksQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBVztRQUMxQixJQUFJLENBQUMsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksZ0NBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNCQUFzQixDQUFDLGNBQXNCO1FBQzNDLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQW1DO1FBQ3JELHdFQUF3RTtJQUMxRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxNQUF3QjtRQUNwQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsS0FBcUI7UUFDaEMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtCQUFrQixLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxNQUFVO1FBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE9BQW1CO1FBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksZ0NBQXFCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztDQUdGO0FBdk9ELG9FQXVPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEJhc2VUcmFuc2FjdGlvbixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IERlcHJlY2F0ZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4vZGVwcmVjYXRlZFRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgQk4sIEJ1ZmZlciBhcyBCdWZmZXJBdmF4IH0gZnJvbSAnYXZhbGFuY2hlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqLCBEZXByZWNhdGVkVHggfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFR4IGFzIFBWTVR4IH0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9wbGF0Zm9ybXZtJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERlcHJlY2F0ZWRUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IERlcHJlY2F0ZWRUcmFuc2FjdGlvbjtcbiAgcHVibGljIF9zaWduZXI6IEtleVBhaXJbXSA9IFtdO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBEZXByZWNhdGVkVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtEZXByZWNhdGVkVHh9IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIGl0c2VsZlxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IERlcHJlY2F0ZWRUeCk6IHRoaXMge1xuICAgIGNvbnN0IGJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmIChcbiAgICAgIGJhc2VUeC5nZXROZXR3b3JrSUQoKSAhPT0gdGhpcy5fdHJhbnNhY3Rpb24uX25ldHdvcmtJRCB8fFxuICAgICAgIWJhc2VUeC5nZXRCbG9ja2NoYWluSUQoKS5lcXVhbHModGhpcy5fdHJhbnNhY3Rpb24uX2Jsb2NrY2hhaW5JRClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTmV0d29yayBvciBibG9ja2NoYWluIGlzIG5vdCBlcXVhbHMnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb24odHgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IERlcHJlY2F0ZWRUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgUFZNVHgoKTtcbiAgICB0eC5mcm9tQnVmZmVyKEJ1ZmZlckF2YXguZnJvbShyYXdUcmFuc2FjdGlvbiwgJ2hleCcpKTtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPERlcHJlY2F0ZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuYnVpbGRBdmF4VHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgaWYgKHRoaXMuaGFzU2lnbmVyKSB7XG4gICAgICB0aGlzLl9zaWduZXIuZm9yRWFjaCgoa2V5UGFpcikgPT4gdGhpcy50cmFuc2FjdGlvbi5zaWduKGtleVBhaXIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBhdmF4IHRyYW5zYWN0aW9uLiB0cmFuc2FjdGlvbiBmaWVsZCBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGJ1aWxkQXZheFRyYW5zYWN0aW9uKCk6IHZvaWQ7XG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgcmVjb3Zlcnkga2V5IG11c3QgYmUgc2V0IGhlcmVcbiAgICogVE9ETzogU1RMWC0xNzMxNyByZWNvdmVyeSBrZXkgc2lnbmluZ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRydWUgaWYgaXQncyByZWNvdmVyeSBzaWduZXIsIGRlZmF1bHQgdHJ1ZS5cbiAgICovXG4gIHB1YmxpYyByZWNvdmVyTW9kZShyZWNvdmVyU2lnbmVyID0gdHJ1ZSk6IHRoaXMge1xuICAgIHRoaXMucmVjb3ZlclNpZ25lciA9IHJlY292ZXJTaWduZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhyZXNob2xkIGlzIGFuIGludCB0aGF0IG5hbWVzIHRoZSBudW1iZXIgb2YgdW5pcXVlIHNpZ25hdHVyZXMgcmVxdWlyZWQgdG8gc3BlbmQgdGhlIG91dHB1dC5cbiAgICogTXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiBBZGRyZXNzZXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfVxuICAgKi9cbiAgdGhyZXNob2xkKHZhbHVlOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVGhyZXNob2xkKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdGhyZXNob2xkID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTG9ja3RpbWUgaXMgYSBsb25nIHRoYXQgY29udGFpbnMgdGhlIHVuaXggdGltZXN0YW1wIHRoYXQgdGhpcyBvdXRwdXQgY2FuIGJlIHNwZW50IGFmdGVyLlxuICAgKiBUaGUgdW5peCB0aW1lc3RhbXAgaXMgc3BlY2lmaWMgdG8gdGhlIHNlY29uZC5cbiAgICogQHBhcmFtIHZhbHVlXG4gICAqL1xuICBsb2NrdGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUxvY2t0aW1lKG5ldyBCTih2YWx1ZSkpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl9sb2NrdGltZSA9IG5ldyBCTih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogZnJvbVB1YktleSBpcyBhIGxpc3Qgb2YgdW5pcXVlIGFkZHJlc3NlcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlIHByaXZhdGUga2V5cyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNwZW5kIHRoaXMgb3V0cHV0LlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0aXJuZ1tdfSBzZW5kZXJQdWJLZXlcbiAgICovXG4gIGZyb21QdWJLZXkoc2VuZGVyUHViS2V5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGNvbnN0IHB1YktleXMgPSBzZW5kZXJQdWJLZXkgaW5zdGFuY2VvZiBBcnJheSA/IHNlbmRlclB1YktleSA6IFtzZW5kZXJQdWJLZXldO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzID0gcHViS2V5cy5tYXAodXRpbHMucGFyc2VBZGRyZXNzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IG9mIFVUWE8gcmVxdWlyZWQgYXMgaW5wdXRzLlxuICAgKiBBIFVUWE8gaXMgYSBzdGFuZGFsb25lIHJlcHJlc2VudGF0aW9uIG9mIGEgdHJhbnNhY3Rpb24gb3V0cHV0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RlY29kZWRVdHhvT2JqW119IGxpc3Qgb2YgVVRYT1NcbiAgICovXG4gIHV0eG9zKHZhbHVlOiBEZWNvZGVkVXR4b09ialtdKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVV0eG9zKHZhbHVlKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fdXR4b3MgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXR0ZXIgZm9yIGtub3cgaWYgYnVpbGQgc2hvdWxkIHNpZ25cbiAgICovXG4gIGdldCBoYXNTaWduZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lciAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX3NpZ25lci5sZW5ndGggPiAwO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogRGVwcmVjYXRlZFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBEZXByZWNhdGVkVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oeyBrZXkgfTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy5fc2lnbmVyLnB1c2gobmV3IEtleVBhaXIoeyBwcnY6IGtleSB9KSk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLy8gZW5kcmVnaW9uXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdGhyZXNob2xkXG4gICAqIEBwYXJhbSB0aHJlc2hvbGRcbiAgICovXG4gIHZhbGlkYXRlVGhyZXNob2xkKHRocmVzaG9sZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aHJlc2hvbGQgfHwgdGhyZXNob2xkICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiB0aHJlc2hvbGQgbXVzdCBiZSBzZXQgdG8gMicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgbG9ja3RpbWVcbiAgICogQHBhcmFtIGxvY2t0aW1lXG4gICAqL1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBCTik6IHZvaWQge1xuICAgIGlmICghbG9ja3RpbWUgfHwgbG9ja3RpbWUubHQobmV3IEJOKDApKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbG9ja3RpbWUgbXVzdCBiZSAwIG9yIGhpZ2hlcicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleSh7IGtleSB9OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgaWYgKCFuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgcmF3IHRyYW5zYWN0aW9uIGhhcyBhIHZhbGlkIGZvcm1hdCBpbiB0aGUgYmxvY2tjaGFpbiBjb250ZXh0LCB0aHJvdyBvdGhlcndpc2UuXG4gICAqIEl0IG92ZXJyaWRlcyBhYnN0cmFjdCBtZXRob2QgZnJvbSBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvbiBUcmFuc2FjdGlvbiBpbiBhbnkgZm9ybWF0XG4gICAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB1dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogRGVwcmVjYXRlZFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgLy8gdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ3ZhbGlkYXRlVHJhbnNhY3Rpb24gbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybycpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgbGlzdCBvZiBVVFhPUyBpcyBlbXB0eSBhbmQgY2hlY2sgZWFjaCBVVFhPLlxuICAgKiBAcGFyYW0gdmFsdWVzXG4gICAqL1xuICB2YWxpZGF0ZVV0eG9zKHZhbHVlczogRGVjb2RlZFV0eG9PYmpbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFwiVXR4b3MgY2FuJ3QgYmUgZW1wdHkgYXJyYXlcIik7XG4gICAgfVxuICAgIHZhbHVlcy5mb3JFYWNoKHRoaXMudmFsaWRhdGVVdHhvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgVVRYTyBoYXMgZXhwZWN0ZWQgZmllbGRzLlxuICAgKiBAcGFyYW0gVVRYT1xuICAgKi9cbiAgdmFsaWRhdGVVdHhvKHZhbHVlOiBEZWNvZGVkVXR4b09iaik6IHZvaWQge1xuICAgIFsnb3V0cHV0SUQnLCAnYW1vdW50JywgJ3R4aWQnLCAnb3V0cHV0aWR4J10uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmICghdmFsdWUuaGFzT3duUHJvcGVydHkoZmllbGQpKSB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVdHhvcyByZXF1aXJlZCAke2ZpZWxkfWApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBhbW91bnQgaXMgcG9zaXRpdmUuXG4gICAqIEBwYXJhbSBhbW91bnRcbiAgICovXG4gIHZhbGlkYXRlQW1vdW50KGFtb3VudDogQk4pOiB2b2lkIHtcbiAgICBpZiAoYW1vdW50Lmx0ZW4oMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0Ftb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBidWZmZXIgaGFzIDMyIGJ5dGUgbG9uZy5cbiAgICogQHBhcmFtIGNoYWluSURcbiAgICovXG4gIHZhbGlkYXRlQ2hhaW5JZChjaGFpbklEOiBCdWZmZXJBdmF4KTogdm9pZCB7XG4gICAgaWYgKGNoYWluSUQubGVuZ3RoICE9PSAzMikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQ2hhaW4gaWQgYXJlIDMyIGJ5dGUgc2l6ZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
|
package/dist/src/lib/errors.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { BuildTransactionError } from '@bitgo/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,iBAAiB,CAAC;AAExD,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/sdk-core");
|
|
5
|
-
class AddressValidationError extends sdk_core_1.BuildTransactionError {
|
|
6
|
-
constructor(malformedAddress) {
|
|
7
|
-
super(`The address '${malformedAddress}' is not a well-formed dot 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQXdEO0FBRXhELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLG9DQUFvQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgQWRkcmVzc1ZhbGlkYXRpb25FcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1hbGZvcm1lZEFkZHJlc3M6IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgYWRkcmVzcyAnJHttYWxmb3JtZWRBZGRyZXNzfScgaXMgbm90IGEgd2VsbC1mb3JtZWQgZG90IGFkZHJlc3NgKTtcbiAgICB0aGlzLm5hbWUgPSBBZGRyZXNzVmFsaWRhdGlvbkVycm9yLm5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRGZWVFcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcsIGV4cGVjdGVkVHlwZT86IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgc3BlY2lmaWVkIHR5cGU6IFwiJHt0eXBlfVwiIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgdGhlIHR5cGU6IFwiJHtleHBlY3RlZFR5cGV9XCJgKTtcbiAgICB0aGlzLm5hbWUgPSBJbnZhbGlkRmVlRXJyb3IubmFtZTtcbiAgfVxufVxuIl19
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { TransactionType } from '@bitgo/sdk-core';
|
|
2
|
-
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
-
import { BN } from 'avalanche';
|
|
4
|
-
import { ExportTx } from 'avalanche/dist/apis/evm';
|
|
5
|
-
import { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
|
|
6
|
-
import { DeprecatedTransaction } from './deprecatedTransaction';
|
|
7
|
-
import { DecodedUtxoObj, DeprecatedBaseTx, DeprecatedTx } from './iface';
|
|
8
|
-
export declare class ExportInCTxBuilder extends AtomicInCTransactionBuilder {
|
|
9
|
-
private _amount;
|
|
10
|
-
private _nonce;
|
|
11
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
-
/**
|
|
13
|
-
* Utxos are not required in Export Tx in C-Chain.
|
|
14
|
-
* Override utxos to prevent used by throwing a error.
|
|
15
|
-
*
|
|
16
|
-
* @param {DecodedUtxoObj[]} value ignored
|
|
17
|
-
*/
|
|
18
|
-
utxos(value: DecodedUtxoObj[]): this;
|
|
19
|
-
/**
|
|
20
|
-
* Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
|
|
21
|
-
* The transaction output amount add a fixed fee that will be paid upon import.
|
|
22
|
-
*
|
|
23
|
-
* @param {BN | string} amount The withdrawal amount
|
|
24
|
-
*/
|
|
25
|
-
amount(amount: BN | string): this;
|
|
26
|
-
/**
|
|
27
|
-
* Set the nonce of C-Chain sender address
|
|
28
|
-
*
|
|
29
|
-
* @param {number | string} nonce - number that can be only used once
|
|
30
|
-
*/
|
|
31
|
-
nonce(nonce: number | string): this;
|
|
32
|
-
/**
|
|
33
|
-
* Export tx target P wallet.
|
|
34
|
-
*
|
|
35
|
-
* @param pAddresses
|
|
36
|
-
*/
|
|
37
|
-
to(pAddresses: string | string[]): this;
|
|
38
|
-
protected get transactionType(): TransactionType;
|
|
39
|
-
initBuilder(tx: DeprecatedTx): this;
|
|
40
|
-
static verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ExportTx;
|
|
41
|
-
verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ExportTx;
|
|
42
|
-
/**
|
|
43
|
-
* Build the export in C-chain transaction
|
|
44
|
-
* @protected
|
|
45
|
-
*/
|
|
46
|
-
protected buildAvaxTransaction(): void;
|
|
47
|
-
/** @inheritdoc */
|
|
48
|
-
protected fromImplementation(rawTransaction: string): DeprecatedTransaction;
|
|
49
|
-
/**
|
|
50
|
-
* Check the amount is positive.
|
|
51
|
-
* @param amount
|
|
52
|
-
*/
|
|
53
|
-
validateNonce(nonce: BN): void;
|
|
54
|
-
}
|
|
55
|
-
//# 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,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAwB,MAAM,WAAW,CAAC;AACrD,OAAO,EAKL,QAAQ,EAKT,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGzE,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAK;gBAEP,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAIpC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAOjC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOnC;;;;OAIG;IACH,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMvC,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IAgDnC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAIjE,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAI1D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IA2DtC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,qBAAqB;IAO3E;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI;CAK/B"}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ExportInCTxBuilder = void 0;
|
|
7
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
8
|
-
const avalanche_1 = require("avalanche");
|
|
9
|
-
const evm_1 = require("avalanche/dist/apis/evm");
|
|
10
|
-
const atomicInCTransactionBuilder_1 = require("./atomicInCTransactionBuilder");
|
|
11
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
12
|
-
class ExportInCTxBuilder extends atomicInCTransactionBuilder_1.AtomicInCTransactionBuilder {
|
|
13
|
-
constructor(_coinConfig) {
|
|
14
|
-
super(_coinConfig);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Utxos are not required in Export Tx in C-Chain.
|
|
18
|
-
* Override utxos to prevent used by throwing a error.
|
|
19
|
-
*
|
|
20
|
-
* @param {DecodedUtxoObj[]} value ignored
|
|
21
|
-
*/
|
|
22
|
-
utxos(value) {
|
|
23
|
-
throw new sdk_core_1.BuildTransactionError('utxos are not required in Export Tx in C-Chain');
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
|
|
27
|
-
* The transaction output amount add a fixed fee that will be paid upon import.
|
|
28
|
-
*
|
|
29
|
-
* @param {BN | string} amount The withdrawal amount
|
|
30
|
-
*/
|
|
31
|
-
amount(amount) {
|
|
32
|
-
const amountBN = avalanche_1.BN.isBN(amount) ? amount : new avalanche_1.BN(amount);
|
|
33
|
-
this.validateAmount(amountBN);
|
|
34
|
-
this._amount = amountBN;
|
|
35
|
-
return this;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Set the nonce of C-Chain sender address
|
|
39
|
-
*
|
|
40
|
-
* @param {number | string} nonce - number that can be only used once
|
|
41
|
-
*/
|
|
42
|
-
nonce(nonce) {
|
|
43
|
-
const nonceBN = new avalanche_1.BN(nonce);
|
|
44
|
-
this.validateNonce(nonceBN);
|
|
45
|
-
this._nonce = nonceBN;
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Export tx target P wallet.
|
|
50
|
-
*
|
|
51
|
-
* @param pAddresses
|
|
52
|
-
*/
|
|
53
|
-
to(pAddresses) {
|
|
54
|
-
const pubKeys = pAddresses instanceof Array ? pAddresses : pAddresses.split('~');
|
|
55
|
-
this.transaction._to = pubKeys.map(utils_1.default.parseAddress);
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
get transactionType() {
|
|
59
|
-
return sdk_core_1.TransactionType.Export;
|
|
60
|
-
}
|
|
61
|
-
initBuilder(tx) {
|
|
62
|
-
const baseTx = tx.getUnsignedTx().getTransaction();
|
|
63
|
-
if (baseTx.getNetworkID() !== this.transaction._networkID ||
|
|
64
|
-
!baseTx.getBlockchainID().equals(this.transaction._blockchainID)) {
|
|
65
|
-
throw new Error('Network or blockchain is not equals');
|
|
66
|
-
}
|
|
67
|
-
if (!this.verifyTxType(baseTx)) {
|
|
68
|
-
throw new sdk_core_1.NotSupported('Transaction cannot be parsed or has an unsupported transaction type');
|
|
69
|
-
}
|
|
70
|
-
// The outputs is a multisign P-Chain address result.
|
|
71
|
-
// It's expected to have only one outputs to the destination P-Chain address.
|
|
72
|
-
const outputs = baseTx.getExportedOutputs();
|
|
73
|
-
if (outputs.length !== 1) {
|
|
74
|
-
throw new sdk_core_1.BuildTransactionError('Transaction can have one output');
|
|
75
|
-
}
|
|
76
|
-
const output = outputs[0];
|
|
77
|
-
if (!output.getAssetID().equals(this.transaction._assetId)) {
|
|
78
|
-
throw new Error('AssetID are not equals');
|
|
79
|
-
}
|
|
80
|
-
// The inputs is not an utxo.
|
|
81
|
-
// It's expected to have only one input form C-Chain address.
|
|
82
|
-
const inputs = baseTx.getInputs();
|
|
83
|
-
if (inputs.length !== 1) {
|
|
84
|
-
throw new sdk_core_1.BuildTransactionError('Transaction can have one inputs');
|
|
85
|
-
}
|
|
86
|
-
const input = inputs[0];
|
|
87
|
-
this.transaction._to = output.getOutput().getAddresses();
|
|
88
|
-
const inputAmount = new avalanche_1.BN(input.amount);
|
|
89
|
-
const outputAmount = output.getOutput().getAmount();
|
|
90
|
-
const fee = inputAmount.sub(outputAmount);
|
|
91
|
-
this._amount = outputAmount;
|
|
92
|
-
this.transaction._fee.feeRate = fee.toNumber() - Number(this.fixedFee);
|
|
93
|
-
this.transaction._fee.fee = fee.toString();
|
|
94
|
-
this.transaction._fee.size = 1;
|
|
95
|
-
this.transaction._fromAddresses = [input.getAddress()];
|
|
96
|
-
this._nonce = new avalanche_1.BN(input.nonce);
|
|
97
|
-
this.transaction.setTransaction(tx);
|
|
98
|
-
return this;
|
|
99
|
-
}
|
|
100
|
-
static verifyTxType(baseTx) {
|
|
101
|
-
return baseTx.getTypeID() === evm_1.EVMConstants.EXPORTTX;
|
|
102
|
-
}
|
|
103
|
-
verifyTxType(baseTx) {
|
|
104
|
-
return ExportInCTxBuilder.verifyTxType(baseTx);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Build the export in C-chain transaction
|
|
108
|
-
* @protected
|
|
109
|
-
*/
|
|
110
|
-
buildAvaxTransaction() {
|
|
111
|
-
// if tx has credentials, tx shouldn't change
|
|
112
|
-
if (this.transaction.hasCredentials)
|
|
113
|
-
return;
|
|
114
|
-
if (this._amount === undefined) {
|
|
115
|
-
throw new Error('amount is required');
|
|
116
|
-
}
|
|
117
|
-
if (this.transaction._fromAddresses.length !== 1) {
|
|
118
|
-
throw new Error('sender is one and required');
|
|
119
|
-
}
|
|
120
|
-
if (this.transaction._to.length === 0) {
|
|
121
|
-
throw new Error('to is required');
|
|
122
|
-
}
|
|
123
|
-
if (!this.transaction._fee.feeRate) {
|
|
124
|
-
throw new Error('fee rate is required');
|
|
125
|
-
}
|
|
126
|
-
if (!this._nonce === undefined) {
|
|
127
|
-
throw new Error('nonce is required');
|
|
128
|
-
}
|
|
129
|
-
const txFee = Number(this.fixedFee);
|
|
130
|
-
const fee = this.transaction._fee.feeRate + txFee;
|
|
131
|
-
this.transaction._fee.fee = fee.toString();
|
|
132
|
-
this.transaction._fee.size = 1;
|
|
133
|
-
const input = new evm_1.EVMInput(this.transaction._fromAddresses[0], this._amount.addn(fee), this.transaction._assetId, this._nonce);
|
|
134
|
-
input.addSignatureIdx(0, this.transaction._fromAddresses[0]);
|
|
135
|
-
this.transaction.setTransaction(new evm_1.Tx(new evm_1.UnsignedTx(new evm_1.ExportTx(this.transaction._networkID, this.transaction._blockchainID, this._externalChainId, [input], [
|
|
136
|
-
new evm_1.TransferableOutput(this.transaction._assetId, new evm_1.SECPTransferOutput(this._amount, this.transaction._to, this.transaction._locktime, this.transaction._threshold)),
|
|
137
|
-
])),
|
|
138
|
-
// TODO(BG-56700): Improve canSign by check in addresses in empty credentials match signer
|
|
139
|
-
[(0, evm_1.SelectCredentialClass)(input.getCredentialID(), [''].map(utils_1.default.createSig))]));
|
|
140
|
-
}
|
|
141
|
-
/** @inheritdoc */
|
|
142
|
-
fromImplementation(rawTransaction) {
|
|
143
|
-
const tx = new evm_1.Tx();
|
|
144
|
-
tx.fromBuffer(avalanche_1.Buffer.from(rawTransaction, 'hex'));
|
|
145
|
-
this.initBuilder(tx);
|
|
146
|
-
return this.transaction;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Check the amount is positive.
|
|
150
|
-
* @param amount
|
|
151
|
-
*/
|
|
152
|
-
validateNonce(nonce) {
|
|
153
|
-
if (nonce.ltn(0)) {
|
|
154
|
-
throw new sdk_core_1.BuildTransactionError('Nonce must be greater or equal than 0');
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.ExportInCTxBuilder = ExportInCTxBuilder;
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0SW5DVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9leHBvcnRJbkNUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsOENBQXVGO0FBRXZGLHlDQUFxRDtBQUNyRCxpREFVaUM7QUFDakMsK0VBQTRFO0FBRzVFLG9EQUE0QjtBQUU1QixNQUFhLGtCQUFtQixTQUFRLHlEQUEyQjtJQUlqRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsS0FBdUI7UUFDM0IsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQW1CO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLGNBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQXNCO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEVBQUUsQ0FBQyxVQUE2QjtRQUM5QixNQUFNLE9BQU8sR0FBRyxVQUFVLFlB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QUFXLENBQUMsR0FBRyxFQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQzVCLENBQ0Y7U0FDRixDQUNGLENBQ0Y7UUFDRCwyRkFBMkY7UUFDM0YsQ0FBQyxJQUFBLDJCQUFxQixFQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUM1RSxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsY0FBc0I7UUFDakQsTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFLLEVBQUUsQ0FBQztRQUN2QixFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsS0FBUztRQUNyQixJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksZ0NBQXFCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbE1ELGdEQWtNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgTm90U3VwcG9ydGVkLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEJOLCBCdWZmZXIgYXMgQnVmZmVyQXZheCB9IGZyb20gJ2F2YWxhbmNoZSc7XG5pbXBvcnQge1xuICBBbW91bnRPdXRwdXQsXG4gIEVWTUNvbnN0YW50cyxcbiAgRVZNSW5wdXQsXG4gIFR4IGFzIEVWTVR4LFxuICBFeHBvcnRUeCxcbiAgU0VDUFRyYW5zZmVyT3V0cHV0LFxuICBTZWxlY3RDcmVkZW50aWFsQ2xhc3MsXG4gIFRyYW5zZmVyYWJsZU91dHB1dCxcbiAgVW5zaWduZWRUeCxcbn0gZnJvbSAnYXZhbGFuY2hlL2Rpc3QvYXBpcy9ldm0nO1xuaW1wb3J0IHsgQXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9hdG9taWNJbkNUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRGVwcmVjYXRlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9kZXByZWNhdGVkVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmosIERlcHJlY2F0ZWRCYXNlVHgsIERlcHJlY2F0ZWRUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRXhwb3J0SW5DVHhCdWlsZGVyIGV4dGVuZHMgQXRvbWljSW5DVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfYW1vdW50OiBCTjtcbiAgcHJpdmF0ZSBfbm9uY2U6IEJOO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVdHhvcyBhcmUgbm90IHJlcXVpcmVkIGluIEV4cG9ydCBUeCBpbiBDLUNoYWluLlxuICAgKiBPdmVycmlkZSB1dHhvcyB0byBwcmV2ZW50IHVzZWQgYnkgdGhyb3dpbmcgYSBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIHtEZWNvZGVkVXR4b09ialtdfSB2YWx1ZSBpZ25vcmVkXG4gICAqL1xuICB1dHhvcyh2YWx1ZTogRGVjb2RlZFV0eG9PYmpbXSk6IHRoaXMge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3V0eG9zIGFyZSBub3QgcmVxdWlyZWQgaW4gRXhwb3J0IFR4IGluIEMtQ2hhaW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbW91bnQgaXMgYSBsb25nIHRoYXQgc3BlY2lmaWVzIHRoZSBxdWFudGl0eSBvZiB0aGUgYXNzZXQgdGhhdCB0aGlzIG91dHB1dCBvd25zLiBNdXN0IGJlIHBvc2l0aXZlLlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gb3V0cHV0IGFtb3VudCBhZGQgYSBmaXhlZCBmZWUgdGhhdCB3aWxsIGJlIHBhaWQgdXBvbiBpbXBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7Qk4gfCBzdHJpbmd9IGFtb3VudCBUaGUgd2l0aGRyYXdhbCBhbW91bnRcbiAgICovXG4gIGFtb3VudChhbW91bnQ6IEJOIHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgYW1vdW50Qk4gPSBCTi5pc0JOKGFtb3VudCkgPyBhbW91bnQgOiBuZXcgQk4oYW1vdW50KTtcbiAgICB0aGlzLnZhbGlkYXRlQW1vdW50KGFtb3VudEJOKTtcbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnRCTjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG5vbmNlIG9mIEMtQ2hhaW4gc2VuZGVyIGFkZHJlc3NcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXIgfCBzdHJpbmd9IG5vbmNlIC0gbnVtYmVyIHRoYXQgY2FuIGJlIG9ubHkgdXNlZCBvbmNlXG4gICAqL1xuICBub25jZShub25jZTogbnVtYmVyIHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3Qgbm9uY2VCTiA9IG5ldyBCTihub25jZSk7XG4gICAgdGhpcy52YWxpZGF0ZU5vbmNlKG5vbmNlQk4pO1xuICAgIHRoaXMuX25vbmNlID0gbm9uY2VCTjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgdHggdGFyZ2V0IFAgd2FsbGV0LlxuICAgKlxuICAgKiBAcGFyYW0gcEFkZHJlc3Nlc1xuICAgKi9cbiAgdG8ocEFkZHJlc3Nlczogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICBjb25zdCBwdWJLZXlzID0gcEFkZHJlc3NlcyBpbnN0YW5jZW9mIEFycmF5ID8gcEFkZHJlc3NlcyA6IHBBZGRyZXNzZXMuc3BsaXQoJ34nKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90byA9IHB1YktleXMubWFwKHV0aWxzLnBhcnNlQWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuRXhwb3J0O1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IERlcHJlY2F0ZWRUeCk6IHRoaXMge1xuICAgIGNvbnN0IGJhc2VUeDogRGVwcmVjYXRlZEJhc2VUeCA9IHR4LmdldFVuc2lnbmVkVHgoKS5nZXRUcmFuc2FjdGlvbigpO1xuICAgIGlmIChcbiAgICAgIGJhc2VUeC5nZXROZXR3b3JrSUQoKSAhPT0gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29ya0lEIHx8XG4gICAgICAhYmFzZVR4LmdldEJsb2NrY2hhaW5JRCgpLmVxdWFscyh0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05ldHdvcmsgb3IgYmxvY2tjaGFpbiBpcyBub3QgZXF1YWxzJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZlcmlmeVR4VHlwZShiYXNlVHgpKSB7XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiBjYW5ub3QgYmUgcGFyc2VkIG9yIGhhcyBhbiB1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlJyk7XG4gICAgfVxuXG4gICAgLy8gVGhlIG91dHB1dHMgaXMgYSBtdWx0aXNpZ24gUC1DaGFpbiBhZGRyZXNzIHJlc3VsdC5cbiAgICAvLyBJdCdzIGV4cGVjdGVkIHRvIGhhdmUgb25seSBvbmUgb3V0cHV0cyB0byB0aGUgZGVzdGluYXRpb24gUC1DaGFpbiBhZGRyZXNzLlxuICAgIGNvbnN0IG91dHB1dHMgPSBiYXNlVHguZ2V0RXhwb3J0ZWRPdXRwdXRzKCk7XG4gICAgaWYgKG91dHB1dHMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBjYW4gaGF2ZSBvbmUgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbMF07XG5cbiAgICBpZiAoIW91dHB1dC5nZXRBc3NldElEKCkuZXF1YWxzKHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2V0SUQgYXJlIG5vdCBlcXVhbHMnKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgaW5wdXRzIGlzIG5vdCBhbiB1dHhvLlxuICAgIC8vIEl0J3MgZXhwZWN0ZWQgdG8gaGF2ZSBvbmx5IG9uZSBpbnB1dCBmb3JtIEMtQ2hhaW4gYWRkcmVzcy5cbiAgICBjb25zdCBpbnB1dHMgPSBiYXNlVHguZ2V0SW5wdXRzKCk7XG4gICAgaWYgKGlucHV0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNhbiBoYXZlIG9uZSBpbnB1dHMnKTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXQgPSBpbnB1dHNbMF07XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90byA9IG91dHB1dC5nZXRPdXRwdXQoKS5nZXRBZGRyZXNzZXMoKTtcbiAgICBjb25zdCBpbnB1dEFtb3VudCA9IG5ldyBCTigoaW5wdXQgYXMgYW55KS5hbW91bnQpO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IChvdXRwdXQuZ2V0T3V0cHV0KCkgYXMgQW1vdW50T3V0cHV0KS5nZXRBbW91bnQoKTtcbiAgICBjb25zdCBmZWUgPSBpbnB1dEFtb3VudC5zdWIob3V0cHV0QW1vdW50KTtcbiAgICB0aGlzLl9hbW91bnQgPSBvdXRwdXRBbW91bnQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZVJhdGUgPSBmZWUudG9OdW1iZXIoKSAtIE51bWJlcih0aGlzLmZpeGVkRmVlKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gZmVlLnRvU3RyaW5nKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLnNpemUgPSAxO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXMgPSBbaW5wdXQuZ2V0QWRkcmVzcygpXTtcblxuICAgIHRoaXMuX25vbmNlID0gbmV3IEJOKChpbnB1dCBhcyBhbnkpLm5vbmNlKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKHR4KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBEZXByZWNhdGVkQmFzZVR4KTogYmFzZVR4IGlzIEV4cG9ydFR4IHtcbiAgICByZXR1cm4gYmFzZVR4LmdldFR5cGVJRCgpID09PSBFVk1Db25zdGFudHMuRVhQT1JUVFg7XG4gIH1cblxuICB2ZXJpZnlUeFR5cGUoYmFzZVR4OiBEZXByZWNhdGVkQmFzZVR4KTogYmFzZVR4IGlzIEV4cG9ydFR4IHtcbiAgICByZXR1cm4gRXhwb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZShiYXNlVHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBleHBvcnQgaW4gQy1jaGFpbiB0cmFuc2FjdGlvblxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRBdmF4VHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gaWYgdHggaGFzIGNyZWRlbnRpYWxzLCB0eCBzaG91bGRuJ3QgY2hhbmdlXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaGFzQ3JlZGVudGlhbHMpIHJldHVybjtcbiAgICBpZiAodGhpcy5fYW1vdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYW1vdW50IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZW5kZXIgaXMgb25lIGFuZCByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5fdG8ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RvIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZVJhdGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmVlIHJhdGUgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9ub25jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vbmNlIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHR4RmVlID0gTnVtYmVyKHRoaXMuZml4ZWRGZWUpO1xuXG4gICAgY29uc3QgZmVlOiBudW1iZXIgPSB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlUmF0ZSArIHR4RmVlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUgPSBmZWUudG9TdHJpbmcoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuc2l6ZSA9IDE7XG5cbiAgICBjb25zdCBpbnB1dCA9IG5ldyBFVk1JbnB1dChcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXNbMF0sXG4gICAgICB0aGlzLl9hbW91bnQuYWRkbihmZWUpLFxuICAgICAgdGhpcy50cmFuc2FjdGlvbi5fYXNzZXRJZCxcbiAgICAgIHRoaXMuX25vbmNlXG4gICAgKTtcbiAgICBpbnB1dC5hZGRTaWduYXR1cmVJZHgoMCwgdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1swXSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uKFxuICAgICAgbmV3IEVWTVR4KFxuICAgICAgICBuZXcgVW5zaWduZWRUeChcbiAgICAgICAgICBuZXcgRXhwb3J0VHgoXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrSUQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl9ibG9ja2NoYWluSUQsXG4gICAgICAgICAgICB0aGlzLl9leHRlcm5hbENoYWluSWQsXG4gICAgICAgICAgICBbaW5wdXRdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBuZXcgVHJhbnNmZXJhYmxlT3V0cHV0KFxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX2Fzc2V0SWQsXG4gICAgICAgICAgICAgICAgbmV3IFNFQ1BUcmFuc2Zlck91dHB1dChcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Ftb3VudCxcbiAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb24uX3RvLFxuICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5fbG9ja3RpbWUsXG4gICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLl90aHJlc2hvbGRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICAvLyBUT0RPKEJHLTU2NzAwKTogIEltcHJvdmUgY2FuU2lnbiBieSBjaGVjayBpbiBhZGRyZXNzZXMgaW4gZW1wdHkgY3JlZGVudGlhbHMgbWF0Y2ggc2lnbmVyXG4gICAgICAgIFtTZWxlY3RDcmVkZW50aWFsQ2xhc3MoaW5wdXQuZ2V0Q3JlZGVudGlhbElEKCksIFsnJ10ubWFwKHV0aWxzLmNyZWF0ZVNpZykpXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogRGVwcmVjYXRlZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IG5ldyBFVk1UeCgpO1xuICAgIHR4LmZyb21CdWZmZXIoQnVmZmVyQXZheC5mcm9tKHJhd1RyYW5zYWN0aW9uLCAnaGV4JykpO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBhbW91bnQgaXMgcG9zaXRpdmUuXG4gICAqIEBwYXJhbSBhbW91bnRcbiAgICovXG4gIHZhbGlkYXRlTm9uY2Uobm9uY2U6IEJOKTogdm9pZCB7XG4gICAgaWYgKG5vbmNlLmx0bigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTm9uY2UgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRoYW4gMCcpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
-
import { TransactionType } from '@bitgo/sdk-core';
|
|
3
|
-
import { AtomicTransactionBuilder } from './atomicTransactionBuilder';
|
|
4
|
-
import { ExportTx, TransferableOutput } from 'avalanche/dist/apis/platformvm';
|
|
5
|
-
import { BN } from 'avalanche';
|
|
6
|
-
import { DeprecatedTx, DeprecatedBaseTx } from './iface';
|
|
7
|
-
export declare class ExportTxBuilder extends AtomicTransactionBuilder {
|
|
8
|
-
private _amount;
|
|
9
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
10
|
-
protected get transactionType(): TransactionType;
|
|
11
|
-
/**
|
|
12
|
-
* Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
|
|
13
|
-
*
|
|
14
|
-
* @param {BN | string} amount The withdrawal amount
|
|
15
|
-
*/
|
|
16
|
-
amount(value: BN | string): this;
|
|
17
|
-
/** @inheritdoc */
|
|
18
|
-
initBuilder(tx: DeprecatedTx): this;
|
|
19
|
-
static verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ExportTx;
|
|
20
|
-
verifyTxType(baseTx: DeprecatedBaseTx): baseTx is ExportTx;
|
|
21
|
-
/**
|
|
22
|
-
* Create the internal avalanche transaction.
|
|
23
|
-
* @protected
|
|
24
|
-
*/
|
|
25
|
-
protected buildAvaxTransaction(): void;
|
|
26
|
-
/**
|
|
27
|
-
* Create the ExportedOut where the recipient address are the sender.
|
|
28
|
-
* Later a importTx should complete the operations signing with the same keys.
|
|
29
|
-
* @protected
|
|
30
|
-
*/
|
|
31
|
-
protected exportedOutputs(): TransferableOutput[];
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=exportTxBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exportTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAuC,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,QAAQ,EAGR,kBAAkB,EAGnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAI/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEzD,qBAAa,eAAgB,SAAQ,wBAAwB;IAC3D,OAAO,CAAC,OAAO,CAAK;gBAER,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI;IAOhC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI;IA2BnC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAIjE,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,IAAI,QAAQ;IAI1D;;;OAGG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAsBtC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,kBAAkB,EAAE;CAalD"}
|