@bitgo-beta/sdk-coin-polyx 1.0.0-alpha.21 → 1.0.0-alpha.211

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 (225) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/baseBuilder.d.ts +24 -0
  5. package/dist/src/lib/baseBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/baseBuilder.js +31 -0
  7. package/dist/src/lib/batchStakingBuilder.d.ts +79 -0
  8. package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/batchStakingBuilder.js +302 -0
  10. package/dist/src/lib/batchUnstakingBuilder.d.ts +39 -0
  11. package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/batchUnstakingBuilder.js +129 -0
  13. package/dist/src/lib/bondExtraBuilder.d.ts +37 -0
  14. package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/bondExtraBuilder.js +103 -0
  16. package/dist/src/lib/constants.d.ts +21 -0
  17. package/dist/src/lib/constants.d.ts.map +1 -0
  18. package/dist/src/lib/constants.js +24 -0
  19. package/dist/src/lib/hexTokenTransferBuilder.d.ts +24 -0
  20. package/dist/src/lib/hexTokenTransferBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/hexTokenTransferBuilder.js +46 -0
  22. package/dist/src/lib/hexTransferBuilder.d.ts +28 -0
  23. package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/hexTransferBuilder.js +51 -0
  25. package/dist/src/lib/iface.d.ts +249 -0
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +48 -1
  28. package/dist/src/lib/index.d.ts +36 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +82 -5
  31. package/dist/src/lib/nominateBuilder.d.ts +18 -0
  32. package/dist/src/lib/nominateBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/nominateBuilder.js +101 -0
  34. package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
  35. package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/preApproveAssetBuilder.js +77 -0
  37. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +7 -2
  38. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -1
  39. package/dist/src/lib/registerDidWithCDDBuilder.js +22 -3
  40. package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
  41. package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/rejectInstructionBuilder.js +89 -0
  43. package/dist/src/lib/tokenTransferBuilder.d.ts +64 -0
  44. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/tokenTransferBuilder.js +167 -0
  46. package/dist/src/lib/transaction.d.ts +30 -0
  47. package/dist/src/lib/transaction.d.ts.map +1 -0
  48. package/dist/src/lib/transaction.js +211 -0
  49. package/dist/src/lib/transactionBuilderFactory.d.ts +59 -1
  50. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  51. package/dist/src/lib/transactionBuilderFactory.js +288 -8
  52. package/dist/src/lib/transferBuilder.d.ts +4 -2
  53. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  54. package/dist/src/lib/transferBuilder.js +12 -5
  55. package/dist/src/lib/txnSchema.d.ts +67 -0
  56. package/dist/src/lib/txnSchema.d.ts.map +1 -1
  57. package/dist/src/lib/txnSchema.js +231 -2
  58. package/dist/src/lib/unbondBuilder.d.ts +37 -0
  59. package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/unbondBuilder.js +100 -0
  61. package/dist/src/lib/utils.d.ts +40 -0
  62. package/dist/src/lib/utils.d.ts.map +1 -1
  63. package/dist/src/lib/utils.js +94 -1
  64. package/dist/src/lib/v8BatchStakingBuilder.d.ts +85 -0
  65. package/dist/src/lib/v8BatchStakingBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/v8BatchStakingBuilder.js +266 -0
  67. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts +11 -0
  68. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/v8BatchUnstakingBuilder.js +21 -0
  70. package/dist/src/lib/v8BondExtraBuilder.d.ts +11 -0
  71. package/dist/src/lib/v8BondExtraBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/v8BondExtraBuilder.js +21 -0
  73. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +20 -0
  74. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/v8HexTokenTransferBuilder.js +42 -0
  76. package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
  77. package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
  78. package/dist/src/lib/v8HexTransferBuilder.js +21 -0
  79. package/dist/src/lib/v8NominateBuilder.d.ts +11 -0
  80. package/dist/src/lib/v8NominateBuilder.d.ts.map +1 -0
  81. package/dist/src/lib/v8NominateBuilder.js +21 -0
  82. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
  83. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
  84. package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
  85. package/dist/src/lib/v8RegisterDidBuilder.d.ts +47 -0
  86. package/dist/src/lib/v8RegisterDidBuilder.d.ts.map +1 -0
  87. package/dist/src/lib/v8RegisterDidBuilder.js +96 -0
  88. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
  89. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
  91. package/dist/src/lib/v8TokenTransferBuilder.d.ts +24 -0
  92. package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
  93. package/dist/src/lib/v8TokenTransferBuilder.js +101 -0
  94. package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
  95. package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/v8TransferBuilder.js +21 -0
  97. package/dist/src/lib/v8UnbondBuilder.d.ts +11 -0
  98. package/dist/src/lib/v8UnbondBuilder.d.ts.map +1 -0
  99. package/dist/src/lib/v8UnbondBuilder.js +21 -0
  100. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts +11 -0
  101. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts.map +1 -0
  102. package/dist/src/lib/v8WithdrawUnbondedBuilder.js +21 -0
  103. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
  104. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  105. package/dist/src/lib/withdrawUnbondedBuilder.js +91 -0
  106. package/dist/src/polyx.d.ts +51 -9
  107. package/dist/src/polyx.d.ts.map +1 -1
  108. package/dist/src/polyx.js +272 -15
  109. package/dist/src/polyxToken.d.ts +20 -0
  110. package/dist/src/polyxToken.d.ts.map +1 -0
  111. package/dist/src/polyxToken.js +55 -0
  112. package/dist/src/register.d.ts.map +1 -1
  113. package/dist/src/register.js +5 -1
  114. package/dist/src/resources/index.d.ts +2 -0
  115. package/dist/src/resources/index.d.ts.map +1 -1
  116. package/dist/src/resources/index.js +3 -1
  117. package/dist/src/resources/mainnetV8.d.ts +13 -0
  118. package/dist/src/resources/mainnetV8.d.ts.map +1 -0
  119. package/dist/src/resources/mainnetV8.js +24 -0
  120. package/dist/src/resources/testnetV8.d.ts +13 -0
  121. package/dist/src/resources/testnetV8.d.ts.map +1 -0
  122. package/dist/src/resources/testnetV8.js +16 -0
  123. package/dist/src/tpolyx.d.ts +7 -0
  124. package/dist/src/tpolyx.d.ts.map +1 -1
  125. package/dist/src/tpolyx.js +11 -1
  126. package/dist/test/integration/index.d.ts +1 -0
  127. package/dist/test/integration/index.d.ts.map +1 -0
  128. package/dist/test/integration/index.js +1 -0
  129. package/dist/test/resources/index.d.ts +139 -0
  130. package/dist/test/resources/index.d.ts.map +1 -0
  131. package/dist/test/resources/index.js +150 -0
  132. package/dist/test/resources/mainnet.d.ts +2 -0
  133. package/dist/test/resources/mainnet.d.ts.map +1 -0
  134. package/dist/test/resources/mainnet.js +5 -0
  135. package/dist/test/resources/materialData.json +8 -0
  136. package/dist/test/resources/materialDataModified.json +8 -0
  137. package/dist/test/resources/testnet.d.ts +2 -0
  138. package/dist/test/resources/testnet.d.ts.map +1 -0
  139. package/dist/test/resources/testnet.js +5 -0
  140. package/dist/test/resources/wrwUsers.d.ts +19 -0
  141. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  142. package/dist/test/resources/wrwUsers.js +60 -0
  143. package/dist/test/unit/polyx.d.ts +2 -0
  144. package/dist/test/unit/polyx.d.ts.map +1 -0
  145. package/dist/test/unit/polyx.js +356 -0
  146. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  147. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  148. package/dist/test/unit/transactionBuilder/base.js +245 -0
  149. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  150. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  151. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +309 -0
  152. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  153. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  154. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  155. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  156. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  157. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  158. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts +2 -0
  159. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts.map +1 -0
  160. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.js +261 -0
  161. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts +2 -0
  162. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts.map +1 -0
  163. package/dist/test/unit/transactionBuilder/hexTransferBuilder.js +389 -0
  164. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts +2 -0
  165. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts.map +1 -0
  166. package/dist/test/unit/transactionBuilder/nominateBuilder.js +226 -0
  167. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  168. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  169. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  170. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  171. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  172. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  173. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
  174. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
  175. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
  176. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  177. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  178. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  179. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  180. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  181. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  182. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  183. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  184. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +240 -0
  185. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  186. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  187. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  188. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  189. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  190. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  191. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts +2 -0
  192. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts.map +1 -0
  193. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.js +252 -0
  194. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
  195. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
  196. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +90 -0
  197. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
  198. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
  199. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
  200. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
  201. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
  202. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
  203. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts +2 -0
  204. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts.map +1 -0
  205. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.js +87 -0
  206. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
  207. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  208. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
  209. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
  210. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
  211. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +114 -0
  212. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
  213. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
  214. package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +107 -0
  215. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  216. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  217. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  218. package/dist/test/unit/utils.d.ts +2 -0
  219. package/dist/test/unit/utils.d.ts.map +1 -0
  220. package/dist/test/unit/utils.js +143 -0
  221. package/dist/tsconfig.tsbuildinfo +1 -0
  222. package/package.json +15 -9
  223. package/.eslintignore +0 -4
  224. package/.mocharc.yml +0 -8
  225. package/CHANGELOG.md +0 -22
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenTransferBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const baseBuilder_1 = require("./baseBuilder");
6
+ const iface_1 = require("./iface");
7
+ const transaction_1 = require("./transaction");
8
+ const txnSchema_1 = require("./txnSchema");
9
+ const txwrapper_core_1 = require("@substrate/txwrapper-core");
10
+ // [CLEANUP-V8-OLD] v7 settlement.addAndAffirmWithMediators — bare PortfolioId legs/portfolios.
11
+ // Kept for Flipt rollback alongside V8TokenTransferBuilder (AssetHolder-wrapped legs/holderSet).
12
+ class TokenTransferBuilder extends baseBuilder_1.PolyxBaseBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ this._transaction = new transaction_1.Transaction(_coinConfig);
16
+ }
17
+ get transactionType() {
18
+ return sdk_core_1.TransactionType.SendToken;
19
+ }
20
+ buildTransaction() {
21
+ const baseTxInfo = this.createBaseTxInfo();
22
+ return this.addAndAffirmWithMediators({
23
+ venueId: null,
24
+ settlementType: iface_1.SettlementType.SettleOnAffirmation,
25
+ tradeDate: null,
26
+ valueDate: null,
27
+ legs: [
28
+ {
29
+ fungible: {
30
+ sender: {
31
+ did: this._fromDID,
32
+ kind: iface_1.PortfolioKind.Default,
33
+ },
34
+ receiver: {
35
+ did: this._toDID,
36
+ kind: iface_1.PortfolioKind.Default,
37
+ },
38
+ assetId: this._assetId,
39
+ amount: this._amount,
40
+ },
41
+ },
42
+ ],
43
+ portfolios: [
44
+ {
45
+ did: this._fromDID,
46
+ kind: iface_1.PortfolioKind.Default,
47
+ },
48
+ ],
49
+ instructionMemo: this._memo,
50
+ mediators: [],
51
+ }, baseTxInfo);
52
+ }
53
+ /**
54
+ * Sets the amount to transfer.
55
+ *
56
+ * @param {string} amount - The amount to transfer.
57
+ * @returns {this} The current instance of the builder.
58
+ */
59
+ assetId(assetId) {
60
+ this._assetId = assetId;
61
+ return this;
62
+ }
63
+ /**
64
+ * Sets the amount to transfer.
65
+ *
66
+ * @param {string} amount - The amount to transfer.
67
+ * @returns {this} The current instance of the builder.
68
+ */
69
+ amount(amount) {
70
+ this._amount = amount;
71
+ return this;
72
+ }
73
+ /**
74
+ * Sets the memo for the transaction.
75
+ * Pads the memo on the left with zeros to ensure it is 32 characters long.
76
+ *
77
+ * @param {string} memo - The memo for the transaction.
78
+ * @returns {this} The current instance of the builder.
79
+ */
80
+ memo(memo) {
81
+ const paddedMemo = memo.padStart(32, '0');
82
+ this._memo = paddedMemo;
83
+ return this;
84
+ }
85
+ /**
86
+ * Sets the sender DID.
87
+ *
88
+ * @param {string} fromDID - The sender DID.
89
+ * @returns {this} The current instance of the builder.
90
+ */
91
+ fromDID(fromDID) {
92
+ this._fromDID = fromDID;
93
+ return this;
94
+ }
95
+ /**
96
+ * Sets the receiver DID.
97
+ *
98
+ * @param {string} toDID - The receiver DID.
99
+ * @returns {this} The current instance of the builder.
100
+ */
101
+ toDID(toDID) {
102
+ this._toDID = toDID;
103
+ return this;
104
+ }
105
+ /** @inheritdoc */
106
+ fromImplementation(rawTransaction) {
107
+ const tx = super.fromImplementation(rawTransaction);
108
+ if (this._method?.name === iface_1.MethodNames.AddAndAffirmWithMediators) {
109
+ this.populateFromMethodArgs(this._method.args);
110
+ }
111
+ else {
112
+ throw new Error(`Invalid Transaction Type: ${this._method?.name}. Expected AddAndAffirmWithMediators`);
113
+ }
114
+ return tx;
115
+ }
116
+ /**
117
+ * Populates builder state from decoded method args. Extracted as its own method so
118
+ * V8TokenTransferBuilder can override just the AssetHolder-shaped field access while
119
+ * reusing the rest of fromImplementation.
120
+ */
121
+ populateFromMethodArgs(txMethod) {
122
+ this.assetId(txMethod.legs[0].fungible.assetId);
123
+ this.amount(txMethod.legs[0].fungible.amount);
124
+ this.memo(txMethod.instructionMemo);
125
+ this.fromDID(txMethod.legs[0].fungible.sender.did);
126
+ this.toDID(txMethod.legs[0].fungible.receiver.did);
127
+ }
128
+ /** @inheritdoc */
129
+ validateDecodedTransaction(decodedTxn, rawTransaction) {
130
+ if (decodedTxn.method?.name === iface_1.MethodNames.AddAndAffirmWithMediators) {
131
+ const txMethod = decodedTxn.method.args;
132
+ const venueId = txMethod.venueId;
133
+ const settlementType = txMethod.settlementType;
134
+ const tradeDate = txMethod.tradeDate;
135
+ const valueDate = txMethod.valueDate;
136
+ const legs = txMethod.legs;
137
+ const portfolios = txMethod.portfolios;
138
+ const instructionMemo = txMethod.instructionMemo;
139
+ const mediators = txMethod.mediators;
140
+ const validationResult = txnSchema_1.AddAndAffirmWithMediatorsTransactionSchema.validate({
141
+ venueId,
142
+ settlementType,
143
+ tradeDate,
144
+ valueDate,
145
+ legs,
146
+ portfolios,
147
+ instructionMemo,
148
+ mediators,
149
+ });
150
+ if (validationResult.error) {
151
+ throw new Error(`Invalid transaction: ${validationResult.error.message}`);
152
+ }
153
+ }
154
+ }
155
+ addAndAffirmWithMediators(args, info) {
156
+ return (0, txwrapper_core_1.defineMethod)({
157
+ method: {
158
+ args,
159
+ name: 'addAndAffirmWithMediators',
160
+ pallet: 'settlement',
161
+ },
162
+ ...info.baseTxInfo,
163
+ }, info.options);
164
+ }
165
+ }
166
+ exports.TokenTransferBuilder = TokenTransferBuilder;
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUF1RDtBQUV2RCwrQ0FBaUQ7QUFDakQsbUNBQThHO0FBQzlHLCtDQUE0QztBQUU1QywyQ0FBeUU7QUFDekUsOERBQXNIO0FBRXRILCtGQUErRjtBQUMvRixpR0FBaUc7QUFDakcsTUFBYSxvQkFBcUIsU0FBUSw4QkFBdUM7SUFPL0UsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQ25DO1lBQ0UsT0FBTyxFQUFFLElBQUk7WUFDYixjQUFjLEVBQUUsc0JBQWMsQ0FBQyxtQkFBbUI7WUFDbEQsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSTtZQUNmLElBQUksRUFBRTtnQkFDSjtvQkFDRSxRQUFRLEVBQUU7d0JBQ1IsTUFBTSxFQUFFOzRCQUNOLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDbEIsSUFBSSxFQUFFLHFCQUFhLENBQUMsT0FBTzt5QkFDNUI7d0JBQ0QsUUFBUSxFQUFFOzRCQUNSLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTTs0QkFDaEIsSUFBSSxFQUFFLHFCQUFhLENBQUMsT0FBTzt5QkFDNUI7d0JBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO3dCQUN0QixNQUFNLEVBQUUsSUFB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USxDQUFDLE9BQU8sQ0FBQztZQUNqQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQy9DLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUNqRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBRXJDLE1BQU0sZ0JBQWdCLEdBQUcsc0RBQTBDLENBQUMsUUFBUSxDQUFDO2dCQUMzRSxPQUFPO2dCQUNQLGNBQWM7Z0JBQ2QsU0FBUztnQkFDVCxTQUFTO2dCQUNULElBQUk7Z0JBQ0osVUFBVTtnQkFDVixlQUFlO2dCQUNmLFNBQVM7YUFDVixDQUFDLENBQUM7WUFDSCxJQUFJLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyx5QkFBeUIsQ0FDL0IsSUFBbUMsRUFDbkMsSUFBZ0M7UUFFaEMsT0FBTyxJQUFBLDZCQUFZLEVBQ2pCO1lBQ0UsTUFBTSxFQUFFO2dCQUNOLElBQUk7Z0JBQ0osSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsTUFBTSxFQUFFLFlBQVk7YUFDckI7WUFDRCxHQUFHLElBQUksQ0FBQyxVQUFVO1NBQ25CLEVBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBbkxELG9EQW1MQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFBvbHl4QmFzZUJ1aWxkZXIgfSBmcm9tICcuL2Jhc2VCdWlsZGVyJztcbmltcG9ydCB7IFR4TWV0aG9kLCBNZXRob2ROYW1lcywgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MsIFNldHRsZW1lbnRUeXBlLCBQb3J0Zm9saW9LaW5kIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgSW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3Qtc3Vic3RyYXRlJztcbmltcG9ydCB7IEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNUcmFuc2FjdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBkZWZpbmVNZXRob2QsIFVuc2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcblxuLy8gW0NMRUFOVVAtVjgtT0xEXSB2NyBzZXR0bGVtZW50LmFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMg4oCUIGJhcmUgUG9ydGZvbGlvSWQgbGVncy9wb3J0Zm9saW9zLlxuLy8gS2VwdCBmb3IgRmxpcHQgcm9sbGJhY2sgYWxvbmdzaWRlIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIgKEFzc2V0SG9sZGVyLXdyYXBwZWQgbGVncy9ob2xkZXJTZXQpLlxuZXhwb3J0IGNsYXNzIFRva2VuVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgUG9seXhCYXNlQnVpbGRlcjxUeE1ldGhvZCwgVHJhbnNhY3Rpb24+IHtcbiAgcHJvdGVjdGVkIF9hc3NldElkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfbWVtbzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Zyb21ESUQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF90b0RJRDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkVHJhbnNhY3Rpb24oKTogVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgYmFzZVR4SW5mbyA9IHRoaXMuY3JlYXRlQmFzZVR4SW5mbygpO1xuICAgIHJldHVybiB0aGlzLmFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMoXG4gICAgICB7XG4gICAgICAgIHZlbnVlSWQ6IG51bGwsXG4gICAgICAgIHNldHRsZW1lbnRUeXBlOiBTZXR0bGVtZW50VHlwZS5TZXR0bGVPbkFmZmlybWF0aW9uLFxuICAgICAgICB0cmFkZURhdGU6IG51bGwsXG4gICAgICAgIHZhbHVlRGF0ZTogbnVsbCxcbiAgICAgICAgbGVnczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmdpYmxlOiB7XG4gICAgICAgICAgICAgIHNlbmRlcjoge1xuICAgICAgICAgICAgICAgIGRpZDogdGhpcy5fZnJvbURJRCxcbiAgICAgICAgICAgICAgICBraW5kOiBQb3J0Zm9saW9LaW5kLkRlZmF1bHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJlY2VpdmVyOiB7XG4gICAgICAgICAgICAgICAgZGlkOiB0aGlzLl90b0RJRCxcbiAgICAgICAgICAgICAgICBraW5kOiBQb3J0Zm9saW9LaW5kLkRlZmF1bHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFzc2V0SWQ6IHRoaXMuX2Fzc2V0SWQsXG4gICAgICAgICAgICAgIGFtb3VudDogdGhpcy5fYW1vdW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBwb3J0Zm9saW9zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlkOiB0aGlzLl9mcm9tRElELFxuICAgICAgICAgICAga2luZDogUG9ydGZvbGlvS2luZC5EZWZhdWx0LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGluc3RydWN0aW9uTWVtbzogdGhpcy5fbWVtbyxcbiAgICAgICAgbWVkaWF0b3JzOiBbXSxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbW91bnQgdG8gdHJhbnNmZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgLSBUaGUgYW1vdW50IHRvIHRyYW5zZmVyLlxuICAgKiBAcmV0dXJucyB7dGhpc30gVGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkZXIuXG4gICAqL1xuICBhc3NldElkKGFzc2V0SWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2Fzc2V0SWQgPSBhc3NldElkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFtb3VudCB0byB0cmFuc2Zlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIFRoZSBhbW91bnQgdG8gdHJhbnNmZXIuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICovXG4gIGFtb3VudChhbW91bnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBtZW1vIGZvciB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIFBhZHMgdGhlIG1lbW8gb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyB0byBlbnN1cmUgaXQgaXMgMzIgY2hhcmFjdGVycyBsb25nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVtbyAtIFRoZSBtZW1vIGZvciB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICovXG4gIG1lbW8obWVtbzogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgcGFkZGVkTWVtbyA9IG1lbW8ucGFkU3RhcnQoMzIsICcwJyk7XG4gICAgdGhpcy5fbWVtbyA9IHBhZGRlZE1lbW87XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VuZGVyIERJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZyb21ESUQgLSBUaGUgc2VuZGVyIERJRC5cbiAgICogQHJldHVybnMge3RoaXN9IFRoZSBjdXJyZW50IGluc3RhbmNlIG9mIHRoZSBidWlsZGVyLlxuICAgKi9cbiAgZnJvbURJRChmcm9tRElEOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9mcm9tRElEID0gZnJvbURJRDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWNlaXZlciBESUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b0RJRCAtIFRoZSByZWNlaXZlciBESUQuXG4gICAqIEByZXR1cm5zIHt0aGlzfSBUaGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUgYnVpbGRlci5cbiAgICovXG4gIHRvRElEKHRvRElEOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl90b0RJRCA9IHRvRElEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eCA9IHN1cGVyLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgaWYgKHRoaXMuX21ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycykge1xuICAgICAgdGhpcy5wb3B1bGF0ZUZyb21NZXRob2RBcmdzKHRoaXMuX21ldGhvZC5hcmdzIGFzIEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFRyYW5zYWN0aW9uIFR5cGU6ICR7dGhpcy5fbWV0aG9kPy5uYW1lfS4gRXhwZWN0ZWQgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc2ApO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKipcbiAgICogUG9wdWxhdGVzIGJ1aWxkZXIgc3RhdGUgZnJvbSBkZWNvZGVkIG1ldGhvZCBhcmdzLiBFeHRyYWN0ZWQgYXMgaXRzIG93biBtZXRob2Qgc29cbiAgICogVjhUb2tlblRyYW5zZmVyQnVpbGRlciBjYW4gb3ZlcnJpZGUganVzdCB0aGUgQXNzZXRIb2xkZXItc2hhcGVkIGZpZWxkIGFjY2VzcyB3aGlsZVxuICAgKiByZXVzaW5nIHRoZSByZXN0IG9mIGZyb21JbXBsZW1lbnRhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBwb3B1bGF0ZUZyb21NZXRob2RBcmdzKHR4TWV0aG9kOiBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyk6IHZvaWQge1xuICAgIHRoaXMuYXNzZXRJZCh0eE1ldGhvZC5sZWdzWzBdLmZ1bmdpYmxlLmFzc2V0SWQpO1xuICAgIHRoaXMuYW1vdW50KHR4TWV0aG9kLmxlZ3NbMF0uZnVuZ2libGUuYW1vdW50KTtcbiAgICB0aGlzLm1lbW8odHhNZXRob2QuaW5zdHJ1Y3Rpb25NZW1vKTtcbiAgICB0aGlzLmZyb21ESUQodHhNZXRob2QubGVnc1swXS5mdW5naWJsZS5zZW5kZXIuZGlkKTtcbiAgICB0aGlzLnRvRElEKHR4TWV0aG9kLmxlZ3NbMF0uZnVuZ2libGUucmVjZWl2ZXIuZGlkKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHhuOiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHgsIHJhd1RyYW5zYWN0aW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5BZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzKSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeG4ubWV0aG9kLmFyZ3MgYXMgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3M7XG4gICAgICBjb25zdCB2ZW51ZUlkID0gdHhNZXRob2QudmVudWVJZDtcbiAgICAgIGNvbnN0IHNldHRsZW1lbnRUeXBlID0gdHhNZXRob2Quc2V0dGxlbWVudFR5cGU7XG4gICAgICBjb25zdCB0cmFkZURhdGUgPSB0eE1ldGhvZC50cmFkZURhdGU7XG4gICAgICBjb25zdCB2YWx1ZURhdGUgPSB0eE1ldGhvZC52YWx1ZURhdGU7XG4gICAgICBjb25zdCBsZWdzID0gdHhNZXRob2QubGVncztcbiAgICAgIGNvbnN0IHBvcnRmb2xpb3MgPSB0eE1ldGhvZC5wb3J0Zm9saW9zO1xuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25NZW1vID0gdHhNZXRob2QuaW5zdHJ1Y3Rpb25NZW1vO1xuICAgICAgY29uc3QgbWVkaWF0b3JzID0gdHhNZXRob2QubWVkaWF0b3JzO1xuXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc1RyYW5zYWN0aW9uU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgICAgdmVudWVJZCxcbiAgICAgICAgc2V0dGxlbWVudFR5cGUsXG4gICAgICAgIHRyYWRlRGF0ZSxcbiAgICAgICAgdmFsdWVEYXRlLFxuICAgICAgICBsZWdzLFxuICAgICAgICBwb3J0Zm9saW9zLFxuICAgICAgICBpbnN0cnVjdGlvbk1lbW8sXG4gICAgICAgIG1lZGlhdG9ycyxcbiAgICAgIH0pO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMoXG4gICAgYXJnczogQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MsXG4gICAgaW5mbzogSW50ZXJmYWNlLkNyZWF0ZUJhc2VUeEluZm9cbiAgKTogVW5zaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIGRlZmluZU1ldGhvZChcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiB7XG4gICAgICAgICAgYXJncyxcbiAgICAgICAgICBuYW1lOiAnYWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9ycycsXG4gICAgICAgICAgcGFsbGV0OiAnc2V0dGxlbWVudCcsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmluZm8uYmFzZVR4SW5mbyxcbiAgICAgIH0sXG4gICAgICBpbmZvLm9wdGlvbnNcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Transaction as SubstrateTransaction } from '@bitgo-beta/abstract-substrate';
2
+ import { TxData } from './iface';
3
+ export declare class Transaction extends SubstrateTransaction {
4
+ /**
5
+ * Override the getAddressFormat method to return different values based on network type
6
+ * Returns 12 for mainnet and 42 for testnet
7
+ *
8
+ * @returns {number} The address format to use
9
+ * @override
10
+ */
11
+ protected getAddressFormat(): number;
12
+ /**
13
+ * Helper method to find a token name by assetId
14
+ * @param assetId The assetId to search for
15
+ * @returns The token name if found
16
+ * @throws {InvalidTransactionError} If no matching token is found
17
+ */
18
+ private getTokenNameByAssetId;
19
+ /** @inheritdoc */
20
+ toJson(): TxData;
21
+ /**
22
+ * Load the input and output data on this transaction.
23
+ */
24
+ loadInputsAndOutputs(): void;
25
+ private decodeInputsAndOutputsForRegisterDidWithCDD;
26
+ private decodeInputsAndOutputsForPreApproveAsset;
27
+ private decodeInputsAndOutputsForSendToken;
28
+ private decodeInputsAndOutputsForRejectInstruction;
29
+ }
30
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAkB,MAAM,gCAAgC,CAAC;AAKrG,OAAO,EAIL,MAAM,EAIP,MAAM,SAAS,CAAC;AAmBjB,qBAAa,WAAY,SAAQ,oBAAoB;IACnD;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgB7B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA4DhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAoB5B,OAAO,CAAC,2CAA2C;IAsBnD,OAAO,CAAC,wCAAwC;IAmBhD,OAAO,CAAC,kCAAkC;IAqB1C,OAAO,CAAC,0CAA0C;CAiBnD"}
@@ -0,0 +1,211 @@
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.Transaction = void 0;
7
+ const abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
10
+ const keyring_1 = require("@polkadot/keyring");
11
+ const statics_1 = require("@bitgo-beta/statics");
12
+ const utils_1 = __importDefault(require("./utils"));
13
+ /**
14
+ * Reads the DID out of a decoded settlement leg holder. This Transaction class is shared by
15
+ * TokenTransferBuilder (v7, bare `{ did, kind }`) and V8TokenTransferBuilder (v8, AssetHolder-
16
+ * wrapped `{ portfolio: { did, kind } }`) — both are decoded here, so both shapes must be
17
+ * supported. `Account`-variant AssetHolders (v8 account-based ownership) are out of scope.
18
+ */
19
+ function extractPortfolioDID(holder) {
20
+ if ('did' in holder) {
21
+ return holder.did;
22
+ }
23
+ if ('portfolio' in holder) {
24
+ return holder.portfolio.did;
25
+ }
26
+ throw new sdk_core_1.InvalidTransactionError('Unsupported settlement leg holder shape (expected did or portfolio.did)');
27
+ }
28
+ class Transaction extends abstract_substrate_1.Transaction {
29
+ /**
30
+ * Override the getAddressFormat method to return different values based on network type
31
+ * Returns 12 for mainnet and 42 for testnet
32
+ *
33
+ * @returns {number} The address format to use
34
+ * @override
35
+ */
36
+ getAddressFormat() {
37
+ return utils_1.default.getAddressFormat(this._coinConfig.name);
38
+ }
39
+ /**
40
+ * Helper method to find a token name by assetId
41
+ * @param assetId The assetId to search for
42
+ * @returns The token name if found
43
+ * @throws {InvalidTransactionError} If no matching token is found
44
+ */
45
+ getTokenNameByAssetId(assetId) {
46
+ // Search through all coins to find the one with matching assetId
47
+ let foundToken;
48
+ statics_1.coins.forEach((coin) => {
49
+ if (coin instanceof statics_1.PolyxCoin && coin.assetId === assetId) {
50
+ foundToken = coin.name;
51
+ }
52
+ });
53
+ if (!foundToken) {
54
+ throw new sdk_core_1.InvalidTransactionError(`No token found for assetId: ${assetId}`);
55
+ }
56
+ return foundToken;
57
+ }
58
+ /** @inheritdoc */
59
+ toJson() {
60
+ if (!this._substrateTransaction) {
61
+ throw new sdk_core_1.InvalidTransactionError('Empty transaction');
62
+ }
63
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(this._substrateTransaction, {
64
+ metadataRpc: this._substrateTransaction.metadataRpc,
65
+ registry: this._registry,
66
+ isImmortalEra: abstract_substrate_1.utils.isZeroHex(this._substrateTransaction.era),
67
+ });
68
+ const result = {
69
+ id: txwrapper_polkadot_1.construct.txHash(this.toBroadcastFormat()),
70
+ sender: decodedTx.address,
71
+ referenceBlock: decodedTx.blockHash,
72
+ blockNumber: decodedTx.blockNumber,
73
+ genesisHash: decodedTx.genesisHash,
74
+ nonce: decodedTx.nonce,
75
+ specVersion: decodedTx.specVersion,
76
+ transactionVersion: decodedTx.transactionVersion,
77
+ eraPeriod: decodedTx.eraPeriod,
78
+ chainName: this._chainName,
79
+ tip: decodedTx.tip ? Number(decodedTx.tip) : 0,
80
+ rawSignableHex: Buffer.from(this.rawExtrinsicPayload).toString('hex'),
81
+ };
82
+ const txMethod = decodedTx.method.args;
83
+ if (this.type === sdk_core_1.TransactionType.WalletInitialization) {
84
+ const { targetAccount } = txMethod;
85
+ const keypairDest = new abstract_substrate_1.KeyPair({
86
+ pub: Buffer.from((0, keyring_1.decodeAddress)(targetAccount)).toString('hex'),
87
+ });
88
+ result.to = keypairDest.getAddress(this.getAddressFormat());
89
+ result.amount = '0'; // RegisterDidWithCDD does not transfer any value
90
+ }
91
+ else if (this.type === sdk_core_1.TransactionType.TrustLine) {
92
+ const { assetId } = txMethod;
93
+ result.assetId = assetId;
94
+ result.sender = decodedTx.address;
95
+ result.amount = '0'; // Pre-approval does not transfer any value
96
+ }
97
+ else if (this.type === sdk_core_1.TransactionType.SendToken) {
98
+ const sendTokenArgs = txMethod;
99
+ result.fromDID = extractPortfolioDID(sendTokenArgs.legs[0].fungible.sender);
100
+ result.toDID = extractPortfolioDID(sendTokenArgs.legs[0].fungible.receiver);
101
+ result.amount = sendTokenArgs.legs[0].fungible.amount.toString();
102
+ result.assetId = sendTokenArgs.legs[0].fungible.assetId;
103
+ result.memo = sendTokenArgs.instructionMemo;
104
+ }
105
+ else if (this.type === sdk_core_1.TransactionType.RejectInstruction) {
106
+ const rejectInstructionArgs = txMethod;
107
+ result.instructionId = rejectInstructionArgs.id;
108
+ result.portfolioDID = rejectInstructionArgs.portfolio.did;
109
+ result.amount = '0'; // Reject instruction does not transfer any value
110
+ }
111
+ else {
112
+ const baseResult = super.toJson();
113
+ baseResult.rawSignableHex = result.rawSignableHex;
114
+ return baseResult;
115
+ }
116
+ return result;
117
+ }
118
+ /**
119
+ * Load the input and output data on this transaction.
120
+ */
121
+ loadInputsAndOutputs() {
122
+ super.loadInputsAndOutputs();
123
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(this._substrateTransaction, {
124
+ metadataRpc: this._substrateTransaction.metadataRpc,
125
+ registry: this._registry,
126
+ isImmortalEra: abstract_substrate_1.utils.isZeroHex(this._substrateTransaction.era),
127
+ });
128
+ if (this.type === sdk_core_1.TransactionType.WalletInitialization) {
129
+ this.decodeInputsAndOutputsForRegisterDidWithCDD(decodedTx);
130
+ }
131
+ else if (this.type === sdk_core_1.TransactionType.TrustLine) {
132
+ this.decodeInputsAndOutputsForPreApproveAsset(decodedTx);
133
+ }
134
+ else if (this.type === sdk_core_1.TransactionType.SendToken) {
135
+ this.decodeInputsAndOutputsForSendToken(decodedTx);
136
+ }
137
+ else if (this.type === sdk_core_1.TransactionType.RejectInstruction) {
138
+ this.decodeInputsAndOutputsForRejectInstruction(decodedTx);
139
+ }
140
+ }
141
+ decodeInputsAndOutputsForRegisterDidWithCDD(decodedTx) {
142
+ const txMethod = decodedTx.method.args;
143
+ const keypairDest = new abstract_substrate_1.KeyPair({
144
+ pub: Buffer.from((0, keyring_1.decodeAddress)(txMethod.targetAccount)).toString('hex'),
145
+ });
146
+ const to = keypairDest.getAddress(this.getAddressFormat());
147
+ const value = '0';
148
+ const from = decodedTx.address;
149
+ this._inputs.push({
150
+ address: from,
151
+ value,
152
+ coin: this._coinConfig.name,
153
+ });
154
+ this._outputs.push({
155
+ address: to,
156
+ value,
157
+ coin: this._coinConfig.name,
158
+ });
159
+ }
160
+ decodeInputsAndOutputsForPreApproveAsset(decodedTx) {
161
+ const txMethod = decodedTx.method.args;
162
+ const sender = decodedTx.address;
163
+ const value = '0'; // Pre-approval does not transfer any value
164
+ const tokenName = this.getTokenNameByAssetId(txMethod.assetId);
165
+ this._inputs.push({
166
+ address: sender,
167
+ value,
168
+ coin: tokenName,
169
+ });
170
+ this._outputs.push({
171
+ address: sender, // In pre-approval, the output is the same as the input
172
+ value,
173
+ coin: tokenName,
174
+ });
175
+ }
176
+ decodeInputsAndOutputsForSendToken(decodedTx) {
177
+ const txMethod = decodedTx.method.args;
178
+ const fromDID = extractPortfolioDID(txMethod.legs[0].fungible.sender);
179
+ const toDID = extractPortfolioDID(txMethod.legs[0].fungible.receiver);
180
+ const amount = txMethod.legs[0].fungible.amount.toString();
181
+ const assetId = txMethod.legs[0].fungible.assetId;
182
+ const tokenName = this.getTokenNameByAssetId(assetId);
183
+ this._inputs.push({
184
+ address: fromDID,
185
+ value: amount,
186
+ coin: tokenName,
187
+ });
188
+ this._outputs.push({
189
+ address: toDID,
190
+ value: amount,
191
+ coin: tokenName,
192
+ });
193
+ }
194
+ decodeInputsAndOutputsForRejectInstruction(decodedTx) {
195
+ const txMethod = decodedTx.method.args;
196
+ const portfolioDID = txMethod.portfolio.did;
197
+ const value = '0'; // Reject instruction does not transfer any value
198
+ this._inputs.push({
199
+ address: portfolioDID,
200
+ value,
201
+ coin: this._coinConfig.name,
202
+ });
203
+ this._outputs.push({
204
+ address: portfolioDID,
205
+ value,
206
+ coin: this._coinConfig.name,
207
+ });
208
+ }
209
+ }
210
+ exports.Transaction = Transaction;
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVFQUFxRztBQUNyRyxtREFBZ0Y7QUFDaEYsc0VBQWtFO0FBQ2xFLCtDQUFrRDtBQUNsRCxpREFBdUQ7QUFVdkQsb0RBQWlDO0FBRWpDOzs7OztHQUtHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxNQUE4RTtJQUN6RyxJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNwQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksV0FBVyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUNELE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO0FBQy9HLENBQUM7QUFFRCxNQUFhLFdBQVksU0FBUSxnQ0FBb0I7SUFDbkQ7Ozs7OztPQU1HO0lBQ08sZ0JBQWdCO1FBQ3hCLE9BQU8sZUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0sscUJBQXFCLENBQUMsT0FBZTtRQUMzQyxpRUFBaUU7UUFDakUsSUFBSSxVQUE4QixDQUFDO1FBQ25DLGVBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksWUFBWSxtQkFBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzFELFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUks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STtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixPQUFPLEVBQUUsWUFBWTtZQUNyQixLQUFLO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtTQUM1QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFyTUQsa0NBcU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgU3Vic3RyYXRlVHJhbnNhY3Rpb24sIHV0aWxzLCBLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3Qtc3Vic3RyYXRlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBjb25zdHJ1Y3QsIGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGRlY29kZUFkZHJlc3MgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyBjb2lucywgUG9seXhDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBEZWNvZGVkVHgsXG4gIFJlZ2lzdGVyRGlkV2l0aENEREFyZ3MsXG4gIFByZUFwcHJvdmVBc3NldEFyZ3MsXG4gIFR4RGF0YSxcbiAgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MsXG4gIERlY29kZWRWOEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzLFxuICBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXJBcmdzLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCBwb2x5eFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIFJlYWRzIHRoZSBESUQgb3V0IG9mIGEgZGVjb2RlZCBzZXR0bGVtZW50IGxlZyBob2xkZXIuIFRoaXMgVHJhbnNhY3Rpb24gY2xhc3MgaXMgc2hhcmVkIGJ5XG4gKiBUb2tlblRyYW5zZmVyQnVpbGRlciAodjcsIGJhcmUgYHsgZGlkLCBraW5kIH1gKSBhbmQgVjhUb2tlblRyYW5zZmVyQnVpbGRlciAodjgsIEFzc2V0SG9sZGVyLVxuICogd3JhcHBlZCBgeyBwb3J0Zm9saW86IHsgZGlkLCBraW5kIH0gfWApIOKAlCBib3RoIGFyZSBkZWNvZGVkIGhlcmUsIHNvIGJvdGggc2hhcGVzIG11c3QgYmVcbiAqIHN1cHBvcnRlZC4gYEFjY291bnRgLXZhcmlhbnQgQXNzZXRIb2xkZXJzICh2OCBhY2NvdW50LWJhc2VkIG93bmVyc2hpcCkgYXJlIG91dCBvZiBzY29wZS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdFBvcnRmb2xpb0RJRChob2xkZXI6IHsgZGlkOiBzdHJpbmcgfSB8IHsgcG9ydGZvbGlvOiB7IGRpZDogc3RyaW5nIH0gfSB8IHsgYWNjb3VudDogc3RyaW5nIH0pOiBzdHJpbmcge1xuICBpZiAoJ2RpZCcgaW4gaG9sZGVyKSB7XG4gICAgcmV0dXJuIGhvbGRlci5kaWQ7XG4gIH1cbiAgaWYgKCdwb3J0Zm9saW8nIGluIGhvbGRlcikge1xuICAgIHJldHVybiBob2xkZXIucG9ydGZvbGlvLmRpZDtcbiAgfVxuICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1Vuc3VwcG9ydGVkIHNldHRsZW1lbnQgbGVnIGhvbGRlciBzaGFwZSAoZXhwZWN0ZWQgZGlkIG9yIHBvcnRmb2xpby5kaWQpJyk7XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIFN1YnN0cmF0ZVRyYW5zYWN0aW9uIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBnZXRBZGRyZXNzRm9ybWF0IG1ldGhvZCB0byByZXR1cm4gZGlmZmVyZW50IHZhbHVlcyBiYXNlZCBvbiBuZXR3b3JrIHR5cGVcbiAgICogUmV0dXJucyAxMiBmb3IgbWFpbm5ldCBhbmQgNDIgZm9yIHRlc3RuZXRcbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGFkZHJlc3MgZm9ybWF0IHRvIHVzZVxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRBZGRyZXNzRm9ybWF0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBvbHl4VXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZmluZCBhIHRva2VuIG5hbWUgYnkgYXNzZXRJZFxuICAgKiBAcGFyYW0gYXNzZXRJZCBUaGUgYXNzZXRJZCB0byBzZWFyY2ggZm9yXG4gICAqIEByZXR1cm5zIFRoZSB0b2tlbiBuYW1lIGlmIGZvdW5kXG4gICAqIEB0aHJvd3Mge0ludmFsaWRUcmFuc2FjdGlvbkVycm9yfSBJZiBubyBtYXRjaGluZyB0b2tlbiBpcyBmb3VuZFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUb2tlbk5hbWVCeUFzc2V0SWQoYXNzZXRJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTZWFyY2ggdGhyb3VnaCBhbGwgY29pbnMgdG8gZmluZCB0aGUgb25lIHdpdGggbWF0Y2hpbmcgYXNzZXRJZFxuICAgIGxldCBmb3VuZFRva2VuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29pbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgaWYgKGNvaW4gaW5zdGFuY2VvZiBQb2x5eENvaW4gJiYgY29pbi5hc3NldElkID09PSBhc3NldElkKSB7XG4gICAgICAgIGZvdW5kVG9rZW4gPSBjb2luLm5hbWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWZvdW5kVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgTm8gdG9rZW4gZm91bmQgZm9yIGFzc2V0SWQ6ICR7YXNzZXRJZH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmRUb2tlbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fc3Vic3RyYXRlVHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICBpc0ltbW9ydGFsRXJhOiB1dGlscy5pc1plcm9IZXgodGhpcy5fc3Vic3RyYXRlVHJhbnNhY3Rpb24uZXJhKSxcbiAgICB9KSBhcyB1bmtub3duIGFzIERlY29kZWRUeDtcblxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IGNvbnN0cnVjdC50eEhhc2godGhpcy50b0Jyb2FkY2FzdEZvcm1hdCgpKSxcbiAgICAgIHNlbmRlcjogZGVjb2RlZFR4LmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogZGVjb2RlZFR4LmJsb2NrSGFzaCxcbiAgICAgIGJsb2NrTnVtYmVyOiBkZWNvZGVkVHguYmxvY2tOdW1iZXIsXG4gICAgICBnZW5lc2lzSGFzaDogZGVjb2RlZFR4LmdlbmVzaXNIYXNoLFxuICAgICAgbm9uY2U6IGRlY29kZWRUeC5ub25jZSxcbiAgICAgIHNwZWNWZXJzaW9uOiBkZWNvZGVkVHguc3BlY1ZlcnNpb24sXG4gICAgICB0cmFuc2FjdGlvblZlcnNpb246IGRlY29kZWRUeC50cmFuc2FjdGlvblZlcnNpb24sXG4gICAgICBlcmFQZXJpb2Q6IGRlY29kZWRUeC5lcmFQZXJpb2QsXG4gICAgICBjaGFpbk5hbWU6IHRoaXMuX2NoYWluTmFtZSxcbiAgICAgIHRpcDogZGVjb2RlZFR4LnRpcCA/IE51bWJlcihkZWNvZGVkVHgudGlwKSA6IDAsXG4gICAgICByYXdTaWduYWJsZUhleDogQnVmZmVyLmZyb20odGhpcy5yYXdFeHRyaW5zaWNQYXlsb2FkKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbikge1xuICAgICAgY29uc3QgeyB0YXJnZXRBY2NvdW50IH0gPSB0eE1ldGhvZCBhcyBSZWdpc3RlckRpZFdpdGhDRERBcmdzO1xuICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0YXJnZXRBY2NvdW50KSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSk7XG4gICAgICByZXN1bHQudG8gPSBrZXlwYWlyRGVzdC5nZXRBZGRyZXNzKHRoaXMuZ2V0QWRkcmVzc0Zvcm1hdCgpKTtcbiAgICAgIHJlc3VsdC5hbW91bnQgPSAnMCc7IC8vIFJlZ2lzdGVyRGlkV2l0aENERCBkb2VzIG5vdCB0cmFuc2ZlciBhbnkgdmFsdWVcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRydXN0TGluZSkge1xuICAgICAgY29uc3QgeyBhc3NldElkIH0gPSB0eE1ldGhvZCBhcyBQcmVBcHByb3ZlQXNzZXRBcmdzO1xuICAgICAgcmVzdWx0LmFzc2V0SWQgPSBhc3NldElkO1xuICAgICAgcmVzdWx0LnNlbmRlciA9IGRlY29kZWRUeC5hZGRyZXNzO1xuICAgICAgcmVzdWx0LmFtb3VudCA9ICcwJzsgLy8gUHJlLWFwcHJvdmFsIGRvZXMgbm90IHRyYW5zZmVyIGFueSB2YWx1ZVxuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuKSB7XG4gICAgICBjb25zdCBzZW5kVG9rZW5BcmdzID0gdHhNZXRob2QgYXMgQWRkQW5kQWZmaXJtV2l0aE1lZGlhdG9yc0FyZ3MgfCBEZWNvZGVkVjhBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncztcbiAgICAgIHJlc3VsdC5mcm9tRElEID0gZXh0cmFjdFBvcnRmb2xpb0RJRChzZW5kVG9rZW5BcmdzLmxlZ3NbMF0uZnVuZ2libGUuc2VuZGVyKTtcbiAgICAgIHJlc3VsdC50b0RJRCA9IGV4dHJhY3RQb3J0Zm9saW9ESUQoc2VuZFRva2VuQXJncy5sZWdzWzBdLmZ1bmdpYmxlLnJlY2VpdmVyKTtcbiAgICAgIHJlc3VsdC5hbW91bnQgPSBzZW5kVG9rZW5BcmdzLmxlZ3NbMF0uZnVuZ2libGUuYW1vdW50LnRvU3RyaW5nKCk7XG4gICAgICByZXN1bHQuYXNzZXRJZCA9IHNlbmRUb2tlbkFyZ3MubGVnc1swXS5mdW5naWJsZS5hc3NldElkO1xuICAgICAgcmVzdWx0Lm1lbW8gPSBzZW5kVG9rZW5BcmdzLmluc3RydWN0aW9uTWVtbztcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlJlamVjdEluc3RydWN0aW9uKSB7XG4gICAgICBjb25zdCByZWplY3RJbnN0cnVjdGlvbkFyZ3MgPSB0eE1ldGhvZCBhcyBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXJBcmdzO1xuICAgICAgcmVzdWx0Lmluc3RydWN0aW9uSWQgPSByZWplY3RJbnN0cnVjdGlvbkFyZ3MuaWQgYXMgc3RyaW5nO1xuICAgICAgcmVzdWx0LnBvcnRmb2xpb0RJRCA9IHJlamVjdEluc3RydWN0aW9uQXJncy5wb3J0Zm9saW8uZGlkIGFzIHN0cmluZztcbiAgICAgIHJlc3VsdC5hbW91bnQgPSAnMCc7IC8vIFJlamVjdCBpbnN0cnVjdGlvbiBkb2VzIG5vdCB0cmFuc2ZlciBhbnkgdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFzZVJlc3VsdCA9IHN1cGVyLnRvSnNvbigpIGFzIFR4RGF0YTtcbiAgICAgIGJhc2VSZXN1bHQucmF3U2lnbmFibGVIZXggPSByZXN1bHQucmF3U2lnbmFibGVIZXg7XG4gICAgICByZXR1cm4gYmFzZVJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgc3VwZXIubG9hZElucHV0c0FuZE91dHB1dHMoKTtcblxuICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh0aGlzLl9zdWJzdHJhdGVUcmFuc2FjdGlvbiwge1xuICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLm1ldGFkYXRhUnBjLFxuICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgaXNJbW1vcnRhbEVyYTogdXRpbHMuaXNaZXJvSGV4KHRoaXMuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLmVyYSksXG4gICAgfSkgYXMgdW5rbm93biBhcyBEZWNvZGVkVHg7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIHRoaXMuZGVjb2RlSW5wdXRzQW5kT3V0cHV0c0ZvclJlZ2lzdGVyRGlkV2l0aENERChkZWNvZGVkVHgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuVHJ1c3RMaW5lKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JQcmVBcHByb3ZlQXNzZXQoZGVjb2RlZFR4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbikge1xuICAgICAgdGhpcy5kZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yU2VuZFRva2VuKGRlY29kZWRUeCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5SZWplY3RJbnN0cnVjdGlvbikge1xuICAgICAgdGhpcy5kZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yUmVqZWN0SW5zdHJ1Y3Rpb24oZGVjb2RlZFR4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JSZWdpc3RlckRpZFdpdGhDREQoZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyBSZWdpc3RlckRpZFdpdGhDRERBcmdzO1xuICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKHR4TWV0aG9kLnRhcmdldEFjY291bnQpKS50b1N0cmluZygnaGV4JyksXG4gICAgfSk7XG4gICAgY29uc3QgdG8gPSBrZXlwYWlyRGVzdC5nZXRBZGRyZXNzKHRoaXMuZ2V0QWRkcmVzc0Zvcm1hdCgpKTtcbiAgICBjb25zdCB2YWx1ZSA9ICcwJztcbiAgICBjb25zdCBmcm9tID0gZGVjb2RlZFR4LmFkZHJlc3M7XG5cbiAgICB0aGlzLl9pbnB1dHMucHVzaCh7XG4gICAgICBhZGRyZXNzOiBmcm9tLFxuICAgICAgdmFsdWUsXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogdG8sXG4gICAgICB2YWx1ZSxcbiAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVjb2RlSW5wdXRzQW5kT3V0cHV0c0ZvclByZUFwcHJvdmVBc3NldChkZWNvZGVkVHg6IERlY29kZWRUeCkge1xuICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFByZUFwcHJvdmVBc3NldEFyZ3M7XG4gICAgY29uc3Qgc2VuZGVyID0gZGVjb2RlZFR4LmFkZHJlc3M7XG4gICAgY29uc3QgdmFsdWUgPSAnMCc7IC8vIFByZS1hcHByb3ZhbCBkb2VzIG5vdCB0cmFuc2ZlciBhbnkgdmFsdWVcbiAgICBjb25zdCB0b2tlbk5hbWUgPSB0aGlzLmdldFRva2VuTmFtZUJ5QXNzZXRJZCh0eE1ldGhvZC5hc3NldElkKTtcblxuICAgIHRoaXMuX2lucHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3M6IHNlbmRlcixcbiAgICAgIHZhbHVlLFxuICAgICAgY29pbjogdG9rZW5OYW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3M6IHNlbmRlciwgLy8gSW4gcHJlLWFwcHJvdmFsLCB0aGUgb3V0cHV0IGlzIHRoZSBzYW1lIGFzIHRoZSBpbnB1dFxuICAgICAgdmFsdWUsXG4gICAgICBjb2luOiB0b2tlbk5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JTZW5kVG9rZW4oZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyBBZGRBbmRBZmZpcm1XaXRoTWVkaWF0b3JzQXJncyB8IERlY29kZWRWOEFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNBcmdzO1xuICAgIGNvbnN0IGZyb21ESUQgPSBleHRyYWN0UG9ydGZvbGlvRElEKHR4TWV0aG9kLmxlZ3NbMF0uZnVuZ2libGUuc2VuZGVyKTtcbiAgICBjb25zdCB0b0RJRCA9IGV4dHJhY3RQb3J0Zm9saW9ESUQodHhNZXRob2QubGVnc1swXS5mdW5naWJsZS5yZWNlaXZlcik7XG4gICAgY29uc3QgYW1vdW50ID0gdHhNZXRob2QubGVnc1swXS5mdW5naWJsZS5hbW91bnQudG9TdHJpbmcoKTtcbiAgICBjb25zdCBhc3NldElkID0gdHhNZXRob2QubGVnc1swXS5mdW5naWJsZS5hc3NldElkO1xuICAgIGNvbnN0IHRva2VuTmFtZSA9IHRoaXMuZ2V0VG9rZW5OYW1lQnlBc3NldElkKGFzc2V0SWQpO1xuXG4gICAgdGhpcy5faW5wdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogZnJvbURJRCxcbiAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICBjb2luOiB0b2tlbk5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogdG9ESUQsXG4gICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgY29pbjogdG9rZW5OYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yUmVqZWN0SW5zdHJ1Y3Rpb24oZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyBSZWplY3RJbnN0cnVjdGlvbkJ1aWxkZXJBcmdzO1xuICAgIGNvbnN0IHBvcnRmb2xpb0RJRCA9IHR4TWV0aG9kLnBvcnRmb2xpby5kaWQ7XG4gICAgY29uc3QgdmFsdWUgPSAnMCc7IC8vIFJlamVjdCBpbnN0cnVjdGlvbiBkb2VzIG5vdCB0cmFuc2ZlciBhbnkgdmFsdWVcblxuICAgIHRoaXMuX2lucHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3M6IHBvcnRmb2xpb0RJRCxcbiAgICAgIHZhbHVlLFxuICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3M6IHBvcnRmb2xpb0RJRCxcbiAgICAgIHZhbHVlLFxuICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,16 +1,74 @@
1
1
  import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
2
2
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
3
  import { TransferBuilder } from './transferBuilder';
4
+ import { HexTransferBuilder } from './hexTransferBuilder';
4
5
  import { RegisterDidWithCDDBuilder } from './registerDidWithCDDBuilder';
6
+ import { BondExtraBuilder } from './bondExtraBuilder';
7
+ import { BatchStakingBuilder } from './batchStakingBuilder';
8
+ import { BatchUnstakingBuilder } from './batchUnstakingBuilder';
9
+ import { UnbondBuilder } from './unbondBuilder';
10
+ import { WithdrawUnbondedBuilder } from './withdrawUnbondedBuilder';
5
11
  import { Interface, TransactionBuilder } from './';
12
+ import { TxMethod } from './iface';
13
+ import { Transaction as BaseTransaction } from '@bitgo-beta/abstract-substrate';
14
+ import { Transaction as PolyxTransaction } from './transaction';
15
+ import { PreApproveAssetBuilder } from './preApproveAssetBuilder';
16
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
17
+ import { HexTokenTransferBuilder } from './hexTokenTransferBuilder';
18
+ import { RejectInstructionBuilder } from './rejectInstructionBuilder';
19
+ import { NominateBuilder } from './nominateBuilder';
20
+ import { V8TransferBuilder } from './v8TransferBuilder';
21
+ import { V8HexTransferBuilder } from './v8HexTransferBuilder';
22
+ import { V8RegisterDidWithCDDBuilder } from './v8RegisterDidWithCDDBuilder';
23
+ import { V8RegisterDidBuilder } from './v8RegisterDidBuilder';
24
+ import { V8TokenTransferBuilder } from './v8TokenTransferBuilder';
25
+ import { V8HexTokenTransferBuilder } from './v8HexTokenTransferBuilder';
26
+ import { V8PreApproveAssetBuilder } from './v8PreApproveAssetBuilder';
27
+ import { V8BatchStakingBuilder } from './v8BatchStakingBuilder';
28
+ import { V8BondExtraBuilder } from './v8BondExtraBuilder';
29
+ import { V8UnbondBuilder } from './v8UnbondBuilder';
30
+ import { V8BatchUnstakingBuilder } from './v8BatchUnstakingBuilder';
31
+ import { V8WithdrawUnbondedBuilder } from './v8WithdrawUnbondedBuilder';
32
+ import { V8NominateBuilder } from './v8NominateBuilder';
33
+ export type SupportedTransaction = BaseTransaction | PolyxTransaction;
6
34
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
7
35
  protected _material: Interface.Material;
8
36
  constructor(_coinConfig: Readonly<CoinConfig>);
9
37
  getTransferBuilder(): TransferBuilder;
38
+ getHexTransferBuilder(): HexTransferBuilder;
10
39
  getRegisterDidWithCDDBuilder(): RegisterDidWithCDDBuilder;
40
+ getPreApproveAssetBuilder(): PreApproveAssetBuilder;
41
+ getTokenTransferBuilder(): TokenTransferBuilder;
42
+ getHexTokenTransferBuilder(): HexTokenTransferBuilder;
43
+ getRejectInstructionBuilder(): RejectInstructionBuilder;
44
+ getBondExtraBuilder(): BondExtraBuilder;
45
+ getBatchBuilder(): BatchStakingBuilder;
46
+ getBatchUnstakingBuilder(): BatchUnstakingBuilder;
47
+ getUnbondBuilder(): UnbondBuilder;
48
+ getWithdrawUnbondedBuilder(): WithdrawUnbondedBuilder;
49
+ getNominateBuilder(): NominateBuilder;
50
+ getV8TransferBuilder(): V8TransferBuilder;
51
+ getV8HexTransferBuilder(): V8HexTransferBuilder;
52
+ getV8RegisterDidWithCDDBuilder(): V8RegisterDidWithCDDBuilder;
53
+ getV8RegisterDidBuilder(): V8RegisterDidBuilder;
54
+ getV8TokenTransferBuilder(): V8TokenTransferBuilder;
55
+ getV8HexTokenTransferBuilder(): V8HexTokenTransferBuilder;
56
+ getV8PreApproveAssetBuilder(): V8PreApproveAssetBuilder;
57
+ getV8BatchStakingBuilder(): V8BatchStakingBuilder;
58
+ getV8BondExtraBuilder(): V8BondExtraBuilder;
59
+ getV8UnbondBuilder(): V8UnbondBuilder;
60
+ getV8BatchUnstakingBuilder(): V8BatchUnstakingBuilder;
61
+ getV8WithdrawUnbondedBuilder(): V8WithdrawUnbondedBuilder;
62
+ getV8NominateBuilder(): V8NominateBuilder;
11
63
  getWalletInitializationBuilder(): void;
12
- from(rawTxn: string): TransactionBuilder;
64
+ from(rawTxn: string): TransactionBuilder<TxMethod, SupportedTransaction>;
13
65
  material(material: Interface.Material): this;
14
66
  private getBuilder;
67
+ /**
68
+ * Attempt to decode a transaction against v8 chain metadata and return the matching v8 staking
69
+ * builder. Returns undefined when the transaction cannot be decoded with v8 material or is not a
70
+ * recognized v8 staking transaction, so the caller can surface the original v7 decode error.
71
+ */
72
+ private tryGetV8Builder;
15
73
  }
16
74
  //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAuB,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,SAAS,EAAqB,kBAAkB,EAAE,MAAM,IAAI,CAAC;AAEtE,qBAAa,yBAA0B,SAAQ,6BAA6B;IAC1E,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,kBAAkB,IAAI,eAAe;IAIrC,4BAA4B,IAAI,yBAAyB;IAIzD,8BAA8B,IAAI,IAAI;IAItC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAMxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI;IAK5C,OAAO,CAAC,UAAU;CAgBnB"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"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"}