@bitgo-beta/sdk-coin-apt 1.0.1-beta.9 → 1.0.1-beta.900
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/apt.d.ts +24 -4
- package/dist/src/apt.d.ts.map +1 -1
- package/dist/src/apt.js +168 -10
- package/dist/src/aptNFTCollection.d.ts +18 -0
- package/dist/src/aptNFTCollection.d.ts.map +1 -0
- package/dist/src/aptNFTCollection.js +52 -0
- 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 +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/lib/constants.d.ts +24 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +27 -0
- package/dist/src/lib/iface.d.ts +108 -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 +19 -4
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +53 -13
- package/dist/src/lib/keyPair.d.ts +7 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +24 -4
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.d.ts +21 -0
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractDelegationPoolAmountBasedTransaction.js +61 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.d.ts +13 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractDelegationPoolTransaction.js +23 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/abstractTransferTransaction.js +39 -0
- package/dist/src/lib/transaction/customTransaction.d.ts +89 -0
- package/dist/src/lib/transaction/customTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/customTransaction.js +278 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.js +48 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolUnlockTransaction.js +24 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.d.ts +10 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolWithdrawTransaction.js +43 -0
- 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 +90 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +317 -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/customTransactionBuilder.d.ts +64 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/customTransactionBuilder.js +127 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolUnlockTransactionBuilder.js +50 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolWithdrawTransactionBuilder.js +50 -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 +38 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +111 -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/validation.d.ts +32 -0
- package/dist/src/lib/utils/validation.d.ts.map +1 -0
- package/dist/src/lib/utils/validation.js +99 -0
- package/dist/src/lib/utils.d.ts +34 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +152 -7
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +9 -1
- package/dist/src/tapt.js +1 -1
- package/dist/test/integration/index.d.ts +1 -0
- package/dist/test/integration/index.d.ts.map +1 -0
- package/dist/test/integration/index.js +1 -0
- package/dist/test/resources/apt.d.ts +56 -0
- package/dist/test/resources/apt.d.ts.map +1 -0
- package/dist/test/resources/apt.js +115 -0
- package/dist/test/unit/apt.d.ts +2 -0
- package/dist/test/unit/apt.d.ts.map +1 -0
- package/dist/test/unit/apt.js +375 -0
- package/dist/test/unit/aptToken.d.ts +2 -0
- package/dist/test/unit/aptToken.d.ts.map +1 -0
- package/dist/test/unit/aptToken.js +92 -0
- package/dist/test/unit/customTransaction.test.d.ts +2 -0
- package/dist/test/unit/customTransaction.test.d.ts.map +1 -0
- package/dist/test/unit/customTransaction.test.js +264 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +71 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +743 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +172 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolUnlockTransactionBuilder.js +148 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/delegationPoolWithdrawTransactionBuilder.js +172 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.js +276 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.js +449 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +529 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +108 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -4
- package/.gitignore +0 -3
- package/.mocharc.yml +0 -8
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -16
- 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 -45
- 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,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DigitalAssetTransfer = void 0;
|
|
4
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
5
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
6
|
+
const constants_1 = require("../constants");
|
|
7
|
+
const abstractTransferTransaction_1 = require("./abstractTransferTransaction");
|
|
8
|
+
class DigitalAssetTransfer extends abstractTransferTransaction_1.AbstractTransferTransaction {
|
|
9
|
+
constructor(coinConfig) {
|
|
10
|
+
super(coinConfig);
|
|
11
|
+
this.transferDigitalAssetAbi = {
|
|
12
|
+
typeParameters: [{ constraints: [ts_sdk_1.MoveAbility.KEY] }],
|
|
13
|
+
parameters: [new ts_sdk_1.TypeTagStruct((0, ts_sdk_1.objectStructTag)(new ts_sdk_1.TypeTagGeneric(0))), new ts_sdk_1.TypeTagAddress()],
|
|
14
|
+
};
|
|
15
|
+
this._type = sdk_core_1.TransactionType.SendNFT;
|
|
16
|
+
}
|
|
17
|
+
parseTransactionPayload(payload) {
|
|
18
|
+
if (!(payload instanceof ts_sdk_1.TransactionPayloadEntryFunction) ||
|
|
19
|
+
payload.entryFunction.args.length !== 2 ||
|
|
20
|
+
payload.entryFunction.type_args.length !== 1 ||
|
|
21
|
+
constants_1.DIGITAL_ASSET_TYPE_ARGUMENT !== payload.entryFunction.type_args[0].toString()) {
|
|
22
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction payload');
|
|
23
|
+
}
|
|
24
|
+
const entryFunction = payload.entryFunction;
|
|
25
|
+
this._assetId = entryFunction.args[0].toString();
|
|
26
|
+
this.recipients = [
|
|
27
|
+
{
|
|
28
|
+
address: entryFunction.args[1].toString(),
|
|
29
|
+
amount: constants_1.DIGITAL_ASSET_TRANSFER_AMOUNT,
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
getTransactionPayloadData() {
|
|
34
|
+
const recipientAddress = ts_sdk_1.AccountAddress.fromString(this.recipients[0].address);
|
|
35
|
+
const digitalAssetAddress = ts_sdk_1.AccountAddress.fromString(this._assetId);
|
|
36
|
+
return {
|
|
37
|
+
function: constants_1.DIGITAL_ASSET_TRANSFER_FUNCTION,
|
|
38
|
+
typeArguments: [constants_1.DIGITAL_ASSET_TYPE_ARGUMENT],
|
|
39
|
+
functionArguments: [digitalAssetAddress, recipientAddress],
|
|
40
|
+
abi: this.transferDigitalAssetAbi,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.DigitalAssetTransfer = DigitalAssetTransfer;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRhbEFzc2V0VHJhbnNmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2RpZ2l0YWxBc3NldFRyYW5zZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQVc0QjtBQUM1QixtREFBc0c7QUFFdEcsNENBSXNCO0FBQ3RCLCtFQUE0RTtBQUU1RSxNQUFhLG9CQUFxQixTQUFRLHlEQUEyQjtJQUNuRSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQW1DWiw0QkFBdUIsR0FBcUI7WUFDbEQsY0FBYyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxvQkFBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEQsVUFBVSxFQUFFLENBQUMsSUFBSSxzQkFBYSxDQUFDLElBQUEsd0JBQWUsRUFBQyxJQUFJLHVCQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksdUJBQWMsRUFBRSxDQUFDO1NBQzlGLENBQUM7UUFyQ0EsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRVMsdUJBQXVCLENBQUMsT0FBMkI7UUFDM0QsSUFDRSxDQUFDLENBQUMsT0FBTyxZQUFZLHdDQUErQixDQUFDO1lBQ3JELE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzVDLHVDQUEyQixLQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUM3RSxDQUFDO1lBQ0QsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEI7Z0JBQ0UsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUN6QyxNQUFNLEVBQUUseUNBQTZCO2FBQ3RDO1NBQ3dCLENBQUM7SUFDOUIsQ0FBQztJQUVTLHlCQUF5QjtRQUNqQyxNQUFNLGdCQUFnQixHQUFHLHVCQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0UsTUFBTSxtQkFBbUIsR0FBRyx1QkFBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckUsT0FBTztZQUNMLFFBQVEsRUFBRSwyQ0FBK0I7WUFDekMsYUFBYSxFQUFFLENBQUMsdUNBQTJCLENBQUM7WUFDNUMsaUJBQWlCLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQztZQUMxRCxHQUFHLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtTQUNsQyxDQUFDO0lBQ0osQ0FBQztDQU1GO0FBekNELG9EQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjY291bnRBZGRyZXNzLFxuICBFbnRyeUZ1bmN0aW9uQUJJLFxuICBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSxcbiAgTW92ZUFiaWxpdHksXG4gIG9iamVjdFN0cnVjdFRhZyxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxuICBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uLFxuICBUeXBlVGFnQWRkcmVzcyxcbiAgVHlwZVRhZ0dlbmVyaWMsXG4gIFR5cGVUYWdTdHJ1Y3QsXG59IGZyb20gJ0BhcHRvcy1sYWJzL3RzLXNkayc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25SZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIERJR0lUQUxfQVNTRVRfVFJBTlNGRVJfQU1PVU5ULFxuICBESUdJVEFMX0FTU0VUX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICBESUdJVEFMX0FTU0VUX1RZUEVfQVJHVU1FTlQsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBYnN0cmFjdFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL2Fic3RyYWN0VHJhbnNmZXJUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdGFsQXNzZXRUcmFuc2ZlciBleHRlbmRzIEFic3RyYWN0VHJhbnNmZXJUcmFuc2FjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb25QYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgICEocGF5bG9hZCBpbnN0YW5jZW9mIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24pIHx8XG4gICAgICBwYXlsb2FkLmVudHJ5RnVuY3Rpb24uYXJncy5sZW5ndGggIT09IDIgfHxcbiAgICAgIHBheWxvYWQuZW50cnlGdW5jdGlvbi50eXBlX2FyZ3MubGVuZ3RoICE9PSAxIHx8XG4gICAgICBESUdJVEFMX0FTU0VUX1RZUEVfQVJHVU1FTlQgIT09IHBheWxvYWQuZW50cnlGdW5jdGlvbi50eXBlX2FyZ3NbMF0udG9TdHJpbmcoKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHBheWxvYWQnKTtcbiAgICB9XG4gICAgY29uc3QgZW50cnlGdW5jdGlvbiA9IHBheWxvYWQuZW50cnlGdW5jdGlvbjtcbiAgICB0aGlzLl9hc3NldElkID0gZW50cnlGdW5jdGlvbi5hcmdzWzBdLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5yZWNpcGllbnRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBlbnRyeUZ1bmN0aW9uLmFyZ3NbMV0udG9TdHJpbmcoKSxcbiAgICAgICAgYW1vdW50OiBESUdJVEFMX0FTU0VUX1RSQU5TRkVSX0FNT1VOVCxcbiAgICAgIH0sXG4gICAgXSBhcyBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKTogSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEge1xuICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMucmVjaXBpZW50c1swXS5hZGRyZXNzKTtcbiAgICBjb25zdCBkaWdpdGFsQXNzZXRBZGRyZXNzID0gQWNjb3VudEFkZHJlc3MuZnJvbVN0cmluZyh0aGlzLl9hc3NldElkKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmdW5jdGlvbjogRElHSVRBTF9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTixcbiAgICAgIHR5cGVBcmd1bWVudHM6IFtESUdJVEFMX0FTU0VUX1RZUEVfQVJHVU1FTlRdLFxuICAgICAgZnVuY3Rpb25Bcmd1bWVudHM6IFtkaWdpdGFsQXNzZXRBZGRyZXNzLCByZWNpcGllbnRBZGRyZXNzXSxcbiAgICAgIGFiaTogdGhpcy50cmFuc2ZlckRpZ2l0YWxBc3NldEFiaSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2ZlckRpZ2l0YWxBc3NldEFiaTogRW50cnlGdW5jdGlvbkFCSSA9IHtcbiAgICB0eXBlUGFyYW1ldGVyczogW3sgY29uc3RyYWludHM6IFtNb3ZlQWJpbGl0eS5LRVldIH1dLFxuICAgIHBhcmFtZXRlcnM6IFtuZXcgVHlwZVRhZ1N0cnVjdChvYmplY3RTdHJ1Y3RUYWcobmV3IFR5cGVUYWdHZW5lcmljKDApKSksIG5ldyBUeXBlVGFnQWRkcmVzcygpXSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { InputGenerateTransactionPayloadData, TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { AbstractTransferTransaction } from './abstractTransferTransaction';
|
|
4
|
+
export declare class FungibleAssetTransfer extends AbstractTransferTransaction {
|
|
5
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected parseTransactionPayload(payload: TransactionPayload): void;
|
|
7
|
+
protected getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
8
|
+
private isValidPayload;
|
|
9
|
+
private faTransferAbi;
|
|
10
|
+
private batchFaTransferAbi;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=fungibleAssetTransfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fungibleAssetTransfer.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/fungibleAssetTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mCAAmC,EAEnC,kBAAkB,EAKnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAS7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,qBAAsB,SAAQ,2BAA2B;gBACxD,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAWpE,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IA2B1E,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,kBAAkB,CAOxB;CACH"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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.FungibleAssetTransfer = void 0;
|
|
7
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const constants_1 = require("../constants");
|
|
10
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
11
|
+
const abstractTransferTransaction_1 = require("./abstractTransferTransaction");
|
|
12
|
+
class FungibleAssetTransfer extends abstractTransferTransaction_1.AbstractTransferTransaction {
|
|
13
|
+
constructor(coinConfig) {
|
|
14
|
+
super(coinConfig);
|
|
15
|
+
this.faTransferAbi = {
|
|
16
|
+
typeParameters: [{ constraints: [] }],
|
|
17
|
+
parameters: [(0, ts_sdk_1.parseTypeTag)(constants_1.FUNBIGLE_ASSET_TYPE_TAG), new ts_sdk_1.TypeTagAddress(), new ts_sdk_1.TypeTagU64()],
|
|
18
|
+
};
|
|
19
|
+
this.batchFaTransferAbi = {
|
|
20
|
+
typeParameters: [],
|
|
21
|
+
parameters: [
|
|
22
|
+
(0, ts_sdk_1.parseTypeTag)(constants_1.BATCH_FUNGIBLE_ASSET_TYPE_TAG),
|
|
23
|
+
new ts_sdk_1.TypeTagVector(new ts_sdk_1.TypeTagAddress()),
|
|
24
|
+
new ts_sdk_1.TypeTagVector(new ts_sdk_1.TypeTagU64()),
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
this._type = sdk_core_1.TransactionType.SendToken;
|
|
28
|
+
}
|
|
29
|
+
parseTransactionPayload(payload) {
|
|
30
|
+
if (!this.isValidPayload(payload)) {
|
|
31
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction payload');
|
|
32
|
+
}
|
|
33
|
+
const entryFunction = payload.entryFunction;
|
|
34
|
+
this._assetId = entryFunction.args[0].toString();
|
|
35
|
+
const addressArg = entryFunction.args[1];
|
|
36
|
+
const amountArg = entryFunction.args[2];
|
|
37
|
+
this.recipients = utils_1.default.parseRecipients(addressArg, amountArg);
|
|
38
|
+
}
|
|
39
|
+
getTransactionPayloadData() {
|
|
40
|
+
const fungibleTokenAddress = this._assetId;
|
|
41
|
+
if (this.recipients.length > 1) {
|
|
42
|
+
return {
|
|
43
|
+
function: constants_1.FUNGIBLE_ASSET_BATCH_TRANSFER_FUNCTION,
|
|
44
|
+
typeArguments: [],
|
|
45
|
+
functionArguments: [
|
|
46
|
+
fungibleTokenAddress,
|
|
47
|
+
this.recipients.map((recipient) => ts_sdk_1.AccountAddress.fromString(recipient.address)),
|
|
48
|
+
this.recipients.map((recipient) => recipient.amount),
|
|
49
|
+
],
|
|
50
|
+
abi: this.batchFaTransferAbi,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
function: constants_1.FUNGIBLE_ASSET_TRANSFER_FUNCTION,
|
|
55
|
+
typeArguments: [constants_1.FUNGIBLE_ASSET_TYPE_ARGUMENT],
|
|
56
|
+
functionArguments: [
|
|
57
|
+
fungibleTokenAddress,
|
|
58
|
+
ts_sdk_1.AccountAddress.fromString(this.recipients[0].address),
|
|
59
|
+
this.recipients[0].amount,
|
|
60
|
+
],
|
|
61
|
+
abi: this.faTransferAbi,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
isValidPayload(payload) {
|
|
65
|
+
return (payload instanceof ts_sdk_1.TransactionPayloadEntryFunction &&
|
|
66
|
+
payload.entryFunction.args.length === 3 &&
|
|
67
|
+
(payload.entryFunction.type_args.length === 0 ||
|
|
68
|
+
(payload.entryFunction.type_args.length === 1 &&
|
|
69
|
+
constants_1.FUNGIBLE_ASSET_TYPE_ARGUMENT === payload.entryFunction.type_args[0].toString())));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.FungibleAssetTransfer = FungibleAssetTransfer;
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZ2libGVBc3NldFRyYW5zZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi9mdW5naWJsZUFzc2V0VHJhbnNmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0NBVTRCO0FBQzVCLG1EQUFnRjtBQUVoRiw0Q0FNc0I7QUFDdEIscURBQTZCO0FBQzdCLCtFQUE0RTtBQUU1RSxNQUFhLHFCQUFzQixTQUFRLHlEQUEyQjtJQUNwRSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQW1EWixrQkFBYSxHQUFxQjtZQUN4QyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNyQyxVQUFVLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsbUNBQXVCLENBQUMsRUFBRSxJQUFJLHVCQUFjLEVBQUUsRUFBRSxJQUFJLG1CQUFVLEVBQUUsQ0FBQztTQUM1RixDQUFDO1FBRU0sdUJBQWtCLEdBQXFCO1lBQzdDLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixJQUFBLHFCQUFZLEVBQUMseUNBQTZCLENBQUM7Z0JBQzNDLElBQUksc0JBQWEsQ0FBQyxJQUFJLHVCQUFjLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxzQkFBYSxDQUFDLElBQUksbUJBQVUsRUFBRSxDQUFDO2FBQ3BDO1NBQ0YsQ0FBQztRQTlEQSxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxPQUEyQjtRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBSSxPQUEyQyxDQUFDLGFBQWEsQ0FBQztRQUNqRixJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLHlCQUF5QjtRQUNqQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPO2dCQUNMLFFBQVEsRUFBRSxrREFBc0M7Z0JBQ2hELGFBQWEsRUFBRSxFQUFFO2dCQUNqQixpQkFBaUIsRUFBRTtvQkFDakIsb0JBQW9CO29CQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsdUJBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoRixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztpQkFDckQ7Z0JBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7YUFDN0IsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLDRDQUFnQztZQUMxQyxhQUFhLEVBQUUsQ0FBQyx3Q0FBNEIsQ0FBQztZQUM3QyxpQkFBaUIsRUFBRTtnQkFDakIsb0JBQW9CO2dCQUNwQix1QkFBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2FBQzFCO1lBQ0QsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3hCLENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQTJCO1FBQ2hELE9BQU8sQ0FDTCxPQUFPLFlBQVksd0NBQStCO1lBQ2xELE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3ZDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQzNDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7b0JBQzNDLHdDQUE0QixLQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FDckYsQ0FBQztJQUNKLENBQUM7Q0FjRjtBQWxFRCxzREFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY2NvdW50QWRkcmVzcyxcbiAgRW50cnlGdW5jdGlvbkFCSSxcbiAgSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEsXG4gIHBhcnNlVHlwZVRhZyxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxuICBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uLFxuICBUeXBlVGFnQWRkcmVzcyxcbiAgVHlwZVRhZ1U2NCxcbiAgVHlwZVRhZ1ZlY3Rvcixcbn0gZnJvbSAnQGFwdG9zLWxhYnMvdHMtc2RrJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCQVRDSF9GVU5HSUJMRV9BU1NFVF9UWVBFX1RBRyxcbiAgRlVOQklHTEVfQVNTRVRfVFlQRV9UQUcsXG4gIEZVTkdJQkxFX0FTU0VUX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICBGVU5HSUJMRV9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTixcbiAgRlVOR0lCTEVfQVNTRVRfVFlQRV9BUkdVTUVOVCxcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBBYnN0cmFjdFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL2Fic3RyYWN0VHJhbnNmZXJUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBGdW5naWJsZUFzc2V0VHJhbnNmZXIgZXh0ZW5kcyBBYnN0cmFjdFRyYW5zZmVyVHJhbnNhY3Rpb24ge1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb25QYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkUGF5bG9hZChwYXlsb2FkKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHBheWxvYWQnKTtcbiAgICB9XG4gICAgY29uc3QgZW50cnlGdW5jdGlvbiA9IChwYXlsb2FkIGFzIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24pLmVudHJ5RnVuY3Rpb247XG4gICAgdGhpcy5fYXNzZXRJZCA9IGVudHJ5RnVuY3Rpb24uYXJnc1swXS50b1N0cmluZygpO1xuICAgIGNvbnN0IGFkZHJlc3NBcmcgPSBlbnRyeUZ1bmN0aW9uLmFyZ3NbMV07XG4gICAgY29uc3QgYW1vdW50QXJnID0gZW50cnlGdW5jdGlvbi5hcmdzWzJdO1xuICAgIHRoaXMucmVjaXBpZW50cyA9IHV0aWxzLnBhcnNlUmVjaXBpZW50cyhhZGRyZXNzQXJnLCBhbW91bnRBcmcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKTogSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEge1xuICAgIGNvbnN0IGZ1bmdpYmxlVG9rZW5BZGRyZXNzID0gdGhpcy5fYXNzZXRJZDtcblxuICAgIGlmICh0aGlzLnJlY2lwaWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnVuY3Rpb246IEZVTkdJQkxFX0FTU0VUX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICAgICAgICB0eXBlQXJndW1lbnRzOiBbXSxcbiAgICAgICAgZnVuY3Rpb25Bcmd1bWVudHM6IFtcbiAgICAgICAgICBmdW5naWJsZVRva2VuQWRkcmVzcyxcbiAgICAgICAgICB0aGlzLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcocmVjaXBpZW50LmFkZHJlc3MpKSxcbiAgICAgICAgICB0aGlzLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHJlY2lwaWVudC5hbW91bnQpLFxuICAgICAgICBdLFxuICAgICAgICBhYmk6IHRoaXMuYmF0Y2hGYVRyYW5zZmVyQWJpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bmN0aW9uOiBGVU5HSUJMRV9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTixcbiAgICAgIHR5cGVBcmd1bWVudHM6IFtGVU5HSUJMRV9BU1NFVF9UWVBFX0FSR1VNRU5UXSxcbiAgICAgIGZ1bmN0aW9uQXJndW1lbnRzOiBbXG4gICAgICAgIGZ1bmdpYmxlVG9rZW5BZGRyZXNzLFxuICAgICAgICBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMucmVjaXBpZW50c1swXS5hZGRyZXNzKSxcbiAgICAgICAgdGhpcy5yZWNpcGllbnRzWzBdLmFtb3VudCxcbiAgICAgIF0sXG4gICAgICBhYmk6IHRoaXMuZmFUcmFuc2ZlckFiaSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkUGF5bG9hZChwYXlsb2FkOiBUcmFuc2FjdGlvblBheWxvYWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcGF5bG9hZCBpbnN0YW5jZW9mIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24gJiZcbiAgICAgIHBheWxvYWQuZW50cnlGdW5jdGlvbi5hcmdzLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgKHBheWxvYWQuZW50cnlGdW5jdGlvbi50eXBlX2FyZ3MubGVuZ3RoID09PSAwIHx8XG4gICAgICAgIChwYXlsb2FkLmVudHJ5RnVuY3Rpb24udHlwZV9hcmdzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgIEZVTkdJQkxFX0FTU0VUX1RZUEVfQVJHVU1FTlQgPT09IHBheWxvYWQuZW50cnlGdW5jdGlvbi50eXBlX2FyZ3NbMF0udG9TdHJpbmcoKSkpXG4gICAgKTtcbiAgfVxuICBwcml2YXRlIGZhVHJhbnNmZXJBYmk6IEVudHJ5RnVuY3Rpb25BQkkgPSB7XG4gICAgdHlwZVBhcmFtZXRlcnM6IFt7IGNvbnN0cmFpbnRzOiBbXSB9XSxcbiAgICBwYXJhbWV0ZXJzOiBbcGFyc2VUeXBlVGFnKEZVTkJJR0xFX0FTU0VUX1RZUEVfVEFHKSwgbmV3IFR5cGVUYWdBZGRyZXNzKCksIG5ldyBUeXBlVGFnVTY0KCldLFxuICB9O1xuXG4gIHByaXZhdGUgYmF0Y2hGYVRyYW5zZmVyQWJpOiBFbnRyeUZ1bmN0aW9uQUJJID0ge1xuICAgIHR5cGVQYXJhbWV0ZXJzOiBbXSxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICBwYXJzZVR5cGVUYWcoQkFUQ0hfRlVOR0lCTEVfQVNTRVRfVFlQRV9UQUcpLFxuICAgICAgbmV3IFR5cGVUYWdWZWN0b3IobmV3IFR5cGVUYWdBZGRyZXNzKCkpLFxuICAgICAgbmV3IFR5cGVUYWdWZWN0b3IobmV3IFR5cGVUYWdVNjQoKSksXG4gICAgXSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { BaseKey, BaseTransaction, Entry, PublicKey, Signature, TransactionRecipient, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { InputGenerateTransactionPayloadData, RawTransaction, SignedTransaction, TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
4
|
+
import { AptTransactionExplanation, TxData } from '../iface';
|
|
5
|
+
export type InputsAndOutputs = {
|
|
6
|
+
/** Used for this.inputs */
|
|
7
|
+
inputs: Entry[];
|
|
8
|
+
/** Used for this.outputs */
|
|
9
|
+
outputs: Entry[];
|
|
10
|
+
/** Used for this.explainTransaction() */
|
|
11
|
+
externalOutputs: TransactionRecipient[];
|
|
12
|
+
};
|
|
13
|
+
export declare abstract class Transaction extends BaseTransaction {
|
|
14
|
+
protected _rawTransaction: RawTransaction;
|
|
15
|
+
protected _senderSignature: Signature;
|
|
16
|
+
protected _feePayerSignature: Signature;
|
|
17
|
+
protected _sender: string;
|
|
18
|
+
protected _recipients: TransactionRecipient[];
|
|
19
|
+
protected _sequenceNumber: number;
|
|
20
|
+
protected _maxGasAmount: number;
|
|
21
|
+
protected _gasUnitPrice: number;
|
|
22
|
+
protected _gasUsed: number;
|
|
23
|
+
protected _expirationTime: number;
|
|
24
|
+
protected _feePayerAddress: string;
|
|
25
|
+
protected _assetId: string;
|
|
26
|
+
protected _isSimulateTxn: boolean;
|
|
27
|
+
static EMPTY_PUBLIC_KEY: Buffer<ArrayBuffer>;
|
|
28
|
+
static EMPTY_SIGNATURE: Buffer<ArrayBuffer>;
|
|
29
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
30
|
+
/** @inheritDoc **/
|
|
31
|
+
get id(): string;
|
|
32
|
+
get sender(): string;
|
|
33
|
+
set sender(value: string);
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated - use `recipients()`.
|
|
36
|
+
*/
|
|
37
|
+
get recipient(): TransactionRecipient;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated - use `recipients()`.
|
|
40
|
+
*/
|
|
41
|
+
set recipient(value: TransactionRecipient);
|
|
42
|
+
get recipients(): TransactionRecipient[];
|
|
43
|
+
set recipients(value: TransactionRecipient[]);
|
|
44
|
+
get sequenceNumber(): number;
|
|
45
|
+
set sequenceNumber(value: number);
|
|
46
|
+
get maxGasAmount(): number;
|
|
47
|
+
set maxGasAmount(value: number);
|
|
48
|
+
get gasUnitPrice(): number;
|
|
49
|
+
set gasUnitPrice(value: number);
|
|
50
|
+
get gasUsed(): number;
|
|
51
|
+
set gasUsed(value: number);
|
|
52
|
+
get expirationTime(): number;
|
|
53
|
+
set expirationTime(value: number);
|
|
54
|
+
get feePayerAddress(): string;
|
|
55
|
+
set transactionType(transactionType: TransactionType);
|
|
56
|
+
get assetId(): string;
|
|
57
|
+
set assetId(value: string);
|
|
58
|
+
get isSimulateTxn(): boolean;
|
|
59
|
+
set isSimulateTxn(value: boolean);
|
|
60
|
+
protected abstract getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
61
|
+
protected abstract parseTransactionPayload(payload: TransactionPayload): void;
|
|
62
|
+
fromDeserializedSignedTransaction(signedTxn: SignedTransaction): void;
|
|
63
|
+
canSign(_key: BaseKey): boolean;
|
|
64
|
+
toBroadcastFormat(): string;
|
|
65
|
+
serialize(): string;
|
|
66
|
+
addSenderSignature(publicKey: PublicKey, signature: Buffer): void;
|
|
67
|
+
getFeePayerPubKey(): string;
|
|
68
|
+
addFeePayerSignature(publicKey: PublicKey, signature: Buffer): void;
|
|
69
|
+
addFeePayerAddress(address: string): void;
|
|
70
|
+
build(): Promise<void>;
|
|
71
|
+
abstract inputsAndOutputs(): InputsAndOutputs;
|
|
72
|
+
loadInputsAndOutputs(): void;
|
|
73
|
+
fromRawTransaction(rawTransaction: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Deserializes a signed transaction hex string
|
|
76
|
+
* @param {string} signedRawTransaction
|
|
77
|
+
* @returns {SignedTransaction} the aptos signed transaction
|
|
78
|
+
*/
|
|
79
|
+
static deserializeSignedTransaction(signedRawTransaction: string): SignedTransaction;
|
|
80
|
+
toJson(): TxData;
|
|
81
|
+
getFee(): string;
|
|
82
|
+
get signablePayload(): Buffer;
|
|
83
|
+
/** @inheritDoc */
|
|
84
|
+
explainTransaction(): AptTransactionExplanation;
|
|
85
|
+
protected buildRawTransaction(): Promise<void>;
|
|
86
|
+
private getSignablePayloadWithFeePayer;
|
|
87
|
+
private getSignablePayloadWithoutFeePayer;
|
|
88
|
+
private generateTxnId;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,317 @@
|
|
|
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 { inputs, outputs } = this.inputsAndOutputs();
|
|
196
|
+
this._inputs = inputs;
|
|
197
|
+
this._outputs = outputs;
|
|
198
|
+
}
|
|
199
|
+
fromRawTransaction(rawTransaction) {
|
|
200
|
+
let signedTxn;
|
|
201
|
+
try {
|
|
202
|
+
signedTxn = utils_1.default.deserializeSignedTransaction(rawTransaction);
|
|
203
|
+
}
|
|
204
|
+
catch (e) {
|
|
205
|
+
throw new Error('invalid raw transaction');
|
|
206
|
+
}
|
|
207
|
+
this.fromDeserializedSignedTransaction(signedTxn);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Deserializes a signed transaction hex string
|
|
211
|
+
* @param {string} signedRawTransaction
|
|
212
|
+
* @returns {SignedTransaction} the aptos signed transaction
|
|
213
|
+
*/
|
|
214
|
+
static deserializeSignedTransaction(signedRawTransaction) {
|
|
215
|
+
try {
|
|
216
|
+
return utils_1.default.deserializeSignedTransaction(signedRawTransaction);
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
throw new Error('invalid raw transaction');
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
toJson() {
|
|
223
|
+
return {
|
|
224
|
+
id: this.id,
|
|
225
|
+
sender: this.sender,
|
|
226
|
+
recipients: this.recipients,
|
|
227
|
+
sequenceNumber: this.sequenceNumber,
|
|
228
|
+
maxGasAmount: this.maxGasAmount,
|
|
229
|
+
gasUnitPrice: this.gasUnitPrice,
|
|
230
|
+
gasUsed: this.gasUsed,
|
|
231
|
+
expirationTime: this.expirationTime,
|
|
232
|
+
feePayer: this.feePayerAddress,
|
|
233
|
+
assetId: this.assetId,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
getFee() {
|
|
237
|
+
return new bignumber_js_1.default(this.gasUsed).multipliedBy(this.gasUnitPrice).toString();
|
|
238
|
+
}
|
|
239
|
+
get signablePayload() {
|
|
240
|
+
return this.feePayerAddress ? this.getSignablePayloadWithFeePayer() : this.getSignablePayloadWithoutFeePayer();
|
|
241
|
+
}
|
|
242
|
+
/** @inheritDoc */
|
|
243
|
+
explainTransaction() {
|
|
244
|
+
const displayOrder = [
|
|
245
|
+
'id',
|
|
246
|
+
'outputs',
|
|
247
|
+
'outputAmount',
|
|
248
|
+
'changeOutputs',
|
|
249
|
+
'changeAmount',
|
|
250
|
+
'fee',
|
|
251
|
+
'withdrawAmount',
|
|
252
|
+
'sender',
|
|
253
|
+
'type',
|
|
254
|
+
];
|
|
255
|
+
const outputs = this.inputsAndOutputs().externalOutputs;
|
|
256
|
+
const outputAmount = outputs
|
|
257
|
+
.reduce((accumulator, current) => accumulator.plus(current.amount), new bignumber_js_1.default('0'))
|
|
258
|
+
.toString();
|
|
259
|
+
return {
|
|
260
|
+
displayOrder,
|
|
261
|
+
id: this.id,
|
|
262
|
+
outputs,
|
|
263
|
+
outputAmount,
|
|
264
|
+
changeOutputs: [],
|
|
265
|
+
changeAmount: '0',
|
|
266
|
+
fee: { fee: this.getFee() },
|
|
267
|
+
sender: this.sender,
|
|
268
|
+
type: this.type,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
async buildRawTransaction() {
|
|
272
|
+
const network = this._coinConfig.network.type === statics_1.NetworkType.MAINNET ? ts_sdk_1.Network.MAINNET : ts_sdk_1.Network.TESTNET;
|
|
273
|
+
const aptos = new ts_sdk_1.Aptos(new ts_sdk_1.AptosConfig({ network }));
|
|
274
|
+
const senderAddress = ts_sdk_1.AccountAddress.fromString(this._sender);
|
|
275
|
+
const simpleTxn = await aptos.transaction.build.simple({
|
|
276
|
+
sender: senderAddress,
|
|
277
|
+
data: this.getTransactionPayloadData(),
|
|
278
|
+
options: {
|
|
279
|
+
maxGasAmount: this.maxGasAmount,
|
|
280
|
+
gasUnitPrice: this.gasUnitPrice,
|
|
281
|
+
expireTimestamp: this.expirationTime,
|
|
282
|
+
accountSequenceNumber: this.sequenceNumber,
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
this._rawTransaction = simpleTxn.rawTransaction;
|
|
286
|
+
}
|
|
287
|
+
getSignablePayloadWithFeePayer() {
|
|
288
|
+
const feePayerRawTxn = new ts_sdk_1.FeePayerRawTransaction(this._rawTransaction, [], ts_sdk_1.AccountAddress.fromString(this._feePayerAddress));
|
|
289
|
+
return Buffer.from((0, ts_sdk_1.generateSigningMessage)(feePayerRawTxn.bcsToBytes(), ts_sdk_1.RAW_TRANSACTION_WITH_DATA_SALT));
|
|
290
|
+
}
|
|
291
|
+
getSignablePayloadWithoutFeePayer() {
|
|
292
|
+
return Buffer.from((0, ts_sdk_1.generateSigningMessage)(this._rawTransaction.bcsToBytes(), ts_sdk_1.RAW_TRANSACTION_SALT));
|
|
293
|
+
}
|
|
294
|
+
generateTxnId() {
|
|
295
|
+
if (!this._senderSignature ||
|
|
296
|
+
!this._senderSignature.publicKey ||
|
|
297
|
+
!this._senderSignature.signature ||
|
|
298
|
+
!this._feePayerSignature ||
|
|
299
|
+
!this._feePayerSignature.publicKey ||
|
|
300
|
+
!this._feePayerSignature.signature ||
|
|
301
|
+
!this._feePayerAddress) {
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const transaction = new ts_sdk_1.SimpleTransaction(this._rawTransaction, ts_sdk_1.AccountAddress.fromString(this._feePayerAddress));
|
|
305
|
+
const senderPublicKey = new ts_sdk_1.Ed25519PublicKey(utils_1.default.getBufferFromHexString(this._senderSignature.publicKey.pub));
|
|
306
|
+
const senderSignature = new ts_sdk_1.Ed25519Signature(this._senderSignature.signature);
|
|
307
|
+
const senderAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(senderPublicKey, senderSignature);
|
|
308
|
+
const feePayerPublicKey = new ts_sdk_1.Ed25519PublicKey(utils_1.default.getBufferFromHexString(this._feePayerSignature.publicKey.pub));
|
|
309
|
+
const feePayerSignature = new ts_sdk_1.Ed25519Signature(this._feePayerSignature.signature);
|
|
310
|
+
const feePayerAuthenticator = new ts_sdk_1.AccountAuthenticatorEd25519(feePayerPublicKey, feePayerSignature);
|
|
311
|
+
this._id = (0, ts_sdk_1.generateUserTransactionHash)({ transaction, senderAuthenticator, feePayerAuthenticator });
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
exports.Transaction = Transaction;
|
|
315
|
+
Transaction.EMPTY_PUBLIC_KEY = Buffer.alloc(32);
|
|
316
|
+
Transaction.EMPTY_SIGNATURE = Buffer.alloc(64);
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQVM4QjtBQUM5QixpREFBMEU7QUFDMUUsK0NBdUI0QjtBQUM1Qiw0Q0FBd0U7QUFDeEUscURBQTZCO0FBQzdCLGdFQUFxQztBQUVyQyxvREFBNEI7QUFXNUIsTUFBc0IsV0FBWSxTQUFRLDBCQUFlO0lBa0J2RCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLCtCQUFzQixDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsa0NBQXNCLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLHVCQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsWUFBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLEVBQUU7YUFDL0Q7WUFDRCxTQUFTLEVBQUUsV0FBVyxDQUFDLGVBQWU7U0FDdkMsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyx1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Q0FBQyxFQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFNpZ25hdHVyZSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgTmV0d29ya1R5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEFjY291bnRBZGRyZXNzLFxuICBBY2NvdW50QXV0aGVudGljYXRvcixcbiAgQWNjb3VudEF1dGhlbnRpY2F0b3JFZDI1NTE5LFxuICBBY2NvdW50QXV0aGVudGljYXRvck5vQWNjb3VudEF1dGhlbnRpY2F0b3IsXG4gIEFwdG9zLFxuICBBcHRvc0NvbmZpZyxcbiAgREVGQVVMVF9NQVhfR0FTX0FNT1VOVCxcbiAgRWQyNTUxOVB1YmxpY0tleSxcbiAgRWQyNTUxOVNpZ25hdHVyZSxcbiAgRmVlUGF5ZXJSYXdUcmFuc2FjdGlvbixcbiAgZ2VuZXJhdGVTaWduaW5nTWVzc2FnZSxcbiAgZ2VuZXJhdGVVc2VyVHJhbnNhY3Rpb25IYXNoLFxuICBIZXgsXG4gIElucHV0R2VuZXJhdGVUcmFuc2FjdGlvblBheWxvYWREYXRhLFxuICBOZXR3b3JrLFxuICBSQVdfVFJBTlNBQ1RJT05fU0FMVCxcbiAgUkFXX1RSQU5TQUNUSU9OX1dJVEhfREFUQV9TQUxULFxuICBSYXdUcmFuc2FjdGlvbixcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpbXBsZVRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvbkF1dGhlbnRpY2F0b3JGZWVQYXllcixcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuaW1wb3J0IHsgREVGQVVMVF9HQVNfVU5JVF9QUklDRSwgVU5BVkFJTEFCTEVfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQXB0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgdHlwZSBJbnB1dHNBbmRPdXRwdXRzID0ge1xuICAvKiogVXNlZCBmb3IgdGhpcy5pbnB1dHMgKi9cbiAgaW5wdXRzOiBFbnRyeVtdO1xuICAvKiogVXNlZCBmb3IgdGhpcy5vdXRwdXRzICovXG4gIG91dHB1dHM6IEVudHJ5W107XG4gIC8qKiBVc2VkIGZvciB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbigpICovXG4gIGV4dGVybmFsT3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbn07XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfcmF3VHJhbnNhY3Rpb246IFJhd1RyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NlbmRlclNpZ25hdHVyZTogU2lnbmF0dXJlO1xuICBwcm90ZWN0ZWQgX2ZlZVBheWVyU2lnbmF0dXJlOiBTaWduYXR1cmU7XG4gIHByb3RlY3RlZCBfc2VuZGVyOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgcHJvdGVjdGVkIF9zZXF1ZW5jZU51bWJlcjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX21heEdhc0Ftb3VudDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2dhc1VuaXRQcmljZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2dhc1VzZWQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9leHBpcmF0aW9uVGltZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX2ZlZVBheWVyQWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Fzc2V0SWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9pc1NpbXVsYXRlVHhuOiBib29sZWFuO1xuXG4gIHN0YXRpYyBFTVBUWV9QVUJMSUNfS0VZID0gQnVmZmVyLmFsbG9jKDMyKTtcbiAgc3RhdGljIEVNUFRZX1NJR05BVFVSRSA9IEJ1ZmZlci5hbGxvYyg2NCk7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl9tYXhHYXNBbW91bnQgPSBERUZBVUxUX01BWF9HQVNfQU1PVU5UO1xuICAgIHRoaXMuX2dhc1VuaXRQcmljZSA9IERFRkFVTFRfR0FTX1VOSVRfUFJJQ0U7XG4gICAgdGhpcy5fZ2FzVXNlZCA9IDA7XG4gICAgdGhpcy5fZXhwaXJhdGlvblRpbWUgPSB1dGlscy5nZXRUeG5FeHBpcmF0aW9uVGltZXN0YW1wKCk7XG4gICAgdGhpcy5fc2VxdWVuY2VOdW1iZXIgPSAwO1xuICAgIHRoaXMuX3NlbmRlciA9IEFjY291bnRBZGRyZXNzLlpFUk8udG9TdHJpbmcoKTtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gW107XG4gICAgdGhpcy5fYXNzZXRJZCA9IEFjY291bnRBZGRyZXNzLlpFUk8udG9TdHJpbmcoKTtcbiAgICB0aGlzLl9pc1NpbXVsYXRlVHhuID0gZmFsc2U7XG4gICAgdGhpcy5fc2VuZGVyU2lnbmF0dXJlID0ge1xuICAgICAgcHVibGljS2V5OiB7XG4gICAgICAgIHB1YjogSGV4LmZyb21IZXhJbnB1dChUcmFuc2FjdGlvbi5FTVBUWV9QVUJMSUNfS0VZKS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIHNpZ25hdHVyZTogVHJhbnNhY3Rpb24uRU1QVFlfU0lHTkFUVVJFLFxuICAgIH07XG4gICAgdGhpcy5fZmVlUGF5ZXJBZGRyZXNzID0gQWNjb3VudEFkZHJlc3MuWkVSTy50b1N0cmluZygpO1xuICAgIHRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlID0ge1xuICAgICAgcHVibGljS2V5OiB7XG4gICAgICAgIHB1YjogSGV4LmZyb21IZXhJbnB1dChUcmFuc2FjdGlvbi5FTVBUWV9QVUJMSUNfS0VZKS50b1N0cmluZygpLFxuICAgICAgfSxcbiAgICAgIHNpZ25hdHVyZTogVHJhbnNhY3Rpb24uRU1QVFlfU0lHTkFUVVJFLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICB0aGlzLmdlbmVyYXRlVHhuSWQoKTtcbiAgICByZXR1cm4gdGhpcy5faWQgPz8gVU5BVkFJTEFCTEVfVEVYVDtcbiAgfVxuXG4gIGdldCBzZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZGVyO1xuICB9XG5cbiAgc2V0IHNlbmRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2VuZGVyID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgLSB1c2UgYHJlY2lwaWVudHMoKWAuXG4gICAqL1xuICBnZXQgcmVjaXBpZW50KCk6IFRyYW5zYWN0aW9uUmVjaXBpZW50IHtcbiAgICBhc3NlcnQodGhpcy5fcmVjaXBpZW50cy5sZW5ndGggPiAwLCAnTm8gcmVjaXBpZW50cyBhdmFpbGFibGUnKTtcbiAgICByZXR1cm4gdGhpcy5fcmVjaXBpZW50c1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBgcmVjaXBpZW50cygpYC5cbiAgICovXG4gIHNldCByZWNpcGllbnQodmFsdWU6IFRyYW5zYWN0aW9uUmVjaXBpZW50KSB7XG4gICAgdGhpcy5yZWNpcGllbnRzID0gW3ZhbHVlXTtcbiAgfVxuXG4gIGdldCByZWNpcGllbnRzKCk6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9yZWNpcGllbnRzO1xuICB9XG5cbiAgc2V0IHJlY2lwaWVudHModmFsdWU6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10pIHtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gdmFsdWU7XG4gIH1cblxuICBnZXQgc2VxdWVuY2VOdW1iZXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VxdWVuY2VOdW1iZXI7XG4gIH1cblxuICBzZXQgc2VxdWVuY2VOdW1iZXIodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3NlcXVlbmNlTnVtYmVyID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbWF4R2FzQW1vdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heEdhc0Ftb3VudDtcbiAgfVxuXG4gIHNldCBtYXhHYXNBbW91bnQodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX21heEdhc0Ftb3VudCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGdhc1VuaXRQcmljZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYXNVbml0UHJpY2U7XG4gIH1cblxuICBzZXQgZ2FzVW5pdFByaWNlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9nYXNVbml0UHJpY2UgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBnYXNVc2VkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2dhc1VzZWQ7XG4gIH1cblxuICBzZXQgZ2FzVXNlZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fZ2FzVXNlZCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGV4cGlyYXRpb25UaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGlyYXRpb25UaW1lO1xuICB9XG5cbiAgc2V0IGV4cGlyYXRpb25UaW1lKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9leHBpcmF0aW9uVGltZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGZlZVBheWVyQWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mZWVQYXllckFkZHJlc3M7XG4gIH1cblxuICBzZXQgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGdldCBhc3NldElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Fzc2V0SWQ7XG4gIH1cblxuICBzZXQgYXNzZXRJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYXNzZXRJZCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzU2ltdWxhdGVUeG4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2ltdWxhdGVUeG47XG4gIH1cblxuICBzZXQgaXNTaW11bGF0ZVR4bih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzU2ltdWxhdGVUeG4gPSB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRUcmFuc2FjdGlvblBheWxvYWREYXRhKCk6IElucHV0R2VuZXJhdGVUcmFuc2FjdGlvblBheWxvYWREYXRhO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwYXJzZVRyYW5zYWN0aW9uUGF5bG9hZChwYXlsb2FkOiBUcmFuc2FjdGlvblBheWxvYWQpOiB2b2lkO1xuXG4gIGZyb21EZXNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbihzaWduZWRUeG46IFNpZ25lZFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhd1R4biA9IHNpZ25lZFR4bi5yYXdfdHhuO1xuICAgICAgdGhpcy5wYXJzZVRyYW5zYWN0aW9uUGF5bG9hZChyYXdUeG4ucGF5bG9hZCk7XG4gICAgICB0aGlzLl9zZW5kZXIgPSByYXdUeG4uc2VuZGVyLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLl9zZXF1ZW5jZU51bWJlciA9IHV0aWxzLmNhc3RUb051bWJlcihyYXdUeG4uc2VxdWVuY2VfbnVtYmVyKTtcbiAgICAgIHRoaXMuX21heEdhc0Ftb3VudCA9IHV0aWxzLmNhc3RUb051bWJlcihyYXdUeG4ubWF4X2dhc19hbW91bnQpO1xuICAgICAgdGhpcy5fZ2FzVW5pdFByaWNlID0gdXRpbHMuY2FzdFRvTnVtYmVyKHJhd1R4bi5nYXNfdW5pdF9wcmljZSk7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uVGltZSA9IHV0aWxzLmNhc3RUb051bWJlcihyYXdUeG4uZXhwaXJhdGlvbl90aW1lc3RhbXBfc2Vjcyk7XG4gICAgICB0aGlzLl9yYXdUcmFuc2FjdGlvbiA9IHJhd1R4bjtcblxuICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgICAgY29uc3QgYXV0aGVudGljYXRvciA9IHNpZ25lZFR4bi5hdXRoZW50aWNhdG9yIGFzIFRyYW5zYWN0aW9uQXV0aGVudGljYXRvckZlZVBheWVyO1xuICAgICAgdGhpcy5fZmVlUGF5ZXJBZGRyZXNzID0gYXV0aGVudGljYXRvci5mZWVfcGF5ZXIuYWRkcmVzcy50b1N0cmluZygpO1xuICAgICAgY29uc3Qgc2VuZGVyQXV0aGVudGljYXRvciA9IGF1dGhlbnRpY2F0b3Iuc2VuZGVyIGFzIEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOTtcbiAgICAgIGNvbnN0IHNlbmRlclNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKHNlbmRlckF1dGhlbnRpY2F0b3Iuc2lnbmF0dXJlLnRvVWludDhBcnJheSgpKTtcbiAgICAgIHRoaXMuYWRkU2VuZGVyU2lnbmF0dXJlKHsgcHViOiBzZW5kZXJBdXRoZW50aWNhdG9yLnB1YmxpY19rZXkudG9TdHJpbmcoKSB9LCBzZW5kZXJTaWduYXR1cmUpO1xuXG4gICAgICBjb25zdCBmZWVQYXllckF1dGhlbnRpY2F0b3IgPSBhdXRoZW50aWNhdG9yLmZlZV9wYXllci5hdXRoZW50aWNhdG9yIGFzIEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOTtcbiAgICAgIGNvbnN0IGZlZVBheWVyU2lnbmF0dXJlID0gQnVmZmVyLmZyb20oZmVlUGF5ZXJBdXRoZW50aWNhdG9yLnNpZ25hdHVyZS50b1VpbnQ4QXJyYXkoKSk7XG4gICAgICB0aGlzLmFkZEZlZVBheWVyU2lnbmF0dXJlKFxuICAgICAgICB7IHB1YjogdXRpbHMuc3RyaXBIZXhQcmVmaXgoZmVlUGF5ZXJBdXRoZW50aWNhdG9yLnB1YmxpY19rZXkudG9TdHJpbmcoKSkgfSxcbiAgICAgICAgZmVlUGF5ZXJTaWduYXR1cmVcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCBzaWduZWQgdHJhbnNhY3Rpb24nLCBlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzaWduZWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICBjYW5TaWduKF9rZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplKCk7XG4gIH1cblxuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBsZXQgc2VuZGVyQXV0aGVudGljYXRvcjogQWNjb3VudEF1dGhlbnRpY2F0b3I7XG4gICAgbGV0IGZlZVBheWVyQXV0aGVudGljYXRvcjogQWNjb3VudEF1dGhlbnRpY2F0b3I7XG4gICAgaWYgKHRoaXMuaXNTaW11bGF0ZVR4bikge1xuICAgICAgc2VuZGVyQXV0aGVudGljYXRvciA9IG5ldyBBY2NvdW50QXV0aGVudGljYXRvck5vQWNjb3VudEF1dGhlbnRpY2F0b3IoKTtcbiAgICAgIGZlZVBheWVyQXV0aGVudGljYXRvciA9IG5ldyBBY2NvdW50QXV0aGVudGljYXRvck5vQWNjb3VudEF1dGhlbnRpY2F0b3IoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VuZGVyUHVibGljS2V5QnVmZmVyID0gdXRpbHMuZ2V0QnVmZmVyRnJvbUhleFN0cmluZyh0aGlzLl9zZW5kZXJTaWduYXR1cmUucHVibGljS2V5LnB1Yik7XG4gICAgICBjb25zdCBzZW5kZXJQdWJsaWNLZXkgPSBuZXcgRWQyNTUxOVB1YmxpY0tleShzZW5kZXJQdWJsaWNLZXlCdWZmZXIpO1xuICAgICAgY29uc3Qgc2VuZGVyU2lnbmF0dXJlID0gbmV3IEVkMjU1MTlTaWduYXR1cmUodGhpcy5fc2VuZGVyU2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgICBzZW5kZXJBdXRoZW50aWNhdG9yID0gbmV3IEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOShzZW5kZXJQdWJsaWNLZXksIHNlbmRlclNpZ25hdHVyZSk7XG5cbiAgICAgIGNvbnN0IGZlZVBheWVyUHVibGljS2V5QnVmZmVyID0gdXRpbHMuZ2V0QnVmZmVyRnJvbUhleFN0cmluZyh0aGlzLl9mZWVQYXllclNpZ25hdHVyZS5wdWJsaWNLZXkucHViKTtcbiAgICAgIGNvbnN0IGZlZVBheWVyUHVibGljS2V5ID0gbmV3IEVkMjU1MTlQdWJsaWNLZXkoZmVlUGF5ZXJQdWJsaWNLZXlCdWZmZXIpO1xuICAgICAgY29uc3QgZmVlUGF5ZXJTaWduYXR1cmUgPSBuZXcgRWQyNTUxOVNpZ25hdHVyZSh0aGlzLl9mZWVQYXllclNpZ25hdHVyZS5zaWduYXR1cmUpO1xuICAgICAgZmVlUGF5ZXJBdXRoZW50aWNhdG9yID0gbmV3IEFjY291bnRBdXRoZW50aWNhdG9yRWQyNTUxOShmZWVQYXllclB1YmxpY0tleSwgZmVlUGF5ZXJTaWduYXR1cmUpO1xuICAgIH1cblxuICAgIGNvbnN0IHR4bkF1dGhlbnRpY2F0b3IgPSBuZXcgVHJhbnNhY3Rpb25BdXRoZW50aWNhdG9yRmVlUGF5ZXIoc2VuZGVyQXV0aGVudGljYXRvciwgW10sIFtdLCB7XG4gICAgICBhZGRyZXNzOiBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMuX2ZlZVBheWVyQWRkcmVzcyksXG4gICAgICBhdXRoZW50aWNhdG9yOiBmZWVQYXllckF1dGhlbnRpY2F0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzaWduZWRUeG4gPSBuZXcgU2lnbmVkVHJhbnNhY3Rpb24odGhpcy5fcmF3VHJhbnNhY3Rpb24sIHR4bkF1dGhlbnRpY2F0b3IpO1xuICAgIHJldHVybiBzaWduZWRUeG4udG9TdHJpbmcoKTtcbiAgfVxuXG4gIGFkZFNlbmRlclNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW3NpZ25hdHVyZS50b1N0cmluZygnaGV4JyldO1xuICAgIHRoaXMuX3NlbmRlclNpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgfVxuXG4gIGdldEZlZVBheWVyUHViS2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlLnB1YmxpY0tleS5wdWI7XG4gIH1cblxuICBhZGRGZWVQYXllclNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9mZWVQYXllclNpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgfVxuXG4gIGFkZEZlZVBheWVyQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9mZWVQYXllckFkZHJlc3MgPSBhZGRyZXNzO1xuICB9XG5cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5idWlsZFJhd1RyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZVR4bklkKCk7XG4gICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICB9XG5cbiAgYWJzdHJhY3QgaW5wdXRzQW5kT3V0cHV0cygpOiBJbnB1dHNBbmRPdXRwdXRzO1xuXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgaW5wdXRzLCBvdXRwdXRzIH0gPSB0aGlzLmlucHV0c0FuZE91dHB1dHMoKTtcbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBzaWduZWRUeG46IFNpZ25lZFRyYW5zYWN0aW9uO1xuICAgIHRyeSB7XG4gICAgICBzaWduZWRUeG4gPSB1dGlscy5kZXNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuZnJvbURlc2VyaWFsaXplZFNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFR4bik7XG4gIH1cbiAgLyoqXG4gICAqIERlc2VyaWFsaXplcyBhIHNpZ25lZCB0cmFuc2FjdGlvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduZWRSYXdUcmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7U2lnbmVkVHJhbnNhY3Rpb259IHRoZSBhcHRvcyBzaWduZWQgdHJhbnNhY3Rpb25cbiAgICovXG4gIHN0YXRpYyBkZXNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBTaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB1dGlscy5kZXNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHNpZ25lZFJhd1RyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgdG9Kc29uKCk6IFR4RGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHJlY2lwaWVudHM6IHRoaXMucmVjaXBpZW50cyxcbiAgICAgIHNlcXVlbmNlTnVtYmVyOiB0aGlzLnNlcXVlbmNlTnVtYmVyLFxuICAgICAgbWF4R2FzQW1vdW50OiB0aGlzLm1heEdhc0Ftb3VudCxcbiAgICAgIGdhc1VuaXRQcmljZTogdGhpcy5nYXNVbml0UHJpY2UsXG4gICAgICBnYXNVc2VkOiB0aGlzLmdhc1VzZWQsXG4gICAgICBleHBpcmF0aW9uVGltZTogdGhpcy5leHBpcmF0aW9uVGltZSxcbiAgICAgIGZlZVBheWVyOiB0aGlzLmZlZVBheWVyQWRkcmVzcyxcbiAgICAgIGFzc2V0SWQ6IHRoaXMuYXNzZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldEZlZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHRoaXMuZ2FzVXNlZCkubXVsdGlwbGllZEJ5KHRoaXMuZ2FzVW5pdFByaWNlKS50b1N0cmluZygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5mZWVQYXllckFkZHJlc3MgPyB0aGlzLmdldFNpZ25hYmxlUGF5bG9hZFdpdGhGZWVQYXllcigpIDogdGhpcy5nZXRTaWduYWJsZVBheWxvYWRXaXRob3V0RmVlUGF5ZXIoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBvdmVycmlkZSBleHBsYWluVHJhbnNhY3Rpb24oKTogQXB0VHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gW1xuICAgICAgJ2lkJyxcbiAgICAgICdvdXRwdXRzJyxcbiAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAnZmVlJyxcbiAgICAgICd3aXRoZHJhd0Ftb3VudCcsXG4gICAgICAnc2VuZGVyJyxcbiAgICAgICd0eXBlJyxcbiAgICBdO1xuXG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IHRoaXMuaW5wdXRzQW5kT3V0cHV0cygpLmV4dGVybmFsT3V0cHV0cztcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBvdXRwdXRzXG4gICAgICAucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gYWNjdW11bGF0b3IucGx1cyhjdXJyZW50LmFtb3VudCksIG5ldyBCaWdOdW1iZXIoJzAnKSlcbiAgICAgIC50b1N0cmluZygpO1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5nZXRGZWUoKSB9LFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkUmF3VHJhbnNhY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbmV0d29yazogTmV0d29yayA9IHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gTmV0d29yay5NQUlOTkVUIDogTmV0d29yay5URVNUTkVUO1xuICAgIGNvbnN0IGFwdG9zID0gbmV3IEFwdG9zKG5ldyBBcHRvc0NvbmZpZyh7IG5ldHdvcmsgfSkpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMuX3NlbmRlcik7XG5cbiAgICBjb25zdCBzaW1wbGVUeG4gPSBhd2FpdCBhcHRvcy50cmFuc2FjdGlvbi5idWlsZC5zaW1wbGUoe1xuICAgICAgc2VuZGVyOiBzZW5kZXJBZGRyZXNzLFxuICAgICAgZGF0YTogdGhpcy5nZXRUcmFuc2FjdGlvblBheWxvYWREYXRhKCkgYXMgSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIG1heEdhc0Ftb3VudDogdGhpcy5tYXhHYXNBbW91bnQsXG4gICAgICAgIGdhc1VuaXRQcmljZTogdGhpcy5nYXNVbml0UHJpY2UsXG4gICAgICAgIGV4cGlyZVRpbWVzdGFtcDogdGhpcy5leHBpcmF0aW9uVGltZSxcbiAgICAgICAgYWNjb3VudFNlcXVlbmNlTnVtYmVyOiB0aGlzLnNlcXVlbmNlTnVtYmVyLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLl9yYXdUcmFuc2FjdGlvbiA9IHNpbXBsZVR4bi5yYXdUcmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2lnbmFibGVQYXlsb2FkV2l0aEZlZVBheWVyKCk6IEJ1ZmZlciB7XG4gICAgY29uc3QgZmVlUGF5ZXJSYXdUeG4gPSBuZXcgRmVlUGF5ZXJSYXdUcmFuc2FjdGlvbihcbiAgICAgIHRoaXMuX3Jhd1RyYW5zYWN0aW9uLFxuICAgICAgW10sXG4gICAgICBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMuX2ZlZVBheWVyQWRkcmVzcylcbiAgICApO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShnZW5lcmF0ZVNpZ25pbmdNZXNzYWdlKGZlZVBheWVyUmF3VHhuLmJjc1RvQnl0ZXMoKSwgUkFXX1RSQU5TQUNUSU9OX1dJVEhfREFUQV9TQUxUKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFNpZ25hYmxlUGF5bG9hZFdpdGhvdXRGZWVQYXllcigpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShnZW5lcmF0ZVNpZ25pbmdNZXNzYWdlKHRoaXMuX3Jhd1RyYW5zYWN0aW9uLmJjc1RvQnl0ZXMoKSwgUkFXX1RSQU5TQUNUSU9OX1NBTFQpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVUeG5JZCgpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5fc2VuZGVyU2lnbmF0dXJlIHx8XG4gICAgICAhdGhpcy5fc2VuZGVyU2lnbmF0dXJlLnB1YmxpY0tleSB8fFxuICAgICAgIXRoaXMuX3NlbmRlclNpZ25hdHVyZS5zaWduYXR1cmUgfHxcbiAgICAgICF0aGlzLl9mZWVQYXllclNpZ25hdHVyZSB8fFxuICAgICAgIXRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlLnB1YmxpY0tleSB8fFxuICAgICAgIXRoaXMuX2ZlZVBheWVyU2lnbmF0dXJlLnNpZ25hdHVyZSB8fFxuICAgICAgIXRoaXMuX2ZlZVBheWVyQWRkcmVzc1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBTaW1wbGVUcmFuc2FjdGlvbih0aGlzLl9yYXdUcmFuc2FjdGlvbiwgQWNjb3VudEFkZHJlc3MuZnJvbVN0cmluZyh0aGlzLl9mZWVQYXllckFkZHJlc3MpKTtcbiAgICBjb25zdCBzZW5kZXJQdWJsaWNLZXkgPSBuZXcgRWQyNTUxOVB1YmxpY0tleSh1dGlscy5nZXRCdWZmZXJGcm9tSGV4U3RyaW5nKHRoaXMuX3NlbmRlclNpZ25hdHVyZS5wdWJsaWNLZXkucHViKSk7XG4gICAgY29uc3Qgc2VuZGVyU2lnbmF0dXJlID0gbmV3IEVkMjU1MTlTaWduYXR1cmUodGhpcy5fc2VuZGVyU2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2VuZGVyQXV0aGVudGljYXRvciA9IG5ldyBBY2NvdW50QXV0aGVudGljYXRvckVkMjU1MTkoc2VuZGVyUHVibGljS2V5LCBzZW5kZXJTaWduYXR1cmUpO1xuICAgIGNvbnN0IGZlZVBheWVyUHVibGljS2V5ID0gbmV3IEVkMjU1MTlQdWJsaWNLZXkodXRpbHMuZ2V0QnVmZmVyRnJvbUhleFN0cmluZyh0aGlzLl9mZWVQYXllclNpZ25hdHVyZS5wdWJsaWNLZXkucHViKSk7XG4gICAgY29uc3QgZmVlUGF5ZXJTaWduYXR1cmUgPSBuZXcgRWQyNTUxOVNpZ25hdHVyZSh0aGlzLl9mZWVQYXllclNpZ25hdHVyZS5zaWduYXR1cmUpO1xuICAgIGNvbnN0IGZlZVBheWVyQXV0aGVudGljYXRvciA9IG5ldyBBY2NvdW50QXV0aGVudGljYXRvckVkMjU1MTkoZmVlUGF5ZXJQdWJsaWNLZXksIGZlZVBheWVyU2lnbmF0dXJlKTtcbiAgICB0aGlzLl9pZCA9IGdlbmVyYXRlVXNlclRyYW5zYWN0aW9uSGFzaCh7IHRyYW5zYWN0aW9uLCBzZW5kZXJBdXRoZW50aWNhdG9yLCBmZWVQYXllckF1dGhlbnRpY2F0b3IgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { InputGenerateTransactionPayloadData, TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { AbstractTransferTransaction } from './abstractTransferTransaction';
|
|
4
|
+
export declare class TransferTransaction extends AbstractTransferTransaction {
|
|
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
|