@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.
Files changed (118) hide show
  1. package/dist/src/apt.d.ts +9 -2
  2. package/dist/src/apt.d.ts.map +1 -1
  3. package/dist/src/apt.js +37 -11
  4. package/dist/src/aptNFTCollection.d.ts +18 -0
  5. package/dist/src/aptNFTCollection.d.ts.map +1 -0
  6. package/dist/src/aptNFTCollection.js +52 -0
  7. package/dist/src/aptToken.d.ts +19 -0
  8. package/dist/src/aptToken.d.ts.map +1 -0
  9. package/dist/src/aptToken.js +52 -0
  10. package/dist/src/index.d.ts +2 -0
  11. package/dist/src/index.d.ts.map +1 -1
  12. package/dist/src/index.js +3 -1
  13. package/dist/src/lib/constants.d.ts +14 -0
  14. package/dist/src/lib/constants.d.ts.map +1 -1
  15. package/dist/src/lib/constants.js +16 -2
  16. package/dist/src/lib/iface.d.ts +91 -1
  17. package/dist/src/lib/iface.d.ts.map +1 -1
  18. package/dist/src/lib/iface.js +1 -1
  19. package/dist/src/lib/index.d.ts +8 -2
  20. package/dist/src/lib/index.d.ts.map +1 -1
  21. package/dist/src/lib/index.js +16 -4
  22. package/dist/src/lib/transaction/customTransaction.d.ts +89 -0
  23. package/dist/src/lib/transaction/customTransaction.d.ts.map +1 -0
  24. package/dist/src/lib/transaction/customTransaction.js +278 -0
  25. package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts +11 -0
  26. package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.d.ts.map +1 -0
  27. package/dist/src/lib/transaction/delegationPoolAddStakeTransaction.js +46 -0
  28. package/dist/src/lib/transaction/digitalAssetTransfer.d.ts +10 -0
  29. package/dist/src/lib/transaction/digitalAssetTransfer.d.ts.map +1 -0
  30. package/dist/src/lib/transaction/digitalAssetTransfer.js +45 -0
  31. package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts +12 -0
  32. package/dist/src/lib/transaction/fungibleAssetTransfer.d.ts.map +1 -0
  33. package/dist/src/lib/transaction/fungibleAssetTransfer.js +73 -0
  34. package/dist/src/lib/transaction/transaction.d.ts +35 -6
  35. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  36. package/dist/src/lib/transaction/transaction.js +181 -54
  37. package/dist/src/lib/transaction/transferTransaction.d.ts +8 -6
  38. package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -1
  39. package/dist/src/lib/transaction/transferTransaction.js +45 -37
  40. package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts +64 -0
  41. package/dist/src/lib/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/transactionBuilder/customTransactionBuilder.js +127 -0
  43. package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +12 -0
  44. package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +45 -0
  46. package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts +14 -0
  47. package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.js +55 -0
  49. package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts +15 -0
  50. package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.js +61 -0
  52. package/dist/src/lib/{transactionBuilder.d.ts → transactionBuilder/transactionBuilder.d.ts} +25 -11
  53. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transactionBuilder/transactionBuilder.js +169 -0
  55. package/dist/src/lib/{transferBuilder.d.ts → transactionBuilder/transferBuilder.d.ts} +5 -7
  56. package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/transactionBuilder/transferBuilder.js +56 -0
  58. package/dist/src/lib/transactionBuilderFactory.d.ts +22 -10
  59. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  60. package/dist/src/lib/transactionBuilderFactory.js +64 -18
  61. package/dist/src/lib/utils/validation.d.ts +32 -0
  62. package/dist/src/lib/utils/validation.d.ts.map +1 -0
  63. package/dist/src/lib/utils/validation.js +99 -0
  64. package/dist/src/lib/utils.d.ts +29 -5
  65. package/dist/src/lib/utils.d.ts.map +1 -1
  66. package/dist/src/lib/utils.js +107 -28
  67. package/dist/src/register.d.ts.map +1 -1
  68. package/dist/src/register.js +9 -1
  69. package/dist/test/integration/index.d.ts +1 -0
  70. package/dist/test/integration/index.d.ts.map +1 -0
  71. package/dist/test/integration/index.js +1 -0
  72. package/dist/test/resources/apt.d.ts +49 -0
  73. package/dist/test/resources/apt.d.ts.map +1 -0
  74. package/dist/test/resources/apt.js +113 -0
  75. package/dist/test/unit/apt.d.ts +2 -0
  76. package/dist/test/unit/apt.d.ts.map +1 -0
  77. package/dist/test/unit/apt.js +375 -0
  78. package/dist/test/unit/aptToken.d.ts +2 -0
  79. package/dist/test/unit/aptToken.d.ts.map +1 -0
  80. package/dist/test/unit/aptToken.js +92 -0
  81. package/dist/test/unit/customTransaction.test.d.ts +2 -0
  82. package/dist/test/unit/customTransaction.test.d.ts.map +1 -0
  83. package/dist/test/unit/customTransaction.test.js +264 -0
  84. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  85. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  86. package/dist/test/unit/getBuilderFactory.js +10 -0
  87. package/dist/test/unit/keyPair.d.ts +2 -0
  88. package/dist/test/unit/keyPair.d.ts.map +1 -0
  89. package/dist/test/unit/keyPair.js +71 -0
  90. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
  91. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
  92. package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +743 -0
  93. package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts +2 -0
  94. package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.d.ts.map +1 -0
  95. package/dist/test/unit/transactionBuilder/delegationPoolAddStakeTransactionBuilder.js +185 -0
  96. package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts +2 -0
  97. package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
  98. package/dist/test/unit/transactionBuilder/digitalAssetTransferBuilder.js +276 -0
  99. package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts +2 -0
  100. package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
  101. package/dist/test/unit/transactionBuilder/fungibleAssetTransferBuilder.js +449 -0
  102. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  103. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  104. package/dist/test/unit/transactionBuilder/transferBuilder.js +529 -0
  105. package/dist/test/unit/utils.d.ts +2 -0
  106. package/dist/test/unit/utils.d.ts.map +1 -0
  107. package/dist/test/unit/utils.js +108 -0
  108. package/dist/tsconfig.tsbuildinfo +1 -0
  109. package/package.json +14 -11
  110. package/.eslintignore +0 -4
  111. package/.gitignore +0 -3
  112. package/.mocharc.yml +0 -8
  113. package/.prettierignore +0 -2
  114. package/CHANGELOG.md +0 -62
  115. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  116. package/dist/src/lib/transactionBuilder.js +0 -118
  117. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  118. package/dist/src/lib/transferBuilder.js +0 -25
@@ -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 transactionBuilder_1 = require("./transactionBuilder");
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQVNiLHNCQUFLO0FBUnpCLG1EQUFxQztBQVE1Qiw4QkFBUztBQU5sQixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLHlEQUF3RDtBQUEvQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIseUVBQXdFO0FBQS9ELDBIQUFBLG1CQUFtQixPQUFBO0FBQzVCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQixxREFBb0Q7QUFBM0Msa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
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"}