@bitgo-beta/sdk-coin-vet 1.0.1-beta.49 → 1.0.1-beta.490

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 (151) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +3 -1
  4. package/dist/src/lib/constants.d.ts +25 -0
  5. package/dist/src/lib/constants.d.ts.map +1 -1
  6. package/dist/src/lib/constants.js +27 -2
  7. package/dist/src/lib/iface.d.ts +26 -2
  8. package/dist/src/lib/iface.d.ts.map +1 -1
  9. package/dist/src/lib/iface.js +1 -1
  10. package/dist/src/lib/index.d.ts +19 -0
  11. package/dist/src/lib/index.d.ts.map +1 -1
  12. package/dist/src/lib/index.js +40 -2
  13. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  14. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  15. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  16. package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
  17. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  18. package/dist/src/lib/transaction/burnNftTransaction.js +131 -0
  19. package/dist/src/lib/transaction/claimRewards.d.ts +41 -0
  20. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  21. package/dist/src/lib/transaction/claimRewards.js +210 -0
  22. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts +27 -0
  23. package/dist/src/lib/transaction/delegateClauseTransaction.d.ts.map +1 -0
  24. package/dist/src/lib/transaction/delegateClauseTransaction.js +156 -0
  25. package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
  26. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  27. package/dist/src/lib/transaction/exitDelegation.js +136 -0
  28. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  29. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  30. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  31. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  32. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  33. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  34. package/dist/src/lib/transaction/stakeClauseTransaction.d.ts +27 -0
  35. package/dist/src/lib/transaction/stakeClauseTransaction.d.ts.map +1 -0
  36. package/dist/src/lib/transaction/stakeClauseTransaction.js +158 -0
  37. package/dist/src/lib/transaction/stakingTransaction.d.ts +31 -0
  38. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  39. package/dist/src/lib/transaction/stakingTransaction.js +169 -0
  40. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  41. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  42. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  43. package/dist/src/lib/transaction/transaction.d.ts +18 -28
  44. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  45. package/dist/src/lib/transaction/transaction.js +97 -57
  46. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  47. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  49. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +59 -0
  50. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +118 -0
  52. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
  53. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +142 -0
  55. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts +66 -0
  56. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/transactionBuilder/delegateTxnBuilder.js +120 -0
  58. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +58 -0
  59. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +115 -0
  61. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  62. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  63. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  64. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  65. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  67. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts +73 -0
  68. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/transactionBuilder/stakeClauseTxnBuilder.js +146 -0
  70. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +73 -0
  71. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/transactionBuilder/stakingBuilder.js +147 -0
  73. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  74. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  76. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts +10 -9
  77. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -1
  78. package/dist/src/lib/transactionBuilder/transactionBuilder.js +25 -19
  79. package/dist/src/lib/transactionBuilderFactory.d.ts +52 -0
  80. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  81. package/dist/src/lib/transactionBuilderFactory.js +115 -1
  82. package/dist/src/lib/types.d.ts +24 -0
  83. package/dist/src/lib/types.d.ts.map +1 -1
  84. package/dist/src/lib/types.js +1 -1
  85. package/dist/src/lib/utils.d.ts +98 -1
  86. package/dist/src/lib/utils.d.ts.map +1 -1
  87. package/dist/src/lib/utils.js +262 -8
  88. package/dist/src/register.d.ts.map +1 -1
  89. package/dist/src/register.js +9 -1
  90. package/dist/src/vet.d.ts +80 -2
  91. package/dist/src/vet.d.ts.map +1 -1
  92. package/dist/src/vet.js +478 -8
  93. package/dist/src/vetNFTCollection.d.ts +18 -0
  94. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  95. package/dist/src/vetNFTCollection.js +52 -0
  96. package/dist/src/vetToken.d.ts +19 -0
  97. package/dist/src/vetToken.d.ts.map +1 -0
  98. package/dist/src/vetToken.js +52 -0
  99. package/dist/test/resources/vet.d.ts +70 -0
  100. package/dist/test/resources/vet.d.ts.map +1 -0
  101. package/dist/test/resources/vet.js +125 -0
  102. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts +2 -0
  103. package/dist/test/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  104. package/dist/test/transactionBuilder/addressInitializationBuilder.js +141 -0
  105. package/dist/test/transactionBuilder/burnNftBuilder.d.ts +2 -0
  106. package/dist/test/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  107. package/dist/test/transactionBuilder/burnNftBuilder.js +154 -0
  108. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts +2 -0
  109. package/dist/test/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  110. package/dist/test/transactionBuilder/claimRewardsBuilder.js +246 -0
  111. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts +2 -0
  112. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.d.ts.map +1 -0
  113. package/dist/test/transactionBuilder/delegateClauseTxnBuilder.js +173 -0
  114. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts +2 -0
  115. package/dist/test/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  116. package/dist/test/transactionBuilder/exitDelegationBuilder.js +154 -0
  117. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts +2 -0
  118. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  119. package/dist/test/transactionBuilder/flushTokenTransactionBuilder.js +132 -0
  120. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts +2 -0
  121. package/dist/test/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  122. package/dist/test/transactionBuilder/nftTransactionBuilder.js +242 -0
  123. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts +2 -0
  124. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.d.ts.map +1 -0
  125. package/dist/test/transactionBuilder/stakeClauseTransactionBuilder.js +248 -0
  126. package/dist/test/transactionBuilder/stakingTransaction.d.ts +2 -0
  127. package/dist/test/transactionBuilder/stakingTransaction.d.ts.map +1 -0
  128. package/dist/test/transactionBuilder/stakingTransaction.js +250 -0
  129. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts +2 -0
  130. package/dist/test/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  131. package/dist/test/transactionBuilder/tokenTransactionBuilder.js +249 -0
  132. package/dist/test/transactionBuilder/transferBuilder.d.ts +2 -0
  133. package/dist/test/transactionBuilder/transferBuilder.d.ts.map +1 -0
  134. package/dist/test/transactionBuilder/transferBuilder.js +214 -0
  135. package/dist/test/unit/keyPair.d.ts +2 -0
  136. package/dist/test/unit/keyPair.d.ts.map +1 -0
  137. package/dist/test/unit/keyPair.js +181 -0
  138. package/dist/test/unit/stakingFlowE2E.d.ts +2 -0
  139. package/dist/test/unit/stakingFlowE2E.d.ts.map +1 -0
  140. package/dist/test/unit/stakingFlowE2E.js +229 -0
  141. package/dist/test/unit/utils.d.ts +2 -0
  142. package/dist/test/unit/utils.d.ts.map +1 -0
  143. package/dist/test/unit/utils.js +106 -0
  144. package/dist/test/unit/vet.d.ts +2 -0
  145. package/dist/test/unit/vet.d.ts.map +1 -0
  146. package/dist/test/unit/vet.js +251 -0
  147. package/dist/tsconfig.tsbuildinfo +1 -0
  148. package/package.json +16 -10
  149. package/.eslintignore +0 -5
  150. package/.mocharc.yml +0 -8
  151. package/CHANGELOG.md +0 -34
@@ -0,0 +1,154 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
41
+ const statics_1 = require("@bitgo-beta/statics");
42
+ const src_1 = require("../../src");
43
+ const testData = __importStar(require("../resources/vet"));
44
+ const constants_1 = require("../../src/lib/constants");
45
+ describe('Vet Exit Delegation Transaction', () => {
46
+ const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
47
+ describe('Build and Sign', () => {
48
+ it('should build an exit delegation transaction', async function () {
49
+ const tokenId = '123456';
50
+ const txBuilder = factory.getExitDelegationBuilder();
51
+ txBuilder.sender(testData.addresses.validAddresses[0]);
52
+ txBuilder.tokenId(tokenId);
53
+ txBuilder.delegationContract(); // Use default address
54
+ txBuilder.gas(21000);
55
+ txBuilder.nonce('64248');
56
+ txBuilder.blockRef('0x014ead140e77bbc1');
57
+ txBuilder.expiration(64);
58
+ txBuilder.gasPriceCoef(128);
59
+ const tx = (await txBuilder.build());
60
+ should_1.default.equal(tx.sender, testData.addresses.validAddresses[0]);
61
+ should_1.default.equal(tx.tokenId, tokenId);
62
+ should_1.default.equal(tx.contract, constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET);
63
+ should_1.default.equal(tx.gas, 21000);
64
+ should_1.default.equal(tx.nonce, '64248');
65
+ should_1.default.equal(tx.expiration, 64);
66
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.StakingUnlock);
67
+ // Verify the transaction data contains the correct method ID and tokenId
68
+ tx.clauses[0].data.should.startWith(constants_1.EXIT_DELEGATION_METHOD_ID);
69
+ // Verify the transaction has the correct structure
70
+ tx.clauses.length.should.equal(1);
71
+ should_1.default.exist(tx.clauses[0]);
72
+ should_1.default.exist(tx.clauses[0].to);
73
+ tx.clauses[0]?.to?.should.equal(constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET);
74
+ should_1.default.exist(tx.clauses[0].value);
75
+ tx.clauses[0].value.should.equal('0x0');
76
+ tx.inputs.length.should.equal(1);
77
+ tx.outputs.length.should.equal(1);
78
+ should_1.default.equal(tx.inputs[0].address, testData.addresses.validAddresses[0]);
79
+ should_1.default.equal(tx.inputs[0].value, '0');
80
+ should_1.default.equal(tx.inputs[0].coin, 'tvet');
81
+ should_1.default.equal(tx.outputs[0].address, constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET);
82
+ should_1.default.equal(tx.outputs[0].value, '0');
83
+ should_1.default.equal(tx.outputs[0].coin, 'tvet');
84
+ });
85
+ it('should build an exit delegation transaction with custom contract address', async function () {
86
+ const tokenId = '123456';
87
+ const customContractAddress = constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET; // Use the valid testnet delegation address
88
+ const txBuilder = factory.getExitDelegationBuilder();
89
+ txBuilder.sender(testData.addresses.validAddresses[0]);
90
+ txBuilder.tokenId(tokenId);
91
+ txBuilder.delegationContract(customContractAddress);
92
+ txBuilder.gas(21000);
93
+ txBuilder.nonce('64248');
94
+ txBuilder.blockRef('0x014ead140e77bbc1');
95
+ txBuilder.expiration(64);
96
+ txBuilder.gasPriceCoef(128);
97
+ const tx = (await txBuilder.build());
98
+ should_1.default.equal(tx.contract, customContractAddress);
99
+ should_1.default.exist(tx.clauses[0]);
100
+ should_1.default.exist(tx.clauses[0].to);
101
+ tx.clauses[0]?.to?.should.equal(customContractAddress);
102
+ });
103
+ it('should deserialize and reserialize a signed exit delegation transaction', async function () {
104
+ // Create a mock serialized transaction for exit delegation
105
+ const tokenId = '123456';
106
+ const txBuilder = factory.getExitDelegationBuilder();
107
+ txBuilder.sender(testData.addresses.validAddresses[0]);
108
+ txBuilder.tokenId(tokenId);
109
+ txBuilder.delegationContract();
110
+ txBuilder.gas(21000);
111
+ txBuilder.nonce('64248');
112
+ txBuilder.blockRef('0x014ead140e77bbc1');
113
+ txBuilder.expiration(64);
114
+ txBuilder.gasPriceCoef(128);
115
+ const tx = (await txBuilder.build());
116
+ const serializedTx = tx.toBroadcastFormat();
117
+ // Now deserialize and check
118
+ const deserializedBuilder = factory.from(serializedTx);
119
+ const deserializedTx = (await deserializedBuilder.build());
120
+ should_1.default.equal(deserializedTx.type, sdk_core_1.TransactionType.StakingUnlock);
121
+ should_1.default.equal(deserializedTx.tokenId, tokenId);
122
+ should_1.default.equal(deserializedTx.contract, constants_1.STARGATE_DELEGATION_ADDRESS_TESTNET);
123
+ });
124
+ it('should validate the transaction data structure', async function () {
125
+ const txBuilder = factory.getExitDelegationBuilder();
126
+ // Should throw error when building without required fields
127
+ await (0, should_1.default)(txBuilder.build()).be.rejectedWith('Delegation contract address is required');
128
+ txBuilder.sender(testData.addresses.validAddresses[0]);
129
+ txBuilder.delegationContract();
130
+ await (0, should_1.default)(txBuilder.build()).be.rejectedWith('Token ID is required');
131
+ // Now add the token ID and it should build successfully
132
+ txBuilder.tokenId('123456');
133
+ txBuilder.gas(21000);
134
+ txBuilder.nonce('64248');
135
+ txBuilder.blockRef('0x014ead140e77bbc1');
136
+ const tx = await txBuilder.build();
137
+ should_1.default.exist(tx);
138
+ });
139
+ });
140
+ describe('Validation', () => {
141
+ it('should fail with invalid contract address', function () {
142
+ const txBuilder = factory.getExitDelegationBuilder();
143
+ (0, should_1.default)(() => txBuilder.delegationContract('invalid-address')).throwError('Invalid address invalid-address');
144
+ });
145
+ it('should fail with invalid token ID', async function () {
146
+ const txBuilder = factory.getExitDelegationBuilder();
147
+ txBuilder.sender(testData.addresses.validAddresses[0]);
148
+ txBuilder.delegationContract();
149
+ txBuilder.tokenId('');
150
+ await (0, should_1.default)(txBuilder.build()).be.rejectedWith('Token ID is required');
151
+ });
152
+ });
153
+ });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpdERlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsbUNBQXNEO0FBRXRELDJEQUE2QztBQUM3Qyx1REFBeUc7QUFFekcsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUVqRSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxLQUFLO1lBQ3JELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztZQUN6QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUVyRCxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQixTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQjtZQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ3pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENB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QUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNyRCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUM5RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLO1lBQzNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3JELFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RCxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXRCLE1BQU0sSUFBQSxnQkFBTSxFQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbi9leGl0RGVsZWdhdGlvbic7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvdmV0JztcbmltcG9ydCB7IEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQsIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuXG5kZXNjcmliZSgnVmV0IEV4aXQgRGVsZWdhdGlvbiBUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcblxuICBkZXNjcmliZSgnQnVpbGQgYW5kIFNpZ24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiBleGl0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbklkID0gJzEyMzQ1Nic7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldEV4aXREZWxlZ2F0aW9uQnVpbGRlcigpO1xuXG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5JZCh0b2tlbklkKTtcbiAgICAgIHR4QnVpbGRlci5kZWxlZ2F0aW9uQ29udHJhY3QoKTsgLy8gVXNlIGRlZmF1bHQgYWRkcmVzc1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigxMjgpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKSkgYXMgRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbjtcblxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnNlbmRlciwgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b2tlbklkLCB0b2tlbklkKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5jb250cmFjdCwgU1RBUkdBVEVfREVMRUdBVElPTl9BRERSRVNTX1RFU1RORVQpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmdhcywgMjEwMDApO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm5vbmNlLCAnNjQyNDgnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5leHBpcmF0aW9uLCA2NCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIGRhdGEgY29udGFpbnMgdGhlIGNvcnJlY3QgbWV0aG9kIElEIGFuZCB0b2tlbklkXG4gICAgICB0eC5jbGF1c2VzWzBdLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgdGhlIGNvcnJlY3Qgc3RydWN0dXJlXG4gICAgICB0eC5jbGF1c2VzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXSk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXS50byk7XG4gICAgICB0eC5jbGF1c2VzWzBdPy50bz8uc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eC5jbGF1c2VzWzBdLnZhbHVlKTtcbiAgICAgIHR4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcweDAnKTtcblxuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0uYWRkcmVzcywgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHNbMF0udmFsdWUsICcwJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzWzBdLmNvaW4sICd0dmV0Jyk7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLmFkZHJlc3MsIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5vdXRwdXRzWzBdLnZhbHVlLCAnMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Lm91dHB1dHNbMF0uY29pbiwgJ3R2ZXQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gZXhpdCBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIHdpdGggY3VzdG9tIGNvbnRyYWN0IGFkZHJlc3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbklkID0gJzEyMzQ1Nic7XG4gICAgICBjb25zdCBjdXN0b21Db250cmFjdEFkZHJlc3MgPSBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVDsgLy8gVXNlIHRoZSB2YWxpZCB0ZXN0bmV0IGRlbGVnYXRpb24gYWRkcmVzc1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KGN1c3RvbUNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHguY29udHJhY3QsIGN1c3RvbUNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXSk7XG4gICAgICBzaG91bGQuZXhpc3QodHguY2xhdXNlc1swXS50byk7XG4gICAgICB0eC5jbGF1c2VzWzBdPy50bz8uc2hvdWxkLmVxdWFsKGN1c3RvbUNvbnRyYWN0QWRkcmVzcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlc2VyaWFsaXplIGFuZCByZXNlcmlhbGl6ZSBhIHNpZ25lZCBleGl0IGRlbGVnYXRpb24gdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBDcmVhdGUgYSBtb2NrIHNlcmlhbGl6ZWQgdHJhbnNhY3Rpb24gZm9yIGV4aXQgZGVsZWdhdGlvblxuICAgICAgY29uc3QgdG9rZW5JZCA9ICcxMjM0NTYnO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgdHhCdWlsZGVyLnNlbmRlcih0ZXN0RGF0YS5hZGRyZXNzZXMudmFsaWRBZGRyZXNzZXNbMF0pO1xuICAgICAgdHhCdWlsZGVyLnRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZFR4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gTm93IGRlc2VyaWFsaXplIGFuZCBjaGVja1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkQnVpbGRlciA9IGZhY3RvcnkuZnJvbShzZXJpYWxpemVkVHgpO1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVHggPSAoYXdhaXQgZGVzZXJpYWxpemVkQnVpbGRlci5idWlsZCgpKSBhcyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uO1xuXG4gICAgICBzaG91bGQuZXF1YWwoZGVzZXJpYWxpemVkVHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlc2VyaWFsaXplZFR4LnRva2VuSWQsIHRva2VuSWQpO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlc2VyaWFsaXplZFR4LmNvbnRyYWN0LCBTVEFSR0FURV9ERUxFR0FUSU9OX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbiBkYXRhIHN0cnVjdHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhpdERlbGVnYXRpb25CdWlsZGVyKCk7XG5cbiAgICAgIC8vIFNob3VsZCB0aHJvdyBlcnJvciB3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgcmVxdWlyZWQgZmllbGRzXG4gICAgICBhd2FpdCBzaG91bGQodHhCdWlsZGVyLmJ1aWxkKCkpLmJlLnJlamVjdGVkV2l0aCgnRGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzIGlzIHJlcXVpcmVkJyk7XG5cbiAgICAgIHR4QnVpbGRlci5zZW5kZXIodGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzWzBdKTtcbiAgICAgIHR4QnVpbGRlci5kZWxlZ2F0aW9uQ29udHJhY3QoKTtcbiAgICAgIGF3YWl0IHNob3VsZCh0eEJ1aWxkZXIuYnVpbGQoKSkuYmUucmVqZWN0ZWRXaXRoKCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuXG4gICAgICAvLyBOb3cgYWRkIHRoZSB0b2tlbiBJRCBhbmQgaXQgc2hvdWxkIGJ1aWxkIHN1Y2Nlc3NmdWxseVxuICAgICAgdHhCdWlsZGVyLnRva2VuSWQoJzEyMzQ1NicpO1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCBjb250cmFjdCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRFeGl0RGVsZWdhdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KCdpbnZhbGlkLWFkZHJlc3MnKSkudGhyb3dFcnJvcignSW52YWxpZCBhZGRyZXNzIGludmFsaWQtYWRkcmVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCB0b2tlbiBJRCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0RXhpdERlbGVnYXRpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHRlc3REYXRhLmFkZHJlc3Nlcy52YWxpZEFkZHJlc3Nlc1swXSk7XG4gICAgICB0eEJ1aWxkZXIuZGVsZWdhdGlvbkNvbnRyYWN0KCk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5JZCgnJyk7XG5cbiAgICAgIGF3YWl0IHNob3VsZCh0eEJ1aWxkZXIuYnVpbGQoKSkuYmUucmVqZWN0ZWRXaXRoKCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flushTokenTransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flushTokenTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/flushTokenTransactionBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const statics_1 = require("@bitgo-beta/statics");
41
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
42
+ const src_1 = require("../../src");
43
+ const testData = __importStar(require("../resources/vet"));
44
+ describe('Flush Token Transaction', () => {
45
+ const factory = new src_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
46
+ describe('Succeed', () => {
47
+ it('should build a flush token transaction', async function () {
48
+ const transaction = new src_1.FlushTokenTransaction(statics_1.coins.get('tvet'));
49
+ const txBuilder = factory.getFlushTokenTransactionBuilder(transaction);
50
+ txBuilder.gas(21000);
51
+ txBuilder.nonce('64248');
52
+ txBuilder.blockRef('0x014ead140e77bbc1');
53
+ txBuilder.expiration(64);
54
+ txBuilder.gasPriceCoef(128);
55
+ txBuilder.contract(testData.FORWARDER_ADDRESS);
56
+ txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
57
+ txBuilder.forwarderVersion(4);
58
+ const tx = (await txBuilder.build());
59
+ should_1.default.equal(tx.gas, 21000);
60
+ should_1.default.equal(tx.nonce, '64248');
61
+ should_1.default.equal(tx.expiration, 64);
62
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.FlushTokens);
63
+ should_1.default.equal(tx.blockRef, '0x014ead140e77bbc1');
64
+ should_1.default.equal(tx.clauses.length, 1);
65
+ should_1.default.equal(tx.clauses[0].to, testData.FORWARDER_ADDRESS);
66
+ should_1.default.equal(tx.clauses[0].data, testData.FLUSH_TOKEN_DATA);
67
+ should_1.default.equal(tx.clauses[0].value, '0x0');
68
+ const rawTx = tx.toBroadcastFormat();
69
+ should_1.default.equal(txBuilder.isValidRawTransaction(rawTx), true);
70
+ rawTx.should.equal(testData.FLUSH_TOKEN_TRANSACTION);
71
+ });
72
+ it('should succeed to validate a valid signablePayload', async function () {
73
+ const transaction = new src_1.FlushTokenTransaction(statics_1.coins.get('tvet'));
74
+ const txBuilder = factory.getFlushTokenTransactionBuilder(transaction);
75
+ txBuilder.gas(21000);
76
+ txBuilder.nonce('64248');
77
+ txBuilder.blockRef('0x014ead140e77bbc1');
78
+ txBuilder.expiration(64);
79
+ txBuilder.gasPriceCoef(128);
80
+ txBuilder.contract(testData.FORWARDER_ADDRESS);
81
+ txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
82
+ txBuilder.forwarderVersion(4);
83
+ const tx = (await txBuilder.build());
84
+ const signablePayload = tx.signablePayload;
85
+ should_1.default.equal(signablePayload.toString('hex'), testData.FLUSH_TOKEN_SIGNABLE_PAYLOAD);
86
+ });
87
+ it('should build a unsigned tx and validate its toJson', async function () {
88
+ const transaction = new src_1.FlushTokenTransaction(statics_1.coins.get('tvet'));
89
+ const txBuilder = factory.getFlushTokenTransactionBuilder(transaction);
90
+ txBuilder.gas(21000);
91
+ txBuilder.nonce('64248');
92
+ txBuilder.blockRef('0x014ead140e77bbc1');
93
+ txBuilder.expiration(64);
94
+ txBuilder.gasPriceCoef(128);
95
+ txBuilder.contract(testData.FORWARDER_ADDRESS);
96
+ txBuilder.tokenAddress(testData.TOKEN_ADDRESS);
97
+ txBuilder.forwarderVersion(4);
98
+ const tx = (await txBuilder.build());
99
+ const toJson = tx.toJson();
100
+ should_1.default.equal(toJson.nonce, '64248');
101
+ should_1.default.equal(toJson.gas, 21000);
102
+ should_1.default.equal(toJson.gasPriceCoef, 128);
103
+ should_1.default.equal(toJson.expiration, 64);
104
+ should_1.default.equal(toJson.data, testData.FLUSH_TOKEN_DATA);
105
+ should_1.default.equal(toJson.to, testData.FORWARDER_ADDRESS);
106
+ should_1.default.equal(toJson.tokenAddress, testData.TOKEN_ADDRESS);
107
+ should_1.default.equal(toJson.value, '0');
108
+ });
109
+ it('should build properly from serialized', async () => {
110
+ const txBuilder = factory.from(testData.SERIALIZED_SIGNED_FLUSH_TOKEN_TX);
111
+ const signedTx = await txBuilder.build();
112
+ const signedtxJson = signedTx.toJson();
113
+ should_1.default.equal(signedtxJson.gas, 150000);
114
+ txBuilder.gas(180000);
115
+ const tx = await txBuilder.build();
116
+ const txJson = tx.toJson();
117
+ should_1.default.equal(txJson.to, testData.FORWARDER_ADDRESS_NEW);
118
+ should_1.default.equal(txJson.gas, 180000);
119
+ console.log('txJson:', txJson);
120
+ });
121
+ });
122
+ describe('Fail', () => {
123
+ it('should fail if invalid params are used to build a tx', async function () {
124
+ const transaction = new src_1.FlushTokenTransaction(statics_1.coins.get('tvet'));
125
+ const txBuilder = factory.getFlushTokenTransactionBuilder(transaction);
126
+ (0, should_1.default)(() => txBuilder.tokenAddress('randomString')).throwError('Invalid address randomString');
127
+ (0, should_1.default)(() => txBuilder.contract('randomString')).throwError('Invalid address randomString');
128
+ (0, should_1.default)(() => txBuilder.forwarderVersion(3)).throwError('Invalid forwarder version: 3');
129
+ });
130
+ });
131
+ });
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdHJhbnNhY3Rpb25CdWlsZGVyL2ZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsaURBQTRDO0FBQzVDLG1EQUF1RDtBQUN2RCxtQ0FBNkU7QUFDN0UsMkRBQTZDO0FBRTdDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7SUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFakUsUUFBUSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7UUFDdkIsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUs7WUFDaEQsTUFBTSxXQUFXLEdBQUcsSUFBSSwyQkFBcUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZFLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0MsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0MsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQTBCLENBQUM7WUFDOUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ25ELGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSztZQUM1RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDJCQUFxQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsK0JBQStCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBMEIsQ0FBQztZQUM5RCxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO1lBQzNDLGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsS0FBSztZQUM1RCxNQUFNLFdBQVcsR0FBRyxJQUFJLDJCQUFxQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsK0JBQStCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBMEIsQ0FBQztZQUU5RCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDdkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3JELGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXZDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEIsTUFBTSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDeEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDcEIsRUFBRSxDQUFDLHNEQUFzRCxFQUFFLEtBQUs7WUFDOUQsTUFBTSxXQUFXLEdBQUcsSUFBSSwyQkFBcUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXZFLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDaEcsSUFBQSxnQkFBTSxFQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM1RixJQUFBLGdCQUFNLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIEZsdXNoVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvdmV0JztcblxuZGVzY3JpYmUoJ0ZsdXNoIFRva2VuIFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0dmV0JykpO1xuXG4gIGRlc2NyaWJlKCdTdWNjZWVkJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSBmbHVzaCB0b2tlbiB0cmFuc2FjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IEZsdXNoVG9rZW5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R2ZXQnKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldEZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigxMjgpO1xuICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KHRlc3REYXRhLkZPUldBUkRFUl9BRERSRVNTKTtcbiAgICAgIHR4QnVpbGRlci50b2tlbkFkZHJlc3ModGVzdERhdGEuVE9LRU5fQUREUkVTUyk7XG4gICAgICB0eEJ1aWxkZXIuZm9yd2FyZGVyVmVyc2lvbig0KTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBGbHVzaFRva2VuVHJhbnNhY3Rpb247XG4gICAgICBzaG91bGQuZXF1YWwodHguZ2FzLCAyMTAwMCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgubm9uY2UsICc2NDI0OCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmJsb2NrUmVmLCAnMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICBzaG91bGQuZXF1YWwodHguY2xhdXNlcy5sZW5ndGgsIDEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmNsYXVzZXNbMF0udG8sIHRlc3REYXRhLkZPUldBUkRFUl9BRERSRVNTKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5jbGF1c2VzWzBdLmRhdGEsIHRlc3REYXRhLkZMVVNIX1RPS0VOX0RBVEEpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmNsYXVzZXNbMF0udmFsdWUsICcweDAnKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEJ1aWxkZXIuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICByYXdUeC5zaG91bGQuZXF1YWwodGVzdERhdGEuRkxVU0hfVE9LRU5fVFJBTlNBQ1RJT04pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdWNjZWVkIHRvIHZhbGlkYXRlIGEgdmFsaWQgc2lnbmFibGVQYXlsb2FkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBuZXcgRmx1c2hUb2tlblRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHZldCcpKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Rmx1c2hUb2tlblRyYW5zYWN0aW9uQnVpbGRlcih0cmFuc2FjdGlvbik7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDIxMDAwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnNjQyNDgnKTtcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMTRlYWQxNDBlNzdiYmMxJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDEyOCk7XG4gICAgICB0eEJ1aWxkZXIuY29udHJhY3QodGVzdERhdGEuRk9SV0FSREVSX0FERFJFU1MpO1xuICAgICAgdHhCdWlsZGVyLnRva2VuQWRkcmVzcyh0ZXN0RGF0YS5UT0tFTl9BRERSRVNTKTtcbiAgICAgIHR4QnVpbGRlci5mb3J3YXJkZXJWZXJzaW9uKDQpO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkpIGFzIEZsdXNoVG9rZW5UcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpLCB0ZXN0RGF0YS5GTFVTSF9UT0tFTl9TSUdOQUJMRV9QQVlMT0FEKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB1bnNpZ25lZCB0eCBhbmQgdmFsaWRhdGUgaXRzIHRvSnNvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gbmV3IEZsdXNoVG9rZW5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R2ZXQnKSk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldEZsdXNoVG9rZW5UcmFuc2FjdGlvbkJ1aWxkZXIodHJhbnNhY3Rpb24pO1xuICAgICAgdHhCdWlsZGVyLmdhcygyMTAwMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzY0MjQ4Jyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDE0ZWFkMTQwZTc3YmJjMScpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigxMjgpO1xuICAgICAgdHhCdWlsZGVyLmNvbnRyYWN0KHRlc3REYXRhLkZPUldBUkRFUl9BRERSRVNTKTtcbiAgICAgIHR4QnVpbGRlci50b2tlbkFkZHJlc3ModGVzdERhdGEuVE9LRU5fQUREUkVTUyk7XG4gICAgICB0eEJ1aWxkZXIuZm9yd2FyZGVyVmVyc2lvbig0KTtcbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKSBhcyBGbHVzaFRva2VuVHJhbnNhY3Rpb247XG5cbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5ub25jZSwgJzY0MjQ4Jyk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmdhcywgMjEwMDApO1xuICAgICAgc2hvdWxkLmVxdWFsKHRvSnNvbi5nYXNQcmljZUNvZWYsIDEyOCk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLmV4cGlyYXRpb24sIDY0KTtcbiAgICAgIHNob3VsZC5lcXVhbCh0b0pzb24uZGF0YSwgdGVzdERhdGEuRkxVU0hfVE9LRU5fREFUQSk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLnRvLCB0ZXN0RGF0YS5GT1JXQVJERVJfQUREUkVTUyk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLnRva2VuQWRkcmVzcywgdGVzdERhdGEuVE9LRU5fQUREUkVTUyk7XG4gICAgICBzaG91bGQuZXF1YWwodG9Kc29uLnZhbHVlLCAnMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBwcm9wZXJseSBmcm9tIHNlcmlhbGl6ZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU0VSSUFMSVpFRF9TSUdORURfRkxVU0hfVE9LRU5fVFgpO1xuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHNpZ25lZHR4SnNvbiA9IHNpZ25lZFR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHNpZ25lZHR4SnNvbi5nYXMsIDE1MDAwMCk7XG5cbiAgICAgIHR4QnVpbGRlci5nYXMoMTgwMDAwKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24udG8sIHRlc3REYXRhLkZPUldBUkRFUl9BRERSRVNTX05FVyk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLmdhcywgMTgwMDAwKTtcbiAgICAgIGNvbnNvbGUubG9nKCd0eEpzb246JywgdHhKc29uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ZhaWwnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGlmIGludmFsaWQgcGFyYW1zIGFyZSB1c2VkIHRvIGJ1aWxkIGEgdHgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IG5ldyBGbHVzaFRva2VuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0dmV0JykpO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRGbHVzaFRva2VuVHJhbnNhY3Rpb25CdWlsZGVyKHRyYW5zYWN0aW9uKTtcblxuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci50b2tlbkFkZHJlc3MoJ3JhbmRvbVN0cmluZycpKS50aHJvd0Vycm9yKCdJbnZhbGlkIGFkZHJlc3MgcmFuZG9tU3RyaW5nJyk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmNvbnRyYWN0KCdyYW5kb21TdHJpbmcnKSkudGhyb3dFcnJvcignSW52YWxpZCBhZGRyZXNzIHJhbmRvbVN0cmluZycpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5mb3J3YXJkZXJWZXJzaW9uKDMpKS50aHJvd0Vycm9yKCdJbnZhbGlkIGZvcndhcmRlciB2ZXJzaW9uOiAzJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=nftTransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nftTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/nftTransactionBuilder.ts"],"names":[],"mappings":""}