@bitgo/sdk-coin-ton 4.0.4 → 4.0.6

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 (224) hide show
  1. package/dist/cjs/src/index.d.ts.map +1 -0
  2. package/dist/{src → cjs/src}/index.js +1 -1
  3. package/dist/cjs/src/jettonToken.d.ts.map +1 -0
  4. package/dist/cjs/src/jettonToken.js +52 -0
  5. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  6. package/dist/cjs/src/lib/constants.js +12 -0
  7. package/dist/{src → cjs/src}/lib/explainTransactionWasm.d.ts +15 -1
  8. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  9. package/dist/cjs/src/lib/explainTransactionWasm.js +104 -0
  10. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  11. package/dist/cjs/src/lib/iface.js +3 -0
  12. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  13. package/dist/{src → cjs/src}/lib/index.js +1 -1
  14. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  15. package/dist/cjs/src/lib/keyPair.js +103 -0
  16. package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.d.ts.map +1 -0
  17. package/dist/cjs/src/lib/singleNominatorWithdrawBuilder.js +38 -0
  18. package/dist/cjs/src/lib/tokenTransaction.d.ts.map +1 -0
  19. package/dist/cjs/src/lib/tokenTransaction.js +97 -0
  20. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/tokenTransferBuilder.js +57 -0
  22. package/dist/cjs/src/lib/tonWhalesDepositBuilder.d.ts.map +1 -0
  23. package/dist/cjs/src/lib/tonWhalesDepositBuilder.js +42 -0
  24. package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
  25. package/dist/cjs/src/lib/tonWhalesVestingDepositBuilder.js +37 -0
  26. package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/tonWhalesVestingWithdrawBuilder.js +37 -0
  28. package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
  29. package/dist/cjs/src/lib/tonWhalesWithdrawalBuilder.js +60 -0
  30. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/transaction.js +415 -0
  32. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  33. package/dist/cjs/src/lib/transactionBuilder.js +152 -0
  34. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/transactionBuilderFactory.js +100 -0
  36. package/dist/cjs/src/lib/transactionExplanation.d.ts.map +1 -0
  37. package/dist/cjs/src/lib/transactionExplanation.js +3 -0
  38. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/transferBuilder.js +21 -0
  40. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  41. package/dist/cjs/src/lib/utils.js +159 -0
  42. package/dist/cjs/src/register.d.ts.map +1 -0
  43. package/dist/cjs/src/register.js +15 -0
  44. package/dist/cjs/src/ton.d.ts.map +1 -0
  45. package/dist/cjs/src/ton.js +520 -0
  46. package/dist/cjs/src/tton.d.ts.map +1 -0
  47. package/dist/cjs/src/tton.js +30 -0
  48. package/dist/cjs/test/resources/ton.d.ts.map +1 -0
  49. package/dist/cjs/test/resources/ton.js +208 -0
  50. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  51. package/dist/cjs/test/unit/explainTransactionWasm.js +147 -0
  52. package/dist/cjs/test/unit/jettonToken.d.ts.map +1 -0
  53. package/dist/cjs/test/unit/jettonToken.js +341 -0
  54. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  55. package/dist/cjs/test/unit/keyPair.js +55 -0
  56. package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.d.ts.map +1 -0
  57. package/dist/cjs/test/unit/singleNominatorWithdrawBuilder.js +314 -0
  58. package/dist/cjs/test/unit/tokenTransferBuilder.d.ts.map +1 -0
  59. package/dist/cjs/test/unit/tokenTransferBuilder.js +262 -0
  60. package/dist/{test → cjs/test}/unit/ton.d.ts.map +1 -1
  61. package/dist/cjs/test/unit/ton.js +752 -0
  62. package/dist/cjs/test/unit/tonWhalesDepositBuilder.d.ts.map +1 -0
  63. package/dist/cjs/test/unit/tonWhalesDepositBuilder.js +114 -0
  64. package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.d.ts.map +1 -0
  65. package/dist/cjs/test/unit/tonWhalesVestingDepositBuilder.js +136 -0
  66. package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.d.ts.map +1 -0
  67. package/dist/cjs/test/unit/tonWhalesVestingWithdrawBuilder.js +136 -0
  68. package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.d.ts.map +1 -0
  69. package/dist/cjs/test/unit/tonWhalesWithdrawalBuilder.js +130 -0
  70. package/dist/cjs/test/unit/transferBuilder.d.ts.map +1 -0
  71. package/dist/cjs/test/unit/transferBuilder.js +281 -0
  72. package/dist/cjs/test/unit/wasmCrossCompatibility.d.ts.map +1 -0
  73. package/dist/cjs/test/unit/wasmCrossCompatibility.js +176 -0
  74. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  75. package/dist/esm/index.d.ts +6 -0
  76. package/dist/esm/index.js +6 -0
  77. package/dist/esm/jettonToken.d.ts +19 -0
  78. package/dist/esm/jettonToken.js +48 -0
  79. package/dist/esm/lib/constants.d.ts +9 -0
  80. package/dist/esm/lib/constants.js +9 -0
  81. package/dist/esm/lib/explainTransactionWasm.d.ts +36 -0
  82. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  83. package/dist/esm/lib/explainTransactionWasm.js +99 -0
  84. package/dist/esm/lib/iface.d.ts +32 -0
  85. package/dist/{src → esm}/lib/iface.js +1 -2
  86. package/dist/esm/lib/index.d.ts +14 -0
  87. package/dist/esm/lib/index.js +14 -0
  88. package/dist/esm/lib/keyPair.d.ts +25 -0
  89. package/dist/esm/lib/keyPair.js +63 -0
  90. package/dist/esm/lib/singleNominatorWithdrawBuilder.d.ts +17 -0
  91. package/dist/esm/lib/singleNominatorWithdrawBuilder.js +34 -0
  92. package/dist/esm/lib/tokenTransaction.d.ts +16 -0
  93. package/dist/esm/lib/tokenTransaction.js +90 -0
  94. package/dist/esm/lib/tokenTransferBuilder.d.ts +20 -0
  95. package/dist/esm/lib/tokenTransferBuilder.js +53 -0
  96. package/dist/esm/lib/tonWhalesDepositBuilder.d.ts +12 -0
  97. package/dist/esm/lib/tonWhalesDepositBuilder.js +38 -0
  98. package/dist/esm/lib/tonWhalesVestingDepositBuilder.d.ts +12 -0
  99. package/dist/esm/lib/tonWhalesVestingDepositBuilder.js +33 -0
  100. package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.d.ts +12 -0
  101. package/dist/esm/lib/tonWhalesVestingWithdrawBuilder.js +33 -0
  102. package/dist/esm/lib/tonWhalesWithdrawalBuilder.d.ts +30 -0
  103. package/dist/esm/lib/tonWhalesWithdrawalBuilder.js +56 -0
  104. package/dist/esm/lib/transaction.d.ts +42 -0
  105. package/dist/esm/lib/transaction.js +408 -0
  106. package/dist/esm/lib/transactionBuilder.d.ts +74 -0
  107. package/dist/esm/lib/transactionBuilder.js +145 -0
  108. package/dist/esm/lib/transactionBuilderFactory.d.ts +32 -0
  109. package/dist/esm/lib/transactionBuilderFactory.js +96 -0
  110. package/dist/esm/lib/transactionExplanation.d.ts +14 -0
  111. package/dist/{src → esm}/lib/transactionExplanation.js +1 -2
  112. package/dist/esm/lib/transferBuilder.d.ts +9 -0
  113. package/dist/esm/lib/transferBuilder.js +17 -0
  114. package/dist/esm/lib/utils.d.ts +41 -0
  115. package/dist/esm/lib/utils.js +151 -0
  116. package/dist/esm/register.d.ts +3 -0
  117. package/dist/esm/register.js +11 -0
  118. package/dist/esm/ton.d.ts +59 -0
  119. package/dist/{src → esm}/ton.d.ts.map +1 -1
  120. package/dist/esm/ton.js +480 -0
  121. package/dist/esm/tton.d.ts +22 -0
  122. package/dist/esm/tton.js +26 -0
  123. package/package.json +27 -10
  124. package/dist/src/jettonToken.js +0 -52
  125. package/dist/src/lib/constants.js +0 -12
  126. package/dist/src/lib/explainTransactionWasm.d.ts.map +0 -1
  127. package/dist/src/lib/explainTransactionWasm.js +0 -61
  128. package/dist/src/lib/keyPair.js +0 -103
  129. package/dist/src/lib/singleNominatorWithdrawBuilder.js +0 -38
  130. package/dist/src/lib/tokenTransaction.js +0 -97
  131. package/dist/src/lib/tokenTransferBuilder.js +0 -57
  132. package/dist/src/lib/tonWhalesDepositBuilder.js +0 -42
  133. package/dist/src/lib/tonWhalesVestingDepositBuilder.js +0 -37
  134. package/dist/src/lib/tonWhalesVestingWithdrawBuilder.js +0 -37
  135. package/dist/src/lib/tonWhalesWithdrawalBuilder.js +0 -60
  136. package/dist/src/lib/transaction.js +0 -415
  137. package/dist/src/lib/transactionBuilder.js +0 -152
  138. package/dist/src/lib/transactionBuilderFactory.js +0 -100
  139. package/dist/src/lib/transferBuilder.js +0 -21
  140. package/dist/src/lib/utils.js +0 -159
  141. package/dist/src/register.js +0 -15
  142. package/dist/src/ton.js +0 -525
  143. package/dist/src/tton.js +0 -30
  144. package/dist/test/resources/ton.d.ts.map +0 -1
  145. package/dist/test/resources/ton.js +0 -208
  146. package/dist/test/unit/explainTransactionWasm.d.ts.map +0 -1
  147. package/dist/test/unit/explainTransactionWasm.js +0 -147
  148. package/dist/test/unit/jettonToken.d.ts.map +0 -1
  149. package/dist/test/unit/jettonToken.js +0 -341
  150. package/dist/test/unit/keyPair.js +0 -55
  151. package/dist/test/unit/singleNominatorWithdrawBuilder.d.ts.map +0 -1
  152. package/dist/test/unit/singleNominatorWithdrawBuilder.js +0 -314
  153. package/dist/test/unit/tokenTransferBuilder.d.ts.map +0 -1
  154. package/dist/test/unit/tokenTransferBuilder.js +0 -262
  155. package/dist/test/unit/ton.js +0 -752
  156. package/dist/test/unit/tonWhalesDepositBuilder.d.ts.map +0 -1
  157. package/dist/test/unit/tonWhalesDepositBuilder.js +0 -114
  158. package/dist/test/unit/tonWhalesVestingDepositBuilder.d.ts.map +0 -1
  159. package/dist/test/unit/tonWhalesVestingDepositBuilder.js +0 -136
  160. package/dist/test/unit/tonWhalesVestingWithdrawBuilder.d.ts.map +0 -1
  161. package/dist/test/unit/tonWhalesVestingWithdrawBuilder.js +0 -136
  162. package/dist/test/unit/tonWhalesWithdrawalBuilder.d.ts.map +0 -1
  163. package/dist/test/unit/tonWhalesWithdrawalBuilder.js +0 -130
  164. package/dist/test/unit/transferBuilder.d.ts.map +0 -1
  165. package/dist/test/unit/transferBuilder.js +0 -281
  166. package/dist/test/unit/wasmCrossCompatibility.d.ts.map +0 -1
  167. package/dist/test/unit/wasmCrossCompatibility.js +0 -176
  168. package/dist/tsconfig.tsbuildinfo +0 -1
  169. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  170. /package/dist/{src → cjs/src}/jettonToken.d.ts +0 -0
  171. /package/dist/{src → cjs/src}/lib/constants.d.ts +0 -0
  172. /package/dist/{src → cjs/src}/lib/iface.d.ts +0 -0
  173. /package/dist/{src → cjs/src}/lib/index.d.ts +0 -0
  174. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  175. /package/dist/{src → cjs/src}/lib/singleNominatorWithdrawBuilder.d.ts +0 -0
  176. /package/dist/{src → cjs/src}/lib/tokenTransaction.d.ts +0 -0
  177. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  178. /package/dist/{src → cjs/src}/lib/tonWhalesDepositBuilder.d.ts +0 -0
  179. /package/dist/{src → cjs/src}/lib/tonWhalesVestingDepositBuilder.d.ts +0 -0
  180. /package/dist/{src → cjs/src}/lib/tonWhalesVestingWithdrawBuilder.d.ts +0 -0
  181. /package/dist/{src → cjs/src}/lib/tonWhalesWithdrawalBuilder.d.ts +0 -0
  182. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  183. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  184. /package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +0 -0
  185. /package/dist/{src → cjs/src}/lib/transactionExplanation.d.ts +0 -0
  186. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  187. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  188. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  189. /package/dist/{src → cjs/src}/ton.d.ts +0 -0
  190. /package/dist/{src → cjs/src}/tton.d.ts +0 -0
  191. /package/dist/{test → cjs/test}/resources/ton.d.ts +0 -0
  192. /package/dist/{test → cjs/test}/unit/explainTransactionWasm.d.ts +0 -0
  193. /package/dist/{test → cjs/test}/unit/jettonToken.d.ts +0 -0
  194. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  195. /package/dist/{test → cjs/test}/unit/singleNominatorWithdrawBuilder.d.ts +0 -0
  196. /package/dist/{test → cjs/test}/unit/tokenTransferBuilder.d.ts +0 -0
  197. /package/dist/{test → cjs/test}/unit/ton.d.ts +0 -0
  198. /package/dist/{test → cjs/test}/unit/tonWhalesDepositBuilder.d.ts +0 -0
  199. /package/dist/{test → cjs/test}/unit/tonWhalesVestingDepositBuilder.d.ts +0 -0
  200. /package/dist/{test → cjs/test}/unit/tonWhalesVestingWithdrawBuilder.d.ts +0 -0
  201. /package/dist/{test → cjs/test}/unit/tonWhalesWithdrawalBuilder.d.ts +0 -0
  202. /package/dist/{test → cjs/test}/unit/transferBuilder.d.ts +0 -0
  203. /package/dist/{test → cjs/test}/unit/wasmCrossCompatibility.d.ts +0 -0
  204. /package/dist/{src → esm}/index.d.ts.map +0 -0
  205. /package/dist/{src → esm}/jettonToken.d.ts.map +0 -0
  206. /package/dist/{src → esm}/lib/constants.d.ts.map +0 -0
  207. /package/dist/{src → esm}/lib/iface.d.ts.map +0 -0
  208. /package/dist/{src → esm}/lib/index.d.ts.map +0 -0
  209. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  210. /package/dist/{src → esm}/lib/singleNominatorWithdrawBuilder.d.ts.map +0 -0
  211. /package/dist/{src → esm}/lib/tokenTransaction.d.ts.map +0 -0
  212. /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
  213. /package/dist/{src → esm}/lib/tonWhalesDepositBuilder.d.ts.map +0 -0
  214. /package/dist/{src → esm}/lib/tonWhalesVestingDepositBuilder.d.ts.map +0 -0
  215. /package/dist/{src → esm}/lib/tonWhalesVestingWithdrawBuilder.d.ts.map +0 -0
  216. /package/dist/{src → esm}/lib/tonWhalesWithdrawalBuilder.d.ts.map +0 -0
  217. /package/dist/{src → esm}/lib/transaction.d.ts.map +0 -0
  218. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  219. /package/dist/{src → esm}/lib/transactionBuilderFactory.d.ts.map +0 -0
  220. /package/dist/{src → esm}/lib/transactionExplanation.d.ts.map +0 -0
  221. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  222. /package/dist/{src → esm}/lib/utils.d.ts.map +0 -0
  223. /package/dist/{src → esm}/register.d.ts.map +0 -0
  224. /package/dist/{src → esm}/tton.d.ts.map +0 -0
@@ -0,0 +1,145 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import TonWeb from 'tonweb';
3
+ import { BaseTransactionBuilder, BuildTransactionError, } from '@bitgo/sdk-core';
4
+ import utils from './utils';
5
+ export const WITHDRAW_OPCODE = '00001000';
6
+ export class TransactionBuilder extends BaseTransactionBuilder {
7
+ constructor(coinConfig) {
8
+ super(coinConfig);
9
+ this._signatures = [];
10
+ }
11
+ /** @inheritdoc */
12
+ get transaction() {
13
+ return this._transaction;
14
+ }
15
+ /** @inheritdoc */
16
+ set transaction(transaction) {
17
+ this._transaction = transaction;
18
+ }
19
+ /** @inheritdoc */
20
+ signImplementation(key) {
21
+ throw new Error('Method not implemented.');
22
+ }
23
+ /** @inheritDoc */
24
+ addSignature(publicKey, signature) {
25
+ this.transaction.signature[0] = signature.toString('hex');
26
+ }
27
+ /**
28
+ * Sets the sender of this transaction.
29
+ * This account will be responsible for paying transaction fees.
30
+ *
31
+ * @param {string} senderAddress the account that is sending this transaction
32
+ * @returns {TransactionBuilder} This transaction builder
33
+ */
34
+ sender(senderAddress) {
35
+ this.transaction.sender = senderAddress;
36
+ return this;
37
+ }
38
+ /**
39
+ * Sets the transaction to be bounceable or not.
40
+ *
41
+ * @param {string} bounceable whether the transaction can be bounced
42
+ * @returns {TransactionBuilder} This transaction builder
43
+ */
44
+ bounceable(bounceable) {
45
+ this.transaction.bounceable = bounceable;
46
+ return this;
47
+ }
48
+ /**
49
+ * Sets the fromAddress to be in bounceable format or not.
50
+ *
51
+ * @param {string} bounceable whether the address format is bounceable
52
+ * @returns {TransactionBuilder} This transaction builder
53
+ */
54
+ fromAddressBounceable(bounceable) {
55
+ this.transaction.fromAddressBounceable = bounceable;
56
+ this.sender(new TonWeb.Address(this.transaction.sender).toString(true, true, bounceable));
57
+ return this;
58
+ }
59
+ /**
60
+ * Sets the toAddress to be in bounceable format or not.
61
+ *
62
+ * @param {string} bounceable whether the address format is bounceable
63
+ * @returns {TransactionBuilder} This transaction builder
64
+ */
65
+ toAddressBounceable(bounceable) {
66
+ this.transaction.toAddressBounceable = bounceable;
67
+ this.transaction.recipient.address = new TonWeb.Address(this.transaction.recipient.address).toString(true, true, bounceable);
68
+ return this;
69
+ }
70
+ fee(feeOptions) {
71
+ throw new Error('Method not implemented.');
72
+ }
73
+ /** @inheritdoc */
74
+ fromImplementation(rawTransaction) {
75
+ this.transaction.transactionType = this.transactionType;
76
+ this.transaction.fromRawTransaction(rawTransaction);
77
+ return this.transaction;
78
+ }
79
+ /** @inheritdoc */
80
+ async buildImplementation() {
81
+ this.transaction.transactionType = this.transactionType;
82
+ await this.transaction.build();
83
+ this.transaction.loadInputsAndOutputs();
84
+ return this.transaction;
85
+ }
86
+ // region Validators
87
+ /** @inheritdoc */
88
+ validateAddress(address, addressFormat) {
89
+ if (!utils.isValidAddress(address.address)) {
90
+ throw new BuildTransactionError('Invalid address ' + address.address);
91
+ }
92
+ }
93
+ /** @inheritdoc */
94
+ validateKey(key) {
95
+ throw new Error('Method not implemented.');
96
+ }
97
+ /** @inheritdoc */
98
+ validateRawTransaction(rawTransaction) {
99
+ return;
100
+ }
101
+ /** @inheritdoc */
102
+ validateTransaction(transaction) {
103
+ if (!transaction) {
104
+ throw new Error('transaction not defined');
105
+ }
106
+ this.validateAddress(transaction.recipient);
107
+ this.validateValue(new BigNumber(transaction.recipient.amount));
108
+ }
109
+ /** @inheritdoc */
110
+ validateValue(value) {
111
+ if (value.isLessThan(0)) {
112
+ throw new BuildTransactionError('Value cannot be less than zero');
113
+ }
114
+ }
115
+ setMessage(msg) {
116
+ this.transaction.message = msg;
117
+ return this;
118
+ }
119
+ setWithdrawMessage() {
120
+ const queryId = '0000000000000000';
121
+ this.transaction.message = WITHDRAW_OPCODE + queryId + this.transaction.withdrawAmount;
122
+ return this;
123
+ }
124
+ sequenceNumber(number) {
125
+ this.transaction.seqno = number;
126
+ return this;
127
+ }
128
+ expireTime(number) {
129
+ this.transaction.expireTime = number;
130
+ return this;
131
+ }
132
+ publicKey(key) {
133
+ this.transaction.publicKey = key;
134
+ return this;
135
+ }
136
+ isV3ContractMessage(bool) {
137
+ this.transaction.isV3ContractMessage = bool;
138
+ return this;
139
+ }
140
+ subWalletId(id) {
141
+ this.transaction.sub_wallet_id = id;
142
+ return this;
143
+ }
144
+ }
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBR0wsc0JBQXNCLEVBQ3RCLHFCQUFxQixHQUt0QixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUU1QixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDO0FBRTFDLE1BQU0sT0FBZ0Isa0JBQW1CLFNBQVEsc0JBQXNCO0lBSXJFLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBSFosZ0JBQVcsR0FBZ0IsRUFBRSxDQUFDO0lBSXRDLENBQUM7SUFRRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxhQUFxQjtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLE1B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ZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBGZWVPcHRpb25zLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgV0lUSERSQVdfT1BDT0RFID0gJzAwMDAxMDAwJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlczogU2lnbmF0dXJlW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgLy8gZ2V0IGFuZCBzZXQgcmVnaW9uXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZVswXSA9IHNpZ25hdHVyZS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VuZGVyIG9mIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqIFRoaXMgYWNjb3VudCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBwYXlpbmcgdHJhbnNhY3Rpb24gZmVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlbmRlckFkZHJlc3MgdGhlIGFjY291bnQgdGhhdCBpcyBzZW5kaW5nIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kZXIoc2VuZGVyQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZW5kZXIgPSBzZW5kZXJBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYW5zYWN0aW9uIHRvIGJlIGJvdW5jZWFibGUgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm91bmNlYWJsZSB3aGV0aGVyIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgYm91bmNlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGJvdW5jZWFibGUoYm91bmNlYWJsZTogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uYm91bmNlYWJsZSA9IGJvdW5jZWFibGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZnJvbUFkZHJlc3MgdG8gYmUgaW4gYm91bmNlYWJsZSBmb3JtYXQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm91bmNlYWJsZSB3aGV0aGVyIHRoZSBhZGRyZXNzIGZvcm1hdCBpcyBib3VuY2VhYmxlXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZnJvbUFkZHJlc3NCb3VuY2VhYmxlKGJvdW5jZWFibGU6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmZyb21BZGRyZXNzQm91bmNlYWJsZSA9IGJvdW5jZWFibGU7XG4gICAgdGhpcy5zZW5kZXIobmV3IFRvbldlYi5BZGRyZXNzKHRoaXMudHJhbnNhY3Rpb24uc2VuZGVyKS50b1N0cmluZyh0cnVlLCB0cnVlLCBib3VuY2VhYmxlKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9BZGRyZXNzIHRvIGJlIGluIGJvdW5jZWFibGUgZm9ybWF0IG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvdW5jZWFibGUgd2hldGhlciB0aGUgYWRkcmVzcyBmb3JtYXQgaXMgYm91bmNlYWJsZVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHRvQWRkcmVzc0JvdW5jZWFibGUoYm91bmNlYWJsZTogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udG9BZGRyZXNzQm91bmNlYWJsZSA9IGJvdW5jZWFibGU7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQuYWRkcmVzcyA9IG5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudC5hZGRyZXNzKS50b1N0cmluZyhcbiAgICAgIHRydWUsXG4gICAgICB0cnVlLFxuICAgICAgYm91bmNlYWJsZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmZWUoZmVlT3B0aW9uczogRmVlT3B0aW9ucyk6IHRoaXMge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gdGhpcy50cmFuc2FjdGlvblR5cGU7XG4gICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5idWlsZCgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0b3JzXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zYWN0aW9uIG5vdCBkZWZpbmVkJyk7XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHRyYW5zYWN0aW9uLnJlY2lwaWVudCk7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodHJhbnNhY3Rpb24ucmVjaXBpZW50LmFtb3VudCkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cblxuICBzZXRNZXNzYWdlKG1zZzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLm1lc3NhZ2UgPSBtc2c7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRXaXRoZHJhd01lc3NhZ2UoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBjb25zdCBxdWVyeUlkID0gJzAwMDAwMDAwMDAwMDAwMDAnO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubWVzc2FnZSA9IFdJVEhEUkFXX09QQ09ERSArIHF1ZXJ5SWQgKyB0aGlzLnRyYW5zYWN0aW9uLndpdGhkcmF3QW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VxdWVuY2VOdW1iZXIobnVtYmVyOiBudW1iZXIpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2Vxbm8gPSBudW1iZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBleHBpcmVUaW1lKG51bWJlcjogbnVtYmVyKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmV4cGlyZVRpbWUgPSBudW1iZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHVibGljS2V5ID0ga2V5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaXNWM0NvbnRyYWN0TWVzc2FnZShib29sOiBib29sZWFuKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmlzVjNDb250cmFjdE1lc3NhZ2UgPSBib29sO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHN1YldhbGxldElkKGlkOiBudW1iZXIpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc3ViX3dhbGxldF9pZCA9IGlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { BaseTransactionBuilderFactory } from '@bitgo/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/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,96 @@
1
+ import { BaseTransactionBuilderFactory, InvalidTransactionError, TransactionType } from '@bitgo/sdk-core';
2
+ import { TransferBuilder } from './transferBuilder';
3
+ import { SingleNominatorWithdrawBuilder } from './singleNominatorWithdrawBuilder';
4
+ import { Transaction } from './transaction';
5
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
6
+ import { TokenTransaction } from './tokenTransaction';
7
+ import { TonWhalesDepositBuilder } from './tonWhalesDepositBuilder';
8
+ import { TonWhalesWithdrawalBuilder } from './tonWhalesWithdrawalBuilder';
9
+ import { TonWhalesVestingDepositBuilder } from './tonWhalesVestingDepositBuilder';
10
+ import { TonWhalesVestingWithdrawBuilder } from './tonWhalesVestingWithdrawBuilder';
11
+ export class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ }
15
+ /** @inheritdoc */
16
+ from(raw) {
17
+ let builder;
18
+ try {
19
+ const checkTx = new Transaction(this._coinConfig);
20
+ checkTx.fromRawTransaction(raw);
21
+ let tx;
22
+ if (checkTx.type === TransactionType.SendToken) {
23
+ // It's a token transaction, so use TokenTransaction for proper parsing
24
+ tx = new TokenTransaction(this._coinConfig);
25
+ tx.fromRawTransaction(raw);
26
+ }
27
+ else {
28
+ // It's a regular transaction, use the already parsed one
29
+ tx = checkTx;
30
+ }
31
+ switch (tx.type) {
32
+ case TransactionType.Send:
33
+ builder = this.getTransferBuilder();
34
+ break;
35
+ case TransactionType.SingleNominatorWithdraw:
36
+ builder = this.getSingleNominatorWithdrawBuilder();
37
+ break;
38
+ case TransactionType.SendToken:
39
+ builder = this.getTokenTransferBuilder();
40
+ break;
41
+ case TransactionType.TonWhalesDeposit:
42
+ builder = this.getTonWhalesDepositBuilder();
43
+ break;
44
+ case TransactionType.TonWhalesWithdrawal:
45
+ builder = this.getTonWhalesWithdrawalBuilder();
46
+ break;
47
+ case TransactionType.TonWhalesVestingDeposit:
48
+ builder = this.getTonWhalesVestingDepositBuilder();
49
+ break;
50
+ case TransactionType.TonWhalesVestingWithdrawal:
51
+ builder = this.getTonWhalesVestingWithdrawBuilder();
52
+ break;
53
+ default:
54
+ throw new InvalidTransactionError('unsupported transaction');
55
+ }
56
+ builder.from(raw);
57
+ return builder;
58
+ }
59
+ catch (e) {
60
+ throw e;
61
+ }
62
+ }
63
+ /** @inheritdoc */
64
+ getTransferBuilder() {
65
+ return new TransferBuilder(this._coinConfig);
66
+ }
67
+ /**
68
+ * Returns a specific builder to create a TON withdraw transaction
69
+ */
70
+ getSingleNominatorWithdrawBuilder() {
71
+ return new SingleNominatorWithdrawBuilder(this._coinConfig);
72
+ }
73
+ /**
74
+ * Returns a specific builder to create a TON token transfer transaction
75
+ */
76
+ getTokenTransferBuilder() {
77
+ return new TokenTransferBuilder(this._coinConfig);
78
+ }
79
+ /** @inheritdoc */
80
+ getWalletInitializationBuilder() {
81
+ throw new Error('Method not implemented.');
82
+ }
83
+ getTonWhalesDepositBuilder() {
84
+ return new TonWhalesDepositBuilder(this._coinConfig);
85
+ }
86
+ getTonWhalesWithdrawalBuilder() {
87
+ return new TonWhalesWithdrawalBuilder(this._coinConfig);
88
+ }
89
+ getTonWhalesVestingDepositBuilder() {
90
+ return new TonWhalesVestingDepositBuilder(this._coinConfig);
91
+ }
92
+ getTonWhalesVestingWithdrawBuilder() {
93
+ return new TonWhalesVestingWithdrawBuilder(this._coinConfig);
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDZCQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsSUFBSSxPQUEyQixDQUFDO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFaEMsSUFBSSxFQUFlLENBQUM7WUFDcEIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDL0MsdUVBQXVFO2dCQUN2RSxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04seURBQXlEO2dCQUN6RCxFQUFFLEdBQUcsT0FBTyxDQUFDO1lBQ2YsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLGVBQWUsQ0FBQyxJQUFJO29CQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSyxlQUFlLENBQUMsdUJBQXVCO29CQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1IsS0FBSyxlQUFlLENBQUMsU0FBUztvQkFDNUIsT0FBTyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUN6QyxNQUFNO2dCQUNSLEtBQUssZUFBZSxDQUFDLGdCQUFnQjtvQkFDbkMsT0FBTyxHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO29CQUM1QyxNQUFNO2dCQUNSLEtBQUssZUFBZSxDQUFDLG1CQUFtQjtvQkFDdEMsT0FBTyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO29CQUMvQyxNQUFNO2dCQUNSLEtBQUssZUFBZSxDQUFDLHVCQUF1QjtvQkFDMUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO29CQUNuRCxNQUFNO2dCQUNSLEtBQUssZUFBZSxDQUFDLDBCQUEwQjtvQkFDN0MsT0FBTyxHQUFHLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO29CQUNwRCxNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUNBQWlDO1FBQy9CLE9BQU8sSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGlDQUFpQztRQUMvQixPQUFPLElBQUksOEJBQThCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxrQ0FBa0M7UUFDaEMsT0FBTyxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyIH0gZnJvbSAnLi9zaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyIH0gZnJvbSAnLi90b25XaGFsZXNEZXBvc2l0QnVpbGRlcic7XG5pbXBvcnQgeyBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB9IGZyb20gJy4vdG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXInO1xuaW1wb3J0IHsgVG9uV2hhbGVzVmVzdGluZ0RlcG9zaXRCdWlsZGVyIH0gZnJvbSAnLi90b25XaGFsZXNWZXN0aW5nRGVwb3NpdEJ1aWxkZXInO1xuaW1wb3J0IHsgVG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlciB9IGZyb20gJy4vdG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIGxldCBidWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNoZWNrVHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICBjaGVja1R4LmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuXG4gICAgICBsZXQgdHg6IFRyYW5zYWN0aW9uO1xuICAgICAgaWYgKGNoZWNrVHgudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbikge1xuICAgICAgICAvLyBJdCdzIGEgdG9rZW4gdHJhbnNhY3Rpb24sIHNvIHVzZSBUb2tlblRyYW5zYWN0aW9uIGZvciBwcm9wZXIgcGFyc2luZ1xuICAgICAgICB0eCA9IG5ldyBUb2tlblRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEl0J3MgYSByZWd1bGFyIHRyYW5zYWN0aW9uLCB1c2UgdGhlIGFscmVhZHkgcGFyc2VkIG9uZVxuICAgICAgICB0eCA9IGNoZWNrVHg7XG4gICAgICB9XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgICBidWlsZGVyID0gdGhpcy5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlTm9taW5hdG9yV2l0aGRyYXc6XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0U2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjpcbiAgICAgICAgICBidWlsZGVyID0gdGhpcy5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Ub25XaGFsZXNEZXBvc2l0OlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRvbldoYWxlc1dpdGhkcmF3YWw6XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0VG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzVmVzdGluZ0RlcG9zaXQ6XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0VG9uV2hhbGVzVmVzdGluZ0RlcG9zaXRCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd2FsOlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgICBidWlsZGVyLmZyb20ocmF3KTtcbiAgICAgIHJldHVybiBidWlsZGVyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcigpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBidWlsZGVyIHRvIGNyZWF0ZSBhIFRPTiB3aXRoZHJhdyB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0U2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyKCk6IFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNwZWNpZmljIGJ1aWxkZXIgdG8gY3JlYXRlIGEgVE9OIHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcigpOiBUb2tlblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUb2tlblRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgZ2V0VG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIoKTogVG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICBnZXRUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlcigpOiBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldFRvbldoYWxlc1Zlc3RpbmdEZXBvc2l0QnVpbGRlcigpOiBUb25XaGFsZXNWZXN0aW5nRGVwb3NpdEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9uV2hhbGVzVmVzdGluZ0RlcG9zaXRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VG9uV2hhbGVzVmVzdGluZ1dpdGhkcmF3QnVpbGRlcigpOiBUb25XaGFsZXNWZXN0aW5nV2l0aGRyYXdCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRvbldoYWxlc1Zlc3RpbmdXaXRoZHJhd0J1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { ITransactionRecipient } from '@bitgo/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
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25FeHBsYW5hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25FeHBsYW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlID0gYW55LCBUQW1vdW50ID0gYW55PiB7XG4gIGRpc3BsYXlPcmRlcjogc3RyaW5nW107XG4gIGlkOiBzdHJpbmc7XG4gIG91dHB1dHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICBvdXRwdXRBbW91bnQ6IFRBbW91bnQ7XG4gIGNoYW5nZU91dHB1dHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICBjaGFuZ2VBbW91bnQ6IFRBbW91bnQ7XG4gIGZlZTogVEZlZTtcbiAgcHJveHk/OiBzdHJpbmc7XG4gIHByb2R1Y2Vycz86IHN0cmluZ1tdO1xuICB3aXRoZHJhd0Ftb3VudD86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { Recipient, TransactionType } from '@bitgo/sdk-core';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ export declare class TransferBuilder extends TransactionBuilder {
5
+ constructor(_coinConfig: Readonly<CoinConfig>);
6
+ protected get transactionType(): TransactionType;
7
+ send(recipient: Recipient): TransferBuilder;
8
+ }
9
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1,17 @@
1
+ import { TransactionType } from '@bitgo/sdk-core';
2
+ import { TransactionBuilder } from './transactionBuilder';
3
+ import { Transaction } from './transaction';
4
+ export class TransferBuilder extends TransactionBuilder {
5
+ constructor(_coinConfig) {
6
+ super(_coinConfig);
7
+ this._transaction = new Transaction(_coinConfig);
8
+ }
9
+ get transactionType() {
10
+ return TransactionType.Send;
11
+ }
12
+ send(recipient) {
13
+ this.transaction.recipient = recipient;
14
+ return this;
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsa0JBQWtCO0lBQ3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksQ0FBQyxTQUFvQjtRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50ID0gcmVjaXBpZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { BaseUtils } from '@bitgo/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,151 @@
1
+ import TonWeb from 'tonweb';
2
+ import { BN } from 'bn.js';
3
+ import { isValidEd25519PublicKey } from '@bitgo/sdk-core';
4
+ import { VESTING_CONTRACT_CODE_B64 } from './constants';
5
+ export class Utils {
6
+ /** @inheritdoc */
7
+ isValidAddress(address) {
8
+ try {
9
+ if (address.length != 48) {
10
+ return false;
11
+ }
12
+ Buffer.from(address, 'base64');
13
+ return true;
14
+ }
15
+ catch (e) {
16
+ return false;
17
+ }
18
+ }
19
+ /** @inheritdoc */
20
+ isValidBlockId(hash) {
21
+ try {
22
+ return Buffer.from(hash, 'base64').length === 32;
23
+ }
24
+ catch (e) {
25
+ return false;
26
+ }
27
+ }
28
+ /** @inheritdoc */
29
+ isValidPrivateKey(key) {
30
+ throw new Error('Method not implemented.');
31
+ }
32
+ /** @inheritdoc */
33
+ isValidPublicKey(key) {
34
+ return isValidEd25519PublicKey(key);
35
+ }
36
+ /** @inheritdoc */
37
+ isValidSignature(signature) {
38
+ throw new Error('Method not implemented.');
39
+ }
40
+ /** @inheritdoc */
41
+ isValidTransactionId(txId) {
42
+ try {
43
+ return Buffer.from(txId, 'base64').length === 32;
44
+ }
45
+ catch (e) {
46
+ return false;
47
+ }
48
+ }
49
+ async getAddressFromPublicKey(publicKey, bounceable = true, isUserFriendly = true) {
50
+ const tonweb = new TonWeb(new TonWeb.HttpProvider(''));
51
+ const WalletClass = tonweb.wallet.all['v4R2'];
52
+ const wallet = new WalletClass(tonweb.provider, {
53
+ publicKey: TonWeb.utils.hexToBytes(publicKey),
54
+ wc: 0,
55
+ });
56
+ const address = await wallet.getAddress();
57
+ const legacyAddress = address.toString(isUserFriendly, true, bounceable);
58
+ return legacyAddress;
59
+ }
60
+ getAddress(address, bounceable = true) {
61
+ if (bounceable) {
62
+ return new TonWeb.Address(address).isBounceable
63
+ ? address
64
+ : new TonWeb.Address(address).toString(true, true, bounceable);
65
+ }
66
+ else {
67
+ return new TonWeb.Address(address).isBounceable
68
+ ? new TonWeb.Address(address).toString(true, true, bounceable)
69
+ : address;
70
+ }
71
+ }
72
+ async getMessageHashFromData(data) {
73
+ const cell = TonWeb.boc.Cell.oneFromBoc(TonWeb.utils.base64ToBytes(data));
74
+ // this is need to be confirmed by ton team
75
+ const message = cell.refs[0].refs[0];
76
+ const hash = TonWeb.utils.bytesToBase64(await message.hash());
77
+ return hash.toString();
78
+ }
79
+ getRawWalletAddressFromCell(data) {
80
+ const cell = TonWeb.boc.Cell.oneFromBoc(TonWeb.utils.base64ToBytes(data));
81
+ const slice = cell.beginParse();
82
+ const address = slice.loadAddress();
83
+ return address.toString();
84
+ }
85
+ async getVestingContractAddress(params) {
86
+ const cell = new TonWeb.boc.Cell();
87
+ cell.bits.writeUint(0, 32); //seq no
88
+ cell.bits.writeUint(params.subWalletId, 32);
89
+ cell.bits.writeBytes(TonWeb.utils.hexToBytes(params.publicKeyHex));
90
+ cell.bits.writeUint(0, 1); // empty whitelist
91
+ const vestingParamsCell = new TonWeb.boc.Cell();
92
+ vestingParamsCell.bits.writeUint(params.vestingStartTime, 64);
93
+ vestingParamsCell.bits.writeUint(params.vestingTotalDuration, 32);
94
+ vestingParamsCell.bits.writeUint(params.unlockPeriod, 32);
95
+ vestingParamsCell.bits.writeUint(params.cliffDuration, 32);
96
+ vestingParamsCell.bits.writeCoins(new BN(params.vestingTotalAmount.toString()));
97
+ const senderAddress = new TonWeb.Address(params.vestingSenderAddress);
98
+ vestingParamsCell.bits.writeAddress(senderAddress);
99
+ const ownerAddress = new TonWeb.Address(params.ownerAddress);
100
+ vestingParamsCell.bits.writeAddress(ownerAddress);
101
+ cell.refs.push(vestingParamsCell);
102
+ const contractCodeCell = TonWeb.boc.Cell.oneFromBoc(TonWeb.utils.base64ToBytes(VESTING_CONTRACT_CODE_B64));
103
+ const stateInit = TonWeb.Contract.createStateInit(contractCodeCell, cell);
104
+ const stateInitHash = await stateInit.hash();
105
+ const contractAddress = new TonWeb.Address('0:' + TonWeb.utils.bytesToHex(stateInitHash));
106
+ return contractAddress.toString(true, true, true);
107
+ }
108
+ /**
109
+ * Converts a TON address into a Base64 encoded BOC (Bag of Cells) string.
110
+ * This is required when passing an address as a 'slice' argument to `runGetMethod`.
111
+ * @param address - The TON address (friendly or raw)
112
+ * @returns Base64 string of the serialized address cell
113
+ */
114
+ async getAddressBoc(address) {
115
+ const cell = new TonWeb.boc.Cell();
116
+ cell.bits.writeAddress(new TonWeb.Address(address));
117
+ const boc = await cell.toBoc(false);
118
+ return TonWeb.utils.bytesToBase64(boc);
119
+ }
120
+ }
121
+ const DUMMY_PRIVATE_KEY = '43e8594854cb53947c4a1a2fab926af11e123f6251dcd5bd0dfb100604186430'; // This dummy private key is used only for fee estimation
122
+ /**
123
+ * Function to estimate the fee for a transaction.
124
+ * This function uses the dummy private key exclusively for fee estimation.
125
+ * @param wallet - The wallet instance.
126
+ * @param toAddress - The destination address.
127
+ * @param amount - The amount to transfer.
128
+ * @param seqno - The sequence number for the transaction.
129
+ * @returns The estimated fee for the transaction.
130
+ */
131
+ export async function getFeeEstimate(wallet, toAddress, amount, seqno) {
132
+ try {
133
+ const secretKey = TonWeb.utils.stringToBytes(DUMMY_PRIVATE_KEY);
134
+ const feeEstimate = await wallet.methods
135
+ .transfer({
136
+ secretKey,
137
+ toAddress,
138
+ amount,
139
+ seqno,
140
+ sendMode: 1,
141
+ })
142
+ .estimateFee();
143
+ return feeEstimate;
144
+ }
145
+ catch (error) {
146
+ throw new Error(`Failed to estimate fee: ${error.message}`);
147
+ }
148
+ }
149
+ const utils = new Utils();
150
+ export default utils;
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzNCLE9BQU8sRUFBYSx1QkFBdUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4RCxNQUFNLE9BQU8sS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUN6QixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixjQUFjLENBQUMsSUFBWTtRQUN6QixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsU0FBaUI7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsb0JBQW9CLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFNBQWlCLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUN2RixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1lBQzlDLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7WUFDN0MsRUFBRSxFQUFFLENBQUM7U0FDTixDQUFDLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekUsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlLEVBQUUsVUFBVSxHQUFHLElBQUk7UUFDM0MsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVk7Z0JBQzdDLENBQUMsQ0FBQyxPQUFPO2dCQUNULENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZO2dCQUM3QyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQVk7UUFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUUsMkNBQTJDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELDJCQUEyQixDQUFDLElBQVk7UUFDdEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQUksSUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLHlCQUF5QixDQUFDLE1BQTZCO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1FBQzdDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hELGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN0RSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztRQUMzRyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRSxNQUFNLGFBQWEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDMUYsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFlO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLGlCQUFpQixHQUFHLGtFQUFrRSxDQUFDLENBQUMseURBQXlEO0FBRXZKOzs7Ozs7OztHQVFHO0FBRUgsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQUMsTUFBVyxFQUFFLFNBQWlCLEVBQUUsTUFBYyxFQUFFLEtBQWE7SUFDaEcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPO2FBQ3JDLFFBQVEsQ0FBQztZQUNSLFNBQVM7WUFDVCxTQUFTO1lBQ1QsTUFBTTtZQUNOLEtBQUs7WUFDTCxRQUFRLEVBQUUsQ0FBQztTQUNaLENBQUM7YUFDRCxXQUFXLEVBQUUsQ0FBQztRQUNqQixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixlQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBUb25XZWIgZnJvbSAndG9ud2ViJztcbmltcG9ydCB7IEJOIH0gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBWRVNUSU5HX0NPTlRSQUNUX0NPREVfQjY0IH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVmVzdGluZ0NvbnRyYWN0UGFyYW1zIH0gZnJvbSAnLi9pZmFjZSc7XG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhZGRyZXNzLmxlbmd0aCAhPSA0OCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBCdWZmZXIuZnJvbShhZGRyZXNzLCAnYmFzZTY0Jyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oaGFzaCwgJ2Jhc2U2NCcpLmxlbmd0aCA9PT0gMzI7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHR4SWQsICdiYXNlNjQnKS5sZW5ndGggPT09IDMyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXk6IHN0cmluZywgYm91bmNlYWJsZSA9IHRydWUsIGlzVXNlckZyaWVuZGx5ID0gdHJ1ZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgdG9ud2ViID0gbmV3IFRvbldlYihuZXcgVG9uV2ViLkh0dHBQcm92aWRlcignJykpO1xuICAgIGNvbnN0IFdhbGxldENsYXNzID0gdG9ud2ViLndhbGxldC5hbGxbJ3Y0UjInXTtcbiAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0Q2xhc3ModG9ud2ViLnByb3ZpZGVyLCB7XG4gICAgICBwdWJsaWNLZXk6IFRvbldlYi51dGlscy5oZXhUb0J5dGVzKHB1YmxpY0tleSksXG4gICAgICB3YzogMCxcbiAgICB9KTtcbiAgICBjb25zdCBhZGRyZXNzID0gYXdhaXQgd2FsbGV0LmdldEFkZHJlc3MoKTtcbiAgICBjb25zdCBsZWdhY3lBZGRyZXNzID0gYWRkcmVzcy50b1N0cmluZyhpc1VzZXJGcmllbmRseSwgdHJ1ZSwgYm91bmNlYWJsZSk7XG4gICAgcmV0dXJuIGxlZ2FjeUFkZHJlc3M7XG4gIH1cblxuICBnZXRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgYm91bmNlYWJsZSA9IHRydWUpOiBzdHJpbmcge1xuICAgIGlmIChib3VuY2VhYmxlKSB7XG4gICAgICByZXR1cm4gbmV3IFRvbldlYi5BZGRyZXNzKGFkZHJlc3MpLmlzQm91bmNlYWJsZVxuICAgICAgICA/IGFkZHJlc3NcbiAgICAgICAgOiBuZXcgVG9uV2ViLkFkZHJlc3MoYWRkcmVzcykudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgYm91bmNlYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgVG9uV2ViLkFkZHJlc3MoYWRkcmVzcykuaXNCb3VuY2VhYmxlXG4gICAgICAgID8gbmV3IFRvbldlYi5BZGRyZXNzKGFkZHJlc3MpLnRvU3RyaW5nKHRydWUsIHRydWUsIGJvdW5jZWFibGUpXG4gICAgICAgIDogYWRkcmVzcztcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRNZXNzYWdlSGFzaEZyb21EYXRhKGRhdGE6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY2VsbCA9IFRvbldlYi5ib2MuQ2VsbC5vbmVGcm9tQm9jKFRvbldlYi51dGlscy5iYXNlNjRUb0J5dGVzKGRhdGEpKTtcbiAgICAvLyB0aGlzIGlzIG5lZWQgdG8gYmUgY29uZmlybWVkIGJ5IHRvbiB0ZWFtXG4gICAgY29uc3QgbWVzc2FnZSA9IGNlbGwucmVmc1swXS5yZWZzWzBdO1xuICAgIGNvbnN0IGhhc2ggPSBUb25XZWIudXRpbHMuYnl0ZXNUb0Jhc2U2NChhd2FpdCBtZXNzYWdlLmhhc2goKSk7XG4gICAgcmV0dXJuIGhhc2gudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldFJhd1dhbGxldEFkZHJlc3NGcm9tQ2VsbChkYXRhOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNlbGwgPSBUb25XZWIuYm9jLkNlbGwub25lRnJvbUJvYyhUb25XZWIudXRpbHMuYmFzZTY0VG9CeXRlcyhkYXRhKSk7XG4gICAgY29uc3Qgc2xpY2UgPSAoY2VsbCBhcyBhbnkpLmJlZ2luUGFyc2UoKTtcbiAgICBjb25zdCBhZGRyZXNzID0gc2xpY2UubG9hZEFkZHJlc3MoKTtcbiAgICByZXR1cm4gYWRkcmVzcy50b1N0cmluZygpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VmVzdGluZ0NvbnRyYWN0QWRkcmVzcyhwYXJhbXM6IFZlc3RpbmdDb250cmFjdFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgY2VsbCA9IG5ldyBUb25XZWIuYm9jLkNlbGwoKTtcbiAgICBjZWxsLmJpdHMud3JpdGVVaW50KDAsIDMyKTsgLy9zZXEgbm9cbiAgICBjZWxsLmJpdHMud3JpdGVVaW50KHBhcmFtcy5zdWJXYWxsZXRJZCwgMzIpO1xuICAgIGNlbGwuYml0cy53cml0ZUJ5dGVzKFRvbldlYi51dGlscy5oZXhUb0J5dGVzKHBhcmFtcy5wdWJsaWNLZXlIZXgpKTtcbiAgICBjZWxsLmJpdHMud3JpdGVVaW50KDAsIDEpOyAvLyBlbXB0eSB3aGl0ZWxpc3RcbiAgICBjb25zdCB2ZXN0aW5nUGFyYW1zQ2VsbCA9IG5ldyBUb25XZWIuYm9jLkNlbGwoKTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlVWludChwYXJhbXMudmVzdGluZ1N0YXJ0VGltZSwgNjQpO1xuICAgIHZlc3RpbmdQYXJhbXNDZWxsLmJpdHMud3JpdGVVaW50KHBhcmFtcy52ZXN0aW5nVG90YWxEdXJhdGlvbiwgMzIpO1xuICAgIHZlc3RpbmdQYXJhbXNDZWxsLmJpdHMud3JpdGVVaW50KHBhcmFtcy51bmxvY2tQZXJpb2QsIDMyKTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlVWludChwYXJhbXMuY2xpZmZEdXJhdGlvbiwgMzIpO1xuICAgIHZlc3RpbmdQYXJhbXNDZWxsLmJpdHMud3JpdGVDb2lucyhuZXcgQk4ocGFyYW1zLnZlc3RpbmdUb3RhbEFtb3VudC50b1N0cmluZygpKSk7XG4gICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IG5ldyBUb25XZWIuQWRkcmVzcyhwYXJhbXMudmVzdGluZ1NlbmRlckFkZHJlc3MpO1xuICAgIHZlc3RpbmdQYXJhbXNDZWxsLmJpdHMud3JpdGVBZGRyZXNzKHNlbmRlckFkZHJlc3MpO1xuICAgIGNvbnN0IG93bmVyQWRkcmVzcyA9IG5ldyBUb25XZWIuQWRkcmVzcyhwYXJhbXMub3duZXJBZGRyZXNzKTtcbiAgICB2ZXN0aW5nUGFyYW1zQ2VsbC5iaXRzLndyaXRlQWRkcmVzcyhvd25lckFkZHJlc3MpO1xuICAgIGNlbGwucmVmcy5wdXNoKHZlc3RpbmdQYXJhbXNDZWxsKTtcbiAgICBjb25zdCBjb250cmFjdENvZGVDZWxsID0gVG9uV2ViLmJvYy5DZWxsLm9uZUZyb21Cb2MoVG9uV2ViLnV0aWxzLmJhc2U2NFRvQnl0ZXMoVkVTVElOR19DT05UUkFDVF9DT0RFX0I2NCkpO1xuICAgIGNvbnN0IHN0YXRlSW5pdCA9IFRvbldlYi5Db250cmFjdC5jcmVhdGVTdGF0ZUluaXQoY29udHJhY3RDb2RlQ2VsbCwgY2VsbCk7XG4gICAgY29uc3Qgc3RhdGVJbml0SGFzaCA9IGF3YWl0IHN0YXRlSW5pdC5oYXNoKCk7XG4gICAgY29uc3QgY29udHJhY3RBZGRyZXNzID0gbmV3IFRvbldlYi5BZGRyZXNzKCcwOicgKyBUb25XZWIudXRpbHMuYnl0ZXNUb0hleChzdGF0ZUluaXRIYXNoKSk7XG4gICAgcmV0dXJuIGNvbnRyYWN0QWRkcmVzcy50b1N0cmluZyh0cnVlLCB0cnVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFRPTiBhZGRyZXNzIGludG8gYSBCYXNlNjQgZW5jb2RlZCBCT0MgKEJhZyBvZiBDZWxscykgc3RyaW5nLlxuICAgKiBUaGlzIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiBhZGRyZXNzIGFzIGEgJ3NsaWNlJyBhcmd1bWVudCB0byBgcnVuR2V0TWV0aG9kYC5cbiAgICogQHBhcmFtIGFkZHJlc3MgLSBUaGUgVE9OIGFkZHJlc3MgKGZyaWVuZGx5IG9yIHJhdylcbiAgICogQHJldHVybnMgQmFzZTY0IHN0cmluZyBvZiB0aGUgc2VyaWFsaXplZCBhZGRyZXNzIGNlbGxcbiAgICovXG4gIGFzeW5jIGdldEFkZHJlc3NCb2MoYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBjZWxsID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuICAgIGNlbGwuYml0cy53cml0ZUFkZHJlc3MobmV3IFRvbldlYi5BZGRyZXNzKGFkZHJlc3MpKTtcbiAgICBjb25zdCBib2MgPSBhd2FpdCBjZWxsLnRvQm9jKGZhbHNlKTtcbiAgICByZXR1cm4gVG9uV2ViLnV0aWxzLmJ5dGVzVG9CYXNlNjQoYm9jKTtcbiAgfVxufVxuXG5jb25zdCBEVU1NWV9QUklWQVRFX0tFWSA9ICc0M2U4NTk0ODU0Y2I1Mzk0N2M0YTFhMmZhYjkyNmFmMTFlMTIzZjYyNTFkY2Q1YmQwZGZiMTAwNjA0MTg2NDMwJzsgLy8gVGhpcyBkdW1teSBwcml2YXRlIGtleSBpcyB1c2VkIG9ubHkgZm9yIGZlZSBlc3RpbWF0aW9uXG5cbi8qKlxuICogRnVuY3Rpb24gdG8gZXN0aW1hdGUgdGhlIGZlZSBmb3IgYSB0cmFuc2FjdGlvbi5cbiAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgZHVtbXkgcHJpdmF0ZSBrZXkgZXhjbHVzaXZlbHkgZm9yIGZlZSBlc3RpbWF0aW9uLlxuICogQHBhcmFtIHdhbGxldCAtIFRoZSB3YWxsZXQgaW5zdGFuY2UuXG4gKiBAcGFyYW0gdG9BZGRyZXNzIC0gVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGFtb3VudCB0byB0cmFuc2Zlci5cbiAqIEBwYXJhbSBzZXFubyAtIFRoZSBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSB0cmFuc2FjdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBlc3RpbWF0ZWQgZmVlIGZvciB0aGUgdHJhbnNhY3Rpb24uXG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZlZUVzdGltYXRlKHdhbGxldDogYW55LCB0b0FkZHJlc3M6IHN0cmluZywgYW1vdW50OiBzdHJpbmcsIHNlcW5vOiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNlY3JldEtleSA9IFRvbldlYi51dGlscy5zdHJpbmdUb0J5dGVzKERVTU1ZX1BSSVZBVEVfS0VZKTtcbiAgICBjb25zdCBmZWVFc3RpbWF0ZSA9IGF3YWl0IHdhbGxldC5tZXRob2RzXG4gICAgICAudHJhbnNmZXIoe1xuICAgICAgICBzZWNyZXRLZXksXG4gICAgICAgIHRvQWRkcmVzcyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBzZXFubyxcbiAgICAgICAgc2VuZE1vZGU6IDEsXG4gICAgICB9KVxuICAgICAgLmVzdGltYXRlRmVlKCk7XG4gICAgcmV0dXJuIGZlZUVzdGltYXRlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGVzdGltYXRlIGZlZTogJHtlcnJvci5tZXNzYWdlfWApO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
@@ -0,0 +1,3 @@
1
+ import { BitGoBase } from '@bitgo/sdk-core';
2
+ export declare const register: (sdk: BitGoBase) => void;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1,11 @@
1
+ import { Ton } from './ton';
2
+ import { Tton } from './tton';
3
+ import { JettonToken } from './jettonToken';
4
+ export const register = (sdk) => {
5
+ sdk.register('ton', Ton.createInstance);
6
+ sdk.register('tton', Tton.createInstance);
7
+ JettonToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
8
+ sdk.register(name, coinConstructor);
9
+ });
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYyxFQUFRLEVBQUU7SUFDL0MsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQzFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRvbiB9IGZyb20gJy4vdG9uJztcbmltcG9ydCB7IFR0b24gfSBmcm9tICcuL3R0b24nO1xuaW1wb3J0IHsgSmV0dG9uVG9rZW4gfSBmcm9tICcuL2pldHRvblRva2VuJztcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyID0gKHNkazogQml0R29CYXNlKTogdm9pZCA9PiB7XG4gIHNkay5yZWdpc3RlcigndG9uJywgVG9uLmNyZWF0ZUluc3RhbmNlKTtcbiAgc2RrLnJlZ2lzdGVyKCd0dG9uJywgVHRvbi5jcmVhdGVJbnN0YW5jZSk7XG4gIEpldHRvblRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgIHNkay5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICB9KTtcbn07XG4iXX0=