@bitgo-beta/sdk-coin-apt 1.0.1-beta.77 → 1.0.1-beta.771
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 +9 -2
- package/dist/src/apt.d.ts.map +1 -1
- package/dist/src/apt.js +37 -11
- 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 +14 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +16 -2
- package/dist/src/lib/iface.d.ts +91 -1
- 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 -2
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +16 -4
- 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 +11 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.js +46 -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 +35 -6
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +181 -54
- package/dist/src/lib/transaction/transferTransaction.d.ts +8 -6
- package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transferTransaction.js +45 -37
- 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 +12 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +45 -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.d.ts → transactionBuilder/transactionBuilder.d.ts} +25 -11
- 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 -7
- 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 +22 -10
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +64 -18
- 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 +29 -5
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +107 -28
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +9 -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 +49 -0
- package/dist/test/resources/apt.d.ts.map +1 -0
- package/dist/test/resources/apt.js +113 -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 +185 -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 +14 -11
- package/.eslintignore +0 -4
- package/.gitignore +0 -3
- package/.mocharc.yml +0 -8
- package/.prettierignore +0 -2
- package/CHANGELOG.md +0 -62
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -118
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -25
package/dist/src/lib/index.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.Utils = exports.Interface = exports.TransactionBuilderFactory = exports.TransferBuilder = exports.TransactionBuilder = exports.TransferTransaction = exports.Transaction = exports.KeyPair = void 0;
|
|
36
|
+
exports.Utils = exports.Interface = exports.TransactionBuilderFactory = exports.CustomTransactionBuilder = exports.DigitalAssetTransferBuilder = exports.FungibleAssetTransferBuilder = exports.TransferBuilder = exports.TransactionBuilder = exports.CustomTransaction = exports.DigitalAssetTransfer = exports.FungibleAssetTransfer = exports.TransferTransaction = exports.Transaction = exports.KeyPair = void 0;
|
|
37
37
|
const Utils = __importStar(require("./utils"));
|
|
38
38
|
exports.Utils = Utils;
|
|
39
39
|
const Interface = __importStar(require("./iface"));
|
|
@@ -44,10 +44,22 @@ var transaction_1 = require("./transaction/transaction");
|
|
|
44
44
|
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
45
45
|
var transferTransaction_1 = require("./transaction/transferTransaction");
|
|
46
46
|
Object.defineProperty(exports, "TransferTransaction", { enumerable: true, get: function () { return transferTransaction_1.TransferTransaction; } });
|
|
47
|
-
var
|
|
47
|
+
var fungibleAssetTransfer_1 = require("./transaction/fungibleAssetTransfer");
|
|
48
|
+
Object.defineProperty(exports, "FungibleAssetTransfer", { enumerable: true, get: function () { return fungibleAssetTransfer_1.FungibleAssetTransfer; } });
|
|
49
|
+
var digitalAssetTransfer_1 = require("./transaction/digitalAssetTransfer");
|
|
50
|
+
Object.defineProperty(exports, "DigitalAssetTransfer", { enumerable: true, get: function () { return digitalAssetTransfer_1.DigitalAssetTransfer; } });
|
|
51
|
+
var customTransaction_1 = require("./transaction/customTransaction");
|
|
52
|
+
Object.defineProperty(exports, "CustomTransaction", { enumerable: true, get: function () { return customTransaction_1.CustomTransaction; } });
|
|
53
|
+
var transactionBuilder_1 = require("./transactionBuilder/transactionBuilder");
|
|
48
54
|
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
49
|
-
var transferBuilder_1 = require("./transferBuilder");
|
|
55
|
+
var transferBuilder_1 = require("./transactionBuilder/transferBuilder");
|
|
50
56
|
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
57
|
+
var fungibleAssetTransferBuilder_1 = require("./transactionBuilder/fungibleAssetTransferBuilder");
|
|
58
|
+
Object.defineProperty(exports, "FungibleAssetTransferBuilder", { enumerable: true, get: function () { return fungibleAssetTransferBuilder_1.FungibleAssetTransferBuilder; } });
|
|
59
|
+
var digitalAssetTransferBuilder_1 = require("./transactionBuilder/digitalAssetTransferBuilder");
|
|
60
|
+
Object.defineProperty(exports, "DigitalAssetTransferBuilder", { enumerable: true, get: function () { return digitalAssetTransferBuilder_1.DigitalAssetTransferBuilder; } });
|
|
61
|
+
var customTransactionBuilder_1 = require("./transactionBuilder/customTransactionBuilder");
|
|
62
|
+
Object.defineProperty(exports, "CustomTransactionBuilder", { enumerable: true, get: function () { return customTransactionBuilder_1.CustomTransactionBuilder; } });
|
|
51
63
|
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
52
64
|
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQWViLHNCQUFLO0FBZHpCLG1EQUFxQztBQWM1Qiw4QkFBUztBQVpsQixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLHlEQUF3RDtBQUEvQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIseUVBQXdFO0FBQS9ELDBIQUFBLG1CQUFtQixPQUFBO0FBQzVCLDZFQUE0RTtBQUFuRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QiwyRUFBMEU7QUFBakUsNEhBQUEsb0JBQW9CLE9BQUE7QUFDN0IscUVBQW9FO0FBQTNELHNIQUFBLGlCQUFpQixPQUFBO0FBQzFCLDhFQUE2RTtBQUFwRSx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQix3RUFBdUU7QUFBOUQsa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLGtHQUFpRztBQUF4Riw0SUFBQSw0QkFBNEIsT0FBQTtBQUNyQyxnR0FBK0Y7QUFBdEYsMElBQUEsMkJBQTJCLE9BQUE7QUFDcEMsMEZBQXlGO0FBQWhGLG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEZ1bmdpYmxlQXNzZXRUcmFuc2ZlciB9IGZyb20gJy4vdHJhbnNhY3Rpb24vZnVuZ2libGVBc3NldFRyYW5zZmVyJztcbmV4cG9ydCB7IERpZ2l0YWxBc3NldFRyYW5zZmVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9kaWdpdGFsQXNzZXRUcmFuc2Zlcic7XG5leHBvcnQgeyBDdXN0b21UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vY3VzdG9tVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBGdW5naWJsZUFzc2V0VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZnVuZ2libGVBc3NldFRyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBEaWdpdGFsQXNzZXRUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9kaWdpdGFsQXNzZXRUcmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgQ3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvY3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Transaction } from './transaction';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { EntryFunctionABI, InputGenerateTransactionPayloadData, TransactionPayload } from '@aptos-labs/ts-sdk';
|
|
4
|
+
import { CustomTransactionParams } from '../iface';
|
|
5
|
+
/**
|
|
6
|
+
* Transaction class for custom Aptos transactions.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CustomTransaction extends Transaction {
|
|
9
|
+
private _moduleName;
|
|
10
|
+
private _functionName;
|
|
11
|
+
private _typeArguments;
|
|
12
|
+
private _functionArguments;
|
|
13
|
+
private _entryFunctionAbi?;
|
|
14
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
15
|
+
/**
|
|
16
|
+
* Set the custom transaction parameters
|
|
17
|
+
*/
|
|
18
|
+
setCustomTransactionParams(params: CustomTransactionParams): void;
|
|
19
|
+
/**
|
|
20
|
+
* Set the entry function ABI
|
|
21
|
+
*/
|
|
22
|
+
setEntryFunctionAbi(abi: EntryFunctionABI): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get the full function name
|
|
25
|
+
*/
|
|
26
|
+
get fullFunctionName(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Parse a transaction payload to extract the custom transaction data
|
|
29
|
+
* Requires ABI information for proper type-aware conversion
|
|
30
|
+
*
|
|
31
|
+
* @param {TransactionPayload} payload - The transaction payload to parse
|
|
32
|
+
*/
|
|
33
|
+
protected parseTransactionPayload(payload: TransactionPayload): void;
|
|
34
|
+
/**
|
|
35
|
+
* Generate transaction payload data
|
|
36
|
+
*/
|
|
37
|
+
protected getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
38
|
+
/**
|
|
39
|
+
* Convert argument based on ABI type information
|
|
40
|
+
*/
|
|
41
|
+
private convertArgumentByABI;
|
|
42
|
+
/**
|
|
43
|
+
* Convert primitive argument values based on parameter type
|
|
44
|
+
*/
|
|
45
|
+
private convertPrimitiveArgument;
|
|
46
|
+
/**
|
|
47
|
+
* Convert primitive numeric arguments to string
|
|
48
|
+
* - Big numbers break JavaScript (precision loss)
|
|
49
|
+
* - String safer for large U64/U128/U256 values
|
|
50
|
+
* - Aptos SDK converts string to correct type automatically
|
|
51
|
+
*/
|
|
52
|
+
private convertPrimitiveNumericArgument;
|
|
53
|
+
/**
|
|
54
|
+
* Convert BCS data argument with 'data' property
|
|
55
|
+
*/
|
|
56
|
+
private convertBcsDataArgument;
|
|
57
|
+
/**
|
|
58
|
+
* Convert nested BCS argument with 'value' property
|
|
59
|
+
*/
|
|
60
|
+
private convertNestedBcsArgument;
|
|
61
|
+
/**
|
|
62
|
+
* Extract bytes from BCS object with numeric keys
|
|
63
|
+
*/
|
|
64
|
+
private extractBytesFromBcsObject;
|
|
65
|
+
/**
|
|
66
|
+
* Get custom transaction parameters
|
|
67
|
+
*/
|
|
68
|
+
getCustomTransactionParams(): CustomTransactionParams;
|
|
69
|
+
/**
|
|
70
|
+
* Override recipient getter for custom transactions
|
|
71
|
+
*/
|
|
72
|
+
get recipient(): any;
|
|
73
|
+
/**
|
|
74
|
+
* Get validated full function name
|
|
75
|
+
*/
|
|
76
|
+
private getValidatedFullFunctionName;
|
|
77
|
+
/**
|
|
78
|
+
* Check if a parameter type is a numeric type
|
|
79
|
+
*/
|
|
80
|
+
private isNumericType;
|
|
81
|
+
/**
|
|
82
|
+
* Convert byte arrays to string numbers
|
|
83
|
+
* - Small types (U8/U16/U32): 1-4 bytes, parse manually
|
|
84
|
+
* - Large types (U64/U128/U256): 8+ bytes, use existing utility
|
|
85
|
+
* - Both return string for consistency
|
|
86
|
+
*/
|
|
87
|
+
private convertNumericArgument;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=customTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/customTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAEL,gBAAgB,EAGhB,mCAAmC,EACnC,kBAAkB,EAUnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAInD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,kBAAkB,CAA4E;IACtG,OAAO,CAAC,iBAAiB,CAAC,CAAmB;gBAEjC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C;;OAEG;IACH,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAWjE;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAIhD;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAK7B;IAED;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAyCpE;;OAEG;IACH,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IAc1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IAKvC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;OAEG;IACH,0BAA0B,IAAI,uBAAuB;IAUrD;;OAEG;IACH,IAAI,SAAS,IAAI,GAAG,CAQnB;IAED;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiBpC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAkB/B"}
|
|
@@ -0,0 +1,278 @@
|
|
|
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.CustomTransaction = 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 validation_1 = require("../utils/validation");
|
|
11
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
12
|
+
/**
|
|
13
|
+
* Transaction class for custom Aptos transactions.
|
|
14
|
+
*/
|
|
15
|
+
class CustomTransaction extends transaction_1.Transaction {
|
|
16
|
+
constructor(coinConfig) {
|
|
17
|
+
super(coinConfig);
|
|
18
|
+
this._typeArguments = [];
|
|
19
|
+
this._functionArguments = [];
|
|
20
|
+
this._type = sdk_core_1.TransactionType.CustomTx;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Set the custom transaction parameters
|
|
24
|
+
*/
|
|
25
|
+
setCustomTransactionParams(params) {
|
|
26
|
+
(0, validation_1.validateModuleName)(params.moduleName);
|
|
27
|
+
(0, validation_1.validateFunctionName)(params.functionName);
|
|
28
|
+
this._moduleName = params.moduleName;
|
|
29
|
+
this._functionName = params.functionName;
|
|
30
|
+
this._typeArguments = params.typeArguments || [];
|
|
31
|
+
this._functionArguments = params.functionArguments || [];
|
|
32
|
+
this._entryFunctionAbi = params.abi;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Set the entry function ABI
|
|
36
|
+
*/
|
|
37
|
+
setEntryFunctionAbi(abi) {
|
|
38
|
+
this._entryFunctionAbi = abi;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the full function name
|
|
42
|
+
*/
|
|
43
|
+
get fullFunctionName() {
|
|
44
|
+
if (!this._moduleName || !this._functionName) {
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
return `${this._moduleName}::${this._functionName}`;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parse a transaction payload to extract the custom transaction data
|
|
51
|
+
* Requires ABI information for proper type-aware conversion
|
|
52
|
+
*
|
|
53
|
+
* @param {TransactionPayload} payload - The transaction payload to parse
|
|
54
|
+
*/
|
|
55
|
+
parseTransactionPayload(payload) {
|
|
56
|
+
if (!(payload instanceof ts_sdk_1.TransactionPayloadEntryFunction)) {
|
|
57
|
+
throw new sdk_core_1.InvalidTransactionError('Expected entry function payload for custom transaction');
|
|
58
|
+
}
|
|
59
|
+
const entryFunction = payload.entryFunction;
|
|
60
|
+
// Extract function data
|
|
61
|
+
const moduleAddress = entryFunction.module_name.address.toString();
|
|
62
|
+
const moduleIdentifier = entryFunction.module_name.name.identifier;
|
|
63
|
+
const functionIdentifier = entryFunction.function_name.identifier;
|
|
64
|
+
const moduleName = `${moduleAddress}::${moduleIdentifier}`;
|
|
65
|
+
// Validate
|
|
66
|
+
(0, validation_1.validateModuleName)(moduleName);
|
|
67
|
+
(0, validation_1.validateFunctionName)(functionIdentifier);
|
|
68
|
+
this._moduleName = moduleName;
|
|
69
|
+
this._functionName = functionIdentifier;
|
|
70
|
+
this._typeArguments = entryFunction.type_args.map((typeArg) => typeArg.toString());
|
|
71
|
+
// Parse arguments using ABI information
|
|
72
|
+
// If ABI is available, parse with type awareness; otherwise store raw args for later processing
|
|
73
|
+
if (this._entryFunctionAbi?.parameters) {
|
|
74
|
+
this._functionArguments = entryFunction.args.map((arg, index) => {
|
|
75
|
+
const paramType = this._entryFunctionAbi?.parameters?.[index];
|
|
76
|
+
if (!paramType) {
|
|
77
|
+
throw new sdk_core_1.InvalidTransactionError(`Missing ABI parameter type for argument ${index} in ${this._moduleName}::${this._functionName}. ` +
|
|
78
|
+
'ABI parameter count mismatch.');
|
|
79
|
+
}
|
|
80
|
+
return this.convertArgumentByABI(arg, paramType);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Store raw arguments temporarily - transaction will be re-parsed when ABI is provided
|
|
85
|
+
this._functionArguments = entryFunction.args.map((arg) => arg);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Generate transaction payload data
|
|
90
|
+
*/
|
|
91
|
+
getTransactionPayloadData() {
|
|
92
|
+
const functionName = this.getValidatedFullFunctionName();
|
|
93
|
+
// Arguments are pre-processed during parsing phase
|
|
94
|
+
const processedArguments = this._functionArguments;
|
|
95
|
+
return {
|
|
96
|
+
function: functionName,
|
|
97
|
+
typeArguments: this._typeArguments,
|
|
98
|
+
functionArguments: processedArguments,
|
|
99
|
+
abi: this._entryFunctionAbi,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Convert argument based on ABI type information
|
|
104
|
+
*/
|
|
105
|
+
convertArgumentByABI(arg, paramType) {
|
|
106
|
+
// Handle primitive values (string, number, boolean)
|
|
107
|
+
if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {
|
|
108
|
+
return this.convertPrimitiveArgument(arg, paramType);
|
|
109
|
+
}
|
|
110
|
+
// Handle BCS-encoded data with 'data' property
|
|
111
|
+
if (arg && typeof arg === 'object' && 'data' in arg && arg.data) {
|
|
112
|
+
return this.convertBcsDataArgument(arg, paramType);
|
|
113
|
+
}
|
|
114
|
+
// Handle nested BCS structures with 'value' property
|
|
115
|
+
if (arg && typeof arg === 'object' && 'value' in arg && arg.value) {
|
|
116
|
+
return this.convertNestedBcsArgument(arg, paramType);
|
|
117
|
+
}
|
|
118
|
+
// For anything else, return as-is
|
|
119
|
+
return arg;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Convert primitive argument values based on parameter type
|
|
123
|
+
*/
|
|
124
|
+
convertPrimitiveArgument(arg, paramType) {
|
|
125
|
+
// Address conversion for hex strings
|
|
126
|
+
if (paramType instanceof ts_sdk_1.TypeTagAddress && typeof arg === 'string' && arg.startsWith('0x')) {
|
|
127
|
+
return utils_1.default.tryParseAccountAddress(arg);
|
|
128
|
+
}
|
|
129
|
+
// Type conversions based on parameter type
|
|
130
|
+
if (paramType instanceof ts_sdk_1.TypeTagBool)
|
|
131
|
+
return Boolean(arg);
|
|
132
|
+
// Use unified numeric type handling
|
|
133
|
+
if (this.isNumericType(paramType)) {
|
|
134
|
+
return this.convertPrimitiveNumericArgument(arg);
|
|
135
|
+
}
|
|
136
|
+
return arg;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Convert primitive numeric arguments to string
|
|
140
|
+
* - Big numbers break JavaScript (precision loss)
|
|
141
|
+
* - String safer for large U64/U128/U256 values
|
|
142
|
+
* - Aptos SDK converts string to correct type automatically
|
|
143
|
+
*/
|
|
144
|
+
convertPrimitiveNumericArgument(arg) {
|
|
145
|
+
// Always string - safer for big numbers
|
|
146
|
+
return String(arg);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Convert BCS data argument with 'data' property
|
|
150
|
+
*/
|
|
151
|
+
convertBcsDataArgument(arg, paramType) {
|
|
152
|
+
const bytes = Array.from(arg.data);
|
|
153
|
+
const hexString = utils_1.default.bytesToHex(bytes);
|
|
154
|
+
return paramType instanceof ts_sdk_1.TypeTagAddress ? utils_1.default.tryParseAccountAddress(hexString) : hexString;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Convert nested BCS argument with 'value' property
|
|
158
|
+
*/
|
|
159
|
+
convertNestedBcsArgument(arg, paramType) {
|
|
160
|
+
// Check if inner value is a Uint8Array (common for U64 arguments)
|
|
161
|
+
if (arg.value.value && arg.value.value instanceof Uint8Array) {
|
|
162
|
+
const bytes = Array.from(arg.value.value);
|
|
163
|
+
if (this.isNumericType(paramType)) {
|
|
164
|
+
return this.convertNumericArgument(bytes, paramType);
|
|
165
|
+
}
|
|
166
|
+
// For non-numeric types, convert to hex string
|
|
167
|
+
return utils_1.default.bytesToHex(bytes);
|
|
168
|
+
}
|
|
169
|
+
// Simple value wrapper - fix the bug in original implementation
|
|
170
|
+
if (typeof arg.value !== 'object' || !('value' in arg.value)) {
|
|
171
|
+
return this.convertArgumentByABI(arg.value, paramType);
|
|
172
|
+
}
|
|
173
|
+
// Double nested structure with numeric keys
|
|
174
|
+
const bytes = this.extractBytesFromBcsObject(arg.value.value);
|
|
175
|
+
if (bytes.length === 0)
|
|
176
|
+
return arg;
|
|
177
|
+
let extractedValue;
|
|
178
|
+
// Convert bytes based on parameter type using unified approach
|
|
179
|
+
if (this.isNumericType(paramType)) {
|
|
180
|
+
extractedValue = this.convertNumericArgument(bytes, paramType);
|
|
181
|
+
}
|
|
182
|
+
else if (paramType instanceof ts_sdk_1.TypeTagAddress) {
|
|
183
|
+
extractedValue = utils_1.default.bytesToHex(bytes);
|
|
184
|
+
}
|
|
185
|
+
else if (paramType instanceof ts_sdk_1.TypeTagBool) {
|
|
186
|
+
extractedValue = bytes[0] === 1;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
extractedValue = utils_1.default.bytesToHex(bytes);
|
|
190
|
+
}
|
|
191
|
+
return this.convertArgumentByABI(extractedValue, paramType);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Extract bytes from BCS object with numeric keys
|
|
195
|
+
*/
|
|
196
|
+
extractBytesFromBcsObject(bcsObject) {
|
|
197
|
+
const keys = Object.keys(bcsObject)
|
|
198
|
+
.filter((k) => !isNaN(parseInt(k, 10)))
|
|
199
|
+
.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
|
|
200
|
+
if (keys.length === 0)
|
|
201
|
+
return [];
|
|
202
|
+
return keys.map((k) => bcsObject[k]);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get custom transaction parameters
|
|
206
|
+
*/
|
|
207
|
+
getCustomTransactionParams() {
|
|
208
|
+
return {
|
|
209
|
+
moduleName: this._moduleName || '',
|
|
210
|
+
functionName: this._functionName || '',
|
|
211
|
+
typeArguments: this._typeArguments,
|
|
212
|
+
functionArguments: this._functionArguments,
|
|
213
|
+
abi: this._entryFunctionAbi,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Override recipient getter for custom transactions
|
|
218
|
+
*/
|
|
219
|
+
get recipient() {
|
|
220
|
+
if (this._recipients.length === 0) {
|
|
221
|
+
return {
|
|
222
|
+
address: '',
|
|
223
|
+
amount: '0',
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return this._recipients[0];
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get validated full function name
|
|
230
|
+
*/
|
|
231
|
+
getValidatedFullFunctionName() {
|
|
232
|
+
if (!this._moduleName || !this._functionName) {
|
|
233
|
+
throw new Error('Module name and function name must be set before building transaction');
|
|
234
|
+
}
|
|
235
|
+
const fullName = `${this._moduleName}::${this._functionName}`;
|
|
236
|
+
// Basic validation
|
|
237
|
+
const fullFunctionPattern = /^(0x[a-fA-F0-9]{1,64}|[a-zA-Z_][a-zA-Z0-9_]*)::[a-zA-Z_][a-zA-Z0-9_]*::[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
238
|
+
if (!fullFunctionPattern.test(fullName)) {
|
|
239
|
+
throw new Error(`Invalid full function name format: "${fullName}". Expected format: "address::module::function"`);
|
|
240
|
+
}
|
|
241
|
+
return fullName;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Check if a parameter type is a numeric type
|
|
245
|
+
*/
|
|
246
|
+
isNumericType(paramType) {
|
|
247
|
+
return (paramType instanceof ts_sdk_1.TypeTagU8 ||
|
|
248
|
+
paramType instanceof ts_sdk_1.TypeTagU16 ||
|
|
249
|
+
paramType instanceof ts_sdk_1.TypeTagU32 ||
|
|
250
|
+
paramType instanceof ts_sdk_1.TypeTagU64 ||
|
|
251
|
+
paramType instanceof ts_sdk_1.TypeTagU128 ||
|
|
252
|
+
paramType instanceof ts_sdk_1.TypeTagU256);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Convert byte arrays to string numbers
|
|
256
|
+
* - Small types (U8/U16/U32): 1-4 bytes, parse manually
|
|
257
|
+
* - Large types (U64/U128/U256): 8+ bytes, use existing utility
|
|
258
|
+
* - Both return string for consistency
|
|
259
|
+
*/
|
|
260
|
+
convertNumericArgument(bytes, paramType) {
|
|
261
|
+
if (paramType instanceof ts_sdk_1.TypeTagU8 || paramType instanceof ts_sdk_1.TypeTagU16 || paramType instanceof ts_sdk_1.TypeTagU32) {
|
|
262
|
+
// Small types: parse bytes manually (1-4 bytes)
|
|
263
|
+
let result = 0;
|
|
264
|
+
for (let i = bytes.length - 1; i >= 0; i--) {
|
|
265
|
+
result = result * 256 + bytes[i];
|
|
266
|
+
}
|
|
267
|
+
return result.toString();
|
|
268
|
+
}
|
|
269
|
+
if (paramType instanceof ts_sdk_1.TypeTagU64 || paramType instanceof ts_sdk_1.TypeTagU128 || paramType instanceof ts_sdk_1.TypeTagU256) {
|
|
270
|
+
// Large types: use existing method (needs 8+ bytes)
|
|
271
|
+
return utils_1.default.getAmountFromPayloadArgs(new Uint8Array(bytes));
|
|
272
|
+
}
|
|
273
|
+
// Unknown type: convert to hex
|
|
274
|
+
return utils_1.default.bytesToHex(bytes);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
exports.CustomTransaction = CustomTransaction;
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2N1c3RvbVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQUE0QztBQUU1QyxtREFBZ0Y7QUFDaEYsK0NBZ0I0QjtBQUU1QixvREFBK0U7QUFDL0UscURBQTZCO0FBRTdCOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSx5QkFBVztJQU9oRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxaLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUF5RSxFQUFFLENBQUM7UUFLcEcsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsQ0FBQyxNQUErQjtRQUN4RCxJQUFBLCtCQUFrQixFQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFBLGlDQUFvQixFQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsR0FBcUI7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFD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QUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLFNBQVMsWUFBWSxtQkFBVSxJQUFJLFNBQVMsWUFBWSxvQkFBVyxJQUFJLFNBQVMsWUFBWSxvQkFBVyxFQUFFLENBQUM7WUFDNUcsb0RBQW9EO1lBQ3BELE9BQU8sZUFBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELCtCQUErQjtRQUMvQixPQUFPLGVBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBdFRELDhDQXNUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQWNjb3VudEFkZHJlc3MsXG4gIEVudHJ5RnVuY3Rpb25BQkksXG4gIEVudHJ5RnVuY3Rpb25Bcmd1bWVudFR5cGVzLFxuICBTaW1wbGVFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcyxcbiAgSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEsXG4gIFRyYW5zYWN0aW9uUGF5bG9hZCxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbixcbiAgVHlwZVRhZ0FkZHJlc3MsXG4gIFR5cGVUYWdCb29sLFxuICBUeXBlVGFnVTgsXG4gIFR5cGVUYWdVMTYsXG4gIFR5cGVUYWdVMzIsXG4gIFR5cGVUYWdVNjQsXG4gIFR5cGVUYWdVMTI4LFxuICBUeXBlVGFnVTI1Nixcbn0gZnJvbSAnQGFwdG9zLWxhYnMvdHMtc2RrJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVNb2R1bGVOYW1lLCB2YWxpZGF0ZUZ1bmN0aW9uTmFtZSB9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuLyoqXG4gKiBUcmFuc2FjdGlvbiBjbGFzcyBmb3IgY3VzdG9tIEFwdG9zIHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbVRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9tb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Z1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF90eXBlQXJndW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9mdW5jdGlvbkFyZ3VtZW50czogQXJyYXk8RW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXMgfCBTaW1wbGVFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcz4gPSBbXTtcbiAgcHJpdmF0ZSBfZW50cnlGdW5jdGlvbkFiaT86IEVudHJ5RnVuY3Rpb25BQkk7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VzdG9tIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnNcbiAgICovXG4gIHNldEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zKHBhcmFtczogQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMpOiB2b2lkIHtcbiAgICB2YWxpZGF0ZU1vZHVsZU5hbWUocGFyYW1zLm1vZHVsZU5hbWUpO1xuICAgIHZhbGlkYXRlRnVuY3Rpb25OYW1lKHBhcmFtcy5mdW5jdGlvbk5hbWUpO1xuXG4gICAgdGhpcy5fbW9kdWxlTmFtZSA9IHBhcmFtcy5tb2R1bGVOYW1lO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IHBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgdGhpcy5fdHlwZUFyZ3VtZW50cyA9IHBhcmFtcy50eXBlQXJndW1lbnRzIHx8IFtdO1xuICAgIHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzID0gcGFyYW1zLmZ1bmN0aW9uQXJndW1lbnRzIHx8IFtdO1xuICAgIHRoaXMuX2VudHJ5RnVuY3Rpb25BYmkgPSBwYXJhbXMuYWJpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZW50cnkgZnVuY3Rpb24gQUJJXG4gICAqL1xuICBzZXRFbnRyeUZ1bmN0aW9uQWJpKGFiaTogRW50cnlGdW5jdGlvbkFCSSk6IHZvaWQge1xuICAgIHRoaXMuX2VudHJ5RnVuY3Rpb25BYmkgPSBhYmk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdWxsIGZ1bmN0aW9uIG5hbWVcbiAgICovXG4gIGdldCBmdWxsRnVuY3Rpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9tb2R1bGVOYW1lIHx8ICF0aGlzLl9mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuX21vZHVsZU5hbWV9Ojoke3RoaXMuX2Z1bmN0aW9uTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgdHJhbnNhY3Rpb24gcGF5bG9hZCB0byBleHRyYWN0IHRoZSBjdXN0b20gdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBSZXF1aXJlcyBBQkkgaW5mb3JtYXRpb24gZm9yIHByb3BlciB0eXBlLWF3YXJlIGNvbnZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBheWxvYWR9IHBheWxvYWQgLSBUaGUgdHJhbnNhY3Rpb24gcGF5bG9hZCB0byBwYXJzZVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb25QYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghKHBheWxvYWQgaW5zdGFuY2VvZiBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCBlbnRyeSBmdW5jdGlvbiBwYXlsb2FkIGZvciBjdXN0b20gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeUZ1bmN0aW9uID0gcGF5bG9hZC5lbnRyeUZ1bmN0aW9uO1xuXG4gICAgLy8gRXh0cmFjdCBmdW5jdGlvbiBkYXRhXG4gICAgY29uc3QgbW9kdWxlQWRkcmVzcyA9IGVudHJ5RnVuY3Rpb24ubW9kdWxlX25hbWUuYWRkcmVzcy50b1N0cmluZygpO1xuICAgIGNvbnN0IG1vZHVsZUlkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLm1vZHVsZV9uYW1lLm5hbWUuaWRlbnRpZmllcjtcbiAgICBjb25zdCBmdW5jdGlvbklkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUuaWRlbnRpZmllcjtcblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBgJHttb2R1bGVBZGRyZXNzfTo6JHttb2R1bGVJZGVudGlmaWVyfWA7XG5cbiAgICAvLyBWYWxpZGF0ZVxuICAgIHZhbGlkYXRlTW9kdWxlTmFtZShtb2R1bGVOYW1lKTtcbiAgICB2YWxpZGF0ZUZ1bmN0aW9uTmFtZShmdW5jdGlvbklkZW50aWZpZXIpO1xuXG4gICAgdGhpcy5fbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XG4gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JZGVudGlmaWVyO1xuICAgIHRoaXMuX3R5cGVBcmd1bWVudHMgPSBlbnRyeUZ1bmN0aW9uLnR5cGVfYXJncy5tYXAoKHR5cGVBcmcpID0+IHR5cGVBcmcudG9TdHJpbmcoKSk7XG5cbiAgICAvLyBQYXJzZSBhcmd1bWVudHMgdXNpbmcgQUJJIGluZm9ybWF0aW9uXG4gICAgLy8gSWYgQUJJIGlzIGF2YWlsYWJsZSwgcGFyc2Ugd2l0aCB0eXBlIGF3YXJlbmVzczsgb3RoZXJ3aXNlIHN0b3JlIHJhdyBhcmdzIGZvciBsYXRlciBwcm9jZXNzaW5nXG4gICAgaWYgKHRoaXMuX2VudHJ5RnVuY3Rpb25BYmk/LnBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzID0gZW50cnlGdW5jdGlvbi5hcmdzLm1hcCgoYXJnOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1UeXBlID0gdGhpcy5fZW50cnlGdW5jdGlvbkFiaT8ucGFyYW1ldGVycz8uW2luZGV4XTtcbiAgICAgICAgaWYgKCFwYXJhbVR5cGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgICBgTWlzc2luZyBBQkkgcGFyYW1ldGVyIHR5cGUgZm9yIGFyZ3VtZW50ICR7aW5kZXh9IGluICR7dGhpcy5fbW9kdWxlTmFtZX06OiR7dGhpcy5fZnVuY3Rpb25OYW1lfS4gYCArXG4gICAgICAgICAgICAgICdBQkkgcGFyYW1ldGVyIGNvdW50IG1pc21hdGNoLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZywgcGFyYW1UeXBlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdG9yZSByYXcgYXJndW1lbnRzIHRlbXBvcmFyaWx5IC0gdHJhbnNhY3Rpb24gd2lsbCBiZSByZS1wYXJzZWQgd2hlbiBBQkkgaXMgcHJvdmlkZWRcbiAgICAgIHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzID0gZW50cnlGdW5jdGlvbi5hcmdzLm1hcCgoYXJnOiBhbnkpID0+IGFyZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRyYW5zYWN0aW9uIHBheWxvYWQgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKTogSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHRoaXMuZ2V0VmFsaWRhdGVkRnVsbEZ1bmN0aW9uTmFtZSgpO1xuXG4gICAgLy8gQXJndW1lbnRzIGFyZSBwcmUtcHJvY2Vzc2VkIGR1cmluZyBwYXJzaW5nIHBoYXNlXG4gICAgY29uc3QgcHJvY2Vzc2VkQXJndW1lbnRzID0gdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgIHR5cGVBcmd1bWVudHM6IHRoaXMuX3R5cGVBcmd1bWVudHMsXG4gICAgICBmdW5jdGlvbkFyZ3VtZW50czogcHJvY2Vzc2VkQXJndW1lbnRzLFxuICAgICAgYWJpOiB0aGlzLl9lbnRyeUZ1bmN0aW9uQWJpLFxuICAgIH0gYXMgSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGE7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhcmd1bWVudCBiYXNlZCBvbiBBQkkgdHlwZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0QXJndW1lbnRCeUFCSShhcmc6IGFueSwgcGFyYW1UeXBlOiBhbnkpOiBhbnkge1xuICAgIC8vIEhhbmRsZSBwcmltaXRpdmUgdmFsdWVzIChzdHJpbmcsIG51bWJlciwgYm9vbGVhbilcbiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0UHJpbWl0aXZlQXJndW1lbnQoYXJnLCBwYXJhbVR5cGUpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBCQ1MtZW5jb2RlZCBkYXRhIHdpdGggJ2RhdGEnIHByb3BlcnR5XG4gICAgaWYgKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gYXJnICYmIGFyZy5kYXRhKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0QmNzRGF0YUFyZ3VtZW50KGFyZywgcGFyYW1UeXBlKTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgbmVzdGVkIEJDUyBzdHJ1Y3R1cmVzIHdpdGggJ3ZhbHVlJyBwcm9wZXJ0eVxuICAgIGlmIChhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBhcmcgJiYgYXJnLnZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TmVzdGVkQmNzQXJndW1lbnQoYXJnLCBwYXJhbVR5cGUpO1xuICAgIH1cblxuICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCByZXR1cm4gYXMtaXNcbiAgICByZXR1cm4gYXJnO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgcHJpbWl0aXZlIGFyZ3VtZW50IHZhbHVlcyBiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0UHJpbWl0aXZlQXJndW1lbnQoXG4gICAgYXJnOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuLFxuICAgIHBhcmFtVHlwZTogYW55XG4gICk6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBBY2NvdW50QWRkcmVzcyB7XG4gICAgLy8gQWRkcmVzcyBjb252ZXJzaW9uIGZvciBoZXggc3RyaW5nc1xuICAgIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnQWRkcmVzcyAmJiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyAmJiBhcmcuc3RhcnRzV2l0aCgnMHgnKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLnRyeVBhcnNlQWNjb3VudEFkZHJlc3MoYXJnKTtcbiAgICB9XG5cbiAgICAvLyBUeXBlIGNvbnZlcnNpb25zIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlXG4gICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdCb29sKSByZXR1cm4gQm9vbGVhbihhcmcpO1xuXG4gICAgLy8gVXNlIHVuaWZpZWQgbnVtZXJpYyB0eXBlIGhhbmRsaW5nXG4gICAgaWYgKHRoaXMuaXNOdW1lcmljVHlwZShwYXJhbVR5cGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0UHJpbWl0aXZlTnVtZXJpY0FyZ3VtZW50KGFyZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHByaW1pdGl2ZSBudW1lcmljIGFyZ3VtZW50cyB0byBzdHJpbmdcbiAgICogLSBCaWcgbnVtYmVycyBicmVhayBKYXZhU2NyaXB0IChwcmVjaXNpb24gbG9zcylcbiAgICogLSBTdHJpbmcgc2FmZXIgZm9yIGxhcmdlIFU2NC9VMTI4L1UyNTYgdmFsdWVzXG4gICAqIC0gQXB0b3MgU0RLIGNvbnZlcnRzIHN0cmluZyB0byBjb3JyZWN0IHR5cGUgYXV0b21hdGljYWxseVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0UHJpbWl0aXZlTnVtZXJpY0FyZ3VtZW50KGFyZzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik6IHN0cmluZyB7XG4gICAgLy8gQWx3YXlzIHN0cmluZyAtIHNhZmVyIGZvciBiaWcgbnVtYmVyc1xuICAgIHJldHVybiBTdHJpbmcoYXJnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEJDUyBkYXRhIGFyZ3VtZW50IHdpdGggJ2RhdGEnIHByb3BlcnR5XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRCY3NEYXRhQXJndW1lbnQoYXJnOiBhbnksIHBhcmFtVHlwZTogYW55KTogc3RyaW5nIHwgQWNjb3VudEFkZHJlc3Mge1xuICAgIGNvbnN0IGJ5dGVzID0gQXJyYXkuZnJvbShhcmcuZGF0YSkgYXMgbnVtYmVyW107XG4gICAgY29uc3QgaGV4U3RyaW5nID0gdXRpbHMuYnl0ZXNUb0hleChieXRlcyk7XG5cbiAgICByZXR1cm4gcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0FkZHJlc3MgPyB1dGlscy50cnlQYXJzZUFjY291bnRBZGRyZXNzKGhleFN0cmluZykgOiBoZXhTdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBuZXN0ZWQgQkNTIGFyZ3VtZW50IHdpdGggJ3ZhbHVlJyBwcm9wZXJ0eVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0TmVzdGVkQmNzQXJndW1lbnQoYXJnOiBhbnksIHBhcmFtVHlwZTogYW55KTogYW55IHtcbiAgICAvLyBDaGVjayBpZiBpbm5lciB2YWx1ZSBpcyBhIFVpbnQ4QXJyYXkgKGNvbW1vbiBmb3IgVTY0IGFyZ3VtZW50cylcbiAgICBpZiAoYXJnLnZhbHVlLnZhbHVlICYmIGFyZy52YWx1ZS52YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gQXJyYXkuZnJvbShhcmcudmFsdWUudmFsdWUpIGFzIG51bWJlcltdO1xuICAgICAgaWYgKHRoaXMuaXNOdW1lcmljVHlwZShwYXJhbVR5cGUpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnROdW1lcmljQXJndW1lbnQoYnl0ZXMsIHBhcmFtVHlwZSk7XG4gICAgICB9XG4gICAgICAvLyBGb3Igbm9uLW51bWVyaWMgdHlwZXMsIGNvbnZlcnQgdG8gaGV4IHN0cmluZ1xuICAgICAgcmV0dXJuIHV0aWxzLmJ5dGVzVG9IZXgoYnl0ZXMpO1xuICAgIH1cblxuICAgIC8vIFNpbXBsZSB2YWx1ZSB3cmFwcGVyIC0gZml4IHRoZSBidWcgaW4gb3JpZ2luYWwgaW1wbGVtZW50YXRpb25cbiAgICBpZiAodHlwZW9mIGFyZy52YWx1ZSAhPT0gJ29iamVjdCcgfHwgISgndmFsdWUnIGluIGFyZy52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZy52YWx1ZSwgcGFyYW1UeXBlKTtcbiAgICB9XG5cbiAgICAvLyBEb3VibGUgbmVzdGVkIHN0cnVjdHVyZSB3aXRoIG51bWVyaWMga2V5c1xuICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5leHRyYWN0Qnl0ZXNGcm9tQmNzT2JqZWN0KGFyZy52YWx1ZS52YWx1ZSk7XG4gICAgaWYgKGJ5dGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFyZztcblxuICAgIGxldCBleHRyYWN0ZWRWYWx1ZTogYW55O1xuXG4gICAgLy8gQ29udmVydCBieXRlcyBiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZSB1c2luZyB1bmlmaWVkIGFwcHJvYWNoXG4gICAgaWYgKHRoaXMuaXNOdW1lcmljVHlwZShwYXJhbVR5cGUpKSB7XG4gICAgICBleHRyYWN0ZWRWYWx1ZSA9IHRoaXMuY29udmVydE51bWVyaWNBcmd1bWVudChieXRlcywgcGFyYW1UeXBlKTtcbiAgICB9IGVsc2UgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdBZGRyZXNzKSB7XG4gICAgICBleHRyYWN0ZWRWYWx1ZSA9IHV0aWxzLmJ5dGVzVG9IZXgoYnl0ZXMpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0Jvb2wpIHtcbiAgICAgIGV4dHJhY3RlZFZhbHVlID0gYnl0ZXNbMF0gPT09IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4dHJhY3RlZFZhbHVlID0gdXRpbHMuYnl0ZXNUb0hleChieXRlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29udmVydEFyZ3VtZW50QnlBQkkoZXh0cmFjdGVkVmFsdWUsIHBhcmFtVHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBieXRlcyBmcm9tIEJDUyBvYmplY3Qgd2l0aCBudW1lcmljIGtleXNcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdEJ5dGVzRnJvbUJjc09iamVjdChiY3NPYmplY3Q6IGFueSk6IG51bWJlcltdIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYmNzT2JqZWN0KVxuICAgICAgLmZpbHRlcigoaykgPT4gIWlzTmFOKHBhcnNlSW50KGssIDEwKSkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gcGFyc2VJbnQoYSwgMTApIC0gcGFyc2VJbnQoYiwgMTApKTtcblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIGtleXMubWFwKChrKSA9PiBiY3NPYmplY3Rba10pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXN0b20gdHJhbnNhY3Rpb24gcGFyYW1ldGVyc1xuICAgKi9cbiAgZ2V0Q3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMoKTogQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGVOYW1lOiB0aGlzLl9tb2R1bGVOYW1lIHx8ICcnLFxuICAgICAgZnVuY3Rpb25OYW1lOiB0aGlzLl9mdW5jdGlvbk5hbWUgfHwgJycsXG4gICAgICB0eXBlQXJndW1lbnRzOiB0aGlzLl90eXBlQXJndW1lbnRzLFxuICAgICAgZnVuY3Rpb25Bcmd1bWVudHM6IHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzLFxuICAgICAgYWJpOiB0aGlzLl9lbnRyeUZ1bmN0aW9uQWJpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogT3ZlcnJpZGUgcmVjaXBpZW50IGdldHRlciBmb3IgY3VzdG9tIHRyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0IHJlY2lwaWVudCgpOiBhbnkge1xuICAgIGlmICh0aGlzLl9yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWRkcmVzczogJycsXG4gICAgICAgIGFtb3VudDogJzAnLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3JlY2lwaWVudHNbMF07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHZhbGlkYXRlZCBmdWxsIGZ1bmN0aW9uIG5hbWVcbiAgICovXG4gIHByaXZhdGUgZ2V0VmFsaWRhdGVkRnVsbEZ1bmN0aW9uTmFtZSgpOiBgJHtzdHJpbmd9Ojoke3N0cmluZ306OiR7c3RyaW5nfWAge1xuICAgIGlmICghdGhpcy5fbW9kdWxlTmFtZSB8fCAhdGhpcy5fZnVuY3Rpb25OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01vZHVsZSBuYW1lIGFuZCBmdW5jdGlvbiBuYW1lIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxOYW1lID0gYCR7dGhpcy5fbW9kdWxlTmFtZX06OiR7dGhpcy5fZnVuY3Rpb25OYW1lfWA7XG5cbiAgICAvLyBCYXNpYyB2YWxpZGF0aW9uXG4gICAgY29uc3QgZnVsbEZ1bmN0aW9uUGF0dGVybiA9XG4gICAgICAvXigweFthLWZBLUYwLTldezEsNjR9fFthLXpBLVpfXVthLXpBLVowLTlfXSopOjpbYS16QS1aX11bYS16QS1aMC05X10qOjpbYS16QS1aX11bYS16QS1aMC05X10qJC87XG4gICAgaWYgKCFmdWxsRnVuY3Rpb25QYXR0ZXJuLnRlc3QoZnVsbE5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZnVsbCBmdW5jdGlvbiBuYW1lIGZvcm1hdDogXCIke2Z1bGxOYW1lfVwiLiBFeHBlY3RlZCBmb3JtYXQ6IFwiYWRkcmVzczo6bW9kdWxlOjpmdW5jdGlvblwiYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bGxOYW1lIGFzIGAke3N0cmluZ306OiR7c3RyaW5nfTo6JHtzdHJpbmd9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHBhcmFtZXRlciB0eXBlIGlzIGEgbnVtZXJpYyB0eXBlXG4gICAqL1xuICBwcml2YXRlIGlzTnVtZXJpY1R5cGUocGFyYW1UeXBlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1U4IHx8XG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTE2IHx8XG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTMyIHx8XG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTY0IHx8XG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTEyOCB8fFxuICAgICAgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UyNTZcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYnl0ZSBhcnJheXMgdG8gc3RyaW5nIG51bWJlcnNcbiAgICogLSBTbWFsbCB0eXBlcyAoVTgvVTE2L1UzMik6IDEtNCBieXRlcywgcGFyc2UgbWFudWFsbHlcbiAgICogLSBMYXJnZSB0eXBlcyAoVTY0L1UxMjgvVTI1Nik6IDgrIGJ5dGVzLCB1c2UgZXhpc3RpbmcgdXRpbGl0eVxuICAgKiAtIEJvdGggcmV0dXJuIHN0cmluZyBmb3IgY29uc2lzdGVuY3lcbiAgICovXG4gIHByaXZhdGUgY29udmVydE51bWVyaWNBcmd1bWVudChieXRlczogbnVtYmVyW10sIHBhcmFtVHlwZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1U4IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTYgfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UzMikge1xuICAgICAgLy8gU21hbGwgdHlwZXM6IHBhcnNlIGJ5dGVzIG1hbnVhbGx5ICgxLTQgYnl0ZXMpXG4gICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSBieXRlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAyNTYgKyBieXRlc1tpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1U2NCB8fCBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTEyOCB8fCBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTI1Nikge1xuICAgICAgLy8gTGFyZ2UgdHlwZXM6IHVzZSBleGlzdGluZyBtZXRob2QgKG5lZWRzIDgrIGJ5dGVzKVxuICAgICAgcmV0dXJuIHV0aWxzLmdldEFtb3VudEZyb21QYXlsb2FkQXJncyhuZXcgVWludDhBcnJheShieXRlcykpO1xuICAgIH1cblxuICAgIC8vIFVua25vd24gdHlwZTogY29udmVydCB0byBoZXhcbiAgICByZXR1cm4gdXRpbHMuYnl0ZXNUb0hleChieXRlcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
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 DelegationPoolAddStakeTransaction extends Transaction {
|
|
5
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected parseTransactionPayload(payload: TransactionPayload): void;
|
|
7
|
+
protected getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
8
|
+
private isValidPayload;
|
|
9
|
+
private abi;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=delegationPoolAddStakeTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegationPoolAddStakeTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/delegationPoolAddStakeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAGL,mCAAmC,EACnC,kBAAkB,EAInB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI7D,qBAAa,iCAAkC,SAAQ,WAAW;gBACpD,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM5C,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAUpE,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IAS1E,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,GAAG,CAGT;CACH"}
|
|
@@ -0,0 +1,46 @@
|
|
|
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.DelegationPoolAddStakeTransaction = 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 DelegationPoolAddStakeTransaction extends transaction_1.Transaction {
|
|
13
|
+
constructor(coinConfig) {
|
|
14
|
+
super(coinConfig);
|
|
15
|
+
this.abi = {
|
|
16
|
+
typeParameters: [],
|
|
17
|
+
parameters: [new ts_sdk_1.TypeTagAddress(), new ts_sdk_1.TypeTagU64()],
|
|
18
|
+
};
|
|
19
|
+
this._type = sdk_core_1.TransactionType.StakingDelegate;
|
|
20
|
+
this._assetId = constants_1.APTOS_COIN;
|
|
21
|
+
}
|
|
22
|
+
parseTransactionPayload(payload) {
|
|
23
|
+
if (!this.isValidPayload(payload)) {
|
|
24
|
+
throw new sdk_core_1.InvalidTransactionError('Invalid transaction payload');
|
|
25
|
+
}
|
|
26
|
+
const { entryFunction } = payload;
|
|
27
|
+
const addressArg = entryFunction.args[0];
|
|
28
|
+
const amountArg = entryFunction.args[1];
|
|
29
|
+
this.recipients = utils_1.default.parseRecipients(addressArg, amountArg);
|
|
30
|
+
}
|
|
31
|
+
getTransactionPayloadData() {
|
|
32
|
+
return {
|
|
33
|
+
function: constants_1.DELEGATION_POOL_ADD_STAKE_FUNCTION,
|
|
34
|
+
typeArguments: [],
|
|
35
|
+
functionArguments: [ts_sdk_1.AccountAddress.fromString(this.recipients[0].address), this.recipients[0].amount],
|
|
36
|
+
abi: this.abi,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
isValidPayload(payload) {
|
|
40
|
+
return (payload instanceof ts_sdk_1.TransactionPayloadEntryFunction &&
|
|
41
|
+
payload.entryFunction.args.length === 2 &&
|
|
42
|
+
payload.entryFunction.type_args.length === 0);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.DelegationPoolAddStakeTransaction = DelegationPoolAddStakeTransaction;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGlvblBvb2xBZGRTdGFrZVRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi9kZWxlZ2F0aW9uUG9vbEFkZFN0YWtlVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsK0NBQTRDO0FBQzVDLG1EQUFnRjtBQUNoRiwrQ0FRNEI7QUFHNUIsNENBQThFO0FBQzlFLHFEQUE2QjtBQUU3QixNQUFhLGlDQUFrQyxTQUFRLHlCQUFXO0lBQ2hFLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBZ0NaLFFBQUcsR0FBcUI7WUFDOUIsY0FBYyxFQUFFLEVBQUU7WUFDbEIsVUFBVSxFQUFFLENBQUMsSUFBSSx1QkFBYyxFQUFFLEVBQUUsSUFBSSxtQkFBVSxFQUFFLENBQUM7U0FDckQsQ0FBQztRQWxDQSxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsZUFBZSxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQVUsQ0FBQztJQUM3QixDQUFDO0lBRVMsdUJBQXVCLENBQUMsT0FBMkI7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksa0NBQXVCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxlQUFLLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRVMseUJBQXlCO1FBQ2pDLE9BQU87WUFDTCxRQUFRLEVBQUUsOENBQWtDO1lBQzVDLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLGlCQUFpQixFQUFFLENBQUMsdUJBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNyRyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUEyQjtRQUNoRCxPQUFPLENBQ0wsT0FBTyxZQUFZLHdDQUErQjtZQUNsRCxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN2QyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUM3QyxDQUFDO0lBQ0osQ0FBQztDQU1GO0FBdENELDhFQXNDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQWNjb3VudEFkZHJlc3MsXG4gIEVudHJ5RnVuY3Rpb25BQkksXG4gIElucHV0R2VuZXJhdGVUcmFuc2FjdGlvblBheWxvYWREYXRhLFxuICBUcmFuc2FjdGlvblBheWxvYWQsXG4gIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24sXG4gIFR5cGVUYWdBZGRyZXNzLFxuICBUeXBlVGFnVTY0LFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuXG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBBUFRPU19DT0lOLCBERUxFR0FUSU9OX1BPT0xfQUREX1NUQUtFX0ZVTkNUSU9OIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBEZWxlZ2F0aW9uUG9vbEFkZFN0YWtlVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVsZWdhdGU7XG4gICAgdGhpcy5fYXNzZXRJZCA9IEFQVE9TX0NPSU47XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VUcmFuc2FjdGlvblBheWxvYWQocGF5bG9hZDogVHJhbnNhY3Rpb25QYXlsb2FkKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRQYXlsb2FkKHBheWxvYWQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gcGF5bG9hZCcpO1xuICAgIH1cbiAgICBjb25zdCB7IGVudHJ5RnVuY3Rpb24gfSA9IHBheWxvYWQ7XG4gICAgY29uc3QgYWRkcmVzc0FyZyA9IGVudHJ5RnVuY3Rpb24uYXJnc1swXTtcbiAgICBjb25zdCBhbW91bnRBcmcgPSBlbnRyeUZ1bmN0aW9uLmFyZ3NbMV07XG4gICAgdGhpcy5yZWNpcGllbnRzID0gdXRpbHMucGFyc2VSZWNpcGllbnRzKGFkZHJlc3NBcmcsIGFtb3VudEFyZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25QYXlsb2FkRGF0YSgpOiBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bmN0aW9uOiBERUxFR0FUSU9OX1BPT0xfQUREX1NUQUtFX0ZVTkNUSU9OLFxuICAgICAgdHlwZUFyZ3VtZW50czogW10sXG4gICAgICBmdW5jdGlvbkFyZ3VtZW50czogW0FjY291bnRBZGRyZXNzLmZyb21TdHJpbmcodGhpcy5yZWNpcGllbnRzWzBdLmFkZHJlc3MpLCB0aGlzLnJlY2lwaWVudHNbMF0uYW1vdW50XSxcbiAgICAgIGFiaTogdGhpcy5hYmksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZFBheWxvYWQocGF5bG9hZDogVHJhbnNhY3Rpb25QYXlsb2FkKTogcGF5bG9hZCBpcyBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uIHtcbiAgICByZXR1cm4gKFxuICAgICAgcGF5bG9hZCBpbnN0YW5jZW9mIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24gJiZcbiAgICAgIHBheWxvYWQuZW50cnlGdW5jdGlvbi5hcmdzLmxlbmd0aCA9PT0gMiAmJlxuICAgICAgcGF5bG9hZC5lbnRyeUZ1bmN0aW9uLnR5cGVfYXJncy5sZW5ndGggPT09IDBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhYmk6IEVudHJ5RnVuY3Rpb25BQkkgPSB7XG4gICAgdHlwZVBhcmFtZXRlcnM6IFtdLFxuICAgIHBhcmFtZXRlcnM6IFtuZXcgVHlwZVRhZ0FkZHJlc3MoKSwgbmV3IFR5cGVUYWdVNjQoKV0sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
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 DigitalAssetTransfer extends Transaction {
|
|
5
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
6
|
+
protected parseTransactionPayload(payload: TransactionPayload): void;
|
|
7
|
+
protected getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
8
|
+
private transferDigitalAssetAbi;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=digitalAssetTransfer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digitalAssetTransfer.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/digitalAssetTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAGL,mCAAmC,EAGnC,kBAAkB,EAKnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAO7D,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAmBpE,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IAY1E,OAAO,CAAC,uBAAuB,CAG7B;CACH"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DigitalAssetTransfer = void 0;
|
|
4
|
+
const transaction_1 = require("./transaction");
|
|
5
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
6
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
7
|
+
const constants_1 = require("../constants");
|
|
8
|
+
class DigitalAssetTransfer extends transaction_1.Transaction {
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRhbEFzc2V0VHJhbnNmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2RpZ2l0YWxBc3NldFRyYW5zZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUE0QztBQUM1QywrQ0FXNEI7QUFDNUIsbURBQXNHO0FBRXRHLDRDQUlzQjtBQUV0QixNQUFhLG9CQUFxQixTQUFRLHlCQUFXO0lBQ25ELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBbUNaLDRCQUF1QixHQUFxQjtZQUNsRCxjQUFjLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLG9CQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRCxVQUFVLEVBQUUsQ0FBQyxJQUFJLHNCQUFhLENBQUMsSUFBQSx3QkFBZSxFQUFDLElBQUksdUJBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSx1QkFBYyxFQUFFLENBQUM7U0FDOUYsQ0FBQztRQXJDQSxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLENBQUM7SUFFUyx1QkFBdUIsQ0FBQyxPQUEyQjtRQUMzRCxJQUNFLENBQUMsQ0FBQyxPQUFPLFlBQVksd0NBQStCLENBQUM7WUFDckQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDdkMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDNUMsdUNBQTJCLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQzdFLENBQUM7WUFDRCxNQUFNLElBQUksa0NBQXVCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQjtnQkFDRSxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pDLE1BQU0sRUFBRSx5Q0FBNkI7YUFDdEM7U0FDd0IsQ0FBQztJQUM5QixDQUFDO0lBRVMseUJBQXlCO1FBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsdUJBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRSxNQUFNLG1CQUFtQixHQUFHLHVCQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyRSxPQUFPO1lBQ0wsUUFBUSxFQUFFLDJDQUErQjtZQUN6QyxhQUFhLEVBQUUsQ0FBQyx1Q0FBMkIsQ0FBQztZQUM1QyxpQkFBaUIsRUFBRSxDQUFDLG1CQUFtQixFQUFFLGdCQUFnQixDQUFDO1lBQzFELEdBQUcsRUFBRSxJQUFJLENBQUMsdUJBQXVCO1NBQ2xDLENBQUM7SUFDSixDQUFDO0NBTUY7QUF6Q0Qsb0RBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIEFjY291bnRBZGRyZXNzLFxuICBFbnRyeUZ1bmN0aW9uQUJJLFxuICBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSxcbiAgTW92ZUFiaWxpdHksXG4gIG9iamVjdFN0cnVjdFRhZyxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxuICBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uLFxuICBUeXBlVGFnQWRkcmVzcyxcbiAgVHlwZVRhZ0dlbmVyaWMsXG4gIFR5cGVUYWdTdHJ1Y3QsXG59IGZyb20gJ0BhcHRvcy1sYWJzL3RzLXNkayc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25SZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIERJR0lUQUxfQVNTRVRfVFlQRV9BUkdVTUVOVCxcbiAgRElHSVRBTF9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTixcbiAgRElHSVRBTF9BU1NFVF9UUkFOU0ZFUl9BTU9VTlQsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdGFsQXNzZXRUcmFuc2ZlciBleHRlbmRzIFRyYW5zYWN0aW9uIHtcbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLlNlbmRORlQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VUcmFuc2FjdGlvblBheWxvYWQocGF5bG9hZDogVHJhbnNhY3Rpb25QYXlsb2FkKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIShwYXlsb2FkIGluc3RhbmNlb2YgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbikgfHxcbiAgICAgIHBheWxvYWQuZW50cnlGdW5jdGlvbi5hcmdzLmxlbmd0aCAhPT0gMiB8fFxuICAgICAgcGF5bG9hZC5lbnRyeUZ1bmN0aW9uLnR5cGVfYXJncy5sZW5ndGggIT09IDEgfHxcbiAgICAgIERJR0lUQUxfQVNTRVRfVFlQRV9BUkdVTUVOVCAhPT0gcGF5bG9hZC5lbnRyeUZ1bmN0aW9uLnR5cGVfYXJnc1swXS50b1N0cmluZygpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gcGF5bG9hZCcpO1xuICAgIH1cbiAgICBjb25zdCBlbnRyeUZ1bmN0aW9uID0gcGF5bG9hZC5lbnRyeUZ1bmN0aW9uO1xuICAgIHRoaXMuX2Fzc2V0SWQgPSBlbnRyeUZ1bmN0aW9uLmFyZ3NbMF0udG9TdHJpbmcoKTtcbiAgICB0aGlzLnJlY2lwaWVudHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IGVudHJ5RnVuY3Rpb24uYXJnc1sxXS50b1N0cmluZygpLFxuICAgICAgICBhbW91bnQ6IERJR0lUQUxfQVNTRVRfVFJBTlNGRVJfQU1PVU5ULFxuICAgICAgfSxcbiAgICBdIGFzIFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25QYXlsb2FkRGF0YSgpOiBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSB7XG4gICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcodGhpcy5yZWNpcGllbnRzWzBdLmFkZHJlc3MpO1xuICAgIGNvbnN0IGRpZ2l0YWxBc3NldEFkZHJlc3MgPSBBY2NvdW50QWRkcmVzcy5mcm9tU3RyaW5nKHRoaXMuX2Fzc2V0SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bmN0aW9uOiBESUdJVEFMX0FTU0VUX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICAgICAgdHlwZUFyZ3VtZW50czogW0RJR0lUQUxfQVNTRVRfVFlQRV9BUkdVTUVOVF0sXG4gICAgICBmdW5jdGlvbkFyZ3VtZW50czogW2RpZ2l0YWxBc3NldEFkZHJlc3MsIHJlY2lwaWVudEFkZHJlc3NdLFxuICAgICAgYWJpOiB0aGlzLnRyYW5zZmVyRGlnaXRhbEFzc2V0QWJpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZmVyRGlnaXRhbEFzc2V0QWJpOiBFbnRyeUZ1bmN0aW9uQUJJID0ge1xuICAgIHR5cGVQYXJhbWV0ZXJzOiBbeyBjb25zdHJhaW50czogW01vdmVBYmlsaXR5LktFWV0gfV0sXG4gICAgcGFyYW1ldGVyczogW25ldyBUeXBlVGFnU3RydWN0KG9iamVjdFN0cnVjdFRhZyhuZXcgVHlwZVRhZ0dlbmVyaWMoMCkpKSwgbmV3IFR5cGVUYWdBZGRyZXNzKCldLFxuICB9O1xufVxuIl19
|
|
@@ -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 FungibleAssetTransfer extends Transaction {
|
|
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,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAGL,mCAAmC,EAEnC,kBAAkB,EAKnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAU7D,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,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"}
|