@bitgo-beta/sdk-coin-apt 0.0.0-semantic-release-managed
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/.eslintignore +4 -0
- package/.mocharc.yml +8 -0
- package/CHANGELOG.md +330 -0
- package/LICENSE +191 -0
- package/README.md +30 -0
- package/dist/src/apt.d.ts +44 -0
- package/dist/src/apt.d.ts.map +1 -0
- package/dist/src/apt.js +212 -0
- 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 +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +23 -0
- package/dist/src/lib/constants.d.ts +21 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +24 -0
- package/dist/src/lib/iface.d.ts +108 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- package/dist/src/lib/index.d.ts +16 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +65 -0
- package/dist/src/lib/keyPair.d.ts +18 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +44 -0
- package/dist/src/lib/transaction/customTransaction.d.ts +54 -0
- package/dist/src/lib/transaction/customTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/customTransaction.js +228 -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 +81 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +332 -0
- package/dist/src/lib/transaction/transferTransaction.d.ts +12 -0
- package/dist/src/lib/transaction/transferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transferTransaction.js +63 -0
- package/dist/src/lib/transactionBuilder/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/digitalAssetTransferBuilder.d.ts +14 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/digitalAssetTransferBuilder.js +55 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts +15 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/fungibleAssetTransferBuilder.js +61 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +68 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transactionBuilder.js +169 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts +13 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder/transferBuilder.js +56 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +39 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +99 -0
- package/dist/src/lib/types.d.ts +9 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +3 -0
- package/dist/src/lib/utils/validation.d.ts +32 -0
- package/dist/src/lib/utils/validation.d.ts.map +1 -0
- package/dist/src/lib/utils/validation.js +99 -0
- package/dist/src/lib/utils.d.ts +42 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +150 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +19 -0
- package/dist/src/tapt.d.ts +17 -0
- package/dist/src/tapt.d.ts.map +1 -0
- package/dist/src/tapt.js +30 -0
- package/package.json +55 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as Utils from './utils';
|
|
2
|
+
import * as Interface from './iface';
|
|
3
|
+
export { KeyPair } from './keyPair';
|
|
4
|
+
export { Transaction } from './transaction/transaction';
|
|
5
|
+
export { TransferTransaction } from './transaction/transferTransaction';
|
|
6
|
+
export { FungibleAssetTransfer } from './transaction/fungibleAssetTransfer';
|
|
7
|
+
export { DigitalAssetTransfer } from './transaction/digitalAssetTransfer';
|
|
8
|
+
export { CustomTransaction } from './transaction/customTransaction';
|
|
9
|
+
export { TransactionBuilder } from './transactionBuilder/transactionBuilder';
|
|
10
|
+
export { TransferBuilder } from './transactionBuilder/transferBuilder';
|
|
11
|
+
export { FungibleAssetTransferBuilder } from './transactionBuilder/fungibleAssetTransferBuilder';
|
|
12
|
+
export { DigitalAssetTransferBuilder } from './transactionBuilder/digitalAssetTransferBuilder';
|
|
13
|
+
export { CustomTransactionBuilder } from './transactionBuilder/customTransactionBuilder';
|
|
14
|
+
export { TransactionBuilderFactory } from './transactionBuilderFactory';
|
|
15
|
+
export { Interface, Utils };
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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
|
+
const Utils = __importStar(require("./utils"));
|
|
38
|
+
exports.Utils = Utils;
|
|
39
|
+
const Interface = __importStar(require("./iface"));
|
|
40
|
+
exports.Interface = Interface;
|
|
41
|
+
var keyPair_1 = require("./keyPair");
|
|
42
|
+
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
|
|
43
|
+
var transaction_1 = require("./transaction/transaction");
|
|
44
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
45
|
+
var transferTransaction_1 = require("./transaction/transferTransaction");
|
|
46
|
+
Object.defineProperty(exports, "TransferTransaction", { enumerable: true, get: function () { return transferTransaction_1.TransferTransaction; } });
|
|
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");
|
|
54
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
55
|
+
var transferBuilder_1 = require("./transactionBuilder/transferBuilder");
|
|
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; } });
|
|
63
|
+
var transactionBuilderFactory_1 = require("./transactionBuilderFactory");
|
|
64
|
+
Object.defineProperty(exports, "TransactionBuilderFactory", { enumerable: true, get: function () { return transactionBuilderFactory_1.TransactionBuilderFactory; } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQWViLHNCQUFLO0FBZHpCLG1EQUFxQztBQWM1Qiw4QkFBUztBQVpsQixxQ0FBb0M7QUFBM0Isa0dBQUEsT0FBTyxPQUFBO0FBQ2hCLHlEQUF3RDtBQUEvQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIseUVBQXdFO0FBQS9ELDBIQUFBLG1CQUFtQixPQUFBO0FBQzVCLDZFQUE0RTtBQUFuRSw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QiwyRUFBMEU7QUFBakUsNEhBQUEsb0JBQW9CLE9BQUE7QUFDN0IscUVBQW9FO0FBQTNELHNIQUFBLGlCQUFpQixPQUFBO0FBQzFCLDhFQUE2RTtBQUFwRSx3SEFBQSxrQkFBa0IsT0FBQTtBQUMzQix3RUFBdUU7QUFBOUQsa0hBQUEsZUFBZSxPQUFBO0FBQ3hCLGtHQUFpRztBQUF4Riw0SUFBQSw0QkFBNEIsT0FBQTtBQUNyQyxnR0FBK0Y7QUFBdEYsMElBQUEsMkJBQTJCLE9BQUE7QUFDcEMsMEZBQXlGO0FBQWhGLG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHlFQUF3RTtBQUEvRCxzSUFBQSx5QkFBeUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgSW50ZXJmYWNlIGZyb20gJy4vaWZhY2UnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5leHBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmV4cG9ydCB7IEZ1bmdpYmxlQXNzZXRUcmFuc2ZlciB9IGZyb20gJy4vdHJhbnNhY3Rpb24vZnVuZ2libGVBc3NldFRyYW5zZmVyJztcbmV4cG9ydCB7IERpZ2l0YWxBc3NldFRyYW5zZmVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbi9kaWdpdGFsQXNzZXRUcmFuc2Zlcic7XG5leHBvcnQgeyBDdXN0b21UcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vY3VzdG9tVHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyL3RyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBGdW5naWJsZUFzc2V0VHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvZnVuZ2libGVBc3NldFRyYW5zZmVyQnVpbGRlcic7XG5leHBvcnQgeyBEaWdpdGFsQXNzZXRUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlci9kaWdpdGFsQXNzZXRUcmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgQ3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXIvY3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuZXhwb3J0IHsgSW50ZXJmYWNlLCBVdGlscyB9O1xuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DefaultKeys, Ed25519KeyPair, KeyPairOptions } from '@bitgo-beta/sdk-core';
|
|
2
|
+
export declare class KeyPair extends Ed25519KeyPair {
|
|
3
|
+
/**
|
|
4
|
+
* Public constructor. By default, creates a key pair with a random master seed.
|
|
5
|
+
*
|
|
6
|
+
* @param { KeyPairOptions } source Either a master seed, a private key, or a public key
|
|
7
|
+
*/
|
|
8
|
+
constructor(source?: KeyPairOptions);
|
|
9
|
+
/** @inheritdoc */
|
|
10
|
+
getKeys(): DefaultKeys;
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
recordKeysFromPrivateKeyInProtocolFormat(prv: string): DefaultKeys;
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
recordKeysFromPublicKeyInProtocolFormat(pub: string): DefaultKeys;
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
getAddress(): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=keyPair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGnF,qBAAa,OAAQ,SAAQ,cAAc;IACzC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAInC,kBAAkB;IAClB,OAAO,IAAI,WAAW;IAQtB,kBAAkB;IAClB,wCAAwC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAKlE,kBAAkB;IAClB,uCAAuC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAQjE,kBAAkB;IAClB,UAAU,IAAI,MAAM;CAGrB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
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.KeyPair = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
9
|
+
class KeyPair extends sdk_core_1.Ed25519KeyPair {
|
|
10
|
+
/**
|
|
11
|
+
* Public constructor. By default, creates a key pair with a random master seed.
|
|
12
|
+
*
|
|
13
|
+
* @param { KeyPairOptions } source Either a master seed, a private key, or a public key
|
|
14
|
+
*/
|
|
15
|
+
constructor(source) {
|
|
16
|
+
super(source);
|
|
17
|
+
}
|
|
18
|
+
/** @inheritdoc */
|
|
19
|
+
getKeys() {
|
|
20
|
+
const result = { pub: this.keyPair.pub };
|
|
21
|
+
if (this.keyPair.prv) {
|
|
22
|
+
result.prv = this.keyPair.prv;
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
recordKeysFromPrivateKeyInProtocolFormat(prv) {
|
|
28
|
+
// We don't use private keys for APT since it's implemented for TSS.
|
|
29
|
+
throw new Error('Method not implemented.');
|
|
30
|
+
}
|
|
31
|
+
/** @inheritdoc */
|
|
32
|
+
recordKeysFromPublicKeyInProtocolFormat(pub) {
|
|
33
|
+
if (!utils_1.default.isValidPublicKey(pub)) {
|
|
34
|
+
throw new Error(`Invalid Public Key ${pub}`);
|
|
35
|
+
}
|
|
36
|
+
return { pub };
|
|
37
|
+
}
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
getAddress() {
|
|
40
|
+
return utils_1.default.getAddressFromPublicKey(this.keyPair.pub);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.KeyPair = KeyPair;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBbUY7QUFDbkYsb0RBQTRCO0FBRTVCLE1BQWEsT0FBUSxTQUFRLHlCQUFjO0lBQ3pDOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU87UUFDTCxNQUFNLE1BQU0sR0FBZ0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix3Q0FBd0MsQ0FBQyxHQUFXO1FBQ2xELG9FQUFvRTtRQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1Q0FBdUMsQ0FBQyxHQUFXO1FBQ2pELElBQUksQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixVQUFVO1FBQ1IsT0FBTyxlQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0Y7QUF0Q0QsMEJBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEtleXMsIEVkMjU1MTlLZXlQYWlyLCBLZXlQYWlyT3B0aW9ucyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBFZDI1NTE5S2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0S2V5cygpOiBEZWZhdWx0S2V5cyB7XG4gICAgY29uc3QgcmVzdWx0OiBEZWZhdWx0S2V5cyA9IHsgcHViOiB0aGlzLmtleVBhaXIucHViIH07XG4gICAgaWYgKHRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIHJlc3VsdC5wcnYgPSB0aGlzLmtleVBhaXIucHJ2O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgLy8gV2UgZG9uJ3QgdXNlIHByaXZhdGUga2V5cyBmb3IgQVBUIHNpbmNlIGl0J3MgaW1wbGVtZW50ZWQgZm9yIFRTUy5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXlJblByb3RvY29sRm9ybWF0KHB1Yjogc3RyaW5nKTogRGVmYXVsdEtleXMge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgUHVibGljIEtleSAke3B1Yn1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBwdWIgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHRoaXMua2V5UGFpci5wdWIpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
*
|
|
30
|
+
* @param {TransactionPayload} payload - The transaction payload to parse
|
|
31
|
+
*/
|
|
32
|
+
protected parseTransactionPayload(payload: TransactionPayload): void;
|
|
33
|
+
/**
|
|
34
|
+
* Generate transaction payload data
|
|
35
|
+
*/
|
|
36
|
+
protected getTransactionPayloadData(): InputGenerateTransactionPayloadData;
|
|
37
|
+
/**
|
|
38
|
+
* Convert argument based on ABI type information
|
|
39
|
+
*/
|
|
40
|
+
private convertArgumentByABI;
|
|
41
|
+
/**
|
|
42
|
+
* Get custom transaction parameters
|
|
43
|
+
*/
|
|
44
|
+
getCustomTransactionParams(): CustomTransactionParams;
|
|
45
|
+
/**
|
|
46
|
+
* Override recipient getter for custom transactions
|
|
47
|
+
*/
|
|
48
|
+
get recipient(): any;
|
|
49
|
+
/**
|
|
50
|
+
* Get validated full function name
|
|
51
|
+
*/
|
|
52
|
+
private getValidatedFullFunctionName;
|
|
53
|
+
}
|
|
54
|
+
//# 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,EACL,gBAAgB,EAGhB,mCAAmC,EACnC,kBAAkB,EAWnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAGnD;;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;;;;OAIG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAkCpE;;OAEG;IACH,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IA8B1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuF5B;;OAEG;IACH,0BAA0B,IAAI,uBAAuB;IAUrD;;OAEG;IACH,IAAI,SAAS,IAAI,GAAG,CAQnB;IAED;;OAEG;IACH,OAAO,CAAC,4BAA4B;CAgBrC"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomTransaction = void 0;
|
|
4
|
+
const transaction_1 = require("./transaction");
|
|
5
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
6
|
+
const ts_sdk_1 = require("@aptos-labs/ts-sdk");
|
|
7
|
+
const validation_1 = require("../utils/validation");
|
|
8
|
+
/**
|
|
9
|
+
* Transaction class for custom Aptos transactions.
|
|
10
|
+
*/
|
|
11
|
+
class CustomTransaction extends transaction_1.Transaction {
|
|
12
|
+
constructor(coinConfig) {
|
|
13
|
+
super(coinConfig);
|
|
14
|
+
this._typeArguments = [];
|
|
15
|
+
this._functionArguments = [];
|
|
16
|
+
this._type = sdk_core_1.TransactionType.CustomTx;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Set the custom transaction parameters
|
|
20
|
+
*/
|
|
21
|
+
setCustomTransactionParams(params) {
|
|
22
|
+
(0, validation_1.validateModuleName)(params.moduleName);
|
|
23
|
+
(0, validation_1.validateFunctionName)(params.functionName);
|
|
24
|
+
this._moduleName = params.moduleName;
|
|
25
|
+
this._functionName = params.functionName;
|
|
26
|
+
this._typeArguments = params.typeArguments || [];
|
|
27
|
+
this._functionArguments = params.functionArguments || [];
|
|
28
|
+
this._entryFunctionAbi = params.abi;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Set the entry function ABI
|
|
32
|
+
*/
|
|
33
|
+
setEntryFunctionAbi(abi) {
|
|
34
|
+
this._entryFunctionAbi = abi;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the full function name
|
|
38
|
+
*/
|
|
39
|
+
get fullFunctionName() {
|
|
40
|
+
if (!this._moduleName || !this._functionName) {
|
|
41
|
+
return '';
|
|
42
|
+
}
|
|
43
|
+
return `${this._moduleName}::${this._functionName}`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse a transaction payload to extract the custom transaction data
|
|
47
|
+
*
|
|
48
|
+
* @param {TransactionPayload} payload - The transaction payload to parse
|
|
49
|
+
*/
|
|
50
|
+
parseTransactionPayload(payload) {
|
|
51
|
+
if (!(payload instanceof ts_sdk_1.TransactionPayloadEntryFunction)) {
|
|
52
|
+
throw new sdk_core_1.InvalidTransactionError('Expected entry function payload for custom transaction');
|
|
53
|
+
}
|
|
54
|
+
const entryFunction = payload.entryFunction;
|
|
55
|
+
// Extract function data
|
|
56
|
+
const moduleAddress = entryFunction.module_name.address.toString();
|
|
57
|
+
const moduleIdentifier = entryFunction.module_name.name.identifier;
|
|
58
|
+
const functionIdentifier = entryFunction.function_name.identifier;
|
|
59
|
+
const moduleName = `${moduleAddress}::${moduleIdentifier}`;
|
|
60
|
+
// Validate
|
|
61
|
+
(0, validation_1.validateModuleName)(moduleName);
|
|
62
|
+
(0, validation_1.validateFunctionName)(functionIdentifier);
|
|
63
|
+
this._moduleName = moduleName;
|
|
64
|
+
this._functionName = functionIdentifier;
|
|
65
|
+
this._typeArguments = entryFunction.type_args.map((typeArg) => typeArg.toString());
|
|
66
|
+
this._functionArguments = entryFunction.args.map((arg) => {
|
|
67
|
+
if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {
|
|
68
|
+
return arg;
|
|
69
|
+
}
|
|
70
|
+
if (arg && typeof arg === 'object' && 'data' in arg && arg.data) {
|
|
71
|
+
const bytes = Array.from(arg.data);
|
|
72
|
+
return '0x' + bytes.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
73
|
+
}
|
|
74
|
+
return arg;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generate transaction payload data
|
|
79
|
+
*/
|
|
80
|
+
getTransactionPayloadData() {
|
|
81
|
+
const functionName = this.getValidatedFullFunctionName();
|
|
82
|
+
// Convert arguments based on ABI information if available
|
|
83
|
+
const processedArguments = this._functionArguments.map((arg, index) => {
|
|
84
|
+
// Use ABI to identify the expected type for this argument
|
|
85
|
+
const paramType = this._entryFunctionAbi?.parameters?.[index];
|
|
86
|
+
if (paramType) {
|
|
87
|
+
return this.convertArgumentByABI(arg, paramType);
|
|
88
|
+
}
|
|
89
|
+
// Fallback: basic conversion for common cases
|
|
90
|
+
if (typeof arg === 'string' && arg.startsWith('0x') && arg.length === 66) {
|
|
91
|
+
try {
|
|
92
|
+
return ts_sdk_1.AccountAddress.fromString(arg);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return arg;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return arg;
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
function: functionName,
|
|
102
|
+
typeArguments: this._typeArguments,
|
|
103
|
+
functionArguments: processedArguments,
|
|
104
|
+
abi: this._entryFunctionAbi,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Convert argument based on ABI type information
|
|
109
|
+
*/
|
|
110
|
+
convertArgumentByABI(arg, paramType) {
|
|
111
|
+
// Helper function to convert bytes to hex string
|
|
112
|
+
const bytesToHex = (bytes) => {
|
|
113
|
+
return '0x' + bytes.map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
114
|
+
};
|
|
115
|
+
// Helper function to try converting a hex string to an AccountAddress
|
|
116
|
+
const tryToAddress = (hexStr) => {
|
|
117
|
+
try {
|
|
118
|
+
return ts_sdk_1.AccountAddress.fromString(hexStr);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return hexStr;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
// Handle primitive values (string, number, boolean)
|
|
125
|
+
if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {
|
|
126
|
+
// Address conversion for hex strings
|
|
127
|
+
if (paramType instanceof ts_sdk_1.TypeTagAddress && typeof arg === 'string' && arg.startsWith('0x')) {
|
|
128
|
+
return tryToAddress(arg);
|
|
129
|
+
}
|
|
130
|
+
// Type conversions based on parameter type
|
|
131
|
+
if (paramType instanceof ts_sdk_1.TypeTagBool)
|
|
132
|
+
return Boolean(arg);
|
|
133
|
+
if (paramType instanceof ts_sdk_1.TypeTagU8 || paramType instanceof ts_sdk_1.TypeTagU16 || paramType instanceof ts_sdk_1.TypeTagU32)
|
|
134
|
+
return Number(arg);
|
|
135
|
+
if (paramType instanceof ts_sdk_1.TypeTagU64 || paramType instanceof ts_sdk_1.TypeTagU128 || paramType instanceof ts_sdk_1.TypeTagU256)
|
|
136
|
+
return String(arg);
|
|
137
|
+
return arg;
|
|
138
|
+
}
|
|
139
|
+
// Handle BCS-encoded data with 'data' property
|
|
140
|
+
if (arg && typeof arg === 'object' && 'data' in arg && arg.data) {
|
|
141
|
+
const bytes = Array.from(arg.data);
|
|
142
|
+
const hexString = bytesToHex(bytes);
|
|
143
|
+
return paramType instanceof ts_sdk_1.TypeTagAddress ? tryToAddress(hexString) : hexString;
|
|
144
|
+
}
|
|
145
|
+
// Handle nested BCS structures with 'value' property
|
|
146
|
+
if (arg && typeof arg === 'object' && 'value' in arg && arg.value) {
|
|
147
|
+
// Simple value wrapper
|
|
148
|
+
if (!('value' in arg.value) || typeof arg.value.value !== 'object') {
|
|
149
|
+
return this.convertArgumentByABI(arg.value, paramType);
|
|
150
|
+
}
|
|
151
|
+
// Double nested structure with numeric keys
|
|
152
|
+
const bytesObj = arg.value.value;
|
|
153
|
+
const keys = Object.keys(bytesObj)
|
|
154
|
+
.filter((k) => !isNaN(parseInt(k, 10)))
|
|
155
|
+
.sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
|
|
156
|
+
if (keys.length === 0)
|
|
157
|
+
return arg;
|
|
158
|
+
const bytes = keys.map((k) => bytesObj[k]);
|
|
159
|
+
let extractedValue;
|
|
160
|
+
// Convert bytes based on parameter type
|
|
161
|
+
if (paramType instanceof ts_sdk_1.TypeTagAddress ||
|
|
162
|
+
paramType instanceof ts_sdk_1.TypeTagU64 ||
|
|
163
|
+
paramType instanceof ts_sdk_1.TypeTagU128 ||
|
|
164
|
+
paramType instanceof ts_sdk_1.TypeTagU256) {
|
|
165
|
+
extractedValue = bytesToHex(bytes);
|
|
166
|
+
}
|
|
167
|
+
else if (paramType instanceof ts_sdk_1.TypeTagBool) {
|
|
168
|
+
extractedValue = bytes[0] === 1;
|
|
169
|
+
}
|
|
170
|
+
else if (paramType instanceof ts_sdk_1.TypeTagU8 || paramType instanceof ts_sdk_1.TypeTagU16 || paramType instanceof ts_sdk_1.TypeTagU32) {
|
|
171
|
+
// Convert little-endian bytes to number using the original algorithm
|
|
172
|
+
// to ensure consistent behavior with large numbers
|
|
173
|
+
let result = 0;
|
|
174
|
+
for (let i = bytes.length - 1; i >= 0; i--) {
|
|
175
|
+
result = result * 256 + bytes[i];
|
|
176
|
+
}
|
|
177
|
+
extractedValue = result;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
extractedValue = bytesToHex(bytes);
|
|
181
|
+
}
|
|
182
|
+
return this.convertArgumentByABI(extractedValue, paramType);
|
|
183
|
+
}
|
|
184
|
+
// For anything else, return as-is
|
|
185
|
+
return arg;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get custom transaction parameters
|
|
189
|
+
*/
|
|
190
|
+
getCustomTransactionParams() {
|
|
191
|
+
return {
|
|
192
|
+
moduleName: this._moduleName || '',
|
|
193
|
+
functionName: this._functionName || '',
|
|
194
|
+
typeArguments: this._typeArguments,
|
|
195
|
+
functionArguments: this._functionArguments,
|
|
196
|
+
abi: this._entryFunctionAbi,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Override recipient getter for custom transactions
|
|
201
|
+
*/
|
|
202
|
+
get recipient() {
|
|
203
|
+
if (this._recipients.length === 0) {
|
|
204
|
+
return {
|
|
205
|
+
address: '',
|
|
206
|
+
amount: '0',
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return this._recipients[0];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get validated full function name
|
|
213
|
+
*/
|
|
214
|
+
getValidatedFullFunctionName() {
|
|
215
|
+
if (!this._moduleName || !this._functionName) {
|
|
216
|
+
throw new Error('Module name and function name must be set before building transaction');
|
|
217
|
+
}
|
|
218
|
+
const fullName = `${this._moduleName}::${this._functionName}`;
|
|
219
|
+
// Basic validation
|
|
220
|
+
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_]*$/;
|
|
221
|
+
if (!fullFunctionPattern.test(fullName)) {
|
|
222
|
+
throw new Error(`Invalid full function name format: "${fullName}". Expected format: "address::module::function"`);
|
|
223
|
+
}
|
|
224
|
+
return fullName;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.CustomTransaction = CustomTransaction;
|
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2N1c3RvbVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUE0QztBQUU1QyxtREFBZ0Y7QUFDaEYsK0NBZ0I0QjtBQUU1QixvREFBK0U7QUFFL0U7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHlCQUFXO0lBT2hELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBTFosbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIsdUJBQWtCLEdBQXlFLEVBQUUsQ0FBQztRQUtwRyxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILDBCQUEwQixDQUFDLE1BQStCO1FBQ3hELElBQUEsK0JBQWtCLEVBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLElBQUEsaUNBQW9CLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxHQUFxQjtRQUN2QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNI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a0I7WUFDMUMsR0FBRyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTztnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxNQUFNLEVBQUUsR0FBRzthQUNaLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNLLDRCQUE0QjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFOUQsbUJBQW1CO1FBQ25CLE1BQU0sbUJBQW1CLEdBQ3ZCLGdHQUFnRyxDQUFDO1FBQ25HLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxRQUFRLGlEQUFpRCxDQUFDLENBQUM7UUFDcEgsQ0FBQztRQUVELE9BQU8sUUFBNkMsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUExUEQsOENBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICBFbnRyeUZ1bmN0aW9uQUJJLFxuICBFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcyxcbiAgU2ltcGxlRW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXMsXG4gIElucHV0R2VuZXJhdGVUcmFuc2FjdGlvblBheWxvYWREYXRhLFxuICBUcmFuc2FjdGlvblBheWxvYWQsXG4gIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24sXG4gIEFjY291bnRBZGRyZXNzLFxuICBUeXBlVGFnQWRkcmVzcyxcbiAgVHlwZVRhZ0Jvb2wsXG4gIFR5cGVUYWdVOCxcbiAgVHlwZVRhZ1UxNixcbiAgVHlwZVRhZ1UzMixcbiAgVHlwZVRhZ1U2NCxcbiAgVHlwZVRhZ1UxMjgsXG4gIFR5cGVUYWdVMjU2LFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuaW1wb3J0IHsgQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMgfSBmcm9tICcuLi9pZmFjZSc7XG5pbXBvcnQgeyB2YWxpZGF0ZU1vZHVsZU5hbWUsIHZhbGlkYXRlRnVuY3Rpb25OYW1lIH0gZnJvbSAnLi4vdXRpbHMvdmFsaWRhdGlvbic7XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gY2xhc3MgZm9yIGN1c3RvbSBBcHRvcyB0cmFuc2FjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21UcmFuc2FjdGlvbiBleHRlbmRzIFRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfbW9kdWxlTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9mdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfdHlwZUFyZ3VtZW50czogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfZnVuY3Rpb25Bcmd1bWVudHM6IEFycmF5PEVudHJ5RnVuY3Rpb25Bcmd1bWVudFR5cGVzIHwgU2ltcGxlRW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXM+ID0gW107XG4gIHByaXZhdGUgX2VudHJ5RnVuY3Rpb25BYmk/OiBFbnRyeUZ1bmN0aW9uQUJJO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGN1c3RvbSB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzXG4gICAqL1xuICBzZXRDdXN0b21UcmFuc2FjdGlvblBhcmFtcyhwYXJhbXM6IEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zKTogdm9pZCB7XG4gICAgdmFsaWRhdGVNb2R1bGVOYW1lKHBhcmFtcy5tb2R1bGVOYW1lKTtcbiAgICB2YWxpZGF0ZUZ1bmN0aW9uTmFtZShwYXJhbXMuZnVuY3Rpb25OYW1lKTtcblxuICAgIHRoaXMuX21vZHVsZU5hbWUgPSBwYXJhbXMubW9kdWxlTmFtZTtcbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBwYXJhbXMuZnVuY3Rpb25OYW1lO1xuICAgIHRoaXMuX3R5cGVBcmd1bWVudHMgPSBwYXJhbXMudHlwZUFyZ3VtZW50cyB8fCBbXTtcbiAgICB0aGlzLl9mdW5jdGlvbkFyZ3VtZW50cyA9IHBhcmFtcy5mdW5jdGlvbkFyZ3VtZW50cyB8fCBbXTtcbiAgICB0aGlzLl9lbnRyeUZ1bmN0aW9uQWJpID0gcGFyYW1zLmFiaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGVudHJ5IGZ1bmN0aW9uIEFCSVxuICAgKi9cbiAgc2V0RW50cnlGdW5jdGlvbkFiaShhYmk6IEVudHJ5RnVuY3Rpb25BQkkpOiB2b2lkIHtcbiAgICB0aGlzLl9lbnRyeUZ1bmN0aW9uQWJpID0gYWJpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBmdW5jdGlvbiBuYW1lXG4gICAqL1xuICBnZXQgZnVsbEZ1bmN0aW9uTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fbW9kdWxlTmFtZSB8fCAhdGhpcy5fZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLl9tb2R1bGVOYW1lfTo6JHt0aGlzLl9mdW5jdGlvbk5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhIHRyYW5zYWN0aW9uIHBheWxvYWQgdG8gZXh0cmFjdCB0aGUgY3VzdG9tIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBheWxvYWR9IHBheWxvYWQgLSBUaGUgdHJhbnNhY3Rpb24gcGF5bG9hZCB0byBwYXJzZVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb25QYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghKHBheWxvYWQgaW5zdGFuY2VvZiBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCBlbnRyeSBmdW5jdGlvbiBwYXlsb2FkIGZvciBjdXN0b20gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeUZ1bmN0aW9uID0gcGF5bG9hZC5lbnRyeUZ1bmN0aW9uO1xuXG4gICAgLy8gRXh0cmFjdCBmdW5jdGlvbiBkYXRhXG4gICAgY29uc3QgbW9kdWxlQWRkcmVzcyA9IGVudHJ5RnVuY3Rpb24ubW9kdWxlX25hbWUuYWRkcmVzcy50b1N0cmluZygpO1xuICAgIGNvbnN0IG1vZHVsZUlkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLm1vZHVsZV9uYW1lLm5hbWUuaWRlbnRpZmllcjtcbiAgICBjb25zdCBmdW5jdGlvbklkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUuaWRlbnRpZmllcjtcblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBgJHttb2R1bGVBZGRyZXNzfTo6JHttb2R1bGVJZGVudGlmaWVyfWA7XG5cbiAgICAvLyBWYWxpZGF0ZVxuICAgIHZhbGlkYXRlTW9kdWxlTmFtZShtb2R1bGVOYW1lKTtcbiAgICB2YWxpZGF0ZUZ1bmN0aW9uTmFtZShmdW5jdGlvbklkZW50aWZpZXIpO1xuXG4gICAgdGhpcy5fbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XG4gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JZGVudGlmaWVyO1xuICAgIHRoaXMuX3R5cGVBcmd1bWVudHMgPSBlbnRyeUZ1bmN0aW9uLnR5cGVfYXJncy5tYXAoKHR5cGVBcmcpID0+IHR5cGVBcmcudG9TdHJpbmcoKSk7XG5cbiAgICB0aGlzLl9mdW5jdGlvbkFyZ3VtZW50cyA9IGVudHJ5RnVuY3Rpb24uYXJncy5tYXAoKGFyZzogYW55KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgICB9XG4gICAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBhcmcgJiYgYXJnLmRhdGEpIHtcbiAgICAgICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKGFyZy5kYXRhKSBhcyBudW1iZXJbXTtcbiAgICAgICAgcmV0dXJuICcweCcgKyBieXRlcy5tYXAoKGI6IG51bWJlcikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJnO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRyYW5zYWN0aW9uIHBheWxvYWQgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKTogSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHRoaXMuZ2V0VmFsaWRhdGVkRnVsbEZ1bmN0aW9uTmFtZSgpO1xuXG4gICAgLy8gQ29udmVydCBhcmd1bWVudHMgYmFzZWQgb24gQUJJIGluZm9ybWF0aW9uIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHByb2Nlc3NlZEFyZ3VtZW50cyA9IHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzLm1hcCgoYXJnOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIC8vIFVzZSBBQkkgdG8gaWRlbnRpZnkgdGhlIGV4cGVjdGVkIHR5cGUgZm9yIHRoaXMgYXJndW1lbnRcbiAgICAgIGNvbnN0IHBhcmFtVHlwZSA9IHRoaXMuX2VudHJ5RnVuY3Rpb25BYmk/LnBhcmFtZXRlcnM/LltpbmRleF07XG4gICAgICBpZiAocGFyYW1UeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZywgcGFyYW1UeXBlKTtcbiAgICAgIH1cblxuICAgICAgLy8gRmFsbGJhY2s6IGJhc2ljIGNvbnZlcnNpb24gZm9yIGNvbW1vbiBjYXNlc1xuICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICYmIGFyZy5zdGFydHNXaXRoKCcweCcpICYmIGFyZy5sZW5ndGggPT09IDY2KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcoYXJnKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIGFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgdHlwZUFyZ3VtZW50czogdGhpcy5fdHlwZUFyZ3VtZW50cyxcbiAgICAgIGZ1bmN0aW9uQXJndW1lbnRzOiBwcm9jZXNzZWRBcmd1bWVudHMsXG4gICAgICBhYmk6IHRoaXMuX2VudHJ5RnVuY3Rpb25BYmksXG4gICAgfSBhcyBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFyZ3VtZW50IGJhc2VkIG9uIEFCSSB0eXBlIGluZm9ybWF0aW9uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZzogYW55LCBwYXJhbVR5cGU6IGFueSk6IGFueSB7XG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYnl0ZXMgdG8gaGV4IHN0cmluZ1xuICAgIGNvbnN0IGJ5dGVzVG9IZXggPSAoYnl0ZXM6IG51bWJlcltdKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiAnMHgnICsgYnl0ZXMubWFwKChiKSA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcbiAgICB9O1xuXG4gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIHRyeSBjb252ZXJ0aW5nIGEgaGV4IHN0cmluZyB0byBhbiBBY2NvdW50QWRkcmVzc1xuICAgIGNvbnN0IHRyeVRvQWRkcmVzcyA9IChoZXhTdHI6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gQWNjb3VudEFkZHJlc3MuZnJvbVN0cmluZyhoZXhTdHIpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBoZXhTdHI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBwcmltaXRpdmUgdmFsdWVzIChzdHJpbmcsIG51bWJlciwgYm9vbGVhbilcbiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAvLyBBZGRyZXNzIGNvbnZlcnNpb24gZm9yIGhleCBzdHJpbmdzXG4gICAgICBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0FkZHJlc3MgJiYgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgJiYgYXJnLnN0YXJ0c1dpdGgoJzB4JykpIHtcbiAgICAgICAgcmV0dXJuIHRyeVRvQWRkcmVzcyhhcmcpO1xuICAgICAgfVxuXG4gICAgICAvLyBUeXBlIGNvbnZlcnNpb25zIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlXG4gICAgICBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0Jvb2wpIHJldHVybiBCb29sZWFuKGFyZyk7XG4gICAgICBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1U4IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTYgfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UzMilcbiAgICAgICAgcmV0dXJuIE51bWJlcihhcmcpO1xuICAgICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVNjQgfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UxMjggfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UyNTYpXG4gICAgICAgIHJldHVybiBTdHJpbmcoYXJnKTtcblxuICAgICAgcmV0dXJuIGFyZztcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQkNTLWVuY29kZWQgZGF0YSB3aXRoICdkYXRhJyBwcm9wZXJ0eVxuICAgIGlmIChhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIGFyZyAmJiBhcmcuZGF0YSkge1xuICAgICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKGFyZy5kYXRhKSBhcyBudW1iZXJbXTtcbiAgICAgIGNvbnN0IGhleFN0cmluZyA9IGJ5dGVzVG9IZXgoYnl0ZXMpO1xuXG4gICAgICByZXR1cm4gcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0FkZHJlc3MgPyB0cnlUb0FkZHJlc3MoaGV4U3RyaW5nKSA6IGhleFN0cmluZztcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgbmVzdGVkIEJDUyBzdHJ1Y3R1cmVzIHdpdGggJ3ZhbHVlJyBwcm9wZXJ0eVxuICAgIGlmIChhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBhcmcgJiYgYXJnLnZhbHVlKSB7XG4gICAgICAvLyBTaW1wbGUgdmFsdWUgd3JhcHBlclxuICAgICAgaWYgKCEoJ3ZhbHVlJyBpbiBhcmcudmFsdWUpIHx8IHR5cGVvZiBhcmcudmFsdWUudmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZy52YWx1ZSwgcGFyYW1UeXBlKTtcbiAgICAgIH1cblxuICAgICAgLy8gRG91YmxlIG5lc3RlZCBzdHJ1Y3R1cmUgd2l0aCBudW1lcmljIGtleXNcbiAgICAgIGNvbnN0IGJ5dGVzT2JqID0gYXJnLnZhbHVlLnZhbHVlO1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGJ5dGVzT2JqKVxuICAgICAgICAuZmlsdGVyKChrKSA9PiAhaXNOYU4ocGFyc2VJbnQoaywgMTApKSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IHBhcnNlSW50KGEsIDEwKSAtIHBhcnNlSW50KGIsIDEwKSk7XG5cbiAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFyZztcblxuICAgICAgY29uc3QgYnl0ZXMgPSBrZXlzLm1hcCgoaykgPT4gYnl0ZXNPYmpba10pO1xuICAgICAgbGV0IGV4dHJhY3RlZFZhbHVlOiBhbnk7XG5cbiAgICAgIC8vIENvbnZlcnQgYnl0ZXMgYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVcbiAgICAgIGlmIChcbiAgICAgICAgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0FkZHJlc3MgfHxcbiAgICAgICAgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1U2NCB8fFxuICAgICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTEyOCB8fFxuICAgICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTI1NlxuICAgICAgKSB7XG4gICAgICAgIGV4dHJhY3RlZFZhbHVlID0gYnl0ZXNUb0hleChieXRlcyk7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdCb29sKSB7XG4gICAgICAgIGV4dHJhY3RlZFZhbHVlID0gYnl0ZXNbMF0gPT09IDE7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVOCB8fCBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTE2IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMzIpIHtcbiAgICAgICAgLy8gQ29udmVydCBsaXR0bGUtZW5kaWFuIGJ5dGVzIHRvIG51bWJlciB1c2luZyB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtXG4gICAgICAgIC8vIHRvIGVuc3VyZSBjb25zaXN0ZW50IGJlaGF2aW9yIHdpdGggbGFyZ2UgbnVtYmVyc1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IGJ5dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMjU2ICsgYnl0ZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleHRyYWN0ZWRWYWx1ZSA9IGJ5dGVzVG9IZXgoYnl0ZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0QXJndW1lbnRCeUFCSShleHRyYWN0ZWRWYWx1ZSwgcGFyYW1UeXBlKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgYW55dGhpbmcgZWxzZSwgcmV0dXJuIGFzLWlzXG4gICAgcmV0dXJuIGFyZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VzdG9tIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnNcbiAgICovXG4gIGdldEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zKCk6IEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlTmFtZTogdGhpcy5fbW9kdWxlTmFtZSB8fCAnJyxcbiAgICAgIGZ1bmN0aW9uTmFtZTogdGhpcy5fZnVuY3Rpb25OYW1lIHx8ICcnLFxuICAgICAgdHlwZUFyZ3VtZW50czogdGhpcy5fdHlwZUFyZ3VtZW50cyxcbiAgICAgIGZ1bmN0aW9uQXJndW1lbnRzOiB0aGlzLl9mdW5jdGlvbkFyZ3VtZW50cyxcbiAgICAgIGFiaTogdGhpcy5fZW50cnlGdW5jdGlvbkFiaSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHJlY2lwaWVudCBnZXR0ZXIgZm9yIGN1c3RvbSB0cmFuc2FjdGlvbnNcbiAgICovXG4gIGdldCByZWNpcGllbnQoKTogYW55IHtcbiAgICBpZiAodGhpcy5fcmVjaXBpZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgICBhbW91bnQ6ICcwJyxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWNpcGllbnRzWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB2YWxpZGF0ZWQgZnVsbCBmdW5jdGlvbiBuYW1lXG4gICAqL1xuICBwcml2YXRlIGdldFZhbGlkYXRlZEZ1bGxGdW5jdGlvbk5hbWUoKTogYCR7c3RyaW5nfTo6JHtzdHJpbmd9Ojoke3N0cmluZ31gIHtcbiAgICBpZiAoIXRoaXMuX21vZHVsZU5hbWUgfHwgIXRoaXMuX2Z1bmN0aW9uTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNb2R1bGUgbmFtZSBhbmQgZnVuY3Rpb24gbmFtZSBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsTmFtZSA9IGAke3RoaXMuX21vZHVsZU5hbWV9Ojoke3RoaXMuX2Z1bmN0aW9uTmFtZX1gO1xuXG4gICAgLy8gQmFzaWMgdmFsaWRhdGlvblxuICAgIGNvbnN0IGZ1bGxGdW5jdGlvblBhdHRlcm4gPVxuICAgICAgL14oMHhbYS1mQS1GMC05XXsxLDY0fXxbYS16QS1aX11bYS16QS1aMC05X10qKTo6W2EtekEtWl9dW2EtekEtWjAtOV9dKjo6W2EtekEtWl9dW2EtekEtWjAtOV9dKiQvO1xuICAgIGlmICghZnVsbEZ1bmN0aW9uUGF0dGVybi50ZXN0KGZ1bGxOYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGZ1bGwgZnVuY3Rpb24gbmFtZSBmb3JtYXQ6IFwiJHtmdWxsTmFtZX1cIi4gRXhwZWN0ZWQgZm9ybWF0OiBcImFkZHJlc3M6Om1vZHVsZTo6ZnVuY3Rpb25cImApO1xuICAgIH1cblxuICAgIHJldHVybiBmdWxsTmFtZSBhcyBgJHtzdHJpbmd9Ojoke3N0cmluZ306OiR7c3RyaW5nfWA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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"}
|