@bitgo-beta/sdk-coin-apt 1.0.1-beta.31 → 1.0.1-beta.310
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 +186 -0
- package/dist/src/apt.d.ts +17 -2
- package/dist/src/apt.d.ts.map +1 -1
- package/dist/src/apt.js +121 -4
- package/dist/src/aptToken.d.ts +19 -0
- package/dist/src/aptToken.d.ts.map +1 -0
- package/dist/src/aptToken.js +52 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +16 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +18 -2
- package/dist/src/lib/iface.d.ts +23 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +8 -3
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +15 -5
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts +10 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.d.ts.map +1 -0
- package/dist/src/lib/transaction/digitalAssetTransfer.js +45 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts +12 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts.map +1 -0
- package/dist/src/lib/transaction/fungibleAssetTransfer.js +73 -0
- package/dist/src/lib/transaction/transaction.d.ts +81 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +332 -0
- package/dist/src/lib/transaction/transferTransaction.d.ts +12 -0
- package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transferTransaction.js +63 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts +14 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.js +55 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.js +61 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +68 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +169 -0
- package/dist/src/lib/{transferBuilder.d.ts → transactionBuilder/transferBuilder.d.ts} +5 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.js +56 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +24 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +66 -5
- package/dist/src/lib/types.d.ts +9 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +3 -0
- package/dist/src/lib/utils.d.ts +23 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +104 -1
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/package.json +10 -8
- package/dist/src/lib/transaction.d.ts +0 -8
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -17
- package/dist/src/lib/transactionBuilder.d.ts +0 -43
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -78
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -15
|
@@ -0,0 +1,332 @@
|
|
|
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.Transaction = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
9
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
10
|
+
const constants_1 = require("../constants");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
13
|
+
const assert_1 = __importDefault(require("assert"));
|
|
14
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
15
|
+
constructor(coinConfig) {
|
|
16
|
+
super(coinConfig);
|
|
17
|
+
this._maxGasAmount = ts_sdk_1.DEFAULT_MAX_GAS_AMOUNT;
|
|
18
|
+
this._gasUnitPrice = constants_1.DEFAULT_GAS_UNIT_PRICE;
|
|
19
|
+
this._gasUsed = 0;
|
|
20
|
+
this._expirationTime = utils_1.default.getTxnExpirationTimestamp();
|
|
21
|
+
this._sequenceNumber = 0;
|
|
22
|
+
this._sender = ts_sdk_1.AccountAddress.ZERO.toString();
|
|
23
|
+
this._recipients = [];
|
|
24
|
+
this._assetId = ts_sdk_1.AccountAddress.ZERO.toString();
|
|
25
|
+
this._isSimulateTxn = false;
|
|
26
|
+
this._senderSignature = {
|
|
27
|
+
publicKey: {
|
|
28
|
+
pub: ts_sdk_1.Hex.fromHexInput(Transaction.EMPTY_PUBLIC_KEY).toString(),
|
|
29
|
+
},
|
|
30
|
+
signature: Transaction.EMPTY_SIGNATURE,
|
|
31
|
+
};
|
|
32
|
+
this._feePayerAddress = ts_sdk_1.AccountAddress.ZERO.toString();
|
|
33
|
+
this._feePayerSignature = {
|
|
34
|
+
publicKey: {
|
|
35
|
+
pub: ts_sdk_1.Hex.fromHexInput(Transaction.EMPTY_PUBLIC_KEY).toString(),
|
|
36
|
+
},
|
|
37
|
+
signature: Transaction.EMPTY_SIGNATURE,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** @inheritDoc **/
|
|
41
|
+
get id() {
|
|
42
|
+
this.generateTxnId();
|
|
43
|
+
return this._id ?? constants_1.UNAVAILABLE_TEXT;
|
|
44
|
+
}
|
|
45
|
+
get sender() {
|
|
46
|
+
return this._sender;
|
|
47
|
+
}
|
|
48
|
+
set sender(value) {
|
|
49
|
+
this._sender = value;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated - use `recipients()`.
|
|
53
|
+
*/
|
|
54
|
+
get recipient() {
|
|
55
|
+
(0, assert_1.default)(this._recipients.length > 0, 'No recipients available');
|
|
56
|
+
return this._recipients[0];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated - use `recipients()`.
|
|
60
|
+
*/
|
|
61
|
+
set recipient(value) {
|
|
62
|
+
this.recipients = [value];
|
|
63
|
+
}
|
|
64
|
+
get recipients() {
|
|
65
|
+
return this._recipients;
|
|
66
|
+
}
|
|
67
|
+
set recipients(value) {
|
|
68
|
+
this._recipients = value;
|
|
69
|
+
}
|
|
70
|
+
get sequenceNumber() {
|
|
71
|
+
return this._sequenceNumber;
|
|
72
|
+
}
|
|
73
|
+
set sequenceNumber(value) {
|
|
74
|
+
this._sequenceNumber = value;
|
|
75
|
+
}
|
|
76
|
+
get maxGasAmount() {
|
|
77
|
+
return this._maxGasAmount;
|
|
78
|
+
}
|
|
79
|
+
set maxGasAmount(value) {
|
|
80
|
+
this._maxGasAmount = value;
|
|
81
|
+
}
|
|
82
|
+
get gasUnitPrice() {
|
|
83
|
+
return this._gasUnitPrice;
|
|
84
|
+
}
|
|
85
|
+
set gasUnitPrice(value) {
|
|
86
|
+
this._gasUnitPrice = value;
|
|
87
|
+
}
|
|
88
|
+
get gasUsed() {
|
|
89
|
+
return this._gasUsed;
|
|
90
|
+
}
|
|
91
|
+
set gasUsed(value) {
|
|
92
|
+
this._gasUsed = value;
|
|
93
|
+
}
|
|
94
|
+
get expirationTime() {
|
|
95
|
+
return this._expirationTime;
|
|
96
|
+
}
|
|
97
|
+
set expirationTime(value) {
|
|
98
|
+
this._expirationTime = value;
|
|
99
|
+
}
|
|
100
|
+
get feePayerAddress() {
|
|
101
|
+
return this._feePayerAddress;
|
|
102
|
+
}
|
|
103
|
+
set transactionType(transactionType) {
|
|
104
|
+
this._type = transactionType;
|
|
105
|
+
}
|
|
106
|
+
get assetId() {
|
|
107
|
+
return this._assetId;
|
|
108
|
+
}
|
|
109
|
+
set assetId(value) {
|
|
110
|
+
this._assetId = value;
|
|
111
|
+
}
|
|
112
|
+
get isSimulateTxn() {
|
|
113
|
+
return this._isSimulateTxn;
|
|
114
|
+
}
|
|
115
|
+
set isSimulateTxn(value) {
|
|
116
|
+
this._isSimulateTxn = value;
|
|
117
|
+
}
|
|
118
|
+
fromDeserializedSignedTransaction(signedTxn) {
|
|
119
|
+
try {
|
|
120
|
+
const rawTxn = signedTxn.raw_txn;
|
|
121
|
+
this.parseTransactionPayload(rawTxn.payload);
|
|
122
|
+
this._sender = rawTxn.sender.toString();
|
|
123
|
+
this._sequenceNumber = utils_1.default.castToNumber(rawTxn.sequence_number);
|
|
124
|
+
this._maxGasAmount = utils_1.default.castToNumber(rawTxn.max_gas_amount);
|
|
125
|
+
this._gasUnitPrice = utils_1.default.castToNumber(rawTxn.gas_unit_price);
|
|
126
|
+
this._expirationTime = utils_1.default.castToNumber(rawTxn.expiration_timestamp_secs);
|
|
127
|
+
this._rawTransaction = rawTxn;
|
|
128
|
+
this.loadInputsAndOutputs();
|
|
129
|
+
const authenticator = signedTxn.authenticator;
|
|
130
|
+
this._feePayerAddress = authenticator.fee_payer.address.toString();
|
|
131
|
+
const senderAuthenticator = authenticator.sender;
|
|
132
|
+
const senderSignature = Buffer.from(senderAuthenticator.signature.toUint8Array());
|
|
133
|
+
this.addSenderSignature({ pub: senderAuthenticator.public_key.toString() }, senderSignature);
|
|
134
|
+
const feePayerAuthenticator = authenticator.fee_payer.authenticator;
|
|
135
|
+
const feePayerSignature = Buffer.from(feePayerAuthenticator.signature.toUint8Array());
|
|
136
|
+
this.addFeePayerSignature({ pub: utils_1.default.stripHexPrefix(feePayerAuthenticator.public_key.toString()) }, feePayerSignature);
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
console.error('invalid signed transaction', e);
|
|
140
|
+
throw new Error('invalid signed transaction');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
canSign(_key) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
toBroadcastFormat() {
|
|
147
|
+
if (!this._rawTransaction) {
|
|
148
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
149
|
+
}
|
|
150
|
+
return this.serialize();
|
|
151
|
+
}
|
|
152
|
+
serialize() {
|
|
153
|
+
let senderAuthenticator;
|
|
154
|
+
let feePayerAuthenticator;
|
|
155
|
+
if (this.isSimulateTxn) {
|
|
156
|
+
senderAuthenticator = new ts_sdk_1.AccountAuthenticatorNoAccountAuthenticator();
|
|
157
|
+
feePayerAuthenticator = new ts_sdk_1.AccountAuthenticatorNoAccountAuthenticator();
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const senderPublicKeyBuffer = utils_1.default.getBufferFromHexString(this._senderSignature.publicKey.pub);
|
|
161
|
+
const senderPublicKey = new ts_sdk_1.Ed25519PublicKey(senderPublicKeyBuffer);
|
|
162
|
+
const senderSignature = new ts_sdk_1.Ed25519Signature(this._senderSignature.signature);
|
|
163
|
+
senderAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(senderPublicKey, senderSignature);
|
|
164
|
+
const feePayerPublicKeyBuffer = utils_1.default.getBufferFromHexString(this._feePayerSignature.publicKey.pub);
|
|
165
|
+
const feePayerPublicKey = new ts_sdk_1.Ed25519PublicKey(feePayerPublicKeyBuffer);
|
|
166
|
+
const feePayerSignature = new ts_sdk_1.Ed25519Signature(this._feePayerSignature.signature);
|
|
167
|
+
feePayerAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(feePayerPublicKey, feePayerSignature);
|
|
168
|
+
}
|
|
169
|
+
const txnAuthenticator = new ts_sdk_1.TransactionAuthenticatorFeePayer(senderAuthenticator, [], [], {
|
|
170
|
+
address: ts_sdk_1.AccountAddress.fromString(this._feePayerAddress),
|
|
171
|
+
authenticator: feePayerAuthenticator,
|
|
172
|
+
});
|
|
173
|
+
const signedTxn = new ts_sdk_1.SignedTransaction(this._rawTransaction, txnAuthenticator);
|
|
174
|
+
return signedTxn.toString();
|
|
175
|
+
}
|
|
176
|
+
addSenderSignature(publicKey, signature) {
|
|
177
|
+
this._signatures = [signature.toString('hex')];
|
|
178
|
+
this._senderSignature = { publicKey, signature };
|
|
179
|
+
}
|
|
180
|
+
getFeePayerPubKey() {
|
|
181
|
+
return this._feePayerSignature.publicKey.pub;
|
|
182
|
+
}
|
|
183
|
+
addFeePayerSignature(publicKey, signature) {
|
|
184
|
+
this._feePayerSignature = { publicKey, signature };
|
|
185
|
+
}
|
|
186
|
+
addFeePayerAddress(address) {
|
|
187
|
+
this._feePayerAddress = address;
|
|
188
|
+
}
|
|
189
|
+
async build() {
|
|
190
|
+
await this.buildRawTransaction();
|
|
191
|
+
this.generateTxnId();
|
|
192
|
+
this.loadInputsAndOutputs();
|
|
193
|
+
}
|
|
194
|
+
loadInputsAndOutputs() {
|
|
195
|
+
const totalAmount = this._recipients.reduce((accumulator, current) => accumulator.plus(current.amount), new bignumber_js_1.default('0'));
|
|
196
|
+
this._inputs = [
|
|
197
|
+
{
|
|
198
|
+
address: this.sender,
|
|
199
|
+
value: totalAmount.toString(),
|
|
200
|
+
coin: this._coinConfig.name,
|
|
201
|
+
},
|
|
202
|
+
];
|
|
203
|
+
this._outputs = this._recipients.map((recipient) => {
|
|
204
|
+
return {
|
|
205
|
+
address: recipient.address,
|
|
206
|
+
value: recipient.amount,
|
|
207
|
+
coin: this._coinConfig.name,
|
|
208
|
+
};
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
fromRawTransaction(rawTransaction) {
|
|
212
|
+
let signedTxn;
|
|
213
|
+
try {
|
|
214
|
+
signedTxn = utils_1.default.deserializeSignedTransaction(rawTransaction);
|
|
215
|
+
}
|
|
216
|
+
catch (e) {
|
|
217
|
+
console.error('invalid raw transaction', e);
|
|
218
|
+
throw new Error('invalid raw transaction');
|
|
219
|
+
}
|
|
220
|
+
this.fromDeserializedSignedTransaction(signedTxn);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Deserializes a signed transaction hex string
|
|
224
|
+
* @param {string} signedRawTransaction
|
|
225
|
+
* @returns {SignedTransaction} the aptos signed transaction
|
|
226
|
+
*/
|
|
227
|
+
static deserializeSignedTransaction(signedRawTransaction) {
|
|
228
|
+
try {
|
|
229
|
+
return utils_1.default.deserializeSignedTransaction(signedRawTransaction);
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
console.error('invalid raw transaction', e);
|
|
233
|
+
throw new Error('invalid raw transaction');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
toJson() {
|
|
237
|
+
return {
|
|
238
|
+
id: this.id,
|
|
239
|
+
sender: this.sender,
|
|
240
|
+
recipient: this.recipient,
|
|
241
|
+
recipients: this.recipients,
|
|
242
|
+
sequenceNumber: this.sequenceNumber,
|
|
243
|
+
maxGasAmount: this.maxGasAmount,
|
|
244
|
+
gasUnitPrice: this.gasUnitPrice,
|
|
245
|
+
gasUsed: this.gasUsed,
|
|
246
|
+
expirationTime: this.expirationTime,
|
|
247
|
+
feePayer: this.feePayerAddress,
|
|
248
|
+
assetId: this.assetId,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
getFee() {
|
|
252
|
+
return new bignumber_js_1.default(this.gasUsed).multipliedBy(this.gasUnitPrice).toString();
|
|
253
|
+
}
|
|
254
|
+
get signablePayload() {
|
|
255
|
+
return this.feePayerAddress ? this.getSignablePayloadWithFeePayer() : this.getSignablePayloadWithoutFeePayer();
|
|
256
|
+
}
|
|
257
|
+
/** @inheritDoc */
|
|
258
|
+
explainTransaction() {
|
|
259
|
+
const displayOrder = [
|
|
260
|
+
'id',
|
|
261
|
+
'outputs',
|
|
262
|
+
'outputAmount',
|
|
263
|
+
'changeOutputs',
|
|
264
|
+
'changeAmount',
|
|
265
|
+
'fee',
|
|
266
|
+
'withdrawAmount',
|
|
267
|
+
'sender',
|
|
268
|
+
'type',
|
|
269
|
+
];
|
|
270
|
+
const outputs = this._recipients;
|
|
271
|
+
const outputAmount = outputs
|
|
272
|
+
.reduce((accumulator, current) => accumulator.plus(current.amount), new bignumber_js_1.default('0'))
|
|
273
|
+
.toString();
|
|
274
|
+
return {
|
|
275
|
+
displayOrder,
|
|
276
|
+
id: this.id,
|
|
277
|
+
outputs,
|
|
278
|
+
outputAmount,
|
|
279
|
+
changeOutputs: [],
|
|
280
|
+
changeAmount: '0',
|
|
281
|
+
fee: { fee: this.getFee() },
|
|
282
|
+
sender: this.sender,
|
|
283
|
+
type: this.type,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
async buildRawTransaction() {
|
|
287
|
+
const network = this._coinConfig.network.type === statics_1.NetworkType.MAINNET ? ts_sdk_1.Network.MAINNET : ts_sdk_1.Network.TESTNET;
|
|
288
|
+
const aptos = new ts_sdk_1.Aptos(new ts_sdk_1.AptosConfig({ network }));
|
|
289
|
+
const senderAddress = ts_sdk_1.AccountAddress.fromString(this._sender);
|
|
290
|
+
const simpleTxn = await aptos.transaction.build.simple({
|
|
291
|
+
sender: senderAddress,
|
|
292
|
+
data: this.getTransactionPayloadData(),
|
|
293
|
+
options: {
|
|
294
|
+
maxGasAmount: this.maxGasAmount,
|
|
295
|
+
gasUnitPrice: this.gasUnitPrice,
|
|
296
|
+
expireTimestamp: this.expirationTime,
|
|
297
|
+
accountSequenceNumber: this.sequenceNumber,
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
this._rawTransaction = simpleTxn.rawTransaction;
|
|
301
|
+
}
|
|
302
|
+
getSignablePayloadWithFeePayer() {
|
|
303
|
+
const feePayerRawTxn = new ts_sdk_1.FeePayerRawTransaction(this._rawTransaction, [], ts_sdk_1.AccountAddress.fromString(this._feePayerAddress));
|
|
304
|
+
return Buffer.from((0, ts_sdk_1.generateSigningMessage)(feePayerRawTxn.bcsToBytes(), ts_sdk_1.RAW_TRANSACTION_WITH_DATA_SALT));
|
|
305
|
+
}
|
|
306
|
+
getSignablePayloadWithoutFeePayer() {
|
|
307
|
+
return Buffer.from((0, ts_sdk_1.generateSigningMessage)(this._rawTransaction.bcsToBytes(), ts_sdk_1.RAW_TRANSACTION_SALT));
|
|
308
|
+
}
|
|
309
|
+
generateTxnId() {
|
|
310
|
+
if (!this._senderSignature ||
|
|
311
|
+
!this._senderSignature.publicKey ||
|
|
312
|
+
!this._senderSignature.signature ||
|
|
313
|
+
!this._feePayerSignature ||
|
|
314
|
+
!this._feePayerSignature.publicKey ||
|
|
315
|
+
!this._feePayerSignature.signature ||
|
|
316
|
+
!this._feePayerAddress) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const transaction = new ts_sdk_1.SimpleTransaction(this._rawTransaction, ts_sdk_1.AccountAddress.fromString(this._feePayerAddress));
|
|
320
|
+
const senderPublicKey = new ts_sdk_1.Ed25519PublicKey(utils_1.default.getBufferFromHexString(this._senderSignature.publicKey.pub));
|
|
321
|
+
const senderSignature = new ts_sdk_1.Ed25519Signature(this._senderSignature.signature);
|
|
322
|
+
const senderAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(senderPublicKey, senderSignature);
|
|
323
|
+
const feePayerPublicKey = new ts_sdk_1.Ed25519PublicKey(utils_1.default.getBufferFromHexString(this._feePayerSignature.publicKey.pub));
|
|
324
|
+
const feePayerSignature = new ts_sdk_1.Ed25519Signature(this._feePayerSignature.signature);
|
|
325
|
+
const feePayerAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(feePayerPublicKey, feePayerSignature);
|
|
326
|
+
this._id = (0, ts_sdk_1.generateUserTransactionHash)({ transaction, senderAuthenticator, feePayerAuthenticator });
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
exports.Transaction = Transaction;
|
|
330
|
+
Transaction.EMPTY_PUBLIC_KEY = Buffer.alloc(32);
|
|
331
|
+
Transaction.EMPTY_SIGNATURE = Buffer.alloc(64);
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVE4QjtBQUM5QixpREFBMEU7QUFDMUUsK0NBdUI0QjtBQUM1Qiw0Q0FBd0U7QUFDeEUscURBQTZCO0FBQzdCLGdFQUFxQztBQUVyQyxvREFBNEI7QUFFNUIsTUFBc0IsV0FBWSxTQUFRLDBCQUFlO0lBa0J2RCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLCtCQUFzQixDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsa0NBQXNCLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLHVCQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsWUFBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUU7YUFDL0Q7WUFDRCxTQUFTLEVBQUUsV0FBVyxDQUFDLGVBQWU7U0FDdkMsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyx1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QUM5RSxNQUFNLG1CQUFtQixHQUFHLElBQUksb0NBQTJCLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzlGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSx5QkFBZ0IsQ0FBQyxlQUFLLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0saUJBQWlCLEdBQUcsSUFBSSx5QkFBZ0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLG9DQUEyQixDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFBLG9DQUEyQixFQUFDLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUN0RyxDQUFDOztBQXZZSCxrQ0F3WUM7QUF6WFEsNEJBQWdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwQywyQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEFjY291bnRBZGRyZXNzLFxuICBBY2NvdW50QXV0aGVudGljYXRvcixcbiAgQWNjb3VudEF1dGhlbnRpY2F0b3JFZDI1NTE5LFxuICBBY2NvdW50QXV0aGVudGljYXRvck5vQWNjb3VudEF1dGhlbnRpY2F0b3IsXG4gIEFwdG9zLFxuICBBcHRvc0NvbmZpZyxcbiAgREVGQVVMVF9NQVhfR0FTX0FNT1VOVCxcbiAgRWQyNTUxOVB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgRmVlUGF5ZXJSYXdUcmFuc2FjdGlvbixcbiAgZ2VuZXJhdGVTaWduaW5nTWVzc2FnZSxcbiAgZ2VuZXJhdGVVc2VyVHJhbnNhY3Rpb25IYXNoLFxuICBIZXgsXG4gIElucHV0R2VuZXJhdGVUcmFuc2FjdGlvblBheWxvYWREYXRhLFxuICBOZXR3b3JrLFxuICBSQVdfVFJBTlNBQ1RJT05fU0FMVCxcbiAgUkFXX1RSQU5TQUNUSU9OX1dJVEhfREFUQV9TQUxULFxuICBSYXdUcmFuc2FjdGlvbixcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpbXBsZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkF1dGhlbnRpY2F0b3JGZWVQYXllcixcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuaW1wb3J0IHsgREVGQVVMVF9HQVNfVU5JVF9QUklDRSwgVU5BVkFJTEFCTEVfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQXB0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX3Jhd1RyYW5zYWN0aW9uOiBSYXdUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9zZW5kZXJTaWduYXR1cmU6IFNpZ25hdHVyZTtcbiAgcHJvdGVjdGVkIF9mZWVQYXllclNpZ25hdHVyZTogU2lnbmF0dXJlO1xuICBwcm90ZWN0ZWQgX3NlbmRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3JlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIHByb3RlY3RlZCBfc2VxdWVuY2VOdW1iZXI6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9tYXhHYXNBbW91bnQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9nYXNVbml0UHJpY2U6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9nYXNVc2VkOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfZXhwaXJhdGlvblRpbWU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9mZWVQYXllckFkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9hc3NldElkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfaXNTaW11bGF0ZVR4bjogYm9vbGVhbjtcblxuICBzdGF0aWMgRU1QVFlfUFVCTElDX0tFWSA9IEJ1ZmZlci5hbGxvYygzMik7XG4gIHN0YXRpYyBFTVBUWV9TSUdOQVRVUkUgPSBCdWZmZXIuYWxsb2MoNjQpO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbWF4R2FzQW1vdW50ID0gREVGQVVMVF9NQVhfR0FTX0FNT1VOVDtcbiAgICB0aGlzLl9nYXNVbml0UHJpY2UgPSBERUZBVUxUX0dBU19VTklUX1BSSUNFO1xuICAgIHRoaXMuX2dhc1VzZWQgPSAwO1xuICAgIHRoaXMuX2V4cGlyYXRpb25UaW1lID0gdXRpbHMuZ2V0VHhuRXhwaXJhdGlvblRpbWVzdGFtcCgpO1xuICAgIHRoaXMuX3NlcXVlbmNlTnVtYmVyID0gMDtcbiAgICB0aGlzLl9zZW5kZXIgPSBBY2NvdW50QWRkcmVzcy5aRVJPLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IFtdO1xuICAgIHRoaXMuX2Fzc2V0SWQgPSBBY2NvdW50QWRkcmVzcy5aRVJPLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5faXNTaW11bGF0ZVR4biA9IGZhbHNlO1xuICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IHtcbiAgICAgIHB1YmxpY0tleToge1xuICAgICAgICBwdWI6IEhleC5mcm9tSGV4SW5wdXQoVHJhbnNhY3Rpb24uRU1QVFlfUFVCTElDX0tFWSkudG9TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBzaWduYXR1cmU6IFRyYW5zYWN0aW9uLkVNUFRZX1NJR05BVFVSRSxcbiAgICB9O1xuICAgIHRoaXMuX2ZlZVBheWVyQWRkcmVzcyA9IEFjY291bnRBZGRyZXNzLlpFUk8udG9TdHJpbmcoKTtcbiAgICB0aGlzLl9mZWVQYXllclNpZ25hdHVyZSA9IHtcbiAgICAgIHB1YmxpY0tleToge1xuICAgICAgICBwdWI6IEhleC5mcm9tSGV4SW5wdXQoVHJhbnNhY3Rpb24uRU1QVFlfUFVCTElDX0tFWSkudG9TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgICBzaWduYXR1cmU6IFRyYW5zYWN0aW9uLkVNUFRZX1NJR05BVFVSRSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgdGhpcy5nZW5lcmF0ZVR4bklkKCk7XG4gICAgcmV0dXJuIHRoaXMuX2lkID8/IFVOQVZBSUxBQkxFX1RFWFQ7XG4gIH1cblxuICBnZXQgc2VuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRlcjtcbiAgfVxuXG4gIHNldCBzZW5kZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3NlbmRlciA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGByZWNpcGllbnRzKClgLlxuICAgKi9cbiAgZ2V0IHJlY2lwaWVudCgpOiBUcmFuc2FjdGlvblJlY2lwaWVudCB7XG4gICAgYXNzZXJ0KHRoaXMuX3JlY2lwaWVudHMubGVuZ3RoID4gMCwgJ05vIHJlY2lwaWVudHMgYXZhaWxhYmxlJyk7XG4gICAgcmV0dXJuIHRoaXMuX3JlY2lwaWVudHNbMF07XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgYHJlY2lwaWVudHMoKWAuXG4gICAqL1xuICBzZXQgcmVjaXBpZW50KHZhbHVlOiBUcmFuc2FjdGlvblJlY2lwaWVudCkge1xuICAgIHRoaXMucmVjaXBpZW50cyA9IFt2YWx1ZV07XG4gIH1cblxuICBnZXQgcmVjaXBpZW50cygpOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjaXBpZW50cztcbiAgfVxuXG4gIHNldCByZWNpcGllbnRzKHZhbHVlOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdKSB7XG4gICAgdGhpcy5fcmVjaXBpZW50cyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNlcXVlbmNlTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcXVlbmNlTnVtYmVyO1xuICB9XG5cbiAgc2V0IHNlcXVlbmNlTnVtYmVyKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZXF1ZW5jZU51bWJlciA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IG1heEdhc0Ftb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhHYXNBbW91bnQ7XG4gIH1cblxuICBzZXQgbWF4R2FzQW1vdW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9tYXhHYXNBbW91bnQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBnYXNVbml0UHJpY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2FzVW5pdFByaWNlO1xuICB9XG5cbiAgc2V0IGdhc1VuaXRQcmljZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZ2FzVW5pdFByaWNlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZ2FzVXNlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYXNVc2VkO1xuICB9XG5cbiAgc2V0IGdhc1VzZWQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2dhc1VzZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBleHBpcmF0aW9uVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leHBpcmF0aW9uVGltZTtcbiAgfVxuXG4gIHNldCBleHBpcmF0aW9uVGltZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBmZWVQYXllckFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmVlUGF5ZXJBZGRyZXNzO1xuICB9XG5cbiAgc2V0IHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICBnZXQgYXNzZXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hc3NldElkO1xuICB9XG5cbiAgc2V0IGFzc2V0SWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Fzc2V0SWQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpc1NpbXVsYXRlVHhuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1NpbXVsYXRlVHhuO1xuICB9XG5cbiAgc2V0IGlzU2ltdWxhdGVUeG4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc1NpbXVsYXRlVHhuID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VHJhbnNhY3Rpb25QYXlsb2FkRGF0YSgpOiBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcGFyc2VUcmFuc2FjdGlvblBheWxvYWQocGF5bG9hZDogVHJhbnNhY3Rpb25QYXlsb2FkKTogdm9pZDtcblxuICBmcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHhuOiBTaWduZWRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXdUeG4gPSBzaWduZWRUeG4ucmF3X3R4bjtcbiAgICAgIHRoaXMucGFyc2VUcmFuc2FjdGlvblBheWxvYWQocmF3VHhuLnBheWxvYWQpO1xuICAgICAgdGhpcy5fc2VuZGVyID0gcmF3VHhuLnNlbmRlci50b1N0cmluZygpO1xuICAgICAgdGhpcy5fc2VxdWVuY2VOdW1iZXIgPSB1dGlscy5jYXN0VG9OdW1iZXIocmF3VHhuLnNlcXVlbmNlX251bWJlcik7XG4gICAgICB0aGlzLl9tYXhHYXNBbW91bnQgPSB1dGlscy5jYXN0VG9OdW1iZXIocmF3VHhuLm1heF9nYXNfYW1vdW50KTtcbiAgICAgIHRoaXMuX2dhc1VuaXRQcmljZSA9IHV0aWxzLmNhc3RUb051bWJlcihyYXdUeG4uZ2FzX3VuaXRfcHJpY2UpO1xuICAgICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSB1dGlscy5jYXN0VG9OdW1iZXIocmF3VHhuLmV4cGlyYXRpb25fdGltZXN0YW1wX3NlY3MpO1xuICAgICAgdGhpcy5fcmF3VHJhbnNhY3Rpb24gPSByYXdUeG47XG5cbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICAgIGNvbnN0IGF1dGhlbnRpY2F0b3IgPSBzaWduZWRUeG4uYXV0aGVudGljYXRvciBhcyBUcmFuc2FjdGlvbkF1dGhlbnRpY2F0b3JGZWVQYXllcjtcbiAgICAgIHRoaXMuX2ZlZVBheWVyQWRkcmVzcyA9IGF1dGhlbnRpY2F0b3IuZmVlX3BheWVyLmFkZHJlc3MudG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHNlbmRlckF1dGhlbnRpY2F0b3IgPSBhdXRoZW50aWNhdG9yLnNlbmRlciBhcyBBY2NvdW50QXV0aGVudGljYXRvckVkMjU1MTk7XG4gICAgICBjb25zdCBzZW5kZXJTaWduYXR1cmUgPSBCdWZmZXIuZnJvbShzZW5kZXJBdXRoZW50aWNhdG9yLnNpZ25hdHVyZS50b1VpbnQ4QXJyYXkoKSk7XG4gICAgICB0aGlzLmFkZFNlbmRlclNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyQXV0aGVudGljYXRvci5wdWJsaWNfa2V5LnRvU3RyaW5nKCkgfSwgc2VuZGVyU2lnbmF0dXJlKTtcblxuICAgICAgY29uc3QgZmVlUGF5ZXJBdXRoZW50aWNhdG9yID0gYXV0aGVudGljYXRvci5mZWVfcGF5ZXIuYXV0aGVudGljYXRvciBhcyBBY2NvdW50QXV0aGVudGljYXRvckVkMjU1MTk7XG4gICAgICBjb25zdCBmZWVQYXllclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKGZlZVBheWVyQXV0aGVudGljYXRvci5zaWduYXR1cmUudG9VaW50OEFycmF5KCkpO1xuICAgICAgdGhpcy5hZGRGZWVQYXllclNpZ25hdHVyZShcbiAgICAgICAgeyBwdWI6IHV0aWxzLnN0cmlwSGV4UHJlZml4KGZlZVBheWVyQXV0aGVudGljYXRvci5wdWJsaWNfa2V5LnRvU3RyaW5nKCkpIH0sXG4gICAgICAgIGZlZVBheWVyU2lnbmF0dXJlXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ludmFsaWQgc2lnbmVkIHRyYW5zYWN0aW9uJywgZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgY2FuU2lnbihfa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3Jhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgc2VyaWFsaXplKCk6IHN0cmluZyB7XG4gICAgbGV0IHNlbmRlckF1dGhlbnRpY2F0b3I6IEFjY291bnRBdXRoZW50aWNhdG9yO1xuICAgIGxldCBmZWVQYXllckF1dGhlbnRpY2F0b3I6IEFjY291bnRBdXRoZW50aWNhdG9yO1xuICAgIGlmICh0aGlzLmlzU2ltdWxhdGVUeG4pIHtcbiAgICAgIHNlbmRlckF1dGhlbnRpY2F0b3IgPSBuZXcgQWNjb3VudEF1dGhlbnRpY2F0b3JOb0FjY291bnRBdXRoZW50aWNhdG9yKCk7XG4gICAgICBmZWVQYXllckF1dGhlbnRpY2F0b3IgPSBuZXcgQWNjb3VudEF1dGhlbnRpY2F0b3JOb0FjY291bnRBdXRoZW50aWNhdG9yKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbmRlclB1YmxpY0tleUJ1ZmZlciA9IHV0aWxzLmdldEJ1ZmZlckZyb21IZXhTdHJpbmcodGhpcy5fc2VuZGVyU2lnbmF0dXJlLnB1YmxpY0tleS5wdWIpO1xuICAgICAgY29uc3Qgc2VuZGVyUHVibGljS2V5ID0gbmV3IEVkMjU1MTlQdWJsaWNLZXkoc2VuZGVyUHVibGljS2V5QnVmZmVyKTtcbiAgICAgIGNvbnN0IHNlbmRlclNpZ25hdHVyZSA9IG5ldyBFZDI1NTE5U2lnbmF0dXJlKHRoaXMuX3NlbmRlclNpZ25hdHVyZS5zaWduYXR1cmUpO1xuICAgICAgc2VuZGVyQXV0aGVudGljYXRvciA9IG5ldyBBY2NvdW50QXV0aGVudGljYXRvckVkMjU1MTkoc2VuZGVyUHVibGljS2V5LCBzZW5kZXJTaWduYXR1cmUpO1xuXG4gICAgICBjb25zdCBmZWVQYXllclB1YmxpY0tleUJ1ZmZlciA9IHV0aWxzLmdldEJ1ZmZlckZyb21IZXhTdHJpbmcodGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUucHVibGljS2V5LnB1Yik7XG4gICAgICBjb25zdCBmZWVQYXllclB1YmxpY0tleSA9IG5ldyBFZDI1NTE5UHVibGljS2V5KGZlZVBheWVyUHVibGljS2V5QnVmZmVyKTtcbiAgICAgIGNvbnN0IGZlZVBheWVyU2lnbmF0dXJlID0gbmV3IEVkMjU1MTlTaWduYXR1cmUodGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUuc2lnbmF0dXJlKTtcbiAgICAgIGZlZVBheWVyQXV0aGVudGljYXRvciA9IG5ldyBBY2NvdW50QXV0aGVudGljYXRvckVkMjU1MTkoZmVlUGF5ZXJQdWJsaWNLZXksIGZlZVBheWVyU2lnbmF0dXJlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eG5BdXRoZW50aWNhdG9yID0gbmV3IFRyYW5zYWN0aW9uQXV0aGVudGljYXRvckZlZVBheWVyKHNlbmRlckF1dGhlbnRpY2F0b3IsIFtdLCBbXSwge1xuICAgICAgYWRkcmVzczogQWNjb3VudEFkZHJlc3MuZnJvbVN0cmluZyh0aGlzLl9mZWVQYXllckFkZHJlc3MpLFxuICAgICAgYXV0aGVudGljYXRvcjogZmVlUGF5ZXJBdXRoZW50aWNhdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2lnbmVkVHhuID0gbmV3IFNpZ25lZFRyYW5zYWN0aW9uKHRoaXMuX3Jhd1RyYW5zYWN0aW9uLCB0eG5BdXRoZW50aWNhdG9yKTtcbiAgICByZXR1cm4gc2lnbmVkVHhuLnRvU3RyaW5nKCk7XG4gIH1cblxuICBhZGRTZW5kZXJTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpXTtcbiAgICB0aGlzLl9zZW5kZXJTaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gIH1cblxuICBnZXRGZWVQYXllclB1YktleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mZWVQYXllclNpZ25hdHVyZS5wdWJsaWNLZXkucHViO1xuICB9XG5cbiAgYWRkRmVlUGF5ZXJTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gIH1cblxuICBhZGRGZWVQYXllckFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fZmVlUGF5ZXJBZGRyZXNzID0gYWRkcmVzcztcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuYnVpbGRSYXdUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMuZ2VuZXJhdGVUeG5JZCgpO1xuICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgfVxuXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRvdGFsQW1vdW50ID0gdGhpcy5fcmVjaXBpZW50cy5yZWR1Y2UoXG4gICAgICAoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnBsdXMoY3VycmVudC5hbW91bnQpLFxuICAgICAgbmV3IEJpZ051bWJlcignMCcpXG4gICAgKTtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRoaXMuc2VuZGVyLFxuICAgICAgICB2YWx1ZTogdG90YWxBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHRoaXMuX291dHB1dHMgPSB0aGlzLl9yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IHJlY2lwaWVudC5hbW91bnQgYXMgc3RyaW5nLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgc2lnbmVkVHhuOiBTaWduZWRUcmFuc2FjdGlvbjtcbiAgICB0cnkge1xuICAgICAgc2lnbmVkVHhuID0gdXRpbHMuZGVzZXJpYWxpemVTaWduZWRUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24nLCBlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5mcm9tRGVzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkVHhuKTtcbiAgfVxuICAvKipcbiAgICogRGVzZXJpYWxpemVzIGEgc2lnbmVkIHRyYW5zYWN0aW9uIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25lZFJhd1RyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtTaWduZWRUcmFuc2FjdGlvbn0gdGhlIGFwdG9zIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgc3RhdGljIGRlc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkUmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHV0aWxzLmRlc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24oc2lnbmVkUmF3VHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJywgZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHJlY2lwaWVudDogdGhpcy5yZWNpcGllbnQsXG4gICAgICByZWNpcGllbnRzOiB0aGlzLnJlY2lwaWVudHMsXG4gICAgICBzZXF1ZW5jZU51bWJlcjogdGhpcy5zZXF1ZW5jZU51bWJlcixcbiAgICAgIG1heEdhc0Ftb3VudDogdGhpcy5tYXhHYXNBbW91bnQsXG4gICAgICBnYXNVbml0UHJpY2U6IHRoaXMuZ2FzVW5pdFByaWNlLFxuICAgICAgZ2FzVXNlZDogdGhpcy5nYXNVc2VkLFxuICAgICAgZXhwaXJhdGlvblRpbWU6IHRoaXMuZXhwaXJhdGlvblRpbWUsXG4gICAgICBmZWVQYXllcjogdGhpcy5mZWVQYXllckFkZHJlc3MsXG4gICAgICBhc3NldElkOiB0aGlzLmFzc2V0SWQsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEJpZ051bWJlcih0aGlzLmdhc1VzZWQpLm11bHRpcGxpZWRCeSh0aGlzLmdhc1VuaXRQcmljZSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIHRoaXMuZmVlUGF5ZXJBZGRyZXNzID8gdGhpcy5nZXRTaWduYWJsZVBheWxvYWRXaXRoRmVlUGF5ZXIoKSA6IHRoaXMuZ2V0U2lnbmFibGVQYXlsb2FkV2l0aG91dEZlZVBheWVyKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IEFwdFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICdpZCcsXG4gICAgICAnb3V0cHV0cycsXG4gICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgJ2ZlZScsXG4gICAgICAnd2l0aGRyYXdBbW91bnQnLFxuICAgICAgJ3NlbmRlcicsXG4gICAgICAndHlwZScsXG4gICAgXTtcblxuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSB0aGlzLl9yZWNpcGllbnRzO1xuICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IG91dHB1dHNcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvci5wbHVzKGN1cnJlbnQuYW1vdW50KSwgbmV3IEJpZ051bWJlcignMCcpKVxuICAgICAgLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLmdldEZlZSgpIH0sXG4gICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRSYXdUcmFuc2FjdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBuZXR3b3JrOiBOZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyBOZXR3b3JrLk1BSU5ORVQgOiBOZXR3b3JrLlRFU1RORVQ7XG4gICAgY29uc3QgYXB0b3MgPSBuZXcgQXB0b3MobmV3IEFwdG9zQ29uZmlnKHsgbmV0d29yayB9KSk7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcodGhpcy5fc2VuZGVyKTtcblxuICAgIGNvbnN0IHNpbXBsZVR4biA9IGF3YWl0IGFwdG9zLnRyYW5zYWN0aW9uLmJ1aWxkLnNpbXBsZSh7XG4gICAgICBzZW5kZXI6IHNlbmRlckFkZHJlc3MsXG4gICAgICBkYXRhOiB0aGlzLmdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKSBhcyBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbWF4R2FzQW1vdW50OiB0aGlzLm1heEdhc0Ftb3VudCxcbiAgICAgICAgZ2FzVW5pdFByaWNlOiB0aGlzLmdhc1VuaXRQcmljZSxcbiAgICAgICAgZXhwaXJlVGltZXN0YW1wOiB0aGlzLmV4cGlyYXRpb25UaW1lLFxuICAgICAgICBhY2NvdW50U2VxdWVuY2VOdW1iZXI6IHRoaXMuc2VxdWVuY2VOdW1iZXIsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuX3Jhd1RyYW5zYWN0aW9uID0gc2ltcGxlVHhuLnJhd1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaWduYWJsZVBheWxvYWRXaXRoRmVlUGF5ZXIoKTogQnVmZmVyIHtcbiAgICBjb25zdCBmZWVQYXllclJhd1R4biA9IG5ldyBGZWVQYXllclJhd1RyYW5zYWN0aW9uKFxuICAgICAgdGhpcy5fcmF3VHJhbnNhY3Rpb24sXG4gICAgICBbXSxcbiAgICAgIEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcodGhpcy5fZmVlUGF5ZXJBZGRyZXNzKVxuICAgICk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGdlbmVyYXRlU2lnbmluZ01lc3NhZ2UoZmVlUGF5ZXJSYXdUeG4uYmNzVG9CeXRlcygpLCBSQVdfVFJBTlNBQ1RJT05fV0lUSF9EQVRBX1NBTFQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2lnbmFibGVQYXlsb2FkV2l0aG91dEZlZVBheWVyKCk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGdlbmVyYXRlU2lnbmluZ01lc3NhZ2UodGhpcy5fcmF3VHJhbnNhY3Rpb24uYmNzVG9CeXRlcygpLCBSQVdfVFJBTlNBQ1RJT05fU0FMVCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVR4bklkKCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9zZW5kZXJTaWduYXR1cmUgfHxcbiAgICAgICF0aGlzLl9zZW5kZXJTaWduYXR1cmUucHVibGljS2V5IHx8XG4gICAgICAhdGhpcy5fc2VuZGVyU2lnbmF0dXJlLnNpZ25hdHVyZSB8fFxuICAgICAgIXRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlIHx8XG4gICAgICAhdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUucHVibGljS2V5IHx8XG4gICAgICAhdGhpcy5fZmVlUGF5ZXJTaWduYXR1cmUuc2lnbmF0dXJlIHx8XG4gICAgICAhdGhpcy5fZmVlUGF5ZXJBZGRyZXNzXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IFNpbXBsZVRyYW5zYWN0aW9uKHRoaXMuX3Jhd1RyYW5zYWN0aW9uLCBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMuX2ZlZVBheWVyQWRkcmVzcykpO1xuICAgIGNvbnN0IHNlbmRlclB1YmxpY0tleSA9IG5ldyBFZDI1NTE5UHVibGljS2V5KHV0aWxzLmdldEJ1ZmZlckZyb21IZXhTdHJpbmcodGhpcy5fc2VuZGVyU2lnbmF0dXJlLnB1YmxpY0tleS5wdWIpKTtcbiAgICBjb25zdCBzZW5kZXJTaWduYXR1cmUgPSBuZXcgRWQyNTUxOVNpZ25hdHVyZSh0aGlzLl9zZW5kZXJTaWduYXR1cmUuc2lnbmF0dXJlKTtcbiAgICBjb25zdCBzZW5kZXJBdXRoZW50aWNhdG9yID0gbmV3IEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOShzZW5kZXJQdWJsaWNLZXksIHNlbmRlclNpZ25hdHVyZSk7XG4gICAgY29uc3QgZmVlUGF5ZXJQdWJsaWNLZXkgPSBuZXcgRWQyNTUxOVB1YmxpY0tleSh1dGlscy5nZXRCdWZmZXJGcm9tSGV4U3RyaW5nKHRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlLnB1YmxpY0tleS5wdWIpKTtcbiAgICBjb25zdCBmZWVQYXllclNpZ25hdHVyZSA9IG5ldyBFZDI1NTE5U2lnbmF0dXJlKHRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgY29uc3QgZmVlUGF5ZXJBdXRoZW50aWNhdG9yID0gbmV3IEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOShmZWVQYXllclB1YmxpY0tleSwgZmVlUGF5ZXJTaWduYXR1cmUpO1xuICAgIHRoaXMuX2lkID0gZ2VuZXJhdGVVc2VyVHJhbnNhY3Rpb25IYXNoKHsgdHJhbnNhY3Rpb24sIHNlbmRlckF1dGhlbnRpY2F0b3IsIGZlZVBheWVyQXV0aGVudGljYXRvciB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Transaction } from './transaction';
|
|
2
|
+
import { InputGenerateTransactionPayloadData, TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
3
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
+
export declare class TransferTransaction extends Transaction {
|
|
5
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected parseTransactionPayload(payload: TransactionPayload): void;
|
|
7
|
+
protected getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
8
|
+
private isValidPayload;
|
|
9
|
+
private coinTransferAbi;
|
|
10
|
+
private batchCoinTransferAbi;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=transferTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAGL,mCAAmC,EACnC,kBAAkB,EAKnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI7D,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAWpE,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IAoB1E,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,eAAe,CAGrB;IAEF,OAAO,CAAC,oBAAoB,CAG1B;CACH"}
|
|
@@ -0,0 +1,63 @@
|
|
|
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.TransferTransaction = void 0;
|
|
7
|
+
const transaction_1 = require("./transaction");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
10
|
+
const constants_1 = require("../constants");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
class TransferTransaction extends transaction_1.Transaction {
|
|
13
|
+
constructor(coinConfig) {
|
|
14
|
+
super(coinConfig);
|
|
15
|
+
this.coinTransferAbi = {
|
|
16
|
+
typeParameters: [{ constraints: [] }],
|
|
17
|
+
parameters: [new ts_sdk_1.TypeTagAddress(), new ts_sdk_1.TypeTagU64()],
|
|
18
|
+
};
|
|
19
|
+
this.batchCoinTransferAbi = {
|
|
20
|
+
typeParameters: [{ constraints: [] }],
|
|
21
|
+
parameters: [new ts_sdk_1.TypeTagVector(new ts_sdk_1.TypeTagAddress()), new ts_sdk_1.TypeTagVector(new ts_sdk_1.TypeTagU64())],
|
|
22
|
+
};
|
|
23
|
+
this._type = sdk_core_1.TransactionType.Send;
|
|
24
|
+
this._assetId = constants_1.APTOS_COIN;
|
|
25
|
+
}
|
|
26
|
+
parseTransactionPayload(payload) {
|
|
27
|
+
if (!this.isValidPayload(payload)) {
|
|
28
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction payload');
|
|
29
|
+
}
|
|
30
|
+
const entryFunction = payload.entryFunction;
|
|
31
|
+
this._assetId = entryFunction.type_args[0].toString();
|
|
32
|
+
const addressArg = entryFunction.args[0];
|
|
33
|
+
const amountArg = entryFunction.args[1];
|
|
34
|
+
this.recipients = utils_1.default.parseRecipients(addressArg, amountArg);
|
|
35
|
+
}
|
|
36
|
+
getTransactionPayloadData() {
|
|
37
|
+
if (this.recipients.length > 1) {
|
|
38
|
+
return {
|
|
39
|
+
function: constants_1.COIN_BATCH_TRANSFER_FUNCTION,
|
|
40
|
+
typeArguments: [this.assetId],
|
|
41
|
+
functionArguments: [
|
|
42
|
+
this.recipients.map((recipient) => ts_sdk_1.AccountAddress.fromString(recipient.address)),
|
|
43
|
+
this.recipients.map((recipient) => recipient.amount),
|
|
44
|
+
],
|
|
45
|
+
abi: this.batchCoinTransferAbi,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
function: constants_1.COIN_TRANSFER_FUNCTION,
|
|
50
|
+
typeArguments: [this.assetId],
|
|
51
|
+
functionArguments: [ts_sdk_1.AccountAddress.fromString(this.recipients[0].address), this.recipients[0].amount],
|
|
52
|
+
abi: this.coinTransferAbi,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
isValidPayload(payload) {
|
|
56
|
+
return (payload instanceof ts_sdk_1.TransactionPayloadEntryFunction &&
|
|
57
|
+
payload.entryFunction.args.length === 2 &&
|
|
58
|
+
payload.entryFunction.type_args.length === 1 &&
|
|
59
|
+
payload.entryFunction.type_args[0].toString().length > 0);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.TransferTransaction = TransferTransaction;
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb24vdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwrQ0FBNEM7QUFDNUMsbURBQWdGO0FBQ2hGLCtDQVM0QjtBQUc1Qiw0Q0FBZ0c7QUFDaEcscURBQTZCO0FBRTdCLE1BQWEsbUJBQW9CLFNBQVEseUJBQVc7SUFDbEQsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUE2Q1osb0JBQWUsR0FBcUI7WUFDMUMsY0FBYyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDckMsVUFBVSxFQUFFLENBQUMsSUFBSSx1QkFBYyxFQUFFLEVBQUUsSUFBSSxtQkFBVSxFQUFFLENBQUM7U0FDckQsQ0FBQztRQUVNLHlCQUFvQixHQUFxQjtZQUMvQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLHNCQUFhLENBQUMsSUFBSSx1QkFBYyxFQUFFLENBQUMsRUFBRSxJQUFJLHNCQUFhLENBQUMsSUFBSSxtQkFBVSxFQUFFLENBQUMsQ0FBQztTQUMzRixDQUFDO1FBcERBLElBQUksQ0FBQyxLQUFLLEdBQUcsMEJBQWUsQ0FBQyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxzQkFBVSxDQUFDO0lBQzdCLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxPQUEyQjtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBSSxPQUEyQyxDQUFDLGFBQWEsQ0FBQztRQUNqRixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLHlCQUF5QjtRQUNqQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLHdDQUE0QjtnQkFDdEMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDN0IsaUJBQWlCLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyx1QkFBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2hGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2lCQUNyRDtnQkFDRCxHQUFHLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjthQUMvQixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU87WUFDTCxRQUFRLEVBQUUsa0NBQXNCO1lBQ2hDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDN0IsaUJBQWlCLEVBQUUsQ0FBQyx1QkFBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3JHLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZTtTQUMxQixDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUEyQjtRQUNoRCxPQUFPLENBQ0wsT0FBTyxZQUFZLHdDQUErQjtZQUNsRCxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN2QyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUM1QyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztDQVdGO0FBeERELGtEQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQWNjb3VudEFkZHJlc3MsXG4gIEVudHJ5RnVuY3Rpb25BQkksXG4gIElucHV0R2VuZXJhdGVUcmFuc2FjdGlvblBheWxvYWREYXRhLFxuICBUcmFuc2FjdGlvblBheWxvYWQsXG4gIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24sXG4gIFR5cGVUYWdBZGRyZXNzLFxuICBUeXBlVGFnVTY0LFxuICBUeXBlVGFnVmVjdG9yLFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuXG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBBUFRPU19DT0lOLCBDT0lOX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OLCBDT0lOX1RSQU5TRkVSX0ZVTkNUSU9OIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlclRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICB0aGlzLl9hc3NldElkID0gQVBUT1NfQ09JTjtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVRyYW5zYWN0aW9uUGF5bG9hZChwYXlsb2FkOiBUcmFuc2FjdGlvblBheWxvYWQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFBheWxvYWQocGF5bG9hZCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbiBwYXlsb2FkJyk7XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5RnVuY3Rpb24gPSAocGF5bG9hZCBhcyBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uKS5lbnRyeUZ1bmN0aW9uO1xuICAgIHRoaXMuX2Fzc2V0SWQgPSBlbnRyeUZ1bmN0aW9uLnR5cGVfYXJnc1swXS50b1N0cmluZygpO1xuICAgIGNvbnN0IGFkZHJlc3NBcmcgPSBlbnRyeUZ1bmN0aW9uLmFyZ3NbMF07XG4gICAgY29uc3QgYW1vdW50QXJnID0gZW50cnlGdW5jdGlvbi5hcmdzWzFdO1xuICAgIHRoaXMucmVjaXBpZW50cyA9IHV0aWxzLnBhcnNlUmVjaXBpZW50cyhhZGRyZXNzQXJnLCBhbW91bnRBcmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKTogSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEge1xuICAgIGlmICh0aGlzLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnVuY3Rpb246IENPSU5fQkFUQ0hfVFJBTlNGRVJfRlVOQ1RJT04sXG4gICAgICAgIHR5cGVBcmd1bWVudHM6IFt0aGlzLmFzc2V0SWRdLFxuICAgICAgICBmdW5jdGlvbkFyZ3VtZW50czogW1xuICAgICAgICAgIHRoaXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gQWNjb3VudEFkZHJlc3MuZnJvbVN0cmluZyhyZWNpcGllbnQuYWRkcmVzcykpLFxuICAgICAgICAgIHRoaXMucmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50LmFtb3VudCksXG4gICAgICAgIF0sXG4gICAgICAgIGFiaTogdGhpcy5iYXRjaENvaW5UcmFuc2ZlckFiaSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBmdW5jdGlvbjogQ09JTl9UUkFOU0ZFUl9GVU5DVElPTixcbiAgICAgIHR5cGVBcmd1bWVudHM6IFt0aGlzLmFzc2V0SWRdLFxuICAgICAgZnVuY3Rpb25Bcmd1bWVudHM6IFtBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMucmVjaXBpZW50c1swXS5hZGRyZXNzKSwgdGhpcy5yZWNpcGllbnRzWzBdLmFtb3VudF0sXG4gICAgICBhYmk6IHRoaXMuY29pblRyYW5zZmVyQWJpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRQYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBwYXlsb2FkIGluc3RhbmNlb2YgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbiAmJlxuICAgICAgcGF5bG9hZC5lbnRyeUZ1bmN0aW9uLmFyZ3MubGVuZ3RoID09PSAyICYmXG4gICAgICBwYXlsb2FkLmVudHJ5RnVuY3Rpb24udHlwZV9hcmdzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgcGF5bG9hZC5lbnRyeUZ1bmN0aW9uLnR5cGVfYXJnc1swXS50b1N0cmluZygpLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2luVHJhbnNmZXJBYmk6IEVudHJ5RnVuY3Rpb25BQkkgPSB7XG4gICAgdHlwZVBhcmFtZXRlcnM6IFt7IGNvbnN0cmFpbnRzOiBbXSB9XSxcbiAgICBwYXJhbWV0ZXJzOiBbbmV3IFR5cGVUYWdBZGRyZXNzKCksIG5ldyBUeXBlVGFnVTY0KCldLFxuICB9O1xuXG4gIHByaXZhdGUgYmF0Y2hDb2luVHJhbnNmZXJBYmk6IEVudHJ5RnVuY3Rpb25BQkkgPSB7XG4gICAgdHlwZVBhcmFtZXRlcnM6IFt7IGNvbnN0cmFpbnRzOiBbXSB9XSxcbiAgICBwYXJhbWV0ZXJzOiBbbmV3IFR5cGVUYWdWZWN0b3IobmV3IFR5cGVUYWdBZGRyZXNzKCkpLCBuZXcgVHlwZVRhZ1ZlY3RvcihuZXcgVHlwZVRhZ1U2NCgpKV0sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
4
|
+
import { TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
5
|
+
import { DigitalAssetTransfer } from '../transaction/digitalAssetTransfer';
|
|
6
|
+
export declare class DigitalAssetTransferBuilder extends TransactionBuilder {
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
protected get transactionType(): TransactionType;
|
|
9
|
+
assetId(assetId: string): TransactionBuilder;
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
validateTransaction(transaction?: DigitalAssetTransfer): void;
|
|
12
|
+
protected isValidTransactionPayload(payload: TransactionPayload): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=digitalAssetTransferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digitalAssetTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/digitalAssetTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAmC,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,qBAAa,2BAA4B,SAAQ,kBAAkB;gBACrD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAM5C,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAQ7D,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,kBAAkB;CAoBhE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
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.DigitalAssetTransferBuilder = void 0;
|
|
7
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
10
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
11
|
+
const digitalAssetTransfer_1 = require("../transaction/digitalAssetTransfer");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
class DigitalAssetTransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
14
|
+
constructor(_coinConfig) {
|
|
15
|
+
super(_coinConfig);
|
|
16
|
+
this._transaction = new digitalAssetTransfer_1.DigitalAssetTransfer(_coinConfig);
|
|
17
|
+
}
|
|
18
|
+
get transactionType() {
|
|
19
|
+
return sdk_core_1.TransactionType.SendNFT;
|
|
20
|
+
}
|
|
21
|
+
assetId(assetId) {
|
|
22
|
+
this.validateAddress({ address: assetId });
|
|
23
|
+
this.transaction.assetId = assetId;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
validateTransaction(transaction) {
|
|
28
|
+
if (!transaction) {
|
|
29
|
+
throw new Error('transaction not defined');
|
|
30
|
+
}
|
|
31
|
+
super.validateTransaction(transaction);
|
|
32
|
+
this.validateAddress({ address: transaction.assetId });
|
|
33
|
+
}
|
|
34
|
+
isValidTransactionPayload(payload) {
|
|
35
|
+
try {
|
|
36
|
+
if (!(payload instanceof ts_sdk_1.TransactionPayloadEntryFunction) ||
|
|
37
|
+
payload.entryFunction.args.length !== 2 ||
|
|
38
|
+
payload.entryFunction.type_args.length !== 1 ||
|
|
39
|
+
constants_1.DIGITAL_ASSET_TYPE_ARGUMENT !== payload.entryFunction.type_args[0].toString()) {
|
|
40
|
+
console.error('invalid transaction payload');
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const entryFunction = payload.entryFunction;
|
|
44
|
+
const digitalAssetAddress = entryFunction.args[0].toString();
|
|
45
|
+
const recipientAddress = entryFunction.args[1].toString();
|
|
46
|
+
return utils_1.default.isValidAddress(recipientAddress) && utils_1.default.isValidAddress(digitalAssetAddress);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
console.error('invalid transaction payload', e);
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.DigitalAssetTransferBuilder = DigitalAssetTransferBuilder;
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRhbEFzc2V0VHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvZGlnaXRhbEFzc2V0VHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDZEQUEwRDtBQUUxRCxtREFBdUQ7QUFDdkQscURBQTZCO0FBQzdCLCtDQUF5RjtBQUN6Riw4RUFBMkU7QUFDM0UsNENBQTJEO0FBRTNELE1BQWEsMkJBQTRCLFNBQVEsdUNBQWtCO0lBQ2pFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwyQ0FBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQWtDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFUyx5QkFBeUIsQ0FBQyxPQUEyQjtRQUM3RCxJQUFJLENBQUM7WUFDSCxJQUNFLENBQUMsQ0FBQyxPQUFPLFlBQVksd0NBQStCLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUN2QyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFDNUMsdUNBQTJCLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQzdFLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQzVDLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3RCxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUQsT0FBTyxlQUFLLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksZUFBSyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzdGLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE3Q0Qsa0VBNkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUGF5bG9hZCwgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbiB9IGZyb20gJ0BhcHRvcy1sYWJzL3RzLXNkayc7XG5pbXBvcnQgeyBEaWdpdGFsQXNzZXRUcmFuc2ZlciB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL2RpZ2l0YWxBc3NldFRyYW5zZmVyJztcbmltcG9ydCB7IERJR0lUQUxfQVNTRVRfVFlQRV9BUkdVTUVOVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdGFsQXNzZXRUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgRGlnaXRhbEFzc2V0VHJhbnNmZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQ7XG4gIH1cblxuICBhc3NldElkKGFzc2V0SWQ6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiBhc3NldElkIH0pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uYXNzZXRJZCA9IGFzc2V0SWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IERpZ2l0YWxBc3NldFRyYW5zZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBzdXBlci52YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHRyYW5zYWN0aW9uLmFzc2V0SWQgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uUGF5bG9hZChwYXlsb2FkOiBUcmFuc2FjdGlvblBheWxvYWQpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICAhKHBheWxvYWQgaW5zdGFuY2VvZiBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uKSB8fFxuICAgICAgICBwYXlsb2FkLmVudHJ5RnVuY3Rpb24uYXJncy5sZW5ndGggIT09IDIgfHxcbiAgICAgICAgcGF5bG9hZC5lbnRyeUZ1bmN0aW9uLnR5cGVfYXJncy5sZW5ndGggIT09IDEgfHxcbiAgICAgICAgRElHSVRBTF9BU1NFVF9UWVBFX0FSR1VNRU5UICE9PSBwYXlsb2FkLmVudHJ5RnVuY3Rpb24udHlwZV9hcmdzWzBdLnRvU3RyaW5nKClcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdpbnZhbGlkIHRyYW5zYWN0aW9uIHBheWxvYWQnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgZW50cnlGdW5jdGlvbiA9IHBheWxvYWQuZW50cnlGdW5jdGlvbjtcbiAgICAgIGNvbnN0IGRpZ2l0YWxBc3NldEFkZHJlc3MgPSBlbnRyeUZ1bmN0aW9uLmFyZ3NbMF0udG9TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBlbnRyeUZ1bmN0aW9uLmFyZ3NbMV0udG9TdHJpbmcoKTtcbiAgICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhyZWNpcGllbnRBZGRyZXNzKSAmJiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhkaWdpdGFsQXNzZXRBZGRyZXNzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdpbnZhbGlkIHRyYW5zYWN0aW9uIHBheWxvYWQnLCBlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { FungibleAssetTransfer } from '../transaction/fungibleAssetTransfer';
|
|
4
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
5
|
+
import { TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
6
|
+
export declare class FungibleAssetTransferBuilder extends TransactionBuilder {
|
|
7
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
8
|
+
protected get transactionType(): TransactionType;
|
|
9
|
+
assetId(assetId: string): TransactionBuilder;
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
validateTransaction(transaction?: FungibleAssetTransfer): void;
|
|
12
|
+
protected isValidTransactionPayload(payload: TransactionPayload): boolean;
|
|
13
|
+
private isValidPayload;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=fungibleAssetTransferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fungibleAssetTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilder/fungibleAssetTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,kBAAkB,EAAmC,MAAM,oBAAoB,CAAC;AAGzF,qBAAa,4BAA6B,SAAQ,kBAAkB;gBACtD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAM5C,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAQ9D,SAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,kBAAkB;IAmB/D,OAAO,CAAC,cAAc;CASvB"}
|