@bitgo-beta/sdk-coin-trx 1.2.3-alpha.402 → 1.2.3-alpha.403

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 (143) hide show
  1. package/dist/src/index.d.ts +6 -0
  2. package/dist/src/index.d.ts.map +1 -0
  3. package/dist/src/index.js +22 -0
  4. package/dist/src/lib/address.d.ts +11 -0
  5. package/dist/src/lib/address.d.ts.map +1 -0
  6. package/dist/src/lib/address.js +13 -0
  7. package/dist/src/lib/builder.d.ts +3 -0
  8. package/dist/src/lib/builder.d.ts.map +1 -0
  9. package/dist/src/lib/builder.js +10 -0
  10. package/dist/src/lib/constants.d.ts +3 -0
  11. package/dist/src/lib/constants.d.ts.map +1 -0
  12. package/dist/src/lib/constants.js +6 -0
  13. package/dist/src/lib/contractCallBuilder.d.ts +62 -0
  14. package/dist/src/lib/contractCallBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/contractCallBuilder.js +218 -0
  16. package/dist/src/lib/delegateResourceTxBuilder.d.ts +27 -0
  17. package/dist/src/lib/delegateResourceTxBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/delegateResourceTxBuilder.js +98 -0
  19. package/dist/src/lib/enum.d.ts +58 -0
  20. package/dist/src/lib/enum.d.ts.map +1 -0
  21. package/dist/src/lib/enum.js +64 -0
  22. package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
  23. package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/freezeBalanceTxBuilder.js +211 -0
  25. package/dist/src/lib/iface.d.ts +321 -0
  26. package/dist/src/lib/iface.d.ts.map +1 -0
  27. package/dist/src/lib/iface.js +3 -0
  28. package/dist/src/lib/index.d.ts +12 -0
  29. package/dist/src/lib/index.d.ts.map +1 -0
  30. package/dist/src/lib/index.js +53 -0
  31. package/dist/src/lib/keyPair.d.ts +43 -0
  32. package/dist/src/lib/keyPair.d.ts.map +1 -0
  33. package/dist/src/lib/keyPair.js +134 -0
  34. package/dist/src/lib/resourceManagementTxBuilder.d.ts +72 -0
  35. package/dist/src/lib/resourceManagementTxBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/resourceManagementTxBuilder.js +150 -0
  37. package/dist/src/lib/tokenTransferBuilder.d.ts +23 -0
  38. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/tokenTransferBuilder.js +42 -0
  40. package/dist/src/lib/transaction.d.ts +74 -0
  41. package/dist/src/lib/transaction.d.ts.map +1 -0
  42. package/dist/src/lib/transaction.js +312 -0
  43. package/dist/src/lib/transactionBuilder.d.ts +110 -0
  44. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/transactionBuilder.js +304 -0
  46. package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
  47. package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/undelegateResourceTxBuilder.js +98 -0
  49. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
  50. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/unfreezeBalanceTxBuilder.js +204 -0
  52. package/dist/src/lib/utils.d.ts +197 -0
  53. package/dist/src/lib/utils.d.ts.map +1 -0
  54. package/dist/src/lib/utils.js +745 -0
  55. package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
  56. package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
  58. package/dist/src/lib/withdrawBuilder.d.ts +49 -0
  59. package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/withdrawBuilder.js +167 -0
  61. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
  62. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
  64. package/dist/src/lib/wrappedBuilder.d.ts +110 -0
  65. package/dist/src/lib/wrappedBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/wrappedBuilder.js +192 -0
  67. package/dist/src/register.d.ts +3 -0
  68. package/dist/src/register.d.ts.map +1 -0
  69. package/dist/src/register.js +15 -0
  70. package/dist/src/trx.d.ts +262 -0
  71. package/dist/src/trx.d.ts.map +1 -0
  72. package/dist/src/trx.js +737 -0
  73. package/dist/src/trxToken.d.ts +38 -0
  74. package/dist/src/trxToken.d.ts.map +1 -0
  75. package/dist/src/trxToken.js +91 -0
  76. package/dist/src/ttrx.d.ts +13 -0
  77. package/dist/src/ttrx.d.ts.map +1 -0
  78. package/dist/src/ttrx.js +14 -0
  79. package/dist/test/fixtures.d.ts +40 -0
  80. package/dist/test/fixtures.d.ts.map +1 -0
  81. package/dist/test/fixtures.js +46 -0
  82. package/dist/test/resources.d.ts +586 -0
  83. package/dist/test/resources.d.ts.map +1 -0
  84. package/dist/test/resources.js +746 -0
  85. package/dist/test/unit/index.d.ts +2 -0
  86. package/dist/test/unit/index.d.ts.map +1 -0
  87. package/dist/test/unit/index.js +19 -0
  88. package/dist/test/unit/keyPair.d.ts +2 -0
  89. package/dist/test/unit/keyPair.d.ts.map +1 -0
  90. package/dist/test/unit/keyPair.js +163 -0
  91. package/dist/test/unit/transaction.d.ts +2 -0
  92. package/dist/test/unit/transaction.d.ts.map +1 -0
  93. package/dist/test/unit/transaction.js +38 -0
  94. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
  95. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
  96. package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
  97. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
  98. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
  99. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +255 -0
  100. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
  101. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
  102. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +256 -0
  103. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  104. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  105. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +42 -0
  106. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
  107. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
  108. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +255 -0
  109. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
  110. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  111. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +256 -0
  112. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
  113. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
  114. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
  115. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
  116. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
  117. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
  118. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
  119. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  120. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
  121. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
  122. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
  123. package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
  124. package/dist/test/unit/transactionBuilder.d.ts +2 -0
  125. package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
  126. package/dist/test/unit/transactionBuilder.js +178 -0
  127. package/dist/test/unit/trx.d.ts +2 -0
  128. package/dist/test/unit/trx.d.ts.map +1 -0
  129. package/dist/test/unit/trx.js +532 -0
  130. package/dist/test/unit/util.d.ts +2 -0
  131. package/dist/test/unit/util.d.ts.map +1 -0
  132. package/dist/test/unit/util.js +141 -0
  133. package/dist/tsconfig.tsbuildinfo +1 -0
  134. package/package.json +9 -6
  135. package/.eslintignore +0 -5
  136. package/.mocharc.yml +0 -8
  137. package/CHANGELOG.md +0 -1092
  138. package/resources/README.md +0 -31
  139. package/resources/protobuf/Contract.proto +0 -288
  140. package/resources/protobuf/Discover.proto +0 -44
  141. package/resources/protobuf/tron.d.ts +0 -12469
  142. package/resources/protobuf/tron.js +0 -37192
  143. package/resources/protobuf/tron.proto +0 -683
@@ -0,0 +1,72 @@
1
+ import { BaseKey } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction';
5
+ import { ResourceManagementContract } from './iface';
6
+ import { Address } from './address';
7
+ /**
8
+ * Abstract base class for resource management transaction builders (delegate/undelegate)
9
+ */
10
+ export declare abstract class ResourceManagementTxBuilder extends TransactionBuilder {
11
+ protected _signingKeys: BaseKey[];
12
+ protected _balance: string;
13
+ protected _resource: string;
14
+ protected _receiverAddress: string;
15
+ constructor(_coinConfig: Readonly<CoinConfig>);
16
+ /**
17
+ * Set the balance amount
18
+ *
19
+ * @param amount amount in TRX to delegate/undelegate
20
+ * @returns the builder with the new parameter set
21
+ */
22
+ setBalance(amount: string): this;
23
+ /**
24
+ * Set the receiver address
25
+ *
26
+ * @param address receiver address for the delegate/undelegate operation
27
+ * @returns the builder with the new parameter set
28
+ */
29
+ setReceiverAddress(address: Address): this;
30
+ /**
31
+ * Set the resource type
32
+ *
33
+ * @param resource resource type to delegate/undelegate
34
+ * @returns the builder with the new parameter set
35
+ */
36
+ setResource(resource: string): this;
37
+ /** @inheritdoc */
38
+ extendValidTo(extensionMs: number): void;
39
+ /**
40
+ * Validates the transaction
41
+ *
42
+ * @param {Transaction} transaction - The transaction to validate
43
+ * @throws {void}
44
+ */
45
+ validateTransaction(transaction: Transaction): void;
46
+ /** @inheritdoc */
47
+ protected buildImplementation(): Promise<Transaction>;
48
+ /** @inheritdoc */
49
+ protected signImplementation(key: BaseKey): Transaction;
50
+ protected applySignatures(): void;
51
+ /**
52
+ * Validates if the transaction is a valid delegate/undelegate transaction
53
+ *
54
+ * @throws {BuildTransactionError} when the transaction is invalid
55
+ */
56
+ protected validateResourceManagementTransactionFields(): void;
57
+ /**
58
+ * Initialize the delegate/undelegate contract call specific data
59
+ *
60
+ * @param {ResourceManagementContract} resourceManagementContractCall object with delegate txn data
61
+ */
62
+ protected initResourceManagementContractCall(resourceManagementContractCall: ResourceManagementContract): void;
63
+ /**
64
+ * Helper method to create the delegate/undelegate resource transaction
65
+ */
66
+ protected abstract createResourceManagementTransaction(): void;
67
+ /**
68
+ * Helper method to get the resource delegate/undelegate transaction raw data hex
69
+ */
70
+ protected abstract getResourceManagementTxRawDataHex(): string;
71
+ }
72
+ //# sourceMappingURL=resourceManagementTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceManagementTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/resourceManagementTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA+D,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;GAEG;AACH,8BAAsB,2BAA4B,SAAQ,kBAAkB;IAC1E,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;IAClC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEvB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMhC;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM1C;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoBxC;;;;;OAKG;IACH,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAa3D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IASvD,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC;;;;OAIG;IACH,SAAS,CAAC,2CAA2C,IAAI,IAAI;IAsB7D;;;;OAIG;IACH,SAAS,CAAC,kCAAkC,CAAC,8BAA8B,EAAE,0BAA0B,GAAG,IAAI;IAmB9G;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,mCAAmC,IAAI,IAAI;IAE9D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,iCAAiC,IAAI,MAAM;CAC/D"}
@@ -0,0 +1,150 @@
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.ResourceManagementTxBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const transaction_1 = require("./transaction");
11
+ const utils_1 = require("./utils");
12
+ /**
13
+ * Abstract base class for resource management transaction builders (delegate/undelegate)
14
+ */
15
+ class ResourceManagementTxBuilder extends transactionBuilder_1.TransactionBuilder {
16
+ constructor(_coinConfig) {
17
+ super(_coinConfig);
18
+ this._signingKeys = [];
19
+ this.transaction = new transaction_1.Transaction(_coinConfig);
20
+ }
21
+ /**
22
+ * Set the balance amount
23
+ *
24
+ * @param amount amount in TRX to delegate/undelegate
25
+ * @returns the builder with the new parameter set
26
+ */
27
+ setBalance(amount) {
28
+ this.validateValue(new bignumber_js_1.default(amount));
29
+ this._balance = amount;
30
+ return this;
31
+ }
32
+ /**
33
+ * Set the receiver address
34
+ *
35
+ * @param address receiver address for the delegate/undelegate operation
36
+ * @returns the builder with the new parameter set
37
+ */
38
+ setReceiverAddress(address) {
39
+ this.validateAddress(address);
40
+ this._receiverAddress = (0, utils_1.getHexAddressFromBase58Address)(address.address);
41
+ return this;
42
+ }
43
+ /**
44
+ * Set the resource type
45
+ *
46
+ * @param resource resource type to delegate/undelegate
47
+ * @returns the builder with the new parameter set
48
+ */
49
+ setResource(resource) {
50
+ this.validateResource(resource);
51
+ this._resource = resource;
52
+ return this;
53
+ }
54
+ /** @inheritdoc */
55
+ extendValidTo(extensionMs) {
56
+ if (this.transaction.signature && this.transaction.signature.length > 0) {
57
+ throw new sdk_core_1.ExtendTransactionError('Cannot extend a signed transaction');
58
+ }
59
+ if (extensionMs <= 0) {
60
+ throw new Error('Value cannot be below zero');
61
+ }
62
+ if (extensionMs > utils_1.TRANSACTION_MAX_EXPIRATION) {
63
+ throw new sdk_core_1.ExtendTransactionError('The expiration cannot be extended more than one year');
64
+ }
65
+ if (this._expiration) {
66
+ this._expiration = this._expiration + extensionMs;
67
+ }
68
+ else {
69
+ throw new Error('There is not expiration to extend');
70
+ }
71
+ }
72
+ /**
73
+ * Validates the transaction
74
+ *
75
+ * @param {Transaction} transaction - The transaction to validate
76
+ * @throws {void}
77
+ */
78
+ validateTransaction(transaction) {
79
+ this.validateResourceManagementTransactionFields();
80
+ }
81
+ /** @inheritdoc */
82
+ async buildImplementation() {
83
+ this.createResourceManagementTransaction();
84
+ if (this._signingKeys.length > 0) {
85
+ this.applySignatures();
86
+ }
87
+ if (!this.transaction.id) {
88
+ throw new sdk_core_1.BuildTransactionError('A valid transaction must have an id');
89
+ }
90
+ return Promise.resolve(this.transaction);
91
+ }
92
+ /** @inheritdoc */
93
+ signImplementation(key) {
94
+ if (this._signingKeys.some((signingKey) => signingKey.key === key.key)) {
95
+ throw new sdk_core_1.SigningError('Duplicated key');
96
+ }
97
+ this._signingKeys.push(key);
98
+ return this.transaction;
99
+ }
100
+ applySignatures() {
101
+ if (!this.transaction.inputs) {
102
+ throw new sdk_core_1.SigningError('Transaction has no inputs');
103
+ }
104
+ this._signingKeys.forEach((key) => this.applySignature(key));
105
+ }
106
+ /**
107
+ * Validates if the transaction is a valid delegate/undelegate transaction
108
+ *
109
+ * @throws {BuildTransactionError} when the transaction is invalid
110
+ */
111
+ validateResourceManagementTransactionFields() {
112
+ if (!this._balance) {
113
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: balance');
114
+ }
115
+ if (!this._ownerAddress) {
116
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: source');
117
+ }
118
+ if (!this._resource) {
119
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: resource');
120
+ }
121
+ if (!this._receiverAddress) {
122
+ throw new sdk_core_1.BuildTransactionError('Missing parameter: receiver address');
123
+ }
124
+ if (!this._refBlockBytes || !this._refBlockHash) {
125
+ throw new sdk_core_1.BuildTransactionError('Missing block reference information');
126
+ }
127
+ }
128
+ /**
129
+ * Initialize the delegate/undelegate contract call specific data
130
+ *
131
+ * @param {ResourceManagementContract} resourceManagementContractCall object with delegate txn data
132
+ */
133
+ initResourceManagementContractCall(resourceManagementContractCall) {
134
+ const { resource, owner_address, balance, receiver_address } = resourceManagementContractCall.parameter.value;
135
+ if (owner_address) {
136
+ this.source({ address: (0, utils_1.getBase58AddressFromHex)(owner_address) });
137
+ }
138
+ if (resource) {
139
+ this.setResource(resource);
140
+ }
141
+ if (balance !== undefined) {
142
+ this.setBalance(balance.toString());
143
+ }
144
+ if (receiver_address) {
145
+ this.setReceiverAddress({ address: (0, utils_1.getBase58AddressFromHex)(receiver_address) });
146
+ }
147
+ }
148
+ }
149
+ exports.ResourceManagementTxBuilder = ResourceManagementTxBuilder;
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VNYW5hZ2VtZW50VHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZXNvdXJjZU1hbmFnZW1lbnRUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTRHO0FBRTVHLGdFQUFxQztBQUVyQyw2REFBMEQ7QUFDMUQsK0NBQTRDO0FBRzVDLG1DQUE4RztBQUU5Rzs7R0FFRztBQUNILE1BQXNCLDJCQUE0QixTQUFRLHVDQUFrQjtJQU0xRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsT0FBZ0I7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxzQ0FBOEIsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsUUFBZ0I7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2Qs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QUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoRCxNQUFNLElBQUksZ0NBQXFCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxrQ0FBa0MsQ0FBQyw4QkFBMEQ7UUFDckcsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsOEJBQThCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUM5RyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBQSwrQkFBdUIsRUFBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUEsK0JBQXVCLEVBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7Q0FXRjtBQTNLRCxrRUEyS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBFeHRlbmRUcmFuc2FjdGlvbkVycm9yLCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9hZGRyZXNzJztcbmltcG9ydCB7IGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4LCBUUkFOU0FDVElPTl9NQVhfRVhQSVJBVElPTiwgZ2V0SGV4QWRkcmVzc0Zyb21CYXNlNThBZGRyZXNzIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcmVzb3VyY2UgbWFuYWdlbWVudCB0cmFuc2FjdGlvbiBidWlsZGVycyAoZGVsZWdhdGUvdW5kZWxlZ2F0ZSlcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc291cmNlTWFuYWdlbWVudFR4QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfc2lnbmluZ0tleXM6IEJhc2VLZXlbXTtcbiAgcHJvdGVjdGVkIF9iYWxhbmNlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcmVzb3VyY2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWNlaXZlckFkZHJlc3M6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2lnbmluZ0tleXMgPSBbXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGJhbGFuY2UgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSBhbW91bnQgYW1vdW50IGluIFRSWCB0byBkZWxlZ2F0ZS91bmRlbGVnYXRlXG4gICAqIEByZXR1cm5zIHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzZXRCYWxhbmNlKGFtb3VudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoYW1vdW50KSk7XG4gICAgdGhpcy5fYmFsYW5jZSA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJlY2VpdmVyIGFkZHJlc3NcbiAgICpcbiAgICogQHBhcmFtIGFkZHJlc3MgcmVjZWl2ZXIgYWRkcmVzcyBmb3IgdGhlIGRlbGVnYXRlL3VuZGVsZWdhdGUgb3BlcmF0aW9uXG4gICAqIEByZXR1cm5zIHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzZXRSZWNlaXZlckFkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MpO1xuICAgIHRoaXMuX3JlY2VpdmVyQWRkcmVzcyA9IGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmVzb3VyY2UgdHlwZVxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2UgcmVzb3VyY2UgdHlwZSB0byBkZWxlZ2F0ZS91bmRlbGVnYXRlXG4gICAqIEByZXR1cm5zIHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzZXRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVJlc291cmNlKHJlc291cmNlKTtcbiAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXM6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZSAmJiB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcignQ2Fubm90IGV4dGVuZCBhIHNpZ25lZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25NcyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBiZWxvdyB6ZXJvJyk7XG4gICAgfVxuXG4gICAgaWYgKGV4dGVuc2lvbk1zID4gVFJBTlNBQ1RJT05fTUFYX0VYUElSQVRJT04pIHtcbiAgICAgIHRocm93IG5ldyBFeHRlbmRUcmFuc2FjdGlvbkVycm9yKCdUaGUgZXhwaXJhdGlvbiBjYW5ub3QgYmUgZXh0ZW5kZWQgbW9yZSB0aGFuIG9uZSB5ZWFyJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V4cGlyYXRpb24pIHtcbiAgICAgIHRoaXMuX2V4cGlyYXRpb24gPSB0aGlzLl9leHBpcmF0aW9uICsgZXh0ZW5zaW9uTXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm90IGV4cGlyYXRpb24gdG8gZXh0ZW5kJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gLSBUaGUgdHJhbnNhY3Rpb24gdG8gdmFsaWRhdGVcbiAgICogQHRocm93cyB7dm9pZH1cbiAgICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZVJlc291cmNlTWFuYWdlbWVudFRyYW5zYWN0aW9uRmllbGRzKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuY3JlYXRlUmVzb3VyY2VNYW5hZ2VtZW50VHJhbnNhY3Rpb24oKTtcblxuICAgIGlmICh0aGlzLl9zaWduaW5nS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFwcGx5U2lnbmF0dXJlcygpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5pZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQSB2YWxpZCB0cmFuc2FjdGlvbiBtdXN0IGhhdmUgYW4gaWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAodGhpcy5fc2lnbmluZ0tleXMuc29tZSgoc2lnbmluZ0tleSkgPT4gc2lnbmluZ0tleS5rZXkgPT09IGtleS5rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdEdXBsaWNhdGVkIGtleScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduaW5nS2V5cy5wdXNoKGtleSk7XG5cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcHBseVNpZ25hdHVyZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIGlucHV0cycpO1xuICAgIH1cblxuICAgIHRoaXMuX3NpZ25pbmdLZXlzLmZvckVhY2goKGtleSkgPT4gdGhpcy5hcHBseVNpZ25hdHVyZShrZXkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGEgdmFsaWQgZGVsZWdhdGUvdW5kZWxlZ2F0ZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAdGhyb3dzIHtCdWlsZFRyYW5zYWN0aW9uRXJyb3J9IHdoZW4gdGhlIHRyYW5zYWN0aW9uIGlzIGludmFsaWRcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVJlc291cmNlTWFuYWdlbWVudFRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYmFsYW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IGJhbGFuY2UnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX293bmVyQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBwYXJhbWV0ZXI6IHNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVzb3VyY2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgcGFyYW1ldGVyOiByZXNvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVjZWl2ZXJBZGRyZXNzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIHBhcmFtZXRlcjogcmVjZWl2ZXIgYWRkcmVzcycpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fcmVmQmxvY2tCeXRlcyB8fCAhdGhpcy5fcmVmQmxvY2tIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdNaXNzaW5nIGJsb2NrIHJlZmVyZW5jZSBpbmZvcm1hdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBkZWxlZ2F0ZS91bmRlbGVnYXRlIGNvbnRyYWN0IGNhbGwgc3BlY2lmaWMgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1Jlc291cmNlTWFuYWdlbWVudENvbnRyYWN0fSByZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdENhbGwgb2JqZWN0IHdpdGggZGVsZWdhdGUgdHhuIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBpbml0UmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3RDYWxsKHJlc291cmNlTWFuYWdlbWVudENvbnRyYWN0Q2FsbDogUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3QpOiB2b2lkIHtcbiAgICBjb25zdCB7IHJlc291cmNlLCBvd25lcl9hZGRyZXNzLCBiYWxhbmNlLCByZWNlaXZlcl9hZGRyZXNzIH0gPSByZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdENhbGwucGFyYW1ldGVyLnZhbHVlO1xuICAgIGlmIChvd25lcl9hZGRyZXNzKSB7XG4gICAgICB0aGlzLnNvdXJjZSh7IGFkZHJlc3M6IGdldEJhc2U1OEFkZHJlc3NGcm9tSGV4KG93bmVyX2FkZHJlc3MpIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNvdXJjZSkge1xuICAgICAgdGhpcy5zZXRSZXNvdXJjZShyZXNvdXJjZSk7XG4gICAgfVxuXG4gICAgaWYgKGJhbGFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXRCYWxhbmNlKGJhbGFuY2UudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgaWYgKHJlY2VpdmVyX2FkZHJlc3MpIHtcbiAgICAgIHRoaXMuc2V0UmVjZWl2ZXJBZGRyZXNzKHsgYWRkcmVzczogZ2V0QmFzZTU4QWRkcmVzc0Zyb21IZXgocmVjZWl2ZXJfYWRkcmVzcykgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY3JlYXRlIHRoZSBkZWxlZ2F0ZS91bmRlbGVnYXRlIHJlc291cmNlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlUmVzb3VyY2VNYW5hZ2VtZW50VHJhbnNhY3Rpb24oKTogdm9pZDtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBnZXQgdGhlIHJlc291cmNlIGRlbGVnYXRlL3VuZGVsZWdhdGUgdHJhbnNhY3Rpb24gcmF3IGRhdGEgaGV4XG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0UmVzb3VyY2VNYW5hZ2VtZW50VHhSYXdEYXRhSGV4KCk6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BaseKey } from '@bitgo-beta/sdk-core';
3
+ import { ContractCallBuilder } from './contractCallBuilder';
4
+ import { Transaction } from './transaction';
5
+ export declare class TokenTransferBuilder extends ContractCallBuilder {
6
+ private _recipientAddress;
7
+ private _amount;
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ /** @inheritdoc */
10
+ protected buildImplementation(): Promise<Transaction>;
11
+ /**
12
+ * Set the data with the transfer method call and parameters
13
+ *
14
+ * @param recipientAddress - recipient of token transfer
15
+ * @param amount - token amount
16
+ */
17
+ tokenTransferData(recipientAddress: string, amount: string): this;
18
+ /** @inheritdoc */
19
+ protected fromImplementation(rawTransaction: any): Transaction;
20
+ /** @inheritdoc */
21
+ protected signImplementation(key: BaseKey): Transaction;
22
+ }
23
+ //# sourceMappingURL=tokenTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/tokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,iBAAiB,CAAC;IAC1B,OAAO,CAAC,OAAO,CAAC;gBAEJ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI3D;;;;;OAKG;IACH,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWjE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,GAAG,GAAG,WAAW;IAI9D,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;CAGxD"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenTransferBuilder = void 0;
4
+ const contractCallBuilder_1 = require("./contractCallBuilder");
5
+ const utils_1 = require("./utils");
6
+ // the first 4 bytes of the Keccak-256 encoded function selector used in token transfers, 'transfer(address,uint256)'
7
+ // this must be concatenated with the encoded parameters, recipientAddress and amount
8
+ const methodId = '0xa9059cbb';
9
+ class TokenTransferBuilder extends contractCallBuilder_1.ContractCallBuilder {
10
+ constructor(_coinConfig) {
11
+ super(_coinConfig);
12
+ }
13
+ /** @inheritdoc */
14
+ async buildImplementation() {
15
+ return await super.buildImplementation();
16
+ }
17
+ /**
18
+ * Set the data with the transfer method call and parameters
19
+ *
20
+ * @param recipientAddress - recipient of token transfer
21
+ * @param amount - token amount
22
+ */
23
+ tokenTransferData(recipientAddress, amount) {
24
+ this.validateAddress({ address: recipientAddress });
25
+ const recipientHex = (0, utils_1.getHexAddressFromBase58Address)(recipientAddress);
26
+ const types = ['address', 'uint256'];
27
+ const values = [recipientHex, amount];
28
+ const tokenTransferData = (0, utils_1.encodeDataParams)(types, values, methodId);
29
+ this.data(tokenTransferData);
30
+ return this;
31
+ }
32
+ /** @inheritdoc */
33
+ fromImplementation(rawTransaction) {
34
+ return super.fromImplementation(rawTransaction);
35
+ }
36
+ /** @inheritdoc */
37
+ signImplementation(key) {
38
+ return super.signImplementation(key);
39
+ }
40
+ }
41
+ exports.TokenTransferBuilder = TokenTransferBuilder;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLCtEQUE0RDtBQUU1RCxtQ0FBMkU7QUFFM0UscUhBQXFIO0FBQ3JILHFGQUFxRjtBQUNyRixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUM7QUFFOUIsTUFBYSxvQkFBcUIsU0FBUSx5Q0FBbUI7SUFJM0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGlCQUFpQixDQUFDLGdCQUF3QixFQUFFLE1BQWM7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDcEQsTUFBTSxZQUFZLEdBQUcsSUFBQSxzQ0FBOEIsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRFLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFtQjtRQUM5QyxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF2Q0Qsb0RBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZUtleSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENvbnRyYWN0Q2FsbEJ1aWxkZXIgfSBmcm9tICcuL2NvbnRyYWN0Q2FsbEJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcywgZW5jb2RlRGF0YVBhcmFtcyB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyB0aGUgZmlyc3QgNCBieXRlcyBvZiB0aGUgS2VjY2FrLTI1NiBlbmNvZGVkIGZ1bmN0aW9uIHNlbGVjdG9yIHVzZWQgaW4gdG9rZW4gdHJhbnNmZXJzLCAndHJhbnNmZXIoYWRkcmVzcyx1aW50MjU2KSdcbi8vIHRoaXMgbXVzdCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgZW5jb2RlZCBwYXJhbWV0ZXJzLCByZWNpcGllbnRBZGRyZXNzIGFuZCBhbW91bnRcbmNvbnN0IG1ldGhvZElkID0gJzB4YTkwNTljYmInO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBDb250cmFjdENhbGxCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfcmVjaXBpZW50QWRkcmVzczsgLy8gY3VycmVudGx5IG9ubHkgc3VwcG9ydCAxIHRva2VuL3RyYW5zZmVyXG4gIHByaXZhdGUgX2Ftb3VudDtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkYXRhIHdpdGggdGhlIHRyYW5zZmVyIG1ldGhvZCBjYWxsIGFuZCBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBwYXJhbSByZWNpcGllbnRBZGRyZXNzIC0gcmVjaXBpZW50IG9mIHRva2VuIHRyYW5zZmVyXG4gICAqIEBwYXJhbSBhbW91bnQgLSB0b2tlbiBhbW91bnRcbiAgICovXG4gIHRva2VuVHJhbnNmZXJEYXRhKHJlY2lwaWVudEFkZHJlc3M6IHN0cmluZywgYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MgfSk7XG4gICAgY29uc3QgcmVjaXBpZW50SGV4ID0gZ2V0SGV4QWRkcmVzc0Zyb21CYXNlNThBZGRyZXNzKHJlY2lwaWVudEFkZHJlc3MpO1xuXG4gICAgY29uc3QgdHlwZXMgPSBbJ2FkZHJlc3MnLCAndWludDI1NiddO1xuICAgIGNvbnN0IHZhbHVlcyA9IFtyZWNpcGllbnRIZXgsIGFtb3VudF07XG4gICAgY29uc3QgdG9rZW5UcmFuc2ZlckRhdGEgPSBlbmNvZGVEYXRhUGFyYW1zKHR5cGVzLCB2YWx1ZXMsIG1ldGhvZElkKTtcbiAgICB0aGlzLmRhdGEodG9rZW5UcmFuc2ZlckRhdGEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gc3VwZXIuc2lnbkltcGxlbWVudGF0aW9uKGtleSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,74 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BaseKey, BaseTransaction, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { ContractEntry, TransactionReceipt } from './iface';
4
+ /**
5
+ * Tron transaction model.
6
+ */
7
+ export declare class Transaction extends BaseTransaction {
8
+ protected _validFrom: number;
9
+ protected _validTo: number;
10
+ protected _inputs: ContractEntry[];
11
+ protected _outputs: ContractEntry[];
12
+ private _decodedRawDataHex;
13
+ private _transaction?;
14
+ /**
15
+ * Public constructor.
16
+ *
17
+ * @param coinConfig
18
+ * @param rawTransaction
19
+ */
20
+ constructor(coinConfig: Readonly<CoinConfig>, rawTransaction?: TransactionReceipt);
21
+ /**
22
+ * Parse the transaction raw data and record the most important fields.
23
+ *
24
+ * @param rawData Object from a tron transaction
25
+ */
26
+ private recordRawDataFields;
27
+ /**
28
+ * Recalculate and update the transaction id. This should be done after changing any transaction
29
+ * field since the the id is a hash of the transaction body.
30
+ */
31
+ private updateId;
32
+ /**
33
+ * Extend the expiration date by the given number of milliseconds.
34
+ *
35
+ * @param extensionMs The number of milliseconds to extend the expiration by
36
+ */
37
+ extendExpiration(extensionMs: number): void;
38
+ /**
39
+ * Get the signatures associated with this transaction.
40
+ */
41
+ get signature(): string[];
42
+ /**
43
+ * Get the time in milliseconds this transaction becomes valid and can be broadcasted to the
44
+ * network.
45
+ */
46
+ get validFrom(): number;
47
+ /**
48
+ * Get the expiration time in milliseconds.
49
+ */
50
+ get validTo(): number;
51
+ /** @inheritdoc */
52
+ get outputs(): ContractEntry[];
53
+ /** @inheritdoc */
54
+ get inputs(): ContractEntry[];
55
+ /** @inheritdoc */
56
+ canSign(key: BaseKey): boolean;
57
+ /**
58
+ * Sets this transaction
59
+ *
60
+ * @param {Transaction} tx transaction
61
+ */
62
+ setTransactionReceipt(tx: TransactionReceipt): void;
63
+ /**
64
+ * Set the transaction type
65
+ *
66
+ * @param {TransactionType} transactionType The transaction type to be set
67
+ */
68
+ setTransactionType(transactionType: TransactionType): void;
69
+ /** @inheritdoc */
70
+ toJson(): TransactionReceipt;
71
+ /** @inheritdoc */
72
+ toBroadcastFormat(): any;
73
+ }
74
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EACL,OAAO,EACP,eAAe,EAGf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EACL,aAAa,EAGb,kBAAkB,EAQnB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAE9C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;IACnC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAEpC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,YAAY,CAAC,CAAqB;IAE1C;;;;;OAKG;gBACS,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,kBAAkB;IAejF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAmK3B;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAgC3C;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IACD;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,kBAAkB;IAClB,IAAI,OAAO,IAAI,aAAa,EAAE,CAE7B;IAED,kBAAkB;IAClB,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAO9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,EAAE,kBAAkB;IAK5C;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,MAAM,IAAI,kBAAkB;IAO5B,kBAAkB;IAClB,iBAAiB,IAAI,GAAG;CAGzB"}