@bitgo-beta/sdk-coin-trx 1.2.3-alpha.40 → 1.2.3-alpha.401

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 (62) hide show
  1. package/.mocharc.yml +1 -1
  2. package/CHANGELOG.md +988 -0
  3. package/dist/resources/protobuf/Contract.proto +32 -0
  4. package/dist/resources/protobuf/tron.d.ts +1478 -214
  5. package/dist/resources/protobuf/tron.js +6312 -2600
  6. package/dist/resources/protobuf/tron.proto +6 -0
  7. package/package.json +16 -14
  8. package/resources/protobuf/Contract.proto +32 -0
  9. package/resources/protobuf/tron.d.ts +1478 -214
  10. package/resources/protobuf/tron.js +6312 -2600
  11. package/resources/protobuf/tron.proto +6 -0
  12. package/dist/src/index.d.ts +0 -6
  13. package/dist/src/index.d.ts.map +0 -1
  14. package/dist/src/index.js +0 -18
  15. package/dist/src/lib/address.d.ts +0 -11
  16. package/dist/src/lib/address.d.ts.map +0 -1
  17. package/dist/src/lib/address.js +0 -13
  18. package/dist/src/lib/builder.d.ts +0 -3
  19. package/dist/src/lib/builder.d.ts.map +0 -1
  20. package/dist/src/lib/builder.js +0 -10
  21. package/dist/src/lib/contractCallBuilder.d.ts +0 -96
  22. package/dist/src/lib/contractCallBuilder.d.ts.map +0 -1
  23. package/dist/src/lib/contractCallBuilder.js +0 -281
  24. package/dist/src/lib/enum.d.ts +0 -23
  25. package/dist/src/lib/enum.d.ts.map +0 -1
  26. package/dist/src/lib/enum.js +0 -28
  27. package/dist/src/lib/iface.d.ts +0 -103
  28. package/dist/src/lib/iface.d.ts.map +0 -1
  29. package/dist/src/lib/iface.js +0 -3
  30. package/dist/src/lib/index.d.ts +0 -12
  31. package/dist/src/lib/index.d.ts.map +0 -1
  32. package/dist/src/lib/index.js +0 -39
  33. package/dist/src/lib/keyPair.d.ts +0 -44
  34. package/dist/src/lib/keyPair.d.ts.map +0 -1
  35. package/dist/src/lib/keyPair.js +0 -121
  36. package/dist/src/lib/tokenTransferBuilder.d.ts +0 -23
  37. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  38. package/dist/src/lib/tokenTransferBuilder.js +0 -42
  39. package/dist/src/lib/transaction.d.ts +0 -74
  40. package/dist/src/lib/transaction.d.ts.map +0 -1
  41. package/dist/src/lib/transaction.js +0 -226
  42. package/dist/src/lib/transactionBuilder.d.ts +0 -65
  43. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  44. package/dist/src/lib/transactionBuilder.js +0 -215
  45. package/dist/src/lib/utils.d.ts +0 -144
  46. package/dist/src/lib/utils.d.ts.map +0 -1
  47. package/dist/src/lib/utils.js +0 -426
  48. package/dist/src/lib/wrappedBuilder.d.ts +0 -54
  49. package/dist/src/lib/wrappedBuilder.d.ts.map +0 -1
  50. package/dist/src/lib/wrappedBuilder.js +0 -108
  51. package/dist/src/register.d.ts +0 -3
  52. package/dist/src/register.d.ts.map +0 -1
  53. package/dist/src/register.js +0 -15
  54. package/dist/src/trx.d.ts +0 -208
  55. package/dist/src/trx.d.ts.map +0 -1
  56. package/dist/src/trx.js +0 -563
  57. package/dist/src/trxToken.d.ts +0 -38
  58. package/dist/src/trxToken.d.ts.map +0 -1
  59. package/dist/src/trxToken.js +0 -91
  60. package/dist/src/ttrx.d.ts +0 -13
  61. package/dist/src/ttrx.d.ts.map +0 -1
  62. package/dist/src/ttrx.js +0 -14
@@ -273,6 +273,12 @@ message Transaction {
273
273
  UpdateEnergyLimitContract = 45;
274
274
  AccountPermissionUpdateContract = 46;
275
275
  ClearABIContract = 48;
276
+ UpdateBrokerageContract = 49;
277
+ FreezeBalanceV2Contract = 54;
278
+ UnfreezeBalanceV2Contract = 55;
279
+ WithdrawExpireUnfreezeContract = 56;
280
+ DelegateResourceContract = 57;
281
+ UnDelegateResourceContract = 58;
276
282
  }
277
283
  ContractType type = 1;
278
284
  google.protobuf.Any parameter = 2;
@@ -1,6 +0,0 @@
1
- export * from './lib';
2
- export * from './trx';
3
- export * from './ttrx';
4
- export * from './trxToken';
5
- export * from './register';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
package/dist/src/index.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./lib"), exports);
14
- __exportStar(require("./trx"), exports);
15
- __exportStar(require("./ttrx"), exports);
16
- __exportStar(require("./trxToken"), exports);
17
- __exportStar(require("./register"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLHdDQUFzQjtBQUN0Qix5Q0FBdUI7QUFDdkIsNkNBQTJCO0FBQzNCLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliJztcbmV4cG9ydCAqIGZyb20gJy4vdHJ4JztcbmV4cG9ydCAqIGZyb20gJy4vdHRyeCc7XG5leHBvcnQgKiBmcm9tICcuL3RyeFRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vcmVnaXN0ZXInO1xuIl19
@@ -1,11 +0,0 @@
1
- import { BaseAddress } from '@bitgo-beta/sdk-core';
2
- /**
3
- * Addresses can be encoded in three varieties:
4
- * 1) ByteArray - this is a UIntArray8. Typically used for signing.
5
- * 2) Hex - hex encoded string
6
- * 3) Base58 - base58 encoded string. Typically used for display.
7
- */
8
- export declare class Address implements BaseAddress {
9
- address: string;
10
- }
11
- //# sourceMappingURL=address.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/lib/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD;;;;;GAKG;AACH,qBAAa,OAAQ,YAAW,WAAW;IAEzC,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Address = void 0;
4
- /**
5
- * Addresses can be encoded in three varieties:
6
- * 1) ByteArray - this is a UIntArray8. Typically used for signing.
7
- * 2) Hex - hex encoded string
8
- * 3) Base58 - base58 encoded string. Typically used for display.
9
- */
10
- class Address {
11
- }
12
- exports.Address = Address;
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7R0FLRztBQUNILE1BQWEsT0FBTztDQUduQjtBQUhELDBCQUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUFkZHJlc3MgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbi8qKlxuICogQWRkcmVzc2VzIGNhbiBiZSBlbmNvZGVkIGluIHRocmVlIHZhcmlldGllczpcbiAqIDEpIEJ5dGVBcnJheSAtIHRoaXMgaXMgYSBVSW50QXJyYXk4LiBUeXBpY2FsbHkgdXNlZCBmb3Igc2lnbmluZy5cbiAqIDIpIEhleCAtIGhleCBlbmNvZGVkIHN0cmluZ1xuICogMykgQmFzZTU4IC0gYmFzZTU4IGVuY29kZWQgc3RyaW5nLiBUeXBpY2FsbHkgdXNlZCBmb3IgZGlzcGxheS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFkZHJlc3MgaW1wbGVtZW50cyBCYXNlQWRkcmVzcyB7XG4gIC8vIHRoZSBiYXNlNTggcmVwcmVzZW50YXRpb25cbiAgYWRkcmVzczogc3RyaW5nO1xufVxuIl19
@@ -1,3 +0,0 @@
1
- import { BaseBuilder } from '@bitgo-beta/sdk-core';
2
- export declare const getBuilder: (coinName: string) => BaseBuilder;
3
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/lib/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAInD,eAAO,MAAM,UAAU,aAAc,MAAM,KAAG,WAE7C,CAAC"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBuilder = void 0;
4
- const statics_1 = require("@bitgo-beta/statics");
5
- const wrappedBuilder_1 = require("./wrappedBuilder");
6
- const getBuilder = (coinName) => {
7
- return new wrappedBuilder_1.WrappedBuilder(statics_1.coins.get(coinName));
8
- };
9
- exports.getBuilder = getBuilder;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBNEM7QUFDNUMscURBQWtEO0FBRTNDLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBZ0IsRUFBZSxFQUFFO0lBQzFELE9BQU8sSUFBSSwrQkFBYyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUM7QUFGVyxRQUFBLFVBQVUsY0FFckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBXcmFwcGVkQnVpbGRlciB9IGZyb20gJy4vd3JhcHBlZEJ1aWxkZXInO1xuXG5leHBvcnQgY29uc3QgZ2V0QnVpbGRlciA9IChjb2luTmFtZTogc3RyaW5nKTogQmFzZUJ1aWxkZXIgPT4ge1xuICByZXR1cm4gbmV3IFdyYXBwZWRCdWlsZGVyKGNvaW5zLmdldChjb2luTmFtZSkpO1xufTtcbiJdfQ==
@@ -1,96 +0,0 @@
1
- import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
- import { BaseKey } from '@bitgo-beta/sdk-core';
3
- import { TransactionBuilder } from './transactionBuilder';
4
- import { Address } from './address';
5
- import { Transaction } from './transaction';
6
- import { Block, Fee, TransactionReceipt, TriggerSmartContract } from './iface';
7
- export declare const MAX_FEE = 5000000000;
8
- export declare class ContractCallBuilder extends TransactionBuilder {
9
- protected _signingKeys: BaseKey[];
10
- private _toContractAddress;
11
- private _data;
12
- private _ownerAddress;
13
- private _refBlockBytes;
14
- private _refBlockHash;
15
- private _expiration;
16
- private _timestamp;
17
- private _fee;
18
- constructor(_coinConfig: Readonly<CoinConfig>);
19
- /** @inheritdoc */
20
- protected buildImplementation(): Promise<Transaction>;
21
- /** @inheritdoc */
22
- protected signImplementation(key: BaseKey): Transaction;
23
- /**
24
- * Initialize the transaction builder fields using the transaction data
25
- *
26
- * @param {any} rawTransaction the transaction data in a string or JSON format
27
- * @returns {ContractCallBuilder} the builder with the transaction data set
28
- */
29
- initBuilder(rawTransaction: TransactionReceipt | string): this;
30
- /**
31
- * Initialize the contract call specific data
32
- *
33
- * @param {TriggerSmartContract} contractCall object with transfer data
34
- */
35
- protected initContractCall(contractCall: TriggerSmartContract): void;
36
- /**
37
- * Set the source address,
38
- *
39
- * @param {Address} address source account
40
- * @returns {ContractCallBuilder} the builder with the new parameter set
41
- */
42
- source(address: Address): this;
43
- /**
44
- * Set the address of the contract to be called,
45
- *
46
- * @param {Address} contractAddress the contract address
47
- * @returns {ContractCallBuilder} the builder with the new parameter set
48
- */
49
- to(contractAddress: Address): this;
50
- /**
51
- * Set the data with the method call and parameters
52
- *
53
- * @param {string} data data encoded on hexa
54
- * @returns {ContractCallBuilder} the builder with the new parameter set
55
- */
56
- data(data: string): this;
57
- /**
58
- * Set the block values,
59
- *
60
- * @param {Block} block the object containing number and hash of the block
61
- * @returns {ContractCallBuilder} the builder with the new parameter set
62
- */
63
- block(block: Block): this;
64
- /**
65
- * Set the expiration time for the transaction, set also timestamp if it was not set previously
66
- *
67
- * @param {number} time the expiration time in milliseconds
68
- * @returns {ContractCallBuilder} the builder with the new parameter set
69
- */
70
- expiration(time: number): this;
71
- /** @inheritdoc */
72
- extendValidTo(extensionMs: number): void;
73
- /**
74
- * Set the timestamp for the transaction
75
- *
76
- * @param {number} time the timestamp in milliseconds
77
- * @returns {ContractCallBuilder} the builder with the new parameter set
78
- */
79
- timestamp(time: number): this;
80
- /**
81
- * Set the fee limit for the transaction
82
- *
83
- * @param {Fee} fee the fee limit for the transaction
84
- * @returns {ContractCallBuilder} the builder with the new parameter set
85
- */
86
- fee(fee: Fee): this;
87
- private createTransaction;
88
- private getRawDataHex;
89
- private applySignatures;
90
- /** @inheritdoc */
91
- validateTransaction(transaction: Transaction): void;
92
- /** @inheritdoc */
93
- validateMandatoryFields(): void;
94
- validateExpirationTime(value: number): void;
95
- }
96
- //# sourceMappingURL=contractCallBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contractCallBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/contractCallBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EACL,OAAO,EAMR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAa/E,eAAO,MAAM,OAAO,aAAa,CAAC;AAElC,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAM;gBAEN,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAUvD;;;;;OAKG;IACH,WAAW,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAiB9D;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,GAAG,IAAI;IAcpE;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM9B;;;;;OAKG;IACH,EAAE,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI;IAMlC;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAUzB;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU9B,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoBxC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK7B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAYnB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,eAAe;IAOvB,kBAAkB;IAElB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD,kBAAkB;IAClB,uBAAuB;IAkBvB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAW5C"}
@@ -1,281 +0,0 @@
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.ContractCallBuilder = exports.MAX_FEE = void 0;
7
- const crypto_1 = require("crypto");
8
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
- const tron_1 = require("../../resources/protobuf/tron");
10
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
- const transactionBuilder_1 = require("./transactionBuilder");
12
- const transaction_1 = require("./transaction");
13
- const utils_1 = require("./utils");
14
- var ContractType = tron_1.protocol.Transaction.Contract.ContractType;
15
- const DEFAULT_EXPIRATION = 3600000; // one hour
16
- const MAX_DURATION = 31536000000; // one year
17
- exports.MAX_FEE = 5000000000; // 5e9 = 5000 TRX acording https://developers.tron.network/docs/setting-a-fee-limit-on-deployexecution
18
- class ContractCallBuilder extends transactionBuilder_1.TransactionBuilder {
19
- constructor(_coinConfig) {
20
- super(_coinConfig);
21
- this._signingKeys = [];
22
- this.transaction = new transaction_1.Transaction(_coinConfig);
23
- }
24
- /** @inheritdoc */
25
- async buildImplementation() {
26
- this.createTransaction();
27
- /** @inheritdoc */
28
- // This method must be extended on child classes
29
- if (this._signingKeys.length > 0) {
30
- this.applySignatures();
31
- }
32
- if (!this.transaction.id) {
33
- throw new sdk_core_1.BuildTransactionError('A valid transaction must have an id');
34
- }
35
- return Promise.resolve(this.transaction);
36
- }
37
- /** @inheritdoc */
38
- signImplementation(key) {
39
- if (this._signingKeys.some((signingKey) => signingKey.key === key.key)) {
40
- throw new sdk_core_1.SigningError('Duplicated key');
41
- }
42
- this._signingKeys.push(key);
43
- // We keep this return for compatibility but is not meant to be use
44
- return this.transaction;
45
- }
46
- /**
47
- * Initialize the transaction builder fields using the transaction data
48
- *
49
- * @param {any} rawTransaction the transaction data in a string or JSON format
50
- * @returns {ContractCallBuilder} the builder with the transaction data set
51
- */
52
- initBuilder(rawTransaction) {
53
- this.validateRawTransaction(rawTransaction);
54
- const tx = this.fromImplementation(rawTransaction);
55
- this.transaction = tx;
56
- this._signingKeys = [];
57
- const rawData = tx.toJson().raw_data;
58
- this._refBlockBytes = rawData.ref_block_bytes;
59
- this._refBlockHash = rawData.ref_block_hash;
60
- this._expiration = rawData.expiration;
61
- this._timestamp = rawData.timestamp;
62
- this._fee = { feeLimit: rawData.fee_limit.toString() };
63
- this.transaction.setTransactionType(sdk_core_1.TransactionType.ContractCall);
64
- const contractCall = rawData.contract[0];
65
- this.initContractCall(contractCall);
66
- return this;
67
- }
68
- /**
69
- * Initialize the contract call specific data
70
- *
71
- * @param {TriggerSmartContract} contractCall object with transfer data
72
- */
73
- initContractCall(contractCall) {
74
- const { data, owner_address, contract_address } = contractCall.parameter.value;
75
- if (data) {
76
- this.data(data);
77
- }
78
- if (contract_address) {
79
- this.to({ address: utils_1.getBase58AddressFromHex(contract_address) });
80
- }
81
- if (owner_address) {
82
- this.source({ address: utils_1.getBase58AddressFromHex(owner_address) });
83
- }
84
- }
85
- // region Contract Call fields
86
- /**
87
- * Set the source address,
88
- *
89
- * @param {Address} address source account
90
- * @returns {ContractCallBuilder} the builder with the new parameter set
91
- */
92
- source(address) {
93
- this.validateAddress(address);
94
- this._ownerAddress = utils_1.getHexAddressFromBase58Address(address.address);
95
- return this;
96
- }
97
- /**
98
- * Set the address of the contract to be called,
99
- *
100
- * @param {Address} contractAddress the contract address
101
- * @returns {ContractCallBuilder} the builder with the new parameter set
102
- */
103
- to(contractAddress) {
104
- this.validateAddress(contractAddress);
105
- this._toContractAddress = utils_1.getHexAddressFromBase58Address(contractAddress.address);
106
- return this;
107
- }
108
- /**
109
- * Set the data with the method call and parameters
110
- *
111
- * @param {string} data data encoded on hexa
112
- * @returns {ContractCallBuilder} the builder with the new parameter set
113
- */
114
- data(data) {
115
- if (!utils_1.isValidHex(data)) {
116
- throw new sdk_core_1.InvalidParameterValueError(data + ' is not a valid hex string.');
117
- }
118
- this._data = data;
119
- return this;
120
- }
121
- /**
122
- * Set the block values,
123
- *
124
- * @param {Block} block the object containing number and hash of the block
125
- * @returns {ContractCallBuilder} the builder with the new parameter set
126
- */
127
- block(block) {
128
- const blockBytes = Buffer.alloc(8);
129
- blockBytes.writeInt32BE(block.number, 4);
130
- this._refBlockBytes = blockBytes.slice(6, 8).toString('hex');
131
- this._refBlockHash = Buffer.from(block.hash, 'hex').slice(8, 16).toString('hex');
132
- return this;
133
- }
134
- /**
135
- * Set the expiration time for the transaction, set also timestamp if it was not set previously
136
- *
137
- * @param {number} time the expiration time in milliseconds
138
- * @returns {ContractCallBuilder} the builder with the new parameter set
139
- */
140
- expiration(time) {
141
- if (this.transaction.id) {
142
- throw new sdk_core_1.ExtendTransactionError('Expiration is already set, it can only be extended');
143
- }
144
- this._timestamp = this._timestamp || Date.now();
145
- this.validateExpirationTime(time);
146
- this._expiration = time;
147
- return this;
148
- }
149
- /** @inheritdoc */
150
- extendValidTo(extensionMs) {
151
- if (this.transaction.signature && this.transaction.signature.length > 0) {
152
- throw new sdk_core_1.ExtendTransactionError('Cannot extend a signed transaction');
153
- }
154
- if (extensionMs <= 0) {
155
- throw new Error('Value cannot be below zero');
156
- }
157
- if (extensionMs > MAX_DURATION) {
158
- throw new sdk_core_1.ExtendTransactionError('The expiration cannot be extended more than one year');
159
- }
160
- if (this._expiration) {
161
- this._expiration = this._expiration + extensionMs;
162
- }
163
- else {
164
- throw new Error('There is not expiration to extend');
165
- }
166
- }
167
- /**
168
- * Set the timestamp for the transaction
169
- *
170
- * @param {number} time the timestamp in milliseconds
171
- * @returns {ContractCallBuilder} the builder with the new parameter set
172
- */
173
- timestamp(time) {
174
- this._timestamp = time;
175
- return this;
176
- }
177
- /**
178
- * Set the fee limit for the transaction
179
- *
180
- * @param {Fee} fee the fee limit for the transaction
181
- * @returns {ContractCallBuilder} the builder with the new parameter set
182
- */
183
- fee(fee) {
184
- const feeLimit = new bignumber_js_1.default(fee.feeLimit);
185
- const tronNetwork = this._coinConfig.network;
186
- if (feeLimit.isNaN() || feeLimit.isLessThan(0) || feeLimit.isGreaterThan(tronNetwork.maxFeeLimit)) {
187
- throw new sdk_core_1.InvalidParameterValueError('Invalid fee limit value');
188
- }
189
- this._fee = fee;
190
- return this;
191
- }
192
- // endregion
193
- createTransaction() {
194
- const rawDataHex = this.getRawDataHex();
195
- const rawData = utils_1.decodeTransaction(rawDataHex);
196
- const contract = rawData.contract[0];
197
- const contractParameter = contract.parameter;
198
- contractParameter.value.contract_address = this._toContractAddress.toLocaleLowerCase();
199
- contractParameter.value.owner_address = this._ownerAddress.toLocaleLowerCase();
200
- contractParameter.value.data = this._data.toLocaleLowerCase();
201
- contractParameter.type_url = 'type.googleapis.com/protocol.TriggerSmartContract';
202
- contract.type = 'TriggerSmartContract';
203
- const hexBuffer = Buffer.from(rawDataHex, 'hex');
204
- const id = crypto_1.createHash('sha256').update(hexBuffer).digest('hex');
205
- const txRecip = {
206
- raw_data: rawData,
207
- raw_data_hex: rawDataHex,
208
- txID: id,
209
- signature: this.transaction.signature,
210
- };
211
- this.transaction = new transaction_1.Transaction(this._coinConfig, txRecip);
212
- }
213
- getRawDataHex() {
214
- const rawContract = {
215
- ownerAddress: utils_1.getByteArrayFromHexAddress(this._ownerAddress),
216
- contractAddress: utils_1.getByteArrayFromHexAddress(this._toContractAddress),
217
- data: utils_1.getByteArrayFromHexAddress(this._data),
218
- };
219
- const contractCall = tron_1.protocol.TriggerSmartContract.fromObject(rawContract);
220
- const contractBytes = tron_1.protocol.TriggerSmartContract.encode(contractCall).finish();
221
- const txContract = {
222
- type: ContractType.TriggerSmartContract,
223
- parameter: {
224
- value: contractBytes,
225
- type_url: 'type.googleapis.com/protocol.TriggerSmartContract',
226
- },
227
- };
228
- const raw = {
229
- refBlockBytes: Buffer.from(this._refBlockBytes, 'hex'),
230
- refBlockHash: Buffer.from(this._refBlockHash, 'hex'),
231
- expiration: this._expiration || Date.now() + DEFAULT_EXPIRATION,
232
- timestamp: this._timestamp || Date.now(),
233
- contract: [txContract],
234
- feeLimit: parseInt(this._fee.feeLimit, 10),
235
- };
236
- const rawTx = tron_1.protocol.Transaction.raw.create(raw);
237
- return Buffer.from(tron_1.protocol.Transaction.raw.encode(rawTx).finish()).toString('hex');
238
- }
239
- applySignatures() {
240
- if (!this.transaction.inputs) {
241
- throw new sdk_core_1.SigningError('Transaction has no inputs');
242
- }
243
- this._signingKeys.forEach((key) => this.applySignature(key));
244
- }
245
- /** @inheritdoc */
246
- // Specifically, checks hex underlying transaction hashes to correct transaction ID.
247
- validateTransaction(transaction) {
248
- this.validateMandatoryFields();
249
- }
250
- /** @inheritdoc */
251
- validateMandatoryFields() {
252
- if (!this._data) {
253
- throw new sdk_core_1.BuildTransactionError('Missing parameter: data');
254
- }
255
- if (!this._ownerAddress) {
256
- throw new sdk_core_1.BuildTransactionError('Missing parameter: source');
257
- }
258
- if (!this._toContractAddress) {
259
- throw new sdk_core_1.BuildTransactionError('Missing parameter: contract address');
260
- }
261
- if (!this._refBlockBytes || !this._refBlockHash) {
262
- throw new sdk_core_1.BuildTransactionError('Missing block reference information');
263
- }
264
- if (!this._fee) {
265
- throw new sdk_core_1.BuildTransactionError('Missing fee');
266
- }
267
- }
268
- validateExpirationTime(value) {
269
- if (value < this._timestamp) {
270
- throw new sdk_core_1.InvalidParameterValueError('Expiration must be greater than timestamp');
271
- }
272
- if (value < Date.now()) {
273
- throw new sdk_core_1.InvalidParameterValueError('Expiration must be greater than current time');
274
- }
275
- if (value - this._timestamp > MAX_DURATION) {
276
- throw new sdk_core_1.InvalidParameterValueError('Expiration must not be greater than one year');
277
- }
278
- }
279
- }
280
- exports.ContractCallBuilder = ContractCallBuilder;
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RDYWxsQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29udHJhY3RDYWxsQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBb0M7QUFFcEMsZ0VBQXFDO0FBQ3JDLHdEQUF5RDtBQUN6RCxtREFPOEI7QUFDOUIsNkRBQTBEO0FBRTFELCtDQUE0QztBQUU1QyxtQ0FNaUI7QUFFakIsSUFBTyxZQUFZLEdBQUcsZUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBRWpFLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLENBQUMsV0FBVztBQUMvQyxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsQ0FBQyxXQUFXO0FBQ2hDLFFBQUEsT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLHNHQUFzRztBQUV6SSxNQUFhLG1CQUFvQixTQUFRLHVDQUFrQjtJQVd6RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixrQkFBa0I7UUFDbEIsZ0RBQWdEO1FBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN4RTtRQUNELE9BQU8sT0FBTyxDQUFD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U0FDeEU7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDL0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDeEU7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDbkY7UUFDRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEIsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDhDQUE4QyxDQUFDLENBQUM7U0FDdEY7UUFDRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksRUFBRTtZQUMxQyxNQUFNLElBQUkscUNBQTBCLENBQUMsOENBQThDLENBQUMsQ0FBQztTQUN0RjtJQUNILENBQUM7Q0FDRjtBQXhTRCxrREF3U0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIFRyb25OZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBwcm90b2NvbCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90b2J1Zi90cm9uJztcbmltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9hZGRyZXNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCbG9jaywgRmVlLCBUcmFuc2FjdGlvblJlY2VpcHQsIFRyaWdnZXJTbWFydENvbnRyYWN0IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQge1xuICBkZWNvZGVUcmFuc2FjdGlvbixcbiAgZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgsXG4gIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzLFxuICBnZXRIZXhBZGRyZXNzRnJvbUJhc2U1OEFkZHJlc3MsXG4gIGlzVmFsaWRIZXgsXG59IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgQ29udHJhY3RUeXBlID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24uQ29udHJhY3QuQ29udHJhY3RUeXBlO1xuXG5jb25zdCBERUZBVUxUX0VYUElSQVRJT04gPSAzNjAwMDAwOyAvLyBvbmUgaG91clxuY29uc3QgTUFYX0RVUkFUSU9OID0gMzE1MzYwMDAwMDA7IC8vIG9uZSB5ZWFyXG5leHBvcnQgY29uc3QgTUFYX0ZFRSA9IDUwMDAwMDAwMDA7IC8vIDVlOSA9IDUwMDAgVFJYIGFjb3JkaW5nIGh0dHBzOi8vZGV2ZWxvcGVycy50cm9uLm5ldHdvcmsvZG9jcy9zZXR0aW5nLWEtZmVlLWxpbWl0LW9uLWRlcGxveWV4ZWN1dGlvblxuXG5leHBvcnQgY2xhc3MgQ29udHJhY3RDYWxsQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfc2lnbmluZ0tleXM6IEJhc2VLZXlbXTtcbiAgcHJpdmF0ZSBfdG9Db250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9vd25lckFkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVmQmxvY2tCeXRlczogc3RyaW5nO1xuICBwcml2YXRlIF9yZWZCbG9ja0hhc2g6IHN0cmluZztcbiAgcHJpdmF0ZSBfZXhwaXJhdGlvbjogbnVtYmVyO1xuICBwcml2YXRlIF90aW1lc3RhbXA6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZmVlOiBGZWU7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3NpZ25pbmdLZXlzID0gW107XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuY3JlYXRlVHJhbnNhY3Rpb24oKTtcbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICAvLyBUaGlzIG1ldGhvZCBtdXN0IGJlIGV4dGVuZGVkIG9uIGNoaWxkIGNsYXNzZXNcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hcHBseVNpZ25hdHVyZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0EgdmFsaWQgdHJhbnNhY3Rpb24gbXVzdCBoYXZlIGFuIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX3NpZ25pbmdLZXlzLnNvbWUoKHNpZ25pbmdLZXkpID0+IHNpZ25pbmdLZXkua2V5ID09PSBrZXkua2V5KSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignRHVwbGljYXRlZCBrZXknKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmluZ0tleXMucHVzaChrZXkpO1xuXG4gICAgLy8gV2Uga2VlcCB0aGlzIHJldHVybiBmb3IgY29tcGF0aWJpbGl0eSBidXQgaXMgbm90IG1lYW50IHRvIGJlIHVzZVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSByYXdUcmFuc2FjdGlvbiB0aGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBhIHN0cmluZyBvciBKU09OIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7Q29udHJhY3RDYWxsQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgdHJhbnNhY3Rpb24gZGF0YSBzZXRcbiAgICovXG4gIGluaXRCdWlsZGVyKHJhd1RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHR4ID0gdGhpcy5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLl9zaWduaW5nS2V5cyA9IFtdO1xuICAgIGNvbnN0IHJhd0RhdGEgPSB0eC50b0pzb24oKS5yYXdfZGF0YTtcbiAgICB0aGlzLl9yZWZCbG9ja0J5dGVzID0gcmF3RGF0YS5yZWZfYmxvY2tfYnl0ZXM7XG4gICAgdGhpcy5fcmVmQmxvY2tIYXNoID0gcmF3RGF0YS5yZWZfYmxvY2tfaGFzaDtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gcmF3RGF0YS5leHBpcmF0aW9uO1xuICAgIHRoaXMuX3RpbWVzdGFtcCA9IHJhd0RhdGEudGltZXN0YW1wO1xuICAgIHRoaXMuX2ZlZSA9IHsgZmVlTGltaXQ6IHJhd0RhdGEuZmVlX2xpbWl0IS50b1N0cmluZygpIH07XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgY29uc3QgY29udHJhY3RDYWxsID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBUcmlnZ2VyU21hcnRDb250cmFjdDtcbiAgICB0aGlzLmluaXRDb250cmFjdENhbGwoY29udHJhY3RDYWxsKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBjb250cmFjdCBjYWxsIHNwZWNpZmljIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmlnZ2VyU21hcnRDb250cmFjdH0gY29udHJhY3RDYWxsIG9iamVjdCB3aXRoIHRyYW5zZmVyIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBpbml0Q29udHJhY3RDYWxsKGNvbnRyYWN0Q2FsbDogVHJpZ2dlclNtYXJ0Q29udHJhY3QpOiB2b2lkIHtcbiAgICBjb25zdCB7IGRhdGEsIG93bmVyX2FkZHJlc3MsIGNvbnRyYWN0X2FkZHJlc3MgfSA9IGNvbnRyYWN0Q2FsbC5wYXJhbWV0ZXIudmFsdWU7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YShkYXRhKTtcbiAgICB9XG4gICAgaWYgKGNvbnRyYWN0X2FkZHJlc3MpIHtcbiAgICAgIHRoaXMudG8oeyBhZGRyZXNzOiBnZXRCYXNlNThBZGRyZXNzRnJvbUhleChjb250cmFjdF9hZGRyZXNzKSB9KTtcbiAgICB9XG4gICAgaWYgKG93bmVyX2FkZHJlc3MpIHtcbiAgICAgIHRoaXMuc291cmNlKHsgYWRkcmVzczogZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgob3duZXJfYWRkcmVzcykgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVnaW9uIENvbnRyYWN0IENhbGwgZmllbGRzXG4gIC8qKlxuICAgKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzLFxuICAgKlxuICAgKiBAcGFyYW0ge0FkZHJlc3N9IGFkZHJlc3Mgc291cmNlIGFjY291bnRcbiAgICogQHJldHVybnMge0NvbnRyYWN0Q2FsbEJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzb3VyY2UoYWRkcmVzczogQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MpO1xuICAgIHRoaXMuX293bmVyQWRkcmVzcyA9IGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gYmUgY2FsbGVkLFxuICAgKlxuICAgKiBAcGFyYW0ge0FkZHJlc3N9IGNvbnRyYWN0QWRkcmVzcyB0aGUgY29udHJhY3QgYWRkcmVzc1xuICAgKiBAcmV0dXJucyB7Q29udHJhY3RDYWxsQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHRvKGNvbnRyYWN0QWRkcmVzczogQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGNvbnRyYWN0QWRkcmVzcyk7XG4gICAgdGhpcy5fdG9Db250cmFjdEFkZHJlc3MgPSBnZXRIZXhBZGRyZXNzRnJvbUJhc2U1OEFkZHJlc3MoY29udHJhY3RBZGRyZXNzLmFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGF0YSB3aXRoIHRoZSBtZXRob2QgY2FsbCBhbmQgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSBkYXRhIGVuY29kZWQgb24gaGV4YVxuICAgKiBAcmV0dXJucyB7Q29udHJhY3RDYWxsQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIGRhdGEoZGF0YTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkSGV4KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoZGF0YSArICcgaXMgbm90IGEgdmFsaWQgaGV4IHN0cmluZy4nKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBibG9jayB2YWx1ZXMsXG4gICAqXG4gICAqIEBwYXJhbSB7QmxvY2t9IGJsb2NrIHRoZSBvYmplY3QgY29udGFpbmluZyBudW1iZXIgYW5kIGhhc2ggb2YgdGhlIGJsb2NrXG4gICAqIEByZXR1cm5zIHtDb250cmFjdENhbGxCdWlsZGVyfSB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgYmxvY2soYmxvY2s6IEJsb2NrKTogdGhpcyB7XG4gICAgY29uc3QgYmxvY2tCeXRlcyA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBibG9ja0J5dGVzLndyaXRlSW50MzJCRShibG9jay5udW1iZXIsIDQpO1xuICAgIHRoaXMuX3JlZkJsb2NrQnl0ZXMgPSBibG9ja0J5dGVzLnNsaWNlKDYsIDgpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHRoaXMuX3JlZkJsb2NrSGFzaCA9IEJ1ZmZlci5mcm9tKGJsb2NrLmhhc2gsICdoZXgnKS5zbGljZSg4LCAxNikudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIHRoZSB0cmFuc2FjdGlvbiwgc2V0IGFsc28gdGltZXN0YW1wIGlmIGl0IHdhcyBub3Qgc2V0IHByZXZpb3VzbHlcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgdGhlIGV4cGlyYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICogQHJldHVybnMge0NvbnRyYWN0Q2FsbEJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBleHBpcmF0aW9uKHRpbWU6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignRXhwaXJhdGlvbiBpcyBhbHJlYWR5IHNldCwgaXQgY2FuIG9ubHkgYmUgZXh0ZW5kZWQnKTtcbiAgICB9XG4gICAgdGhpcy5fdGltZXN0YW1wID0gdGhpcy5fdGltZXN0YW1wIHx8IERhdGUubm93KCk7XG4gICAgdGhpcy52YWxpZGF0ZUV4cGlyYXRpb25UaW1lKHRpbWUpO1xuICAgIHRoaXMuX2V4cGlyYXRpb24gPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSAmJiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignQ2Fubm90IGV4dGVuZCBhIHNpZ25lZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25NcyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyB6ZXJvJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zID4gTUFYX0RVUkFUSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignVGhlIGV4cGlyYXRpb24gY2Fubm90IGJlIGV4dGVuZGVkIG1vcmUgdGhhbiBvbmUgeWVhcicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9leHBpcmF0aW9uKSB7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uID0gdGhpcy5fZXhwaXJhdGlvbiArIGV4dGVuc2lvbk1zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGlzIG5vdCBleHBpcmF0aW9uIHRvIGV4dGVuZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRpbWVzdGFtcCBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lIHRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzXG4gICAqIEByZXR1cm5zIHtDb250cmFjdENhbGxCdWlsZGVyfSB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgdGltZXN0YW1wKHRpbWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX3RpbWVzdGFtcCA9IHRpbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmZWUgbGltaXQgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0ZlZX0gZmVlIHRoZSBmZWUgbGltaXQgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7Q29udHJhY3RDYWxsQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIGZlZShmZWU6IEZlZSk6IHRoaXMge1xuICAgIGNvbnN0IGZlZUxpbWl0ID0gbmV3IEJpZ051bWJlcihmZWUuZmVlTGltaXQpO1xuICAgIGNvbnN0IHRyb25OZXR3b3JrID0gdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIFRyb25OZXR3b3JrO1xuICAgIGlmIChmZWVMaW1pdC5pc05hTigpIHx8IGZlZUxpbWl0LmlzTGVzc1RoYW4oMCkgfHwgZmVlTGltaXQuaXNHcmVhdGVyVGhhbih0cm9uTmV0d29yay5tYXhGZWVMaW1pdCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBmZWUgbGltaXQgdmFsdWUnKTtcbiAgICB9XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgcHJpdmF0ZSBjcmVhdGVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCByYXdEYXRhSGV4ID0gdGhpcy5nZXRSYXdEYXRhSGV4KCk7XG4gICAgY29uc3QgcmF3RGF0YSA9IGRlY29kZVRyYW5zYWN0aW9uKHJhd0RhdGFIZXgpO1xuICAgIGNvbnN0IGNvbnRyYWN0ID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBUcmlnZ2VyU21hcnRDb250cmFjdDtcbiAgICBjb25zdCBjb250cmFjdFBhcmFtZXRlciA9IGNvbnRyYWN0LnBhcmFtZXRlcjtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5jb250cmFjdF9hZGRyZXNzID0gdGhpcy5fdG9Db250cmFjdEFkZHJlc3MudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBjb250cmFjdFBhcmFtZXRlci52YWx1ZS5vd25lcl9hZGRyZXNzID0gdGhpcy5fb3duZXJBZGRyZXNzLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUuZGF0YSA9IHRoaXMuX2RhdGEudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBjb250cmFjdFBhcmFtZXRlci50eXBlX3VybCA9ICd0eXBlLmdvb2dsZWFwaXMuY29tL3Byb3RvY29sLlRyaWdnZXJTbWFydENvbnRyYWN0JztcbiAgICBjb250cmFjdC50eXBlID0gJ1RyaWdnZXJTbWFydENvbnRyYWN0JztcbiAgICBjb25zdCBoZXhCdWZmZXIgPSBCdWZmZXIuZnJvbShyYXdEYXRhSGV4LCAnaGV4Jyk7XG4gICAgY29uc3QgaWQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaGV4QnVmZmVyKS5kaWdlc3QoJ2hleCcpO1xuICAgIGNvbnN0IHR4UmVjaXA6IFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICAgIHJhd19kYXRhOiByYXdEYXRhLFxuICAgICAgcmF3X2RhdGFfaGV4OiByYXdEYXRhSGV4LFxuICAgICAgdHhJRDogaWQsXG4gICAgICBzaWduYXR1cmU6IHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLFxuICAgIH07XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eFJlY2lwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmF3RGF0YUhleCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhd0NvbnRyYWN0ID0ge1xuICAgICAgb3duZXJBZGRyZXNzOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl9vd25lckFkZHJlc3MpLFxuICAgICAgY29udHJhY3RBZGRyZXNzOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl90b0NvbnRyYWN0QWRkcmVzcyksXG4gICAgICBkYXRhOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl9kYXRhKSxcbiAgICB9O1xuICAgIGNvbnN0IGNvbnRyYWN0Q2FsbCA9IHByb3RvY29sLlRyaWdnZXJTbWFydENvbnRyYWN0LmZyb21PYmplY3QocmF3Q29udHJhY3QpO1xuICAgIGNvbnN0IGNvbnRyYWN0Qnl0ZXMgPSBwcm90b2NvbC5UcmlnZ2VyU21hcnRDb250cmFjdC5lbmNvZGUoY29udHJhY3RDYWxsKS5maW5pc2goKTtcbiAgICBjb25zdCB0eENvbnRyYWN0ID0ge1xuICAgICAgdHlwZTogQ29udHJhY3RUeXBlLlRyaWdnZXJTbWFydENvbnRyYWN0LFxuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiBjb250cmFjdEJ5dGVzLFxuICAgICAgICB0eXBlX3VybDogJ3R5cGUuZ29vZ2xlYXBpcy5jb20vcHJvdG9jb2wuVHJpZ2dlclNtYXJ0Q29udHJhY3QnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHJhdyA9IHtcbiAgICAgIHJlZkJsb2NrQnl0ZXM6IEJ1ZmZlci5mcm9tKHRoaXMuX3JlZkJsb2NrQnl0ZXMsICdoZXgnKSxcbiAgICAgIHJlZkJsb2NrSGFzaDogQnVmZmVyLmZyb20odGhpcy5fcmVmQmxvY2tIYXNoLCAnaGV4JyksXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLl9leHBpcmF0aW9uIHx8IERhdGUubm93KCkgKyBERUZBVUxUX0VYUElSQVRJT04sXG4gICAgICB0aW1lc3RhbXA6IHRoaXMuX3RpbWVzdGFtcCB8fCBEYXRlLm5vdygpLFxuICAgICAgY29udHJhY3Q6IFt0eENvbnRyYWN0XSxcbiAgICAgIGZlZUxpbWl0OiBwYXJzZUludCh0aGlzLl9mZWUuZmVlTGltaXQsIDEwKSxcbiAgICB9O1xuICAgIGNvbnN0IHJhd1R4ID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmNyZWF0ZShyYXcpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShwcm90b2NvbC5UcmFuc2FjdGlvbi5yYXcuZW5jb2RlKHJhd1R4KS5maW5pc2goKSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNpZ25hdHVyZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIGlucHV0cycpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduaW5nS2V5cy5mb3JFYWNoKChrZXkpID0+IHRoaXMuYXBwbHlTaWduYXR1cmUoa2V5KSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgLy8gU3BlY2lmaWNhbGx5LCBjaGVja3MgaGV4IHVuZGVybHlpbmcgdHJhbnNhY3Rpb24gaGFzaGVzIHRvIGNvcnJlY3QgdHJhbnNhY3Rpb24gSUQuXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCkge1xuICAgIGlmICghdGhpcy5fZGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IGRhdGEnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9vd25lckFkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiBzb3VyY2UnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl90b0NvbnRyYWN0QWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IGNvbnRyYWN0IGFkZHJlc3MnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9yZWZCbG9ja0J5dGVzIHx8ICF0aGlzLl9yZWZCbG9ja0hhc2gpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgYmxvY2sgcmVmZXJlbmNlIGluZm9ybWF0aW9uJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZmVlKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGZlZScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRXhwaXJhdGlvblRpbWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA8IHRoaXMuX3RpbWVzdGFtcCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdFeHBpcmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRpbWVzdGFtcCcpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPCBEYXRlLm5vdygpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0V4cGlyYXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gY3VycmVudCB0aW1lJyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAtIHRoaXMuX3RpbWVzdGFtcCA+IE1BWF9EVVJBVElPTikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdFeHBpcmF0aW9uIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBvbmUgeWVhcicpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,23 +0,0 @@
1
- /**
2
- * Contract type describes a class of contract in a Transaction. This structure is used to identify what the Contract is.
3
- */
4
- export declare enum ContractType {
5
- /**
6
- * This is a transfer of TRX contract.
7
- */
8
- Transfer = 0,
9
- /**
10
- * This is the multi-sig initialization contract.
11
- */
12
- AccountPermissionUpdate = 1,
13
- /**
14
- * This is a smart contract type.
15
- */
16
- TriggerSmartContract = 2
17
- }
18
- export declare enum PermissionType {
19
- Owner = 0,
20
- Witness = 1,
21
- Active = 2
22
- }
23
- //# sourceMappingURL=enum.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../../src/lib/enum.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACtB;;OAEG;IACH,QAAQ,IAAA;IACR;;OAEG;IACH,uBAAuB,IAAA;IACvB;;OAEG;IACH,oBAAoB,IAAA;CACrB;AAED,oBAAY,cAAc;IACxB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,MAAM,IAAA;CACP"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PermissionType = exports.ContractType = void 0;
4
- /**
5
- * Contract type describes a class of contract in a Transaction. This structure is used to identify what the Contract is.
6
- */
7
- var ContractType;
8
- (function (ContractType) {
9
- /**
10
- * This is a transfer of TRX contract.
11
- */
12
- ContractType[ContractType["Transfer"] = 0] = "Transfer";
13
- /**
14
- * This is the multi-sig initialization contract.
15
- */
16
- ContractType[ContractType["AccountPermissionUpdate"] = 1] = "AccountPermissionUpdate";
17
- /**
18
- * This is a smart contract type.
19
- */
20
- ContractType[ContractType["TriggerSmartContract"] = 2] = "TriggerSmartContract";
21
- })(ContractType = exports.ContractType || (exports.ContractType = {}));
22
- var PermissionType;
23
- (function (PermissionType) {
24
- PermissionType[PermissionType["Owner"] = 0] = "Owner";
25
- PermissionType[PermissionType["Witness"] = 1] = "Witness";
26
- PermissionType[PermissionType["Active"] = 2] = "Active";
27
- })(PermissionType = exports.PermissionType || (exports.PermissionType = {}));
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILElBQVksWUFhWDtBQWJELFdBQVksWUFBWTtJQUN0Qjs7T0FFRztJQUNILHVEQUFRLENBQUE7SUFDUjs7T0FFRztJQUNILHFGQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gsK0VBQW9CLENBQUE7QUFDdEIsQ0FBQyxFQWJXLFlBQVksR0FBWixvQkFBWSxLQUFaLG9CQUFZLFFBYXZCO0FBRUQsSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHFEQUFLLENBQUE7SUFDTCx5REFBTyxDQUFBO0lBQ1AsdURBQU0sQ0FBQTtBQUNSLENBQUMsRUFKVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUl6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udHJhY3QgdHlwZSBkZXNjcmliZXMgYSBjbGFzcyBvZiBjb250cmFjdCBpbiBhIFRyYW5zYWN0aW9uLiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHdoYXQgdGhlIENvbnRyYWN0IGlzLlxuICovXG5leHBvcnQgZW51bSBDb250cmFjdFR5cGUge1xuICAvKipcbiAgICogVGhpcyBpcyBhIHRyYW5zZmVyIG9mIFRSWCBjb250cmFjdC5cbiAgICovXG4gIFRyYW5zZmVyLFxuICAvKipcbiAgICogVGhpcyBpcyB0aGUgbXVsdGktc2lnIGluaXRpYWxpemF0aW9uIGNvbnRyYWN0LlxuICAgKi9cbiAgQWNjb3VudFBlcm1pc3Npb25VcGRhdGUsXG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgc21hcnQgY29udHJhY3QgdHlwZS5cbiAgICovXG4gIFRyaWdnZXJTbWFydENvbnRyYWN0LFxufVxuXG5leHBvcnQgZW51bSBQZXJtaXNzaW9uVHlwZSB7XG4gIE93bmVyLFxuICBXaXRuZXNzLFxuICBBY3RpdmUsXG59XG4iXX0=