@bitgo-beta/sdk-coin-ton 1.0.1-beta.192 → 1.0.1-beta.1921

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 (207) hide show
  1. package/dist/{src → cjs/src}/index.d.ts +1 -0
  2. package/dist/cjs/src/index.d.ts.map +1 -0
  3. package/dist/{src → cjs/src}/index.js +2 -1
  4. package/dist/cjs/src/jettonToken.d.ts +19 -0
  5. package/dist/cjs/src/jettonToken.d.ts.map +1 -0
  6. package/dist/cjs/src/jettonToken.js +52 -0
  7. package/dist/cjs/src/lib/constants.d.ts +9 -0
  8. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  9. package/dist/cjs/src/lib/constants.js +12 -0
  10. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +36 -0
  11. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  12. package/dist/cjs/src/lib/explainTransactionWasm.js +104 -0
  13. package/dist/cjs/src/lib/iface.d.ts +32 -0
  14. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  15. package/dist/cjs/src/lib/iface.js +3 -0
  16. package/dist/cjs/src/lib/index.d.ts +14 -0
  17. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/index.js +61 -0
  19. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  20. package/dist/cjs/src/lib/keyPair.js +103 -0
  21. package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.d.ts +17 -0
  22. package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.d.ts.map +1 -0
  23. package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.js +38 -0
  24. package/dist/cjs/src/lib/tokenTransaction.d.ts +16 -0
  25. package/dist/cjs/src/lib/tokenTransaction.d.ts.map +1 -0
  26. package/dist/cjs/src/lib/tokenTransaction.js +97 -0
  27. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts +20 -0
  28. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  29. package/dist/cjs/src/lib/tokenTransferBuilder.js +57 -0
  30. package/dist/cjs/src/lib/tonWhalesDepositBuilder.d.ts +12 -0
  31. package/dist/cjs/src/lib/tonWhalesDepositBuilder.d.ts.map +1 -0
  32. package/dist/cjs/src/lib/tonWhalesDepositBuilder.js +42 -0
  33. package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.d.ts +12 -0
  34. package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.js +37 -0
  36. package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.d.ts +12 -0
  37. package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
  38. package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.js +37 -0
  39. package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.d.ts +30 -0
  40. package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
  41. package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.js +60 -0
  42. package/dist/cjs/src/lib/transaction.d.ts +42 -0
  43. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  44. package/dist/cjs/src/lib/transaction.js +415 -0
  45. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +27 -3
  46. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  47. package/dist/cjs/src/lib/transactionBuilder.js +152 -0
  48. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts +32 -0
  49. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  50. package/dist/cjs/src/lib/transactionBuilderFactory.js +100 -0
  51. package/dist/cjs/src/lib/transactionExplanation.d.ts +14 -0
  52. package/dist/cjs/src/lib/transactionExplanation.d.ts.map +1 -0
  53. package/dist/cjs/src/lib/transactionExplanation.js +3 -0
  54. package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +1 -1
  55. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  56. package/dist/cjs/src/lib/transferBuilder.js +21 -0
  57. package/dist/cjs/src/lib/utils.d.ts +41 -0
  58. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  59. package/dist/cjs/src/lib/utils.js +159 -0
  60. package/dist/cjs/src/register.d.ts.map +1 -0
  61. package/dist/cjs/src/register.js +15 -0
  62. package/dist/cjs/src/ton.d.ts +66 -0
  63. package/dist/cjs/src/ton.d.ts.map +1 -0
  64. package/dist/cjs/src/ton.js +542 -0
  65. package/dist/cjs/src/tton.d.ts.map +1 -0
  66. package/dist/cjs/src/tton.js +30 -0
  67. package/dist/cjs/test/resources/ton.d.ts +184 -0
  68. package/dist/cjs/test/resources/ton.d.ts.map +1 -0
  69. package/dist/cjs/test/resources/ton.js +208 -0
  70. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +2 -0
  71. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  72. package/dist/cjs/test/unit/explainTransactionWasm.js +147 -0
  73. package/dist/cjs/test/unit/jettonToken.d.ts +2 -0
  74. package/dist/cjs/test/unit/jettonToken.d.ts.map +1 -0
  75. package/dist/cjs/test/unit/jettonToken.js +341 -0
  76. package/dist/cjs/test/unit/keyPair.d.ts +2 -0
  77. package/dist/cjs/test/unit/keyPair.d.ts.map +1 -0
  78. package/dist/cjs/test/unit/keyPair.js +55 -0
  79. package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.d.ts +2 -0
  80. package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.d.ts.map +1 -0
  81. package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.js +314 -0
  82. package/dist/cjs/test/unit/tokenTransferBuilder.d.ts +2 -0
  83. package/dist/cjs/test/unit/tokenTransferBuilder.d.ts.map +1 -0
  84. package/dist/cjs/test/unit/tokenTransferBuilder.js +262 -0
  85. package/dist/cjs/test/unit/ton.d.ts +2 -0
  86. package/dist/cjs/test/unit/ton.d.ts.map +1 -0
  87. package/dist/cjs/test/unit/ton.js +949 -0
  88. package/dist/cjs/test/unit/tonWhalesDepositBuilder.d.ts +2 -0
  89. package/dist/cjs/test/unit/tonWhalesDepositBuilder.d.ts.map +1 -0
  90. package/dist/cjs/test/unit/tonWhalesDepositBuilder.js +114 -0
  91. package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.d.ts +2 -0
  92. package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
  93. package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.js +136 -0
  94. package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.d.ts +2 -0
  95. package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
  96. package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.js +136 -0
  97. package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.d.ts +2 -0
  98. package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
  99. package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.js +130 -0
  100. package/dist/cjs/test/unit/transferBuilder.d.ts +2 -0
  101. package/dist/cjs/test/unit/transferBuilder.d.ts.map +1 -0
  102. package/dist/cjs/test/unit/transferBuilder.js +281 -0
  103. package/dist/cjs/test/unit/wasmCrossCompatibility.d.ts +2 -0
  104. package/dist/cjs/test/unit/wasmCrossCompatibility.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/wasmCrossCompatibility.js +176 -0
  106. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  107. package/dist/esm/index.d.ts +6 -0
  108. package/dist/{src → esm}/index.d.ts.map +1 -1
  109. package/dist/esm/index.js +6 -0
  110. package/dist/esm/jettonToken.d.ts +19 -0
  111. package/dist/esm/jettonToken.d.ts.map +1 -0
  112. package/dist/esm/jettonToken.js +48 -0
  113. package/dist/esm/lib/constants.d.ts +9 -0
  114. package/dist/esm/lib/constants.d.ts.map +1 -0
  115. package/dist/esm/lib/constants.js +9 -0
  116. package/dist/esm/lib/explainTransactionWasm.d.ts +36 -0
  117. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  118. package/dist/esm/lib/explainTransactionWasm.js +99 -0
  119. package/dist/esm/lib/iface.d.ts +32 -0
  120. package/dist/esm/lib/iface.d.ts.map +1 -0
  121. package/dist/esm/lib/iface.js +2 -0
  122. package/dist/esm/lib/index.d.ts +14 -0
  123. package/dist/esm/lib/index.d.ts.map +1 -0
  124. package/dist/esm/lib/index.js +14 -0
  125. package/dist/esm/lib/keyPair.d.ts +25 -0
  126. package/dist/esm/lib/keyPair.js +63 -0
  127. package/dist/esm/lib/singleNominatorWithdrawBuilder.d.ts +17 -0
  128. package/dist/esm/lib/singleNominatorWithdrawBuilder.d.ts.map +1 -0
  129. package/dist/esm/lib/singleNominatorWithdrawBuilder.js +34 -0
  130. package/dist/esm/lib/tokenTransaction.d.ts +16 -0
  131. package/dist/esm/lib/tokenTransaction.d.ts.map +1 -0
  132. package/dist/esm/lib/tokenTransaction.js +90 -0
  133. package/dist/esm/lib/tokenTransferBuilder.d.ts +20 -0
  134. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  135. package/dist/esm/lib/tokenTransferBuilder.js +53 -0
  136. package/dist/esm/lib/tonWhalesDepositBuilder.d.ts +12 -0
  137. package/dist/esm/lib/tonWhalesDepositBuilder.d.ts.map +1 -0
  138. package/dist/esm/lib/tonWhalesDepositBuilder.js +38 -0
  139. package/dist/esm/lib/tonWhalesVestingDepositBuilder.d.ts +12 -0
  140. package/dist/esm/lib/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
  141. package/dist/esm/lib/tonWhalesVestingDepositBuilder.js +33 -0
  142. package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.d.ts +12 -0
  143. package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
  144. package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.js +33 -0
  145. package/dist/esm/lib/tonWhalesWithdrawalBuilder.d.ts +30 -0
  146. package/dist/esm/lib/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
  147. package/dist/esm/lib/tonWhalesWithdrawalBuilder.js +56 -0
  148. package/dist/esm/lib/transaction.d.ts +42 -0
  149. package/dist/esm/lib/transaction.d.ts.map +1 -0
  150. package/dist/esm/lib/transaction.js +408 -0
  151. package/dist/esm/lib/transactionBuilder.d.ts +74 -0
  152. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  153. package/dist/esm/lib/transactionBuilder.js +145 -0
  154. package/dist/esm/lib/transactionBuilderFactory.d.ts +32 -0
  155. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  156. package/dist/esm/lib/transactionBuilderFactory.js +96 -0
  157. package/dist/esm/lib/transactionExplanation.d.ts +14 -0
  158. package/dist/esm/lib/transactionExplanation.d.ts.map +1 -0
  159. package/dist/esm/lib/transactionExplanation.js +2 -0
  160. package/dist/esm/lib/transferBuilder.d.ts +9 -0
  161. package/dist/esm/lib/transferBuilder.d.ts.map +1 -0
  162. package/dist/esm/lib/transferBuilder.js +17 -0
  163. package/dist/esm/lib/utils.d.ts +41 -0
  164. package/dist/esm/lib/utils.d.ts.map +1 -0
  165. package/dist/esm/lib/utils.js +151 -0
  166. package/dist/esm/register.d.ts +3 -0
  167. package/dist/{src → esm}/register.d.ts.map +1 -1
  168. package/dist/esm/register.js +11 -0
  169. package/dist/esm/ton.d.ts +66 -0
  170. package/dist/esm/ton.d.ts.map +1 -0
  171. package/dist/esm/ton.js +502 -0
  172. package/dist/esm/tton.d.ts +22 -0
  173. package/dist/esm/tton.js +26 -0
  174. package/package.json +34 -13
  175. package/.eslintignore +0 -5
  176. package/.mocharc.yml +0 -8
  177. package/CHANGELOG.md +0 -431
  178. package/dist/src/lib/iface.d.ts +0 -15
  179. package/dist/src/lib/iface.d.ts.map +0 -1
  180. package/dist/src/lib/iface.js +0 -3
  181. package/dist/src/lib/index.d.ts +0 -9
  182. package/dist/src/lib/index.d.ts.map +0 -1
  183. package/dist/src/lib/index.js +0 -41
  184. package/dist/src/lib/keyPair.js +0 -93
  185. package/dist/src/lib/transaction.d.ts +0 -32
  186. package/dist/src/lib/transaction.d.ts.map +0 -1
  187. package/dist/src/lib/transaction.js +0 -284
  188. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  189. package/dist/src/lib/transactionBuilder.js +0 -105
  190. package/dist/src/lib/transactionBuilderFactory.d.ts +0 -14
  191. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  192. package/dist/src/lib/transactionBuilderFactory.js +0 -26
  193. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  194. package/dist/src/lib/transferBuilder.js +0 -19
  195. package/dist/src/lib/utils.d.ts +0 -20
  196. package/dist/src/lib/utils.d.ts.map +0 -1
  197. package/dist/src/lib/utils.js +0 -74
  198. package/dist/src/register.js +0 -11
  199. package/dist/src/ton.d.ts +0 -34
  200. package/dist/src/ton.d.ts.map +0 -1
  201. package/dist/src/ton.js +0 -197
  202. package/dist/src/tton.js +0 -30
  203. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  204. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  205. /package/dist/{src → cjs/src}/tton.d.ts +0 -0
  206. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  207. /package/dist/{src → esm}/tton.d.ts.map +0 -0
@@ -0,0 +1,152 @@
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.TransactionBuilder = exports.WITHDRAW_OPCODE = void 0;
7
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
+ const tonweb_1 = __importDefault(require("tonweb"));
9
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ exports.WITHDRAW_OPCODE = '00001000';
12
+ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
13
+ constructor(coinConfig) {
14
+ super(coinConfig);
15
+ this._signatures = [];
16
+ }
17
+ /** @inheritdoc */
18
+ get transaction() {
19
+ return this._transaction;
20
+ }
21
+ /** @inheritdoc */
22
+ set transaction(transaction) {
23
+ this._transaction = transaction;
24
+ }
25
+ /** @inheritdoc */
26
+ signImplementation(key) {
27
+ throw new Error('Method not implemented.');
28
+ }
29
+ /** @inheritDoc */
30
+ addSignature(publicKey, signature) {
31
+ this.transaction.signature[0] = signature.toString('hex');
32
+ }
33
+ /**
34
+ * Sets the sender of this transaction.
35
+ * This account will be responsible for paying transaction fees.
36
+ *
37
+ * @param {string} senderAddress the account that is sending this transaction
38
+ * @returns {TransactionBuilder} This transaction builder
39
+ */
40
+ sender(senderAddress) {
41
+ this.transaction.sender = senderAddress;
42
+ return this;
43
+ }
44
+ /**
45
+ * Sets the transaction to be bounceable or not.
46
+ *
47
+ * @param {string} bounceable whether the transaction can be bounced
48
+ * @returns {TransactionBuilder} This transaction builder
49
+ */
50
+ bounceable(bounceable) {
51
+ this.transaction.bounceable = bounceable;
52
+ return this;
53
+ }
54
+ /**
55
+ * Sets the fromAddress to be in bounceable format or not.
56
+ *
57
+ * @param {string} bounceable whether the address format is bounceable
58
+ * @returns {TransactionBuilder} This transaction builder
59
+ */
60
+ fromAddressBounceable(bounceable) {
61
+ this.transaction.fromAddressBounceable = bounceable;
62
+ this.sender(new tonweb_1.default.Address(this.transaction.sender).toString(true, true, bounceable));
63
+ return this;
64
+ }
65
+ /**
66
+ * Sets the toAddress to be in bounceable format or not.
67
+ *
68
+ * @param {string} bounceable whether the address format is bounceable
69
+ * @returns {TransactionBuilder} This transaction builder
70
+ */
71
+ toAddressBounceable(bounceable) {
72
+ this.transaction.toAddressBounceable = bounceable;
73
+ this.transaction.recipient.address = new tonweb_1.default.Address(this.transaction.recipient.address).toString(true, true, bounceable);
74
+ return this;
75
+ }
76
+ fee(feeOptions) {
77
+ throw new Error('Method not implemented.');
78
+ }
79
+ /** @inheritdoc */
80
+ fromImplementation(rawTransaction) {
81
+ this.transaction.transactionType = this.transactionType;
82
+ this.transaction.fromRawTransaction(rawTransaction);
83
+ return this.transaction;
84
+ }
85
+ /** @inheritdoc */
86
+ async buildImplementation() {
87
+ this.transaction.transactionType = this.transactionType;
88
+ await this.transaction.build();
89
+ this.transaction.loadInputsAndOutputs();
90
+ return this.transaction;
91
+ }
92
+ // region Validators
93
+ /** @inheritdoc */
94
+ validateAddress(address, addressFormat) {
95
+ if (!utils_1.default.isValidAddress(address.address)) {
96
+ throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
97
+ }
98
+ }
99
+ /** @inheritdoc */
100
+ validateKey(key) {
101
+ throw new Error('Method not implemented.');
102
+ }
103
+ /** @inheritdoc */
104
+ validateRawTransaction(rawTransaction) {
105
+ return;
106
+ }
107
+ /** @inheritdoc */
108
+ validateTransaction(transaction) {
109
+ if (!transaction) {
110
+ throw new Error('transaction not defined');
111
+ }
112
+ this.validateAddress(transaction.recipient);
113
+ this.validateValue(new bignumber_js_1.default(transaction.recipient.amount));
114
+ }
115
+ /** @inheritdoc */
116
+ validateValue(value) {
117
+ if (value.isLessThan(0)) {
118
+ throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
119
+ }
120
+ }
121
+ setMessage(msg) {
122
+ this.transaction.message = msg;
123
+ return this;
124
+ }
125
+ setWithdrawMessage() {
126
+ const queryId = '0000000000000000';
127
+ this.transaction.message = exports.WITHDRAW_OPCODE + queryId + this.transaction.withdrawAmount;
128
+ return this;
129
+ }
130
+ sequenceNumber(number) {
131
+ this.transaction.seqno = number;
132
+ return this;
133
+ }
134
+ expireTime(number) {
135
+ this.transaction.expireTime = number;
136
+ return this;
137
+ }
138
+ publicKey(key) {
139
+ this.transaction.publicKey = key;
140
+ return this;
141
+ }
142
+ isV3ContractMessage(bool) {
143
+ this.transaction.isV3ContractMessage = bool;
144
+ return this;
145
+ }
146
+ subWalletId(id) {
147
+ this.transaction.sub_wallet_id = id;
148
+ return this;
149
+ }
150
+ }
151
+ exports.TransactionBuilder = TransactionBuilder;
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0VBQXFDO0FBQ3JDLG9EQUE0QjtBQUU1QixtREFTOEI7QUFFOUIsb0RBQTRCO0FBRWYsUUFBQSxlQUFlLEdBQUcsVUFBVSxDQUFDO0FBRTFDLE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQUlyRSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUhaLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztJQUl0QyxDQUFDO0lBUUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBd0IsRUFBRSxTQUFpQjtRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsYUFBcUI7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLFVBQW1CO1FBQzVCLElBQUksQ0FBQyxXQUFXLENB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QUFnQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLHVCQUFlLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFjO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBYztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQWE7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsV0FBVyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBNUtELGdEQTRLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEZlZU9wdGlvbnMsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IFdJVEhEUkFXX09QQ09ERSA9ICcwMDAwMTAwMCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF90cmFuc2FjdGlvbjogVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25hdHVyZXM6IFNpZ25hdHVyZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8vIGdldCBhbmQgc2V0IHJlZ2lvblxuICAvKipcbiAgICogVGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmVbMF0gPSBzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBUaGlzIGFjY291bnQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgcGF5aW5nIHRyYW5zYWN0aW9uIGZlZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZW5kZXJBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc2VuZGluZyB0aGlzIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZGVyKHNlbmRlckFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2VuZGVyID0gc2VuZGVyQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2FjdGlvbiB0byBiZSBib3VuY2VhYmxlIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvdW5jZWFibGUgd2hldGhlciB0aGUgdHJhbnNhY3Rpb24gY2FuIGJlIGJvdW5jZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBib3VuY2VhYmxlKGJvdW5jZWFibGU6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmJvdW5jZWFibGUgPSBib3VuY2VhYmxlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZyb21BZGRyZXNzIHRvIGJlIGluIGJvdW5jZWFibGUgZm9ybWF0IG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvdW5jZWFibGUgd2hldGhlciB0aGUgYWRkcmVzcyBmb3JtYXQgaXMgYm91bmNlYWJsZVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGZyb21BZGRyZXNzQm91bmNlYWJsZShib3VuY2VhYmxlOiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5mcm9tQWRkcmVzc0JvdW5jZWFibGUgPSBib3VuY2VhYmxlO1xuICAgIHRoaXMuc2VuZGVyKG5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnRyYW5zYWN0aW9uLnNlbmRlcikudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgYm91bmNlYWJsZSkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRvQWRkcmVzcyB0byBiZSBpbiBib3VuY2VhYmxlIGZvcm1hdCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib3VuY2VhYmxlIHdoZXRoZXIgdGhlIGFkZHJlc3MgZm9ybWF0IGlzIGJvdW5jZWFibGVcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB0b0FkZHJlc3NCb3VuY2VhYmxlKGJvdW5jZWFibGU6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRvQWRkcmVzc0JvdW5jZWFibGUgPSBib3VuY2VhYmxlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50LmFkZHJlc3MgPSBuZXcgVG9uV2ViLkFkZHJlc3ModGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQuYWRkcmVzcykudG9TdHJpbmcoXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZSxcbiAgICAgIGJvdW5jZWFibGVcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmVlKGZlZU9wdGlvbnM6IEZlZU9wdGlvbnMpOiB0aGlzIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gdGhpcy50cmFuc2FjdGlvblR5cGU7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IHRoaXMudHJhbnNhY3Rpb25UeXBlO1xuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh0cmFuc2FjdGlvbi5yZWNpcGllbnQpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0TWVzc2FnZShtc2c6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5tZXNzYWdlID0gbXNnO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0V2l0aGRyYXdNZXNzYWdlKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgY29uc3QgcXVlcnlJZCA9ICcwMDAwMDAwMDAwMDAwMDAwJztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLm1lc3NhZ2UgPSBXSVRIRFJBV19PUENPREUgKyBxdWVyeUlkICsgdGhpcy50cmFuc2FjdGlvbi53aXRoZHJhd0Ftb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlcXVlbmNlTnVtYmVyKG51bWJlcjogbnVtYmVyKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNlcW5vID0gbnVtYmVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZXhwaXJlVGltZShudW1iZXI6IG51bWJlcik6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5leHBpcmVUaW1lID0gbnVtYmVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljS2V5KGtleTogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnB1YmxpY0tleSA9IGtleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlzVjNDb250cmFjdE1lc3NhZ2UoYm9vbDogYm9vbGVhbik6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5pc1YzQ29udHJhY3RNZXNzYWdlID0gYm9vbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBzdWJXYWxsZXRJZChpZDogbnVtYmVyKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnN1Yl93YWxsZXRfaWQgPSBpZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
@@ -0,0 +1,32 @@
1
+ import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { TransferBuilder } from './transferBuilder';
5
+ import { SingleNominatorWithdrawBuilder } from './singleNominatorWithdrawBuilder';
6
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
7
+ import { TonWhalesDepositBuilder } from './tonWhalesDepositBuilder';
8
+ import { TonWhalesWithdrawalBuilder } from './tonWhalesWithdrawalBuilder';
9
+ import { TonWhalesVestingDepositBuilder } from './tonWhalesVestingDepositBuilder';
10
+ import { TonWhalesVestingWithdrawBuilder } from './tonWhalesVestingWithdrawBuilder';
11
+ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
12
+ constructor(_coinConfig: Readonly<CoinConfig>);
13
+ /** @inheritdoc */
14
+ from(raw: string): TransactionBuilder;
15
+ /** @inheritdoc */
16
+ getTransferBuilder(): TransferBuilder;
17
+ /**
18
+ * Returns a specific builder to create a TON withdraw transaction
19
+ */
20
+ getSingleNominatorWithdrawBuilder(): SingleNominatorWithdrawBuilder;
21
+ /**
22
+ * Returns a specific builder to create a TON token transfer transaction
23
+ */
24
+ getTokenTransferBuilder(): TokenTransferBuilder;
25
+ /** @inheritdoc */
26
+ getWalletInitializationBuilder(): void;
27
+ getTonWhalesDepositBuilder(): TonWhalesDepositBuilder;
28
+ getTonWhalesWithdrawalBuilder(): TonWhalesWithdrawalBuilder;
29
+ getTonWhalesVestingDepositBuilder(): TonWhalesVestingDepositBuilder;
30
+ getTonWhalesVestingWithdrawBuilder(): TonWhalesVestingWithdrawBuilder;
31
+ }
32
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA4C,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAG7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IA+CrC,kBAAkB;IAClB,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,iCAAiC,IAAI,8BAA8B;IAInE;;OAEG;IACH,uBAAuB,IAAI,oBAAoB;IAI/C,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC,0BAA0B,IAAI,uBAAuB;IAIrD,6BAA6B,IAAI,0BAA0B;IAI3D,iCAAiC,IAAI,8BAA8B;IAInE,kCAAkC,IAAI,+BAA+B;CAGtE"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionBuilderFactory = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const transferBuilder_1 = require("./transferBuilder");
6
+ const singleNominatorWithdrawBuilder_1 = require("./singleNominatorWithdrawBuilder");
7
+ const transaction_1 = require("./transaction");
8
+ const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
9
+ const tokenTransaction_1 = require("./tokenTransaction");
10
+ const tonWhalesDepositBuilder_1 = require("./tonWhalesDepositBuilder");
11
+ const tonWhalesWithdrawalBuilder_1 = require("./tonWhalesWithdrawalBuilder");
12
+ const tonWhalesVestingDepositBuilder_1 = require("./tonWhalesVestingDepositBuilder");
13
+ const tonWhalesVestingWithdrawBuilder_1 = require("./tonWhalesVestingWithdrawBuilder");
14
+ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ }
18
+ /** @inheritdoc */
19
+ from(raw) {
20
+ let builder;
21
+ try {
22
+ const checkTx = new transaction_1.Transaction(this._coinConfig);
23
+ checkTx.fromRawTransaction(raw);
24
+ let tx;
25
+ if (checkTx.type === sdk_core_1.TransactionType.SendToken) {
26
+ // It's a token transaction, so use TokenTransaction for proper parsing
27
+ tx = new tokenTransaction_1.TokenTransaction(this._coinConfig);
28
+ tx.fromRawTransaction(raw);
29
+ }
30
+ else {
31
+ // It's a regular transaction, use the already parsed one
32
+ tx = checkTx;
33
+ }
34
+ switch (tx.type) {
35
+ case sdk_core_1.TransactionType.Send:
36
+ builder = this.getTransferBuilder();
37
+ break;
38
+ case sdk_core_1.TransactionType.SingleNominatorWithdraw:
39
+ builder = this.getSingleNominatorWithdrawBuilder();
40
+ break;
41
+ case sdk_core_1.TransactionType.SendToken:
42
+ builder = this.getTokenTransferBuilder();
43
+ break;
44
+ case sdk_core_1.TransactionType.TonWhalesDeposit:
45
+ builder = this.getTonWhalesDepositBuilder();
46
+ break;
47
+ case sdk_core_1.TransactionType.TonWhalesWithdrawal:
48
+ builder = this.getTonWhalesWithdrawalBuilder();
49
+ break;
50
+ case sdk_core_1.TransactionType.TonWhalesVestingDeposit:
51
+ builder = this.getTonWhalesVestingDepositBuilder();
52
+ break;
53
+ case sdk_core_1.TransactionType.TonWhalesVestingWithdrawal:
54
+ builder = this.getTonWhalesVestingWithdrawBuilder();
55
+ break;
56
+ default:
57
+ throw new sdk_core_1.InvalidTransactionError('unsupported transaction');
58
+ }
59
+ builder.from(raw);
60
+ return builder;
61
+ }
62
+ catch (e) {
63
+ throw e;
64
+ }
65
+ }
66
+ /** @inheritdoc */
67
+ getTransferBuilder() {
68
+ return new transferBuilder_1.TransferBuilder(this._coinConfig);
69
+ }
70
+ /**
71
+ * Returns a specific builder to create a TON withdraw transaction
72
+ */
73
+ getSingleNominatorWithdrawBuilder() {
74
+ return new singleNominatorWithdrawBuilder_1.SingleNominatorWithdrawBuilder(this._coinConfig);
75
+ }
76
+ /**
77
+ * Returns a specific builder to create a TON token transfer transaction
78
+ */
79
+ getTokenTransferBuilder() {
80
+ return new tokenTransferBuilder_1.TokenTransferBuilder(this._coinConfig);
81
+ }
82
+ /** @inheritdoc */
83
+ getWalletInitializationBuilder() {
84
+ throw new Error('Method not implemented.');
85
+ }
86
+ getTonWhalesDepositBuilder() {
87
+ return new tonWhalesDepositBuilder_1.TonWhalesDepositBuilder(this._coinConfig);
88
+ }
89
+ getTonWhalesWithdrawalBuilder() {
90
+ return new tonWhalesWithdrawalBuilder_1.TonWhalesWithdrawalBuilder(this._coinConfig);
91
+ }
92
+ getTonWhalesVestingDepositBuilder() {
93
+ return new tonWhalesVestingDepositBuilder_1.TonWhalesVestingDepositBuilder(this._coinConfig);
94
+ }
95
+ getTonWhalesVestingWithdrawBuilder() {
96
+ return new tonWhalesVestingWithdrawBuilder_1.TonWhalesVestingWithdrawBuilder(this._coinConfig);
97
+ }
98
+ }
99
+ exports.TransactionBuilderFactory = TransactionBuilderFactory;
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBK0c7QUFHL0csdURBQW9EO0FBQ3BELHFGQUFrRjtBQUNsRiwrQ0FBNEM7QUFDNUMsaUVBQThEO0FBQzlELHlEQUFzRDtBQUN0RCx1RUFBb0U7QUFDcEUsNkVBQTBFO0FBQzFFLHFGQUFrRjtBQUNsRix1RkFBb0Y7QUFFcEYsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUNELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBVztRQUNkLElBQUksT0FBMkIsQ0FBQztRQUNoQyxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVoQyxJQUFJLEVBQWUsQ0FBQztZQUNwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssMEJBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDL0MsdUVBQXVFO2dCQUN2RSxFQUFFLEdBQUcsSUFBSSxtQ0FBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04seURBQXlEO2dCQUN6RCxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ2YsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLDBCQUFlLENBQUMsSUFBSTtvQkFDdkIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUNwQyxNQUFNO2dCQUNSLEtBQUssMEJBQWUsQ0FBQyx1QkFBdUI7b0JBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztvQkFDbkQsTUFBTTtnQkFDUixLQUFLLDBCQUFlLENBQUMsU0FBUztvQkFDNUIsT0FBTyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUN6QyxNQUFNO2dCQUNSLEtBQUssMEJBQWUsQ0FBQyxnQkFBZ0I7b0JBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztvQkFDNUMsTUFBTTtnQkFDUixLQUFLLDBCQUFlLENBQUMsbUJBQW1CO29CQUN0QyxPQUFPLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1IsS0FBSywwQkFBZSxDQUFDLHVCQUF1QjtvQkFDMUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO29CQUNuRCxNQUFNO2dCQUNSLEtBQUssMEJBQWUsQ0FBQywwQkFBMEI7b0JBQzdDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztvQkFDcEQsTUFBTTtnQkFDUjtvQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQ0FBaUM7UUFDL0IsT0FBTyxJQUFJLCtEQUE4QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLDJDQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLElBQUksaURBQXVCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCw2QkFBNkI7UUFDM0IsT0FBTyxJQUFJLHVEQUEwQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsaUNBQWlDO1FBQy9CLE9BQU8sSUFBSSwrREFBOEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtDQUFrQztRQUNoQyxPQUFPLElBQUksaUVBQStCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQTNGRCw4REEyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciB9IGZyb20gJy4vc2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2FjdGlvbiB9IGZyb20gJy4vdG9rZW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUb25XaGFsZXNEZXBvc2l0QnVpbGRlciB9IGZyb20gJy4vdG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXInO1xuaW1wb3J0IHsgVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIgfSBmcm9tICcuL3RvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyJztcbmltcG9ydCB7IFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlciB9IGZyb20gJy4vdG9uV2hhbGVzVmVzdGluZ0RlcG9zaXRCdWlsZGVyJztcbmltcG9ydCB7IFRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXIgfSBmcm9tICcuL3RvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBsZXQgYnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGVja1R4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgY2hlY2tUeC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcblxuICAgICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICAgIGlmIChjaGVja1R4LnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW4pIHtcbiAgICAgICAgLy8gSXQncyBhIHRva2VuIHRyYW5zYWN0aW9uLCBzbyB1c2UgVG9rZW5UcmFuc2FjdGlvbiBmb3IgcHJvcGVyIHBhcnNpbmdcbiAgICAgICAgdHggPSBuZXcgVG9rZW5UcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGEgcmVndWxhciB0cmFuc2FjdGlvbiwgdXNlIHRoZSBhbHJlYWR5IHBhcnNlZCBvbmVcbiAgICAgICAgdHggPSBjaGVja1R4O1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0eC50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNpbmdsZU5vbWluYXRvcldpdGhkcmF3OlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW46XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzRGVwb3NpdDpcbiAgICAgICAgICBidWlsZGVyID0gdGhpcy5nZXRUb25XaGFsZXNEZXBvc2l0QnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Ub25XaGFsZXNXaXRoZHJhd2FsOlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0OlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Ub25XaGFsZXNWZXN0aW5nV2l0aGRyYXdhbDpcbiAgICAgICAgICBidWlsZGVyID0gdGhpcy5nZXRUb25XaGFsZXNWZXN0aW5nV2l0aGRyYXdCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgYnVpbGRlci5mcm9tKHJhdyk7XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIoKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgYnVpbGRlciB0byBjcmVhdGUgYSBUT04gd2l0aGRyYXcgdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlcigpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBidWlsZGVyIHRvIGNyZWF0ZSBhIFRPTiB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGdldFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyKCk6IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIoKTogVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRUb25XaGFsZXNWZXN0aW5nRGVwb3NpdEJ1aWxkZXIoKTogVG9uV2hhbGVzVmVzdGluZ0RlcG9zaXRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXIoKTogVG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUb25XaGFsZXNWZXN0aW5nV2l0aGRyYXdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,14 @@
1
+ import { ITransactionRecipient } from '@bitgo-beta/sdk-core';
2
+ export interface ITransactionExplanation<TFee = any, TAmount = any> {
3
+ displayOrder: string[];
4
+ id: string;
5
+ outputs: ITransactionRecipient[];
6
+ outputAmount: TAmount;
7
+ changeOutputs: ITransactionRecipient[];
8
+ changeAmount: TAmount;
9
+ fee: TFee;
10
+ proxy?: string;
11
+ producers?: string[];
12
+ withdrawAmount?: string;
13
+ }
14
+ //# sourceMappingURL=transactionExplanation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionExplanation.d.ts","sourceRoot":"","sources":["../../../../src/lib/transactionExplanation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,WAAW,uBAAuB,CAAC,IAAI,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IAChE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPFRGZWUgPSBhbnksIFRBbW91bnQgPSBhbnk+IHtcbiAgZGlzcGxheU9yZGVyOiBzdHJpbmdbXTtcbiAgaWQ6IHN0cmluZztcbiAgb3V0cHV0czogSVRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIG91dHB1dEFtb3VudDogVEFtb3VudDtcbiAgY2hhbmdlT3V0cHV0czogSVRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIGNoYW5nZUFtb3VudDogVEFtb3VudDtcbiAgZmVlOiBURmVlO1xuICBwcm94eT86IHN0cmluZztcbiAgcHJvZHVjZXJzPzogc3RyaW5nW107XG4gIHdpdGhkcmF3QW1vdW50Pzogc3RyaW5nO1xufVxuIl19
@@ -1,6 +1,6 @@
1
- import { TransactionBuilder } from './transactionBuilder';
2
1
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
2
  import { Recipient, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
4
  export declare class TransferBuilder extends TransactionBuilder {
5
5
  constructor(_coinConfig: Readonly<CoinConfig>);
6
6
  protected get transactionType(): TransactionType;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,eAAe;CAI5C"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransferBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const transactionBuilder_1 = require("./transactionBuilder");
6
+ const transaction_1 = require("./transaction");
7
+ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
8
+ constructor(_coinConfig) {
9
+ super(_coinConfig);
10
+ this._transaction = new transaction_1.Transaction(_coinConfig);
11
+ }
12
+ get transactionType() {
13
+ return sdk_core_1.TransactionType.Send;
14
+ }
15
+ send(recipient) {
16
+ this.transaction.recipient = recipient;
17
+ return this;
18
+ }
19
+ }
20
+ exports.TransferBuilder = TransferBuilder;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQWtFO0FBQ2xFLDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFFNUMsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQUNyRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFvQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFkRCwwQ0FjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50ID0gcmVjaXBpZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { BaseUtils } from '@bitgo-beta/sdk-core';
2
+ import { VestingContractParams } from './iface';
3
+ export declare class Utils implements BaseUtils {
4
+ /** @inheritdoc */
5
+ isValidAddress(address: string): boolean;
6
+ /** @inheritdoc */
7
+ isValidBlockId(hash: string): boolean;
8
+ /** @inheritdoc */
9
+ isValidPrivateKey(key: string): boolean;
10
+ /** @inheritdoc */
11
+ isValidPublicKey(key: string): boolean;
12
+ /** @inheritdoc */
13
+ isValidSignature(signature: string): boolean;
14
+ /** @inheritdoc */
15
+ isValidTransactionId(txId: string): boolean;
16
+ getAddressFromPublicKey(publicKey: string, bounceable?: boolean, isUserFriendly?: boolean): Promise<string>;
17
+ getAddress(address: string, bounceable?: boolean): string;
18
+ getMessageHashFromData(data: string): Promise<string>;
19
+ getRawWalletAddressFromCell(data: string): string;
20
+ getVestingContractAddress(params: VestingContractParams): Promise<string>;
21
+ /**
22
+ * Converts a TON address into a Base64 encoded BOC (Bag of Cells) string.
23
+ * This is required when passing an address as a 'slice' argument to `runGetMethod`.
24
+ * @param address - The TON address (friendly or raw)
25
+ * @returns Base64 string of the serialized address cell
26
+ */
27
+ getAddressBoc(address: string): Promise<string>;
28
+ }
29
+ /**
30
+ * Function to estimate the fee for a transaction.
31
+ * This function uses the dummy private key exclusively for fee estimation.
32
+ * @param wallet - The wallet instance.
33
+ * @param toAddress - The destination address.
34
+ * @param amount - The amount to transfer.
35
+ * @param seqno - The sequence number for the transaction.
36
+ * @returns The estimated fee for the transaction.
37
+ */
38
+ export declare function getFeeEstimate(wallet: any, toAddress: string, amount: string, seqno: number): Promise<any>;
39
+ declare const utils: Utils;
40
+ export default utils;
41
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAA2B,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQrC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,UAAO,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAY3G,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,MAAM;IAYhD,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3D,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO3C,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB/E;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMtD;AAID;;;;;;;;GAQG;AAEH,wBAAsB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAgBhH;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -0,0 +1,159 @@
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.Utils = void 0;
7
+ exports.getFeeEstimate = getFeeEstimate;
8
+ const tonweb_1 = __importDefault(require("tonweb"));
9
+ const bn_js_1 = require("bn.js");
10
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ const constants_1 = require("./constants");
12
+ class Utils {
13
+ /** @inheritdoc */
14
+ isValidAddress(address) {
15
+ try {
16
+ if (address.length != 48) {
17
+ return false;
18
+ }
19
+ Buffer.from(address, 'base64');
20
+ return true;
21
+ }
22
+ catch (e) {
23
+ return false;
24
+ }
25
+ }
26
+ /** @inheritdoc */
27
+ isValidBlockId(hash) {
28
+ try {
29
+ return Buffer.from(hash, 'base64').length === 32;
30
+ }
31
+ catch (e) {
32
+ return false;
33
+ }
34
+ }
35
+ /** @inheritdoc */
36
+ isValidPrivateKey(key) {
37
+ throw new Error('Method not implemented.');
38
+ }
39
+ /** @inheritdoc */
40
+ isValidPublicKey(key) {
41
+ return (0, sdk_core_1.isValidEd25519PublicKey)(key);
42
+ }
43
+ /** @inheritdoc */
44
+ isValidSignature(signature) {
45
+ throw new Error('Method not implemented.');
46
+ }
47
+ /** @inheritdoc */
48
+ isValidTransactionId(txId) {
49
+ try {
50
+ return Buffer.from(txId, 'base64').length === 32;
51
+ }
52
+ catch (e) {
53
+ return false;
54
+ }
55
+ }
56
+ async getAddressFromPublicKey(publicKey, bounceable = true, isUserFriendly = true) {
57
+ const tonweb = new tonweb_1.default(new tonweb_1.default.HttpProvider(''));
58
+ const WalletClass = tonweb.wallet.all['v4R2'];
59
+ const wallet = new WalletClass(tonweb.provider, {
60
+ publicKey: tonweb_1.default.utils.hexToBytes(publicKey),
61
+ wc: 0,
62
+ });
63
+ const address = await wallet.getAddress();
64
+ const legacyAddress = address.toString(isUserFriendly, true, bounceable);
65
+ return legacyAddress;
66
+ }
67
+ getAddress(address, bounceable = true) {
68
+ if (bounceable) {
69
+ return new tonweb_1.default.Address(address).isBounceable
70
+ ? address
71
+ : new tonweb_1.default.Address(address).toString(true, true, bounceable);
72
+ }
73
+ else {
74
+ return new tonweb_1.default.Address(address).isBounceable
75
+ ? new tonweb_1.default.Address(address).toString(true, true, bounceable)
76
+ : address;
77
+ }
78
+ }
79
+ async getMessageHashFromData(data) {
80
+ const cell = tonweb_1.default.boc.Cell.oneFromBoc(tonweb_1.default.utils.base64ToBytes(data));
81
+ // this is need to be confirmed by ton team
82
+ const message = cell.refs[0].refs[0];
83
+ const hash = tonweb_1.default.utils.bytesToBase64(await message.hash());
84
+ return hash.toString();
85
+ }
86
+ getRawWalletAddressFromCell(data) {
87
+ const cell = tonweb_1.default.boc.Cell.oneFromBoc(tonweb_1.default.utils.base64ToBytes(data));
88
+ const slice = cell.beginParse();
89
+ const address = slice.loadAddress();
90
+ return address.toString();
91
+ }
92
+ async getVestingContractAddress(params) {
93
+ const cell = new tonweb_1.default.boc.Cell();
94
+ cell.bits.writeUint(0, 32); //seq no
95
+ cell.bits.writeUint(params.subWalletId, 32);
96
+ cell.bits.writeBytes(tonweb_1.default.utils.hexToBytes(params.publicKeyHex));
97
+ cell.bits.writeUint(0, 1); // empty whitelist
98
+ const vestingParamsCell = new tonweb_1.default.boc.Cell();
99
+ vestingParamsCell.bits.writeUint(params.vestingStartTime, 64);
100
+ vestingParamsCell.bits.writeUint(params.vestingTotalDuration, 32);
101
+ vestingParamsCell.bits.writeUint(params.unlockPeriod, 32);
102
+ vestingParamsCell.bits.writeUint(params.cliffDuration, 32);
103
+ vestingParamsCell.bits.writeCoins(new bn_js_1.BN(params.vestingTotalAmount.toString()));
104
+ const senderAddress = new tonweb_1.default.Address(params.vestingSenderAddress);
105
+ vestingParamsCell.bits.writeAddress(senderAddress);
106
+ const ownerAddress = new tonweb_1.default.Address(params.ownerAddress);
107
+ vestingParamsCell.bits.writeAddress(ownerAddress);
108
+ cell.refs.push(vestingParamsCell);
109
+ const contractCodeCell = tonweb_1.default.boc.Cell.oneFromBoc(tonweb_1.default.utils.base64ToBytes(constants_1.VESTING_CONTRACT_CODE_B64));
110
+ const stateInit = tonweb_1.default.Contract.createStateInit(contractCodeCell, cell);
111
+ const stateInitHash = await stateInit.hash();
112
+ const contractAddress = new tonweb_1.default.Address('0:' + tonweb_1.default.utils.bytesToHex(stateInitHash));
113
+ return contractAddress.toString(true, true, true);
114
+ }
115
+ /**
116
+ * Converts a TON address into a Base64 encoded BOC (Bag of Cells) string.
117
+ * This is required when passing an address as a 'slice' argument to `runGetMethod`.
118
+ * @param address - The TON address (friendly or raw)
119
+ * @returns Base64 string of the serialized address cell
120
+ */
121
+ async getAddressBoc(address) {
122
+ const cell = new tonweb_1.default.boc.Cell();
123
+ cell.bits.writeAddress(new tonweb_1.default.Address(address));
124
+ const boc = await cell.toBoc(false);
125
+ return tonweb_1.default.utils.bytesToBase64(boc);
126
+ }
127
+ }
128
+ exports.Utils = Utils;
129
+ const DUMMY_PRIVATE_KEY = '43e8594854cb53947c4a1a2fab926af11e123f6251dcd5bd0dfb100604186430'; // This dummy private key is used only for fee estimation
130
+ /**
131
+ * Function to estimate the fee for a transaction.
132
+ * This function uses the dummy private key exclusively for fee estimation.
133
+ * @param wallet - The wallet instance.
134
+ * @param toAddress - The destination address.
135
+ * @param amount - The amount to transfer.
136
+ * @param seqno - The sequence number for the transaction.
137
+ * @returns The estimated fee for the transaction.
138
+ */
139
+ async function getFeeEstimate(wallet, toAddress, amount, seqno) {
140
+ try {
141
+ const secretKey = tonweb_1.default.utils.stringToBytes(DUMMY_PRIVATE_KEY);
142
+ const feeEstimate = await wallet.methods
143
+ .transfer({
144
+ secretKey,
145
+ toAddress,
146
+ amount,
147
+ seqno,
148
+ sendMode: 1,
149
+ })
150
+ .estimateFee();
151
+ return feeEstimate;
152
+ }
153
+ catch (error) {
154
+ throw new Error(`Failed to estimate fee: ${error.message}`);
155
+ }
156
+ }
157
+ const utils = new Utils();
158
+ exports.default = utils;
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQTZJQSx3Q0FnQkM7QUE3SkQsb0RBQTRCO0FBQzVCLGlDQUEyQjtBQUMzQixtREFBMEU7QUFDMUUsMkNBQXdEO0FBRXhELE1BQWEsS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN6QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxNQUFNLElB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bkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLGdCQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUExSEQsc0JBMEhDO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxrRUFBa0UsQ0FBQyxDQUFDLHlEQUF5RDtBQUV2Sjs7Ozs7Ozs7R0FRRztBQUVJLEtBQUssVUFBVSxjQUFjLENBQUMsTUFBVyxFQUFFLFNBQWlCLEVBQUUsTUFBYyxFQUFFLEtBQWE7SUFDaEcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTzthQUNyQyxRQUFRLENBQUM7WUFDUixTQUFTO1lBQ1QsU0FBUztZQUNULE1BQU07WUFDTixLQUFLO1lBQ0wsUUFBUSxFQUFFLENBQUM7U0FDWixDQUFDO2FBQ0QsV0FBVyxFQUFFLENBQUM7UUFDakIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRvbldlYiBmcm9tICd0b253ZWInO1xuaW1wb3J0IHsgQk4gfSBmcm9tICdibi5qcyc7XG5pbXBvcnQgeyBCYXNlVXRpbHMsIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVkVTVElOR19DT05UUkFDVF9DT0RFX0I2NCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFZlc3RpbmdDb250cmFjdFBhcmFtcyB9IGZyb20gJy4vaWZhY2UnO1xuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoYWRkcmVzcy5sZW5ndGggIT0gNDgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgQnVmZmVyLmZyb20oYWRkcmVzcywgJ2Jhc2U2NCcpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGhhc2gsICdiYXNlNjQnKS5sZW5ndGggPT09IDMyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbSh0eElkLCAnYmFzZTY0JykubGVuZ3RoID09PSAzMjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcsIGJvdW5jZWFibGUgPSB0cnVlLCBpc1VzZXJGcmllbmRseSA9IHRydWUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHRvbndlYiA9IG5ldyBUb25XZWIobmV3IFRvbldlYi5IdHRwUHJvdmlkZXIoJycpKTtcbiAgICBjb25zdCBXYWxsZXRDbGFzcyA9IHRvbndlYi53YWxsZXQuYWxsWyd2NFIyJ107XG4gICAgY29uc3Qgd2FsbGV0ID0gbmV3IFdhbGxldENsYXNzKHRvbndlYi5wcm92aWRlciwge1xuICAgICAgcHVibGljS2V5OiBUb25XZWIudXRpbHMuaGV4VG9CeXRlcyhwdWJsaWNLZXkpLFxuICAgICAgd2M6IDAsXG4gICAgfSk7XG4gICAgY29uc3QgYWRkcmVzcyA9IGF3YWl0IHdhbGxldC5nZXRBZGRyZXNzKCk7XG4gICAgY29uc3QgbGVnYWN5QWRkcmVzcyA9IGFkZHJlc3MudG9TdHJpbmcoaXNVc2VyRnJpZW5kbHksIHRydWUsIGJvdW5jZWFibGUpO1xuICAgIHJldHVybiBsZWdhY3lBZGRyZXNzO1xuICB9XG5cbiAgZ2V0QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIGJvdW5jZWFibGUgPSB0cnVlKTogc3RyaW5nIHtcbiAgICBpZiAoYm91bmNlYWJsZSkge1xuICAgICAgcmV0dXJuIG5ldyBUb25XZWIuQWRkcmVzcyhhZGRyZXNzKS5pc0JvdW5jZWFibGVcbiAgICAgICAgPyBhZGRyZXNzXG4gICAgICAgIDogbmV3IFRvbldlYi5BZGRyZXNzKGFkZHJlc3MpLnRvU3RyaW5nKHRydWUsIHRydWUsIGJvdW5jZWFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IFRvbldlYi5BZGRyZXNzKGFkZHJlc3MpLmlzQm91bmNlYWJsZVxuICAgICAgICA/IG5ldyBUb25XZWIuQWRkcmVzcyhhZGRyZXNzKS50b1N0cmluZyh0cnVlLCB0cnVlLCBib3VuY2VhYmxlKVxuICAgICAgICA6IGFkZHJlc3M7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0TWVzc2FnZUhhc2hGcm9tRGF0YShkYXRhOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNlbGwgPSBUb25XZWIuYm9jLkNlbGwub25lRnJvbUJvYyhUb25XZWIudXRpbHMuYmFzZTY0VG9CeXRlcyhkYXRhKSk7XG4gICAgLy8gdGhpcyBpcyBuZWVkIHRvIGJlIGNvbmZpcm1lZCBieSB0b24gdGVhbVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBjZWxsLnJlZnNbMF0ucmVmc1swXTtcbiAgICBjb25zdCBoYXNoID0gVG9uV2ViLnV0aWxzLmJ5dGVzVG9CYXNlNjQoYXdhaXQgbWVzc2FnZS5oYXNoKCkpO1xuICAgIHJldHVybiBoYXNoLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXRSYXdXYWxsZXRBZGRyZXNzRnJvbUNlbGwoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjZWxsID0gVG9uV2ViLmJvYy5DZWxsLm9uZUZyb21Cb2MoVG9uV2ViLnV0aWxzLmJhc2U2NFRvQnl0ZXMoZGF0YSkpO1xuICAgIGNvbnN0IHNsaWNlID0gKGNlbGwgYXMgYW55KS5iZWdpblBhcnNlKCk7XG4gICAgY29uc3QgYWRkcmVzcyA9IHNsaWNlLmxvYWRBZGRyZXNzKCk7XG4gICAgcmV0dXJuIGFkZHJlc3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZlc3RpbmdDb250cmFjdEFkZHJlc3MocGFyYW1zOiBWZXN0aW5nQ29udHJhY3RQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGNlbGwgPSBuZXcgVG9uV2ViLmJvYy5DZWxsKCk7XG4gICAgY2VsbC5iaXRzLndyaXRlVWludCgwLCAzMik7IC8vc2VxIG5vXG4gICAgY2VsbC5iaXRzLndyaXRlVWludChwYXJhbXMuc3ViV2FsbGV0SWQsIDMyKTtcbiAgICBjZWxsLmJpdHMud3JpdGVCeXRlcyhUb25XZWIudXRpbHMuaGV4VG9CeXRlcyhwYXJhbXMucHVibGljS2V5SGV4KSk7XG4gICAgY2VsbC5iaXRzLndyaXRlVWludCgwLCAxKTsgLy8gZW1wdHkgd2hpdGVsaXN0XG4gICAgY29uc3QgdmVzdGluZ1BhcmFtc0NlbGwgPSBuZXcgVG9uV2ViLmJvYy5DZWxsKCk7XG4gICAgdmVzdGluZ1BhcmFtc0NlbGwuYml0cy53cml0ZVVpbnQocGFyYW1zLnZlc3RpbmdTdGFydFRpbWUsIDY0KTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlVWludChwYXJhbXMudmVzdGluZ1RvdGFsRHVyYXRpb24sIDMyKTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlVWludChwYXJhbXMudW5sb2NrUGVyaW9kLCAzMik7XG4gICAgdmVzdGluZ1BhcmFtc0NlbGwuYml0cy53cml0ZVVpbnQocGFyYW1zLmNsaWZmRHVyYXRpb24sIDMyKTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlQ29pbnMobmV3IEJOKHBhcmFtcy52ZXN0aW5nVG90YWxBbW91bnQudG9TdHJpbmcoKSkpO1xuICAgIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBuZXcgVG9uV2ViLkFkZHJlc3MocGFyYW1zLnZlc3RpbmdTZW5kZXJBZGRyZXNzKTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlQWRkcmVzcyhzZW5kZXJBZGRyZXNzKTtcbiAgICBjb25zdCBvd25lckFkZHJlc3MgPSBuZXcgVG9uV2ViLkFkZHJlc3MocGFyYW1zLm93bmVyQWRkcmVzcyk7XG4gICAgdmVzdGluZ1BhcmFtc0NlbGwuYml0cy53cml0ZUFkZHJlc3Mob3duZXJBZGRyZXNzKTtcbiAgICBjZWxsLnJlZnMucHVzaCh2ZXN0aW5nUGFyYW1zQ2VsbCk7XG4gICAgY29uc3QgY29udHJhY3RDb2RlQ2VsbCA9IFRvbldlYi5ib2MuQ2VsbC5vbmVGcm9tQm9jKFRvbldlYi51dGlscy5iYXNlNjRUb0J5dGVzKFZFU1RJTkdfQ09OVFJBQ1RfQ09ERV9CNjQpKTtcbiAgICBjb25zdCBzdGF0ZUluaXQgPSBUb25XZWIuQ29udHJhY3QuY3JlYXRlU3RhdGVJbml0KGNvbnRyYWN0Q29kZUNlbGwsIGNlbGwpO1xuICAgIGNvbnN0IHN0YXRlSW5pdEhhc2ggPSBhd2FpdCBzdGF0ZUluaXQuaGFzaCgpO1xuICAgIGNvbnN0IGNvbnRyYWN0QWRkcmVzcyA9IG5ldyBUb25XZWIuQWRkcmVzcygnMDonICsgVG9uV2ViLnV0aWxzLmJ5dGVzVG9IZXgoc3RhdGVJbml0SGFzaCkpO1xuICAgIHJldHVybiBjb250cmFjdEFkZHJlc3MudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBUT04gYWRkcmVzcyBpbnRvIGEgQmFzZTY0IGVuY29kZWQgQk9DIChCYWcgb2YgQ2VsbHMpIHN0cmluZy5cbiAgICogVGhpcyBpcyByZXF1aXJlZCB3aGVuIHBhc3NpbmcgYW4gYWRkcmVzcyBhcyBhICdzbGljZScgYXJndW1lbnQgdG8gYHJ1bkdldE1ldGhvZGAuXG4gICAqIEBwYXJhbSBhZGRyZXNzIC0gVGhlIFRPTiBhZGRyZXNzIChmcmllbmRseSBvciByYXcpXG4gICAqIEByZXR1cm5zIEJhc2U2NCBzdHJpbmcgb2YgdGhlIHNlcmlhbGl6ZWQgYWRkcmVzcyBjZWxsXG4gICAqL1xuICBhc3luYyBnZXRBZGRyZXNzQm9jKGFkZHJlc3M6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY2VsbCA9IG5ldyBUb25XZWIuYm9jLkNlbGwoKTtcbiAgICBjZWxsLmJpdHMud3JpdGVBZGRyZXNzKG5ldyBUb25XZWIuQWRkcmVzcyhhZGRyZXNzKSk7XG4gICAgY29uc3QgYm9jID0gYXdhaXQgY2VsbC50b0JvYyhmYWxzZSk7XG4gICAgcmV0dXJuIFRvbldlYi51dGlscy5ieXRlc1RvQmFzZTY0KGJvYyk7XG4gIH1cbn1cblxuY29uc3QgRFVNTVlfUFJJVkFURV9LRVkgPSAnNDNlODU5NDg1NGNiNTM5NDdjNGExYTJmYWI5MjZhZjExZTEyM2Y2MjUxZGNkNWJkMGRmYjEwMDYwNDE4NjQzMCc7IC8vIFRoaXMgZHVtbXkgcHJpdmF0ZSBrZXkgaXMgdXNlZCBvbmx5IGZvciBmZWUgZXN0aW1hdGlvblxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGVzdGltYXRlIHRoZSBmZWUgZm9yIGEgdHJhbnNhY3Rpb24uXG4gKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGR1bW15IHByaXZhdGUga2V5IGV4Y2x1c2l2ZWx5IGZvciBmZWUgZXN0aW1hdGlvbi5cbiAqIEBwYXJhbSB3YWxsZXQgLSBUaGUgd2FsbGV0IGluc3RhbmNlLlxuICogQHBhcmFtIHRvQWRkcmVzcyAtIFRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLlxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgdG8gdHJhbnNmZXIuXG4gKiBAcGFyYW0gc2Vxbm8gLSBUaGUgc2VxdWVuY2UgbnVtYmVyIGZvciB0aGUgdHJhbnNhY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgZXN0aW1hdGVkIGZlZSBmb3IgdGhlIHRyYW5zYWN0aW9uLlxuICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGZWVFc3RpbWF0ZSh3YWxsZXQ6IGFueSwgdG9BZGRyZXNzOiBzdHJpbmcsIGFtb3VudDogc3RyaW5nLCBzZXFubzogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzZWNyZXRLZXkgPSBUb25XZWIudXRpbHMuc3RyaW5nVG9CeXRlcyhEVU1NWV9QUklWQVRFX0tFWSk7XG4gICAgY29uc3QgZmVlRXN0aW1hdGUgPSBhd2FpdCB3YWxsZXQubWV0aG9kc1xuICAgICAgLnRyYW5zZmVyKHtcbiAgICAgICAgc2VjcmV0S2V5LFxuICAgICAgICB0b0FkZHJlc3MsXG4gICAgICAgIGFtb3VudCxcbiAgICAgICAgc2Vxbm8sXG4gICAgICAgIHNlbmRNb2RlOiAxLFxuICAgICAgfSlcbiAgICAgIC5lc3RpbWF0ZUZlZSgpO1xuICAgIHJldHVybiBmZWVFc3RpbWF0ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBlc3RpbWF0ZSBmZWU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAMzC,CAAC"}