@bitgo-beta/sdk-coin-sui 3.0.3-beta.172 → 3.0.3-beta.1721

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 (196) 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 +7 -2
  4. package/dist/src/lib/compareTransactionBlocks.js +2 -3
  5. package/dist/src/lib/constants.d.ts +9 -2
  6. package/dist/src/lib/constants.d.ts.map +1 -1
  7. package/dist/src/lib/constants.js +18 -2
  8. package/dist/src/lib/customTransaction.js +3 -3
  9. package/dist/src/lib/customTransactionBuilder.js +5 -5
  10. package/dist/src/lib/iface.d.ts +80 -12
  11. package/dist/src/lib/iface.d.ts.map +1 -1
  12. package/dist/src/lib/iface.js +34 -5
  13. package/dist/src/lib/index.d.ts +6 -0
  14. package/dist/src/lib/index.d.ts.map +1 -1
  15. package/dist/src/lib/index.js +36 -10
  16. package/dist/src/lib/keyPair.js +24 -10
  17. package/dist/src/lib/mystenlab/builder/Inputs.d.ts +64 -11
  18. package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
  19. package/dist/src/lib/mystenlab/builder/Inputs.js +63 -19
  20. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +88 -355
  21. package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
  22. package/dist/src/lib/mystenlab/builder/TransactionBlock.js +44 -25
  23. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +152 -77
  24. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
  25. package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +54 -44
  26. package/dist/src/lib/mystenlab/builder/Transactions.d.ts +133 -188
  27. package/dist/src/lib/mystenlab/builder/Transactions.d.ts.map +1 -1
  28. package/dist/src/lib/mystenlab/builder/Transactions.js +52 -53
  29. package/dist/src/lib/mystenlab/builder/bcs.d.ts +1 -1
  30. package/dist/src/lib/mystenlab/builder/bcs.d.ts.map +1 -1
  31. package/dist/src/lib/mystenlab/builder/bcs.js +2 -2
  32. package/dist/src/lib/mystenlab/builder/index.js +6 -2
  33. package/dist/src/lib/mystenlab/builder/serializer.js +6 -8
  34. package/dist/src/lib/mystenlab/builder/utils.d.ts +1 -1
  35. package/dist/src/lib/mystenlab/builder/utils.d.ts.map +1 -1
  36. package/dist/src/lib/mystenlab/builder/utils.js +4 -4
  37. package/dist/src/lib/mystenlab/cryptography/hash.js +3 -4
  38. package/dist/src/lib/mystenlab/framework/framework.d.ts +6 -6
  39. package/dist/src/lib/mystenlab/framework/framework.d.ts.map +1 -1
  40. package/dist/src/lib/mystenlab/framework/framework.js +22 -25
  41. package/dist/src/lib/mystenlab/framework/index.js +6 -2
  42. package/dist/src/lib/mystenlab/framework/sui-system-state.js +2 -2
  43. package/dist/src/lib/mystenlab/txn-data-serializers/type-tag-serializer.js +2 -2
  44. package/dist/src/lib/mystenlab/types/coin.d.ts +13 -11
  45. package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
  46. package/dist/src/lib/mystenlab/types/coin.js +20 -19
  47. package/dist/src/lib/mystenlab/types/common.d.ts +8 -8
  48. package/dist/src/lib/mystenlab/types/common.d.ts.map +1 -1
  49. package/dist/src/lib/mystenlab/types/common.js +22 -22
  50. package/dist/src/lib/mystenlab/types/events.d.ts +15 -15
  51. package/dist/src/lib/mystenlab/types/events.d.ts.map +1 -1
  52. package/dist/src/lib/mystenlab/types/events.js +17 -17
  53. package/dist/src/lib/mystenlab/types/index.js +6 -2
  54. package/dist/src/lib/mystenlab/types/normalized.d.ts +21 -21
  55. package/dist/src/lib/mystenlab/types/normalized.d.ts.map +1 -1
  56. package/dist/src/lib/mystenlab/types/normalized.js +41 -41
  57. package/dist/src/lib/mystenlab/types/objects.d.ts +51 -51
  58. package/dist/src/lib/mystenlab/types/objects.d.ts.map +1 -1
  59. package/dist/src/lib/mystenlab/types/objects.js +96 -106
  60. package/dist/src/lib/mystenlab/types/option.d.ts +1 -1
  61. package/dist/src/lib/mystenlab/types/option.d.ts.map +1 -1
  62. package/dist/src/lib/mystenlab/types/option.js +2 -3
  63. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +55 -29
  64. package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
  65. package/dist/src/lib/mystenlab/types/sui-bcs.js +29 -5
  66. package/dist/src/lib/mystenlab/types/transactions.d.ts +625 -625
  67. package/dist/src/lib/mystenlab/types/transactions.d.ts.map +1 -1
  68. package/dist/src/lib/mystenlab/types/transactions.js +178 -194
  69. package/dist/src/lib/mystenlab/types/validator.d.ts +13 -13
  70. package/dist/src/lib/mystenlab/types/validator.d.ts.map +1 -1
  71. package/dist/src/lib/mystenlab/types/validator.js +124 -124
  72. package/dist/src/lib/resources/walrusConfig.d.ts +22 -0
  73. package/dist/src/lib/resources/walrusConfig.d.ts.map +1 -0
  74. package/dist/src/lib/resources/walrusConfig.js +37 -0
  75. package/dist/src/lib/rpcClient.d.ts +5 -0
  76. package/dist/src/lib/rpcClient.d.ts.map +1 -0
  77. package/dist/src/lib/rpcClient.js +74 -0
  78. package/dist/src/lib/stakingBuilder.d.ts.map +1 -1
  79. package/dist/src/lib/stakingBuilder.js +23 -7
  80. package/dist/src/lib/stakingTransaction.d.ts +0 -1
  81. package/dist/src/lib/stakingTransaction.d.ts.map +1 -1
  82. package/dist/src/lib/stakingTransaction.js +26 -15
  83. package/dist/src/lib/tokenTransferBuilder.d.ts +66 -0
  84. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  85. package/dist/src/lib/tokenTransferBuilder.js +202 -0
  86. package/dist/src/lib/tokenTransferTransaction.d.ts +59 -0
  87. package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -0
  88. package/dist/src/lib/tokenTransferTransaction.js +264 -0
  89. package/dist/src/lib/transaction.d.ts +21 -4
  90. package/dist/src/lib/transaction.d.ts.map +1 -1
  91. package/dist/src/lib/transaction.js +129 -17
  92. package/dist/src/lib/transactionBuilder.d.ts +13 -4
  93. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  94. package/dist/src/lib/transactionBuilder.js +34 -4
  95. package/dist/src/lib/transactionBuilderFactory.d.ts +11 -2
  96. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  97. package/dist/src/lib/transactionBuilderFactory.js +32 -1
  98. package/dist/src/lib/transferBuilder.d.ts +44 -1
  99. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  100. package/dist/src/lib/transferBuilder.js +208 -24
  101. package/dist/src/lib/transferTransaction.d.ts +6 -1
  102. package/dist/src/lib/transferTransaction.d.ts.map +1 -1
  103. package/dist/src/lib/transferTransaction.js +125 -10
  104. package/dist/src/lib/unstakingBuilder.js +6 -6
  105. package/dist/src/lib/unstakingTransaction.d.ts +0 -1
  106. package/dist/src/lib/unstakingTransaction.d.ts.map +1 -1
  107. package/dist/src/lib/unstakingTransaction.js +31 -17
  108. package/dist/src/lib/utils.d.ts +24 -3
  109. package/dist/src/lib/utils.d.ts.map +1 -1
  110. package/dist/src/lib/utils.js +250 -20
  111. package/dist/src/lib/walrusStakingBuilder.d.ts +66 -0
  112. package/dist/src/lib/walrusStakingBuilder.d.ts.map +1 -0
  113. package/dist/src/lib/walrusStakingBuilder.js +200 -0
  114. package/dist/src/lib/walrusStakingTransaction.d.ts +52 -0
  115. package/dist/src/lib/walrusStakingTransaction.d.ts.map +1 -0
  116. package/dist/src/lib/walrusStakingTransaction.js +269 -0
  117. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts +36 -0
  118. package/dist/src/lib/walrusWithdrawStakeBuilder.d.ts.map +1 -0
  119. package/dist/src/lib/walrusWithdrawStakeBuilder.js +173 -0
  120. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts +21 -0
  121. package/dist/src/lib/walrusWithdrawStakeTransaction.d.ts.map +1 -0
  122. package/dist/src/lib/walrusWithdrawStakeTransaction.js +190 -0
  123. package/dist/src/register.d.ts.map +1 -1
  124. package/dist/src/register.js +5 -1
  125. package/dist/src/sui.d.ts +46 -8
  126. package/dist/src/sui.d.ts.map +1 -1
  127. package/dist/src/sui.js +525 -37
  128. package/dist/src/suiToken.d.ts +22 -0
  129. package/dist/src/suiToken.d.ts.map +1 -0
  130. package/dist/src/suiToken.js +61 -0
  131. package/dist/src/tsui.js +1 -1
  132. package/dist/test/integration/index.d.ts +1 -0
  133. package/dist/test/integration/index.d.ts.map +1 -0
  134. package/dist/test/integration/index.js +1 -0
  135. package/dist/test/local_fullnode/RpcClient.d.ts +60 -0
  136. package/dist/test/local_fullnode/RpcClient.d.ts.map +1 -0
  137. package/dist/test/local_fullnode/RpcClient.js +111 -0
  138. package/dist/test/local_fullnode/faucet.d.ts +6 -0
  139. package/dist/test/local_fullnode/faucet.d.ts.map +1 -0
  140. package/dist/test/local_fullnode/faucet.js +17 -0
  141. package/dist/test/local_fullnode/transactions.d.ts +2 -0
  142. package/dist/test/local_fullnode/transactions.d.ts.map +1 -0
  143. package/dist/test/local_fullnode/transactions.js +190 -0
  144. package/dist/test/resources/sui.d.ts +463 -0
  145. package/dist/test/resources/sui.d.ts.map +1 -0
  146. package/dist/test/resources/sui.js +632 -0
  147. package/dist/test/unit/compareTransactionBlocks.d.ts +2 -0
  148. package/dist/test/unit/compareTransactionBlocks.d.ts.map +1 -0
  149. package/dist/test/unit/compareTransactionBlocks.js +64 -0
  150. package/dist/test/unit/getBuilderFactory.d.ts +3 -0
  151. package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
  152. package/dist/test/unit/getBuilderFactory.js +10 -0
  153. package/dist/test/unit/keyPair.d.ts +2 -0
  154. package/dist/test/unit/keyPair.d.ts.map +1 -0
  155. package/dist/test/unit/keyPair.js +72 -0
  156. package/dist/test/unit/sui.d.ts +2 -0
  157. package/dist/test/unit/sui.d.ts.map +1 -0
  158. package/dist/test/unit/sui.js +2423 -0
  159. package/dist/test/unit/suiToken.d.ts +2 -0
  160. package/dist/test/unit/suiToken.d.ts.map +1 -0
  161. package/dist/test/unit/suiToken.js +39 -0
  162. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts +2 -0
  163. package/dist/test/unit/transactionBuilder/customTransactionBuilder.d.ts.map +1 -0
  164. package/dist/test/unit/transactionBuilder/customTransactionBuilder.js +106 -0
  165. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts +2 -0
  166. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  167. package/dist/test/unit/transactionBuilder/stakingBuilder.js +152 -0
  168. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  169. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  170. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +255 -0
  171. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
  172. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  173. package/dist/test/unit/transactionBuilder/transactionBuilder.js +639 -0
  174. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  175. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  176. package/dist/test/unit/transactionBuilder/transferBuilder.js +774 -0
  177. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts +2 -0
  178. package/dist/test/unit/transactionBuilder/unstakingBuilder.d.ts.map +1 -0
  179. package/dist/test/unit/transactionBuilder/unstakingBuilder.js +115 -0
  180. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts +2 -0
  181. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.d.ts.map +1 -0
  182. package/dist/test/unit/transactionBuilder/walrusStakingBuilder.js +162 -0
  183. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts +2 -0
  184. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.d.ts.map +1 -0
  185. package/dist/test/unit/transactionBuilder/walrusWithdrawBuilder.js +181 -0
  186. package/dist/test/unit/transferTransaction.d.ts +2 -0
  187. package/dist/test/unit/transferTransaction.d.ts.map +1 -0
  188. package/dist/test/unit/transferTransaction.js +94 -0
  189. package/dist/test/unit/utils.d.ts +2 -0
  190. package/dist/test/unit/utils.d.ts.map +1 -0
  191. package/dist/test/unit/utils.js +186 -0
  192. package/dist/tsconfig.tsbuildinfo +1 -0
  193. package/package.json +16 -12
  194. package/.eslintignore +0 -6
  195. package/.mocharc.yml +0 -7
  196. package/CHANGELOG.md +0 -390
@@ -3,14 +3,17 @@ import { TransferBuilder } from './transferBuilder';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
4
4
  import { Transaction } from './transaction';
5
5
  import { StakingBuilder } from './stakingBuilder';
6
- import { CustomProgrammableTransaction, StakingProgrammableTransaction, TransferProgrammableTransaction, UnstakingProgrammableTransaction } from './iface';
6
+ import { CustomProgrammableTransaction, StakingProgrammableTransaction, TransferProgrammableTransaction, UnstakingProgrammableTransaction, SuiProgrammableTransaction, TokenTransferProgrammableTransaction, WalrusStakingProgrammableTransaction, WalrusWithdrawStakeProgrammableTransaction } from './iface';
7
7
  import { TransactionBuilder } from './transactionBuilder';
8
8
  import { UnstakingBuilder } from './unstakingBuilder';
9
9
  import { CustomTransactionBuilder } from './customTransactionBuilder';
10
+ import { TokenTransferBuilder } from './tokenTransferBuilder';
11
+ import { WalrusStakingBuilder } from './walrusStakingBuilder';
12
+ import { WalrusWithdrawStakeBuilder } from './walrusWithdrawStakeBuilder';
10
13
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
11
14
  constructor(_coinConfig: Readonly<CoinConfig>);
12
15
  /** @inheritdoc */
13
- from(raw: string): TransactionBuilder<TransferProgrammableTransaction | StakingProgrammableTransaction>;
16
+ from(raw: string): TransactionBuilder<SuiProgrammableTransaction>;
14
17
  /** @inheritdoc */
15
18
  getTransferBuilder(tx?: Transaction<TransferProgrammableTransaction>): TransferBuilder;
16
19
  /** @inheritdoc */
@@ -20,6 +23,12 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
20
23
  /** @inheritdoc */
21
24
  getCustomTransactionBuilder(tx?: Transaction<CustomProgrammableTransaction>): CustomTransactionBuilder;
22
25
  /** @inheritdoc */
26
+ getTokenTransferBuilder(tx?: Transaction<TokenTransferProgrammableTransaction>): TokenTransferBuilder;
27
+ /** @inheritdoc */
28
+ getWalrusStakingBuilder(tx?: Transaction<WalrusStakingProgrammableTransaction>): WalrusStakingBuilder;
29
+ /** @inheritdoc */
30
+ getWalrusRequestWithdrawStakeBuilder(tx?: Transaction<WalrusWithdrawStakeProgrammableTransaction>): WalrusWithdrawStakeBuilder;
31
+ /** @inheritdoc */
23
32
  getWalletInitializationBuilder(): void;
24
33
  /**
25
34
  * Initialize the builder with the given transaction
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAG9B,+BAA+B,EAC/B,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,+BAA+B,GAAG,8BAA8B,CAAC;IA6BvG,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,GAAG,eAAe;IAItF,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,8BAA8B,CAAC,GAAG,cAAc;IAInF,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,gCAAgC,CAAC,GAAG,gBAAgB;IAIzF,kBAAkB;IAClB,2BAA2B,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,6BAA6B,CAAC,GAAG,wBAAwB;IAItG,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IASzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAKzB"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA2B,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAG9B,+BAA+B,EAC/B,gCAAgC,EAChC,0BAA0B,EAC1B,oCAAoC,EACpC,oCAAoC,EACpC,0CAA0C,EAC3C,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,0BAA0B,CAAC;IA0CjE,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,+BAA+B,CAAC,GAAG,eAAe;IAItF,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,8BAA8B,CAAC,GAAG,cAAc;IAInF,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,gCAAgC,CAAC,GAAG,gBAAgB;IAIzF,kBAAkB;IAClB,2BAA2B,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,6BAA6B,CAAC,GAAG,wBAAwB;IAItG,kBAAkB;IAClB,uBAAuB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,oCAAoC,CAAC,GAAG,oBAAoB;IAIrG,kBAAkB;IAClB,uBAAuB,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,oCAAoC,CAAC,GAAG,oBAAoB;IAIrG,kBAAkB;IAClB,oCAAoC,CAClC,EAAE,CAAC,EAAE,WAAW,CAAC,0CAA0C,CAAC,GAC3D,0BAA0B;IAI7B,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -16,6 +16,12 @@ const unstakingBuilder_1 = require("./unstakingBuilder");
16
16
  const unstakingTransaction_1 = require("./unstakingTransaction");
17
17
  const customTransaction_1 = require("./customTransaction");
18
18
  const customTransactionBuilder_1 = require("./customTransactionBuilder");
19
+ const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
20
+ const tokenTransferTransaction_1 = require("./tokenTransferTransaction");
21
+ const walrusStakingBuilder_1 = require("./walrusStakingBuilder");
22
+ const walrusStakingTransaction_1 = require("./walrusStakingTransaction");
23
+ const walrusWithdrawStakeBuilder_1 = require("./walrusWithdrawStakeBuilder");
24
+ const walrusWithdrawStakeTransaction_1 = require("./walrusWithdrawStakeTransaction");
19
25
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
20
26
  constructor(_coinConfig) {
21
27
  super(_coinConfig);
@@ -42,6 +48,19 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
42
48
  const customTransaction = new customTransaction_1.CustomTransaction(this._coinConfig);
43
49
  customTransaction.fromRawTransaction(raw);
44
50
  return this.getCustomTransactionBuilder(customTransaction);
51
+ case iface_1.SuiTransactionType.TokenTransfer:
52
+ const tokenTransferTx = new tokenTransferTransaction_1.TokenTransferTransaction(this._coinConfig);
53
+ tokenTransferTx.fromRawTransaction(raw);
54
+ return this.getTokenTransferBuilder(tokenTransferTx);
55
+ case iface_1.SuiTransactionType.WalrusStakeWithPool:
56
+ const walrusStakeTx = new walrusStakingTransaction_1.WalrusStakingTransaction(this._coinConfig);
57
+ walrusStakeTx.fromRawTransaction(raw);
58
+ return this.getWalrusStakingBuilder(walrusStakeTx);
59
+ case iface_1.SuiTransactionType.WalrusRequestWithdrawStake:
60
+ case iface_1.SuiTransactionType.WalrusWithdrawStake:
61
+ const walrusRequestWithdrawStakeTransaction = new walrusWithdrawStakeTransaction_1.WalrusWithdrawStakeTransaction(this._coinConfig);
62
+ walrusRequestWithdrawStakeTransaction.fromRawTransaction(raw);
63
+ return this.getWalrusRequestWithdrawStakeBuilder(walrusRequestWithdrawStakeTransaction);
45
64
  default:
46
65
  throw new sdk_core_1.InvalidTransactionError('Invalid transaction');
47
66
  }
@@ -67,6 +86,18 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
67
86
  return this.initializeBuilder(tx, new customTransactionBuilder_1.CustomTransactionBuilder(this._coinConfig));
68
87
  }
69
88
  /** @inheritdoc */
89
+ getTokenTransferBuilder(tx) {
90
+ return this.initializeBuilder(tx, new tokenTransferBuilder_1.TokenTransferBuilder(this._coinConfig));
91
+ }
92
+ /** @inheritdoc */
93
+ getWalrusStakingBuilder(tx) {
94
+ return this.initializeBuilder(tx, new walrusStakingBuilder_1.WalrusStakingBuilder(this._coinConfig));
95
+ }
96
+ /** @inheritdoc */
97
+ getWalrusRequestWithdrawStakeBuilder(tx) {
98
+ return this.initializeBuilder(tx, new walrusWithdrawStakeBuilder_1.WalrusWithdrawStakeBuilder(this._coinConfig));
99
+ }
100
+ /** @inheritdoc */
70
101
  getWalletInitializationBuilder() {
71
102
  throw new Error('Method not implemented.');
72
103
  }
@@ -93,4 +124,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
93
124
  }
94
125
  }
95
126
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsdURBQW9EO0FBRXBELCtDQUE0QztBQUM1QyxxREFBa0Q7QUFDbEQsbUNBT2lCO0FBQ2pCLDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFFNUQsb0RBQTRCO0FBQzVCLHlEQUFzRDtBQUN0RCxpRUFBOEQ7QUFDOUQsMkRBQXdEO0FBQ3hELHlFQUFzRTtBQUV0RSxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsZUFBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJO1lBQ0YsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO2dCQUNmLEtBQUssMEJBQWtCLENBQUMsUUFBUTtvQkFDOUIsTUFBTSxVQUFVLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzdELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdDLEtBQUssMEJBQWtCLENBQUMsUUFBUTtvQkFDOUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHVDQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDcEUsa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzNDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3BELEtBQUssMEJBQWtCLENBQUMsYUFBYTtvQkFDbkMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLDJDQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDeEUsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzdDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3hELEtBQUssMEJBQWtCLENBQUMsUUFBUTtvQkFDOUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDbEUsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzdEO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQzVEO1NBQ0Y7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWlEO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxFQUFnRDtRQUNoRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwrQkFBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsRUFBa0Q7UUFDcEUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksbUNBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiwyQkFBMkIsQ0FBQyxFQUErQztRQUN6RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxtREFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUV2QixFQUE2RixFQUFFLE9BQVU7UUFDekcsSUFBSSxFQUFFLEVBQUU7WUFDTixPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FDdEIsY0FBc0I7UUFFdEIsT0FBTyx5QkFBVyxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQXRGRCw4REFzRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7XG4gIEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFN1aVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvblR5cGUsXG4gIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFN0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4vc3Rha2luZ1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zZmVyVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zZmVyVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVW5zdGFraW5nQnVpbGRlciB9IGZyb20gJy4vdW5zdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgeyBVbnN0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4vdW5zdGFraW5nVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ3VzdG9tVHJhbnNhY3Rpb24gfSBmcm9tICcuL2N1c3RvbVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vY3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfCBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICB1dGlscy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgY29uc3QgdHggPSB0aGlzLnBhcnNlVHJhbnNhY3Rpb24ocmF3KTtcbiAgICB0cnkge1xuICAgICAgc3dpdGNoICh0eC50eXBlKSB7XG4gICAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyVHggPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICB0cmFuc2ZlclR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0cmFuc2ZlclR4KTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuQWRkU3Rha2U6XG4gICAgICAgICAgY29uc3Qgc3Rha2luZ1RyYW5zYWN0aW9uID0gbmV3IFN0YWtpbmdUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBzdGFraW5nVHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Rha2luZ0J1aWxkZXIoc3Rha2luZ1RyYW5zYWN0aW9uKTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2l0aGRyYXdTdGFrZTpcbiAgICAgICAgICBjb25zdCB1bnN0YWtpbmdUcmFuc2FjdGlvbiA9IG5ldyBVbnN0YWtpbmdUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICB1bnN0YWtpbmdUcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRVbnN0YWtpbmdCdWlsZGVyKHVuc3Rha2luZ1RyYW5zYWN0aW9uKTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg6XG4gICAgICAgICAgY29uc3QgY3VzdG9tVHJhbnNhY3Rpb24gPSBuZXcgQ3VzdG9tVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgY3VzdG9tVHJhbnNhY3Rpb24uZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyKGN1c3RvbVRyYW5zYWN0aW9uKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFN0YWtpbmdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248U3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFN0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRVbnN0YWtpbmdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248VW5zdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogVW5zdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBVbnN0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbjxDdXN0b21Qcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiBDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgQ3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8XG4gICAgVCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIHwgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPlxuICA+KHR4OiBUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIHwgU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB8IHVuZGVmaW5lZCwgYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqIFBhcnNlIHRoZSB0cmFuc2FjdGlvbiBmcm9tIGEgcmF3IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIHRoZSByYXcgdHhcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSBwYXJzZWR0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zYWN0aW9uKFxuICAgIHJhd1RyYW5zYWN0aW9uOiBzdHJpbmdcbiAgKTogU3VpVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiB8IFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgfVxufVxuIl19
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsdURBQW9EO0FBRXBELCtDQUE0QztBQUM1QyxxREFBa0Q7QUFDbEQsbUNBV2lCO0FBQ2pCLDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFFNUQsb0RBQTRCO0FBQzVCLHlEQUFzRDtBQUN0RCxpRUFBOEQ7QUFDOUQsMkRBQXdEO0FBQ3hELHlFQUFzRTtBQUN0RSxpRUFBOEQ7QUFDOUQseUVBQXNFO0FBQ3RFLGlFQUE4RDtBQUM5RCx5RUFBc0U7QUFDdEUsNkVBQTBFO0FBQzFFLHFGQUFrRjtBQUVsRixNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsZUFBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSywwQkFBa0IsQ0FBQyxRQUFRO29CQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLHlDQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDN0QsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0MsS0FBSywwQkFBa0IsQ0FBQyxRQUFRO29CQUM5QixNQUFNLGtCQUFrQixHQUFH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O0lBQ3BGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUJBQXVCLENBQUMsRUFBc0Q7UUFDNUUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1QkFBdUIsQ0FBQyxFQUFzRDtRQUM1RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9DQUFvQyxDQUNsQyxFQUE0RDtRQUU1RCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QjtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGlCQUFpQixDQUN2QixFQUF1RCxFQUN2RCxPQUFVO1FBRVYsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsY0FBc0I7UUFDN0MsT0FBTyx5QkFBVyxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQW5IRCw4REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7XG4gIEN1c3RvbVByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFN1aVRyYW5zYWN0aW9uLFxuICBTdWlUcmFuc2FjdGlvblR5cGUsXG4gIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbiAgVG9rZW5UcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uLFxuICBXYWxydXNTdGFraW5nUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sXG4gIFdhbHJ1c1dpdGhkcmF3U3Rha2VQcm9ncmFtbWFibGVUcmFuc2FjdGlvbixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBTdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3N0YWtpbmdUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFVuc3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3Vuc3Rha2luZ0J1aWxkZXInO1xuaW1wb3J0IHsgVW5zdGFraW5nVHJhbnNhY3Rpb24gfSBmcm9tICcuL3Vuc3Rha2luZ1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9jdXN0b21UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2N1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgV2FscnVzU3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL3dhbHJ1c1N0YWtpbmdCdWlsZGVyJztcbmltcG9ydCB7IFdhbHJ1c1N0YWtpbmdUcmFuc2FjdGlvbiB9IGZyb20gJy4vd2FscnVzU3Rha2luZ1RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyIH0gZnJvbSAnLi93YWxydXNXaXRoZHJhd1N0YWtlQnVpbGRlcic7XG5pbXBvcnQgeyBXYWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24gfSBmcm9tICcuL3dhbHJ1c1dpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlcjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIHV0aWxzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VUcmFuc2FjdGlvbihyYXcpO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXI6XG4gICAgICAgICAgY29uc3QgdHJhbnNmZXJUeCA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHRyYW5zZmVyVHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHRyYW5zZmVyVHgpO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5BZGRTdGFrZTpcbiAgICAgICAgICBjb25zdCBzdGFraW5nVHJhbnNhY3Rpb24gPSBuZXcgU3Rha2luZ1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHN0YWtpbmdUcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGFraW5nQnVpbGRlcihzdGFraW5nVHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5XaXRoZHJhd1N0YWtlOlxuICAgICAgICAgIGNvbnN0IHVuc3Rha2luZ1RyYW5zYWN0aW9uID0gbmV3IFVuc3Rha2luZ1RyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgICAgIHVuc3Rha2luZ1RyYW5zYWN0aW9uLmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFVuc3Rha2luZ0J1aWxkZXIodW5zdGFraW5nVHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDpcbiAgICAgICAgICBjb25zdCBjdXN0b21UcmFuc2FjdGlvbiA9IG5ldyBDdXN0b21UcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgICBjdXN0b21UcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDdXN0b21UcmFuc2FjdGlvbkJ1aWxkZXIoY3VzdG9tVHJhbnNhY3Rpb24pO1xuICAgICAgICBjYXNlIFN1aVRyYW5zYWN0aW9uVHlwZS5Ub2tlblRyYW5zZmVyOlxuICAgICAgICAgIGNvbnN0IHRva2VuVHJhbnNmZXJUeCA9IG5ldyBUb2tlblRyYW5zZmVyVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgdG9rZW5UcmFuc2ZlclR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRva2VuVHJhbnNmZXJCdWlsZGVyKHRva2VuVHJhbnNmZXJUeCk7XG4gICAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1N0YWtlV2l0aFBvb2w6XG4gICAgICAgICAgY29uc3Qgd2FscnVzU3Rha2VUeCA9IG5ldyBXYWxydXNTdGFraW5nVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgd2FscnVzU3Rha2VUeC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxydXNTdGFraW5nQnVpbGRlcih3YWxydXNTdGFrZVR4KTtcbiAgICAgICAgY2FzZSBTdWlUcmFuc2FjdGlvblR5cGUuV2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2U6XG4gICAgICAgIGNhc2UgU3VpVHJhbnNhY3Rpb25UeXBlLldhbHJ1c1dpdGhkcmF3U3Rha2U6XG4gICAgICAgICAgY29uc3Qgd2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbiA9IG5ldyBXYWxydXNXaXRoZHJhd1N0YWtlVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgICAgd2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbi5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxydXNSZXF1ZXN0V2l0aGRyYXdTdGFrZUJ1aWxkZXIod2FscnVzUmVxdWVzdFdpdGhkcmF3U3Rha2VUcmFuc2FjdGlvbik7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRTdGFraW5nQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uPFN0YWtpbmdQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiBTdGFraW5nQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBTdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VW5zdGFraW5nQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uPFVuc3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFVuc3Rha2luZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVW5zdGFraW5nQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0Q3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248Q3VzdG9tUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogQ3VzdG9tVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IEN1c3RvbVRyYW5zYWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbjxUb2tlblRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbHJ1c1N0YWtpbmdCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb248V2FscnVzU3Rha2luZ1Byb2dyYW1tYWJsZVRyYW5zYWN0aW9uPik6IFdhbHJ1c1N0YWtpbmdCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbHJ1c1N0YWtpbmdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxydXNSZXF1ZXN0V2l0aGRyYXdTdGFrZUJ1aWxkZXIoXG4gICAgdHg/OiBUcmFuc2FjdGlvbjxXYWxydXNXaXRoZHJhd1N0YWtlUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+XG4gICk6IFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbHJ1c1dpdGhkcmF3U3Rha2VCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4+KFxuICAgIHR4OiBUcmFuc2FjdGlvbjxTdWlQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4gfCB1bmRlZmluZWQsXG4gICAgYnVpbGRlcjogVFxuICApOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxuXG4gIC8qKiBQYXJzZSB0aGUgdHJhbnNhY3Rpb24gZnJvbSBhIHJhdyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSB0aGUgcmF3IHR4XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gcGFyc2VkdHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogU3VpVHJhbnNhY3Rpb248U3VpUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb24uZGVzZXJpYWxpemVTdWlUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -4,11 +4,35 @@ import { BaseKey, Recipient, TransactionType } from '@bitgo-beta/sdk-core';
4
4
  import { SuiTransaction, TransferProgrammableTransaction } from './iface';
5
5
  import { Transaction } from './transaction';
6
6
  import { TransferTransaction } from './transferTransaction';
7
+ import BigNumber from 'bignumber.js';
7
8
  export declare class TransferBuilder extends TransactionBuilder<TransferProgrammableTransaction> {
8
9
  protected _recipients: Recipient[];
10
+ /**
11
+ * Balance held in the Sui address balance system (not in coin objects).
12
+ * When set, this amount is included in the total available balance for transfer.
13
+ * At execution time, Sui's GasCoin automatically draws from both coin objects
14
+ * (gasData.payment) and address balance, so SplitCoins(GasCoin, [amount])
15
+ * can spend funds from either source.
16
+ */
17
+ protected _fundsInAddressBalance: BigNumber;
9
18
  constructor(_coinConfig: Readonly<CoinConfig>);
10
19
  protected get transactionType(): TransactionType;
11
20
  send(recipients: Recipient[]): this;
21
+ /**
22
+ * Set the amount of funds held in the Sui address balance system for this sender.
23
+ * This is the `fundsInAddressBalance` value from the `suix_getBalance` RPC response.
24
+ * It is added to the coin object balances when computing total available funds.
25
+ *
26
+ * @param {string} amount - amount in MIST held in address balance
27
+ */
28
+ fundsInAddressBalance(amount: string): this;
29
+ /**
30
+ * Returns the total available balance: sum of all gas payment coin object
31
+ * balances plus any funds held in the address balance system.
32
+ *
33
+ * @param {BigNumber} coinObjectsBalance - sum of balances from gasData.payment coin objects
34
+ */
35
+ totalAvailableBalance(coinObjectsBalance: BigNumber): BigNumber;
12
36
  /** @inheritdoc */
13
37
  validateTransaction(transaction: TransferTransaction): void;
14
38
  /** @inheritdoc */
@@ -28,7 +52,26 @@ export declare class TransferBuilder extends TransactionBuilder<TransferProgramm
28
52
  */
29
53
  private validateTransactionFields;
30
54
  /**
31
- * Build transfer programmable transaction
55
+ * Build transfer programmable transaction.
56
+ *
57
+ * Three build paths:
58
+ *
59
+ * Path 1a — Sponsored with coin objects (sender ≠ gasData.owner, inputObjects provided):
60
+ * [optional withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI>]
61
+ * MergeCoins(inputObject[0], [inputObject[1..], addrCoin?])
62
+ * SplitCoins(mergedObject, [amount]) → TransferObjects
63
+ * Handles Cases 4 (coins only), 6 (coins, sponsor addr-bal gas), 8 (coins+addr-bal).
64
+ *
65
+ * Path 1b — Sponsored, address balance only (sender ≠ gasData.owner, no inputObjects):
66
+ * withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI>
67
+ * SplitCoins(addrCoin, [amount]) → TransferObjects
68
+ * Handles Case 5 (sponsor coin-object gas) and Case 7/Phase-4b (sponsor addr-bal gas).
69
+ * Caller must set ValidDuring expiration when gasData.payment = [] (Cases 7, 9).
70
+ *
71
+ * Path 2 — Self-pay (sender === gasData.owner):
72
+ * SplitCoins(GasCoin, [amount]) → TransferObjects
73
+ * GasCoin at Sui execution time = gasData.payment objects merged + fundsInAddressBalance.
74
+ * Handles Case 1 (coins), Case 2 (addr-bal only, caller sets ValidDuring), Case 3 (mixed).
32
75
  *
33
76
  * @protected
34
77
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAyB,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAsB,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,qBAAa,eAAgB,SAAQ,kBAAkB,CAAC,+BAA+B,CAAC;IACtF,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;gBAEvB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAMnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAO3D,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxB,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,+BAA+B,CAAC;IAQlG,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAgB5F;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAgB1C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,IAAI,cAAc,CAAC,+BAA+B,CAAC;CA0BjF"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAyB,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAsB,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAU5D,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,qBAAa,eAAgB,SAAQ,kBAAkB,CAAC,+BAA+B,CAAC;IACtF,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,sBAAsB,EAAE,SAAS,CAAoB;gBAEnD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI;IAMnC;;;;;;OAMG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3C;;;;;OAKG;IACH,qBAAqB,CAAC,kBAAkB,EAAE,SAAS,GAAG,SAAS;IAI/D,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAO3D,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAKxB,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,+BAA+B,CAAC;IAQlG,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAgB5F;;;;OAIG;IACH,WAAW,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI;IAqC1C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,SAAS,CAAC,mBAAmB,IAAI,cAAc,CAAC,+BAA+B,CAAC;CA+IjF"}
@@ -11,9 +11,19 @@ const transferTransaction_1 = require("./transferTransaction");
11
11
  const assert_1 = __importDefault(require("assert"));
12
12
  const builder_1 = require("./mystenlab/builder");
13
13
  const utils_1 = __importDefault(require("./utils"));
14
+ const constants_1 = require("./constants");
15
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
14
16
  class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
15
17
  constructor(_coinConfig) {
16
18
  super(_coinConfig);
19
+ /**
20
+ * Balance held in the Sui address balance system (not in coin objects).
21
+ * When set, this amount is included in the total available balance for transfer.
22
+ * At execution time, Sui's GasCoin automatically draws from both coin objects
23
+ * (gasData.payment) and address balance, so SplitCoins(GasCoin, [amount])
24
+ * can spend funds from either source.
25
+ */
26
+ this._fundsInAddressBalance = new bignumber_js_1.default(0);
17
27
  this._transaction = new transferTransaction_1.TransferTransaction(_coinConfig);
18
28
  }
19
29
  get transactionType() {
@@ -24,6 +34,26 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
24
34
  this._recipients = recipients;
25
35
  return this;
26
36
  }
37
+ /**
38
+ * Set the amount of funds held in the Sui address balance system for this sender.
39
+ * This is the `fundsInAddressBalance` value from the `suix_getBalance` RPC response.
40
+ * It is added to the coin object balances when computing total available funds.
41
+ *
42
+ * @param {string} amount - amount in MIST held in address balance
43
+ */
44
+ fundsInAddressBalance(amount) {
45
+ this._fundsInAddressBalance = new bignumber_js_1.default(amount);
46
+ return this;
47
+ }
48
+ /**
49
+ * Returns the total available balance: sum of all gas payment coin object
50
+ * balances plus any funds held in the address balance system.
51
+ *
52
+ * @param {BigNumber} coinObjectsBalance - sum of balances from gasData.payment coin objects
53
+ */
54
+ totalAvailableBalance(coinObjectsBalance) {
55
+ return coinObjectsBalance.plus(this._fundsInAddressBalance);
56
+ }
27
57
  /** @inheritdoc */
28
58
  validateTransaction(transaction) {
29
59
  if (!transaction.suiTransaction) {
@@ -71,6 +101,21 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
71
101
  this.type(iface_1.SuiTransactionType.Transfer);
72
102
  this.sender(txData.sender);
73
103
  this.gasData(txData.gasData);
104
+ if (txData.expiration && !('None' in txData.expiration)) {
105
+ this._expiration = txData.expiration;
106
+ }
107
+ if (txData.inputObjects) {
108
+ this.inputObjects(txData.inputObjects);
109
+ }
110
+ // Reconstruct fundsInAddressBalance from BalanceWithdrawal input if present.
111
+ // After BCS deserialization inputs are CallArg format: { BalanceWithdrawal: {...} }
112
+ // During building they are TransactionBlockInput format: { kind:'Input', value: { BalanceWithdrawal: {...} } }
113
+ const withdrawalInput = tx.suiTransaction?.tx?.inputs?.find((input) => (input !== null && typeof input === 'object' && 'BalanceWithdrawal' in input) ||
114
+ (input?.value !== null && typeof input?.value === 'object' && 'BalanceWithdrawal' in (input.value ?? {})));
115
+ if (withdrawalInput) {
116
+ const bw = withdrawalInput.BalanceWithdrawal ?? withdrawalInput.value?.BalanceWithdrawal;
117
+ this._fundsInAddressBalance = new bignumber_js_1.default(String(bw.reservation?.MaxAmountU64 ?? bw.amount));
118
+ }
74
119
  const recipients = utils_1.default.getRecipients(tx.suiTransaction);
75
120
  this.send(recipients);
76
121
  }
@@ -78,39 +123,178 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
78
123
  * Validates all fields are defined
79
124
  */
80
125
  validateTransactionFields() {
81
- assert_1.default(this._type, new sdk_core_1.BuildTransactionError('type is required before building'));
82
- assert_1.default(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
83
- assert_1.default(this._recipients && this._recipients.length > 0, new sdk_core_1.BuildTransactionError('at least one recipient is required before building'));
84
- assert_1.default(this._gasData, new sdk_core_1.BuildTransactionError('gasData is required before building'));
126
+ (0, assert_1.default)(this._type, new sdk_core_1.BuildTransactionError('type is required before building'));
127
+ (0, assert_1.default)(this._sender, new sdk_core_1.BuildTransactionError('sender is required before building'));
128
+ (0, assert_1.default)(this._recipients && this._recipients.length > 0, new sdk_core_1.BuildTransactionError('at least one recipient is required before building'));
129
+ (0, assert_1.default)(this._gasData, new sdk_core_1.BuildTransactionError('gasData is required before building'));
85
130
  this.validateGasData(this._gasData);
131
+ // If inputObjects are provided, validate them
132
+ if (this._inputObjects && this._inputObjects.length > 0) {
133
+ this.validateInputObjectsBase(this._inputObjects);
134
+ }
135
+ // When fundsInAddressBalance is set, validate that total recipient amount
136
+ // does not exceed available address balance. Coin object balances are not
137
+ // stored in the builder (gasData.payment holds only ObjectRefs), so only
138
+ // the address balance portion can be cross-checked here.
139
+ if (this._fundsInAddressBalance.gt(0)) {
140
+ const totalRecipientAmount = this._recipients.reduce((acc, r) => acc.plus(new bignumber_js_1.default(r.amount)), new bignumber_js_1.default(0));
141
+ (0, assert_1.default)(totalRecipientAmount.gt(0), new sdk_core_1.BuildTransactionError('total recipient amount must be greater than 0'));
142
+ }
86
143
  }
87
144
  /**
88
- * Build transfer programmable transaction
145
+ * Build transfer programmable transaction.
146
+ *
147
+ * Three build paths:
148
+ *
149
+ * Path 1a — Sponsored with coin objects (sender ≠ gasData.owner, inputObjects provided):
150
+ * [optional withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI>]
151
+ * MergeCoins(inputObject[0], [inputObject[1..], addrCoin?])
152
+ * SplitCoins(mergedObject, [amount]) → TransferObjects
153
+ * Handles Cases 4 (coins only), 6 (coins, sponsor addr-bal gas), 8 (coins+addr-bal).
154
+ *
155
+ * Path 1b — Sponsored, address balance only (sender ≠ gasData.owner, no inputObjects):
156
+ * withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI>
157
+ * SplitCoins(addrCoin, [amount]) → TransferObjects
158
+ * Handles Case 5 (sponsor coin-object gas) and Case 7/Phase-4b (sponsor addr-bal gas).
159
+ * Caller must set ValidDuring expiration when gasData.payment = [] (Cases 7, 9).
160
+ *
161
+ * Path 2 — Self-pay (sender === gasData.owner):
162
+ * SplitCoins(GasCoin, [amount]) → TransferObjects
163
+ * GasCoin at Sui execution time = gasData.payment objects merged + fundsInAddressBalance.
164
+ * Handles Case 1 (coins), Case 2 (addr-bal only, caller sets ValidDuring), Case 3 (mixed).
89
165
  *
90
166
  * @protected
91
167
  */
92
168
  buildSuiTransaction() {
93
169
  this.validateTransactionFields();
94
170
  const programmableTxBuilder = new builder_1.TransactionBlock();
95
- this._recipients.forEach((recipient) => {
96
- const coin = programmableTxBuilder.add(builder_1.Transactions.SplitCoins(programmableTxBuilder.gas, [
97
- programmableTxBuilder.pure(Number(recipient.amount)),
98
- ]));
99
- programmableTxBuilder.add(builder_1.Transactions.TransferObjects([coin], programmableTxBuilder.object(recipient.address)));
100
- });
101
- const txData = programmableTxBuilder.blockData;
102
- return {
103
- type: this._type,
104
- sender: this._sender,
105
- tx: {
106
- inputs: [...txData.inputs],
107
- transactions: [...txData.transactions],
108
- },
109
- gasData: {
110
- ...this._gasData,
111
- },
112
- };
171
+ if (this._sender !== this._gasData.owner && this._inputObjects && this._inputObjects.length > 0) {
172
+ // Path 1: sponsored transaction.
173
+ // The fee payer (gasData.owner) pays gas. The sender's funds come from:
174
+ // - coin objects (inputObjects)
175
+ // - address balance via tx.withdrawal() + 0x2::coin::redeem_funds
176
+ const inputObjects = this._inputObjects.map((object) => programmableTxBuilder.object(builder_1.Inputs.ObjectRef(object)));
177
+ // If the sender also has address balance, withdraw it as a Coin<SUI> and
178
+ // merge it into the coin-object pool before splitting for recipients.
179
+ if (this._fundsInAddressBalance.gt(0)) {
180
+ const [addrCoin] = programmableTxBuilder.moveCall({
181
+ target: '0x2::coin::redeem_funds',
182
+ typeArguments: ['0x2::sui::SUI'],
183
+ arguments: [programmableTxBuilder.withdrawal({ amount: BigInt(this._fundsInAddressBalance.toFixed()) })],
184
+ });
185
+ inputObjects.push(addrCoin);
186
+ }
187
+ const mergedObject = inputObjects.shift();
188
+ if (inputObjects.length > 0) {
189
+ programmableTxBuilder.mergeCoins(mergedObject, inputObjects);
190
+ }
191
+ this._recipients.forEach((recipient) => {
192
+ const splitObject = programmableTxBuilder.splitCoins(mergedObject, [
193
+ programmableTxBuilder.pure(Number(recipient.amount)),
194
+ ]);
195
+ programmableTxBuilder.transferObjects([splitObject], programmableTxBuilder.object(recipient.address));
196
+ });
197
+ const txData = programmableTxBuilder.blockData;
198
+ return {
199
+ type: this._type,
200
+ sender: this._sender,
201
+ tx: {
202
+ inputs: [...txData.inputs],
203
+ transactions: [...txData.transactions],
204
+ },
205
+ gasData: {
206
+ ...this._gasData,
207
+ },
208
+ expiration: this._expiration,
209
+ fundsInAddressBalance: this._fundsInAddressBalance.gt(0) ? this._fundsInAddressBalance.toFixed() : undefined,
210
+ };
211
+ }
212
+ else if (this._sender !== this._gasData.owner && this._fundsInAddressBalance.gt(0)) {
213
+ // Path 1b: sponsored, address balance only — no coin inputObjects.
214
+ // Sender's funds come entirely from address balance; gas is paid by the sponsor.
215
+ // withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI> → SplitCoins → TransferObjects
216
+ const [addrCoin] = programmableTxBuilder.moveCall({
217
+ target: '0x2::coin::redeem_funds',
218
+ typeArguments: ['0x2::sui::SUI'],
219
+ arguments: [programmableTxBuilder.withdrawal({ amount: BigInt(this._fundsInAddressBalance.toFixed()) })],
220
+ });
221
+ // addrCoin is a command result (from redeem_funds) and must be explicitly consumed.
222
+ // Split for every recipient — keeps a 1:1 SplitCoins↔TransferObjects structure for the
223
+ // transaction parser. After all splits, consume the source coin explicitly:
224
+ // - If there is change (fundsInAddressBalance > total recipient amount): return addrCoin
225
+ // to sender via TransferObjects.
226
+ // - If send-all (no change): addrCoin has 0 balance; destroy it by merging into the
227
+ // sponsor's gas coin (a 0-value merge is valid in Sui and deletes the source object).
228
+ const totalRecipientAmount = this._recipients.reduce((sum, r) => sum.plus(r.amount), new bignumber_js_1.default(0));
229
+ const hasChange = this._fundsInAddressBalance.gt(totalRecipientAmount);
230
+ this._recipients.forEach((recipient) => {
231
+ const splitObject = programmableTxBuilder.splitCoins(addrCoin, [
232
+ programmableTxBuilder.pure(Number(recipient.amount)),
233
+ ]);
234
+ programmableTxBuilder.transferObjects([splitObject], programmableTxBuilder.object(recipient.address));
235
+ });
236
+ if (hasChange) {
237
+ // Return the remaining balance (change) to the sender.
238
+ programmableTxBuilder.transferObjects([addrCoin], programmableTxBuilder.object(this._sender));
239
+ }
240
+ else {
241
+ // Send-all: addrCoin has 0 balance after all splits. Merge it into the sponsor's gas
242
+ // coin to destroy the zero-balance object (coin::join accepts a 0-value source).
243
+ programmableTxBuilder.mergeCoins(programmableTxBuilder.gas, [addrCoin]);
244
+ }
245
+ const txData1b = programmableTxBuilder.blockData;
246
+ return {
247
+ type: this._type,
248
+ sender: this._sender,
249
+ tx: {
250
+ inputs: [...txData1b.inputs],
251
+ transactions: [...txData1b.transactions],
252
+ },
253
+ gasData: {
254
+ ...this._gasData,
255
+ },
256
+ expiration: this._expiration,
257
+ fundsInAddressBalance: this._fundsInAddressBalance.toFixed(),
258
+ };
259
+ }
260
+ else {
261
+ // number of objects passed as gas payment should be strictly less than `MAX_GAS_OBJECTS`. When the transaction
262
+ // requires a larger number of inputs we use the merge command to merge the rest of the objects into the gasCoin
263
+ if (this._gasData.payment.length >= constants_1.MAX_GAS_OBJECTS) {
264
+ const gasPaymentObjects = this._gasData.payment
265
+ .slice(constants_1.MAX_GAS_OBJECTS - 1)
266
+ .map((object) => builder_1.Inputs.ObjectRef(object));
267
+ // limit for total number of `args: CallArg[]` for a single command is MAX_COMMAND_ARGS so the max length of
268
+ // `sources[]` for a `mergeCoins(destination, sources[])` command is MAX_COMMAND_ARGS - 1 (1 used up for
269
+ // `destination`). We need to create a total of `gasPaymentObjects/(MAX_COMMAND_ARGS - 1)` merge commands to
270
+ // merge all the objects
271
+ while (gasPaymentObjects.length > 0) {
272
+ programmableTxBuilder.mergeCoins(programmableTxBuilder.gas, gasPaymentObjects.splice(0, constants_1.MAX_COMMAND_ARGS - 1).map((object) => programmableTxBuilder.object(object)));
273
+ }
274
+ }
275
+ this._recipients.forEach((recipient) => {
276
+ const coin = programmableTxBuilder.add(builder_1.Transactions.SplitCoins(programmableTxBuilder.gas, [
277
+ programmableTxBuilder.pure(Number(recipient.amount)),
278
+ ]));
279
+ programmableTxBuilder.add(builder_1.Transactions.TransferObjects([coin], programmableTxBuilder.object(recipient.address)));
280
+ });
281
+ const txData = programmableTxBuilder.blockData;
282
+ return {
283
+ type: this._type,
284
+ sender: this._sender,
285
+ tx: {
286
+ inputs: [...txData.inputs],
287
+ transactions: [...txData.transactions],
288
+ },
289
+ gasData: {
290
+ ...this._gasData,
291
+ payment: this._gasData.payment.slice(0, constants_1.MAX_GAS_OBJECTS - 1),
292
+ },
293
+ expiration: this._expiration,
294
+ fundsInAddressBalance: this._fundsInAddressBalance.gt(0) ? this._fundsInAddressBalance.toFixed() : undefined,
295
+ };
296
+ }
113
297
  }
114
298
  }
115
299
  exports.TransferBuilder = TransferBuilder;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELG1EQUFrRztBQUNsRyxtQ0FBOEY7QUFFOUYsK0RBQTREO0FBQzVELG9EQUE0QjtBQUM1QixpREFHNkI7QUFDN0Isb0RBQTRCO0FBRTVCLE1BQWEsZUFBZ0IsU0FBUSx1Q0FBbUQ7SUFHdEYsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQXVCO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBZ0M7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFJLENBQUMsR0FBWTtRQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUMvRCxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxjQUFzQjtRQUNqRCxNQUFNLEVBQUUsR0FB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TyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckMsTUFBTSxJQUFJLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUNwQyxzQkFBdUIsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUM1RCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNyRCxDQUFDLENBQ0gsQ0FBQztZQUNGLHFCQUFxQixDQUFDLEdBQUcsQ0FDdkIsc0JBQXVCLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUNqRyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7UUFDL0MsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsRUFBRSxFQUFFO2dCQUNGLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDMUIsWUFBWSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2FBQ3ZDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDakI7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBNUhELDBDQTRIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VLZXksIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgUmVjaXBpZW50LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBTdWlUcmFuc2FjdGlvbiwgU3VpVHJhbnNhY3Rpb25UeXBlLCBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNmZXJUcmFuc2FjdGlvbic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbnMgYXMgVHJhbnNhY3Rpb25zQ29uc3RydWN0b3IsXG4gIFRyYW5zYWN0aW9uQmxvY2sgYXMgUHJvZ3JhbW1pbmdUcmFuc2FjdGlvbkJsb2NrQnVpbGRlcixcbn0gZnJvbSAnLi9teXN0ZW5sYWIvYnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXI8VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICBwcm90ZWN0ZWQgX3JlY2lwaWVudHM6IFJlY2lwaWVudFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnRzOiBSZWNpcGllbnRbXSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHMpO1xuICAgIHRoaXMuX3JlY2lwaWVudHMgPSByZWNpcGllbnRzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zZmVyVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXRyYW5zYWN0aW9uLnN1aVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbkZpZWxkcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHNpZ24oa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRTdWlUcmFuc2FjdGlvbih0aGlzLmJ1aWxkU3VpVHJhbnNhY3Rpb24oKSk7XG4gICAgc3VwZXIuc2lnbihrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+PiB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRTdWlUcmFuc2FjdGlvbih0aGlzLmJ1aWxkU3VpVHJhbnNhY3Rpb24oKSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuXG4gICAgaWYgKHRoaXMuX3NpZ25lcikge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5zaWduKHRoaXMuX3NpZ25lcik7XG4gICAgfVxuXG4gICAgdGhpcy5fc2lnbmF0dXJlcy5mb3JFYWNoKChzaWduYXR1cmUpID0+IHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHNpZ25hdHVyZS5wdWJsaWNLZXksIHNpZ25hdHVyZS5zaWduYXR1cmUpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2ZlclRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0eDtcblxuICAgIGlmICh0eC5zaWduYXR1cmUgJiYgdHguc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbdHguc3VpU2lnbmF0dXJlXTtcbiAgICB9XG5cbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLnR5cGUoU3VpVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyKTtcbiAgICB0aGlzLnNlbmRlcih0eERhdGEuc2VuZGVyKTtcbiAgICB0aGlzLmdhc0RhdGEodHhEYXRhLmdhc0RhdGEpO1xuXG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHV0aWxzLmdldFJlY2lwaWVudHModHguc3VpVHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuc2VuZChyZWNpcGllbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYWxsIGZpZWxkcyBhcmUgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIGFzc2VydCh0aGlzLl90eXBlLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd0eXBlIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQodGhpcy5fc2VuZGVyLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzZW5kZXIgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydChcbiAgICAgIHRoaXMuX3JlY2lwaWVudHMgJiYgdGhpcy5fcmVjaXBpZW50cy5sZW5ndGggPiAwLFxuICAgICAgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignYXQgbGVhc3Qgb25lIHJlY2lwaWVudCBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKVxuICAgICk7XG4gICAgYXNzZXJ0KHRoaXMuX2dhc0RhdGEsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2dhc0RhdGEgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIHRoaXMudmFsaWRhdGVHYXNEYXRhKHRoaXMuX2dhc0RhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRyYW5zZmVyIHByb2dyYW1tYWJsZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRTdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk7XG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyID0gbmV3IFByb2dyYW1taW5nVHJhbnNhY3Rpb25CbG9ja0J1aWxkZXIoKTtcbiAgICB0aGlzLl9yZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgY29pbiA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5hZGQoXG4gICAgICAgIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLlNwbGl0Q29pbnMocHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmdhcywgW1xuICAgICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5wdXJlKE51bWJlcihyZWNpcGllbnQuYW1vdW50KSksXG4gICAgICAgIF0pXG4gICAgICApO1xuICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmFkZChcbiAgICAgICAgVHJhbnNhY3Rpb25zQ29uc3RydWN0b3IuVHJhbnNmZXJPYmplY3RzKFtjb2luXSwgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChyZWNpcGllbnQuYWRkcmVzcykpXG4gICAgICApO1xuICAgIH0pO1xuICAgIGNvbnN0IHR4RGF0YSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5ibG9ja0RhdGE7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUsXG4gICAgICBzZW5kZXI6IHRoaXMuX3NlbmRlcixcbiAgICAgIHR4OiB7XG4gICAgICAgIGlucHV0czogWy4uLnR4RGF0YS5pbnB1dHNdLFxuICAgICAgICB0cmFuc2FjdGlvbnM6IFsuLi50eERhdGEudHJhbnNhY3Rpb25zXSxcbiAgICAgIH0sXG4gICAgICBnYXNEYXRhOiB7XG4gICAgICAgIC4uLnRoaXMuX2dhc0RhdGEsXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELG1EQUFrRztBQUNsRyxtQ0FBOEY7QUFFOUYsK0RBQTREO0FBQzVELG9EQUE0QjtBQUM1QixpREFLNkI7QUFDN0Isb0RBQTRCO0FBQzVCLDJDQUFnRTtBQUNoRSxnRUFBcUM7QUFFckMsTUFBYSxlQUFnQixTQUFRLHVDQUFtRDtJQVd0RixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVZyQjs7Ozs7O1dBTUc7UUFDTywyQkFBc0IsR0FBYyxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFJN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQXVCO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxNQUFjO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBQyxrQkFBNkI7UUFDakQsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtJ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RTtvQkFDUCxHQUFHLElBQUksQ0FBQyxRQUFRO29CQUNoQixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSwyQkFBZSxHQUFHLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM1QixxQkFBcUIsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDN0csQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF4VUQsMENBd1VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZUtleSwgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBSZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFN1aVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvblR5cGUsIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIElucHV0cyxcbiAgVHJhbnNhY3Rpb25zIGFzIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLFxuICBUcmFuc2FjdGlvbkJsb2NrIGFzIFByb2dyYW1taW5nVHJhbnNhY3Rpb25CbG9ja0J1aWxkZXIsXG4gIFRyYW5zYWN0aW9uQXJndW1lbnQsXG59IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTUFYX0NPTU1BTkRfQVJHUywgTUFYX0dBU19PQkpFQ1RTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgcHJvdGVjdGVkIF9yZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcbiAgLyoqXG4gICAqIEJhbGFuY2UgaGVsZCBpbiB0aGUgU3VpIGFkZHJlc3MgYmFsYW5jZSBzeXN0ZW0gKG5vdCBpbiBjb2luIG9iamVjdHMpLlxuICAgKiBXaGVuIHNldCwgdGhpcyBhbW91bnQgaXMgaW5jbHVkZWQgaW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBiYWxhbmNlIGZvciB0cmFuc2Zlci5cbiAgICogQXQgZXhlY3V0aW9uIHRpbWUsIFN1aSdzIEdhc0NvaW4gYXV0b21hdGljYWxseSBkcmF3cyBmcm9tIGJvdGggY29pbiBvYmplY3RzXG4gICAqIChnYXNEYXRhLnBheW1lbnQpIGFuZCBhZGRyZXNzIGJhbGFuY2UsIHNvIFNwbGl0Q29pbnMoR2FzQ29pbiwgW2Ftb3VudF0pXG4gICAqIGNhbiBzcGVuZCBmdW5kcyBmcm9tIGVpdGhlciBzb3VyY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZTogQmlnTnVtYmVyID0gbmV3IEJpZ051bWJlcigwKTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50czogUmVjaXBpZW50W10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFtb3VudCBvZiBmdW5kcyBoZWxkIGluIHRoZSBTdWkgYWRkcmVzcyBiYWxhbmNlIHN5c3RlbSBmb3IgdGhpcyBzZW5kZXIuXG4gICAqIFRoaXMgaXMgdGhlIGBmdW5kc0luQWRkcmVzc0JhbGFuY2VgIHZhbHVlIGZyb20gdGhlIGBzdWl4X2dldEJhbGFuY2VgIFJQQyByZXNwb25zZS5cbiAgICogSXQgaXMgYWRkZWQgdG8gdGhlIGNvaW4gb2JqZWN0IGJhbGFuY2VzIHdoZW4gY29tcHV0aW5nIHRvdGFsIGF2YWlsYWJsZSBmdW5kcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIGFtb3VudCBpbiBNSVNUIGhlbGQgaW4gYWRkcmVzcyBiYWxhbmNlXG4gICAqL1xuICBmdW5kc0luQWRkcmVzc0JhbGFuY2UoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdG90YWwgYXZhaWxhYmxlIGJhbGFuY2U6IHN1bSBvZiBhbGwgZ2FzIHBheW1lbnQgY29pbiBvYmplY3RcbiAgICogYmFsYW5jZXMgcGx1cyBhbnkgZnVuZHMgaGVsZCBpbiB0aGUgYWRkcmVzcyBiYWxhbmNlIHN5c3RlbS5cbiAgICpcbiAgICogQHBhcmFtIHtCaWdOdW1iZXJ9IGNvaW5PYmplY3RzQmFsYW5jZSAtIHN1bSBvZiBiYWxhbmNlcyBmcm9tIGdhc0RhdGEucGF5bWVudCBjb2luIG9iamVjdHNcbiAgICovXG4gIHRvdGFsQXZhaWxhYmxlQmFsYW5jZShjb2luT2JqZWN0c0JhbGFuY2U6IEJpZ051bWJlcik6IEJpZ051bWJlciB7XG4gICAgcmV0dXJuIGNvaW5PYmplY3RzQmFsYW5jZS5wbHVzKHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNmZXJUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24uc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2lnbihrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFN1aVRyYW5zYWN0aW9uKHRoaXMuYnVpbGRTdWlUcmFuc2FjdGlvbigpKTtcbiAgICBzdXBlci5zaWduKGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFN1aVRyYW5zYWN0aW9uKHRoaXMuYnVpbGRTdWlUcmFuc2FjdGlvbigpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fc2lnbmVyKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ24odGhpcy5fc2lnbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zaWduYXR1cmVzLmZvckVhY2goKHNpZ25hdHVyZSkgPT4ge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5hZGRTaWduYXR1cmUoc2lnbmF0dXJlLnB1YmxpY0tleSwgc2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zZmVyVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuXG4gICAgaWYgKHR4LnNpZ25hdHVyZSAmJiB0eC5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlcyA9IFt0eC5zdWlTaWduYXR1cmVdO1xuICAgIH1cblxuICAgIGNvbnN0IHR4RGF0YSA9IHR4LnRvSnNvbigpO1xuICAgIHRoaXMudHlwZShTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXIpO1xuICAgIHRoaXMuc2VuZGVyKHR4RGF0YS5zZW5kZXIpO1xuICAgIHRoaXMuZ2FzRGF0YSh0eERhdGEuZ2FzRGF0YSk7XG5cbiAgICBpZiAodHhEYXRhLmV4cGlyYXRpb24gJiYgISgnTm9uZScgaW4gdHhEYXRhLmV4cGlyYXRpb24pKSB7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uID0gdHhEYXRhLmV4cGlyYXRpb247XG4gICAgfVxuXG4gICAgaWYgKHR4RGF0YS5pbnB1dE9iamVjdHMpIHtcbiAgICAgIHRoaXMuaW5wdXRPYmplY3RzKHR4RGF0YS5pbnB1dE9iamVjdHMpO1xuICAgIH1cblxuICAgIC8vIFJlY29uc3RydWN0IGZ1bmRzSW5BZGRyZXNzQmFsYW5jZSBmcm9tIEJhbGFuY2VXaXRoZHJhd2FsIGlucHV0IGlmIHByZXNlbnQuXG4gICAgLy8gQWZ0ZXIgQkNTIGRlc2VyaWFsaXphdGlvbiBpbnB1dHMgYXJlIENhbGxBcmcgZm9ybWF0OiB7IEJhbGFuY2VXaXRoZHJhd2FsOiB7Li4ufSB9XG4gICAgLy8gRHVyaW5nIGJ1aWxkaW5nIHRoZXkgYXJlIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCBmb3JtYXQ6IHsga2luZDonSW5wdXQnLCB2YWx1ZTogeyBCYWxhbmNlV2l0aGRyYXdhbDogey4uLn0gfSB9XG4gICAgY29uc3Qgd2l0aGRyYXdhbElucHV0ID0gKHR4LnN1aVRyYW5zYWN0aW9uPy50eD8uaW5wdXRzIGFzIGFueVtdKT8uZmluZChcbiAgICAgIChpbnB1dDogYW55KSA9PlxuICAgICAgICAoaW5wdXQgIT09IG51bGwgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiAnQmFsYW5jZVdpdGhkcmF3YWwnIGluIGlucHV0KSB8fFxuICAgICAgICAoaW5wdXQ/LnZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dD8udmFsdWUgPT09ICdvYmplY3QnICYmICdCYWxhbmNlV2l0aGRyYXdhbCcgaW4gKGlucHV0LnZhbHVlID8/IHt9KSlcbiAgICApO1xuICAgIGlmICh3aXRoZHJhd2FsSW5wdXQpIHtcbiAgICAgIGNvbnN0IGJ3ID0gd2l0aGRyYXdhbElucHV0LkJhbGFuY2VXaXRoZHJhd2FsID8/IHdpdGhkcmF3YWxJbnB1dC52YWx1ZT8uQmFsYW5jZVdpdGhkcmF3YWw7XG4gICAgICB0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UgPSBuZXcgQmlnTnVtYmVyKFN0cmluZyhidy5yZXNlcnZhdGlvbj8uTWF4QW1vdW50VTY0ID8/IGJ3LmFtb3VudCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB1dGlscy5nZXRSZWNpcGllbnRzKHR4LnN1aVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnNlbmQocmVjaXBpZW50cyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFsbCBmaWVsZHMgYXJlIGRlZmluZWRcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVUcmFuc2FjdGlvbkZpZWxkcygpOiB2b2lkIHtcbiAgICBhc3NlcnQodGhpcy5fdHlwZSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndHlwZSBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3NlbmRlciwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignc2VuZGVyIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICBhc3NlcnQoXG4gICAgICB0aGlzLl9yZWNpcGllbnRzICYmIHRoaXMuX3JlY2lwaWVudHMubGVuZ3RoID4gMCxcbiAgICAgIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ2F0IGxlYXN0IG9uZSByZWNpcGllbnQgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJylcbiAgICApO1xuICAgIGFzc2VydCh0aGlzLl9nYXNEYXRhLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdnYXNEYXRhIGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpKTtcbiAgICB0aGlzLnZhbGlkYXRlR2FzRGF0YSh0aGlzLl9nYXNEYXRhKTtcblxuICAgIC8vIElmIGlucHV0T2JqZWN0cyBhcmUgcHJvdmlkZWQsIHZhbGlkYXRlIHRoZW1cbiAgICBpZiAodGhpcy5faW5wdXRPYmplY3RzICYmIHRoaXMuX2lucHV0T2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlSW5wdXRPYmplY3RzQmFzZSh0aGlzLl9pbnB1dE9iamVjdHMpO1xuICAgIH1cblxuICAgIC8vIFdoZW4gZnVuZHNJbkFkZHJlc3NCYWxhbmNlIGlzIHNldCwgdmFsaWRhdGUgdGhhdCB0b3RhbCByZWNpcGllbnQgYW1vdW50XG4gICAgLy8gZG9lcyBub3QgZXhjZWVkIGF2YWlsYWJsZSBhZGRyZXNzIGJhbGFuY2UuIENvaW4gb2JqZWN0IGJhbGFuY2VzIGFyZSBub3RcbiAgICAvLyBzdG9yZWQgaW4gdGhlIGJ1aWxkZXIgKGdhc0RhdGEucGF5bWVudCBob2xkcyBvbmx5IE9iamVjdFJlZnMpLCBzbyBvbmx5XG4gICAgLy8gdGhlIGFkZHJlc3MgYmFsYW5jZSBwb3J0aW9uIGNhbiBiZSBjcm9zcy1jaGVja2VkIGhlcmUuXG4gICAgaWYgKHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS5ndCgwKSkge1xuICAgICAgY29uc3QgdG90YWxSZWNpcGllbnRBbW91bnQgPSB0aGlzLl9yZWNpcGllbnRzLnJlZHVjZShcbiAgICAgICAgKGFjYywgcikgPT4gYWNjLnBsdXMobmV3IEJpZ051bWJlcihyLmFtb3VudCkpLFxuICAgICAgICBuZXcgQmlnTnVtYmVyKDApXG4gICAgICApO1xuICAgICAgYXNzZXJ0KHRvdGFsUmVjaXBpZW50QW1vdW50Lmd0KDApLCBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd0b3RhbCByZWNpcGllbnQgYW1vdW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRyYW5zZmVyIHByb2dyYW1tYWJsZSB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogVGhyZWUgYnVpbGQgcGF0aHM6XG4gICAqXG4gICAqIFBhdGggMWEg4oCUIFNwb25zb3JlZCB3aXRoIGNvaW4gb2JqZWN0cyAoc2VuZGVyIOKJoCBnYXNEYXRhLm93bmVyLCBpbnB1dE9iamVjdHMgcHJvdmlkZWQpOlxuICAgKiAgIFtvcHRpb25hbCB3aXRoZHJhd2FsKGZ1bmRzSW5BZGRyZXNzQmFsYW5jZSkg4oaSIHJlZGVlbV9mdW5kcyDihpIgQ29pbjxTVUk+XVxuICAgKiAgIE1lcmdlQ29pbnMoaW5wdXRPYmplY3RbMF0sIFtpbnB1dE9iamVjdFsxLi5dLCBhZGRyQ29pbj9dKVxuICAgKiAgIFNwbGl0Q29pbnMobWVyZ2VkT2JqZWN0LCBbYW1vdW50XSkg4oaSIFRyYW5zZmVyT2JqZWN0c1xuICAgKiAgIEhhbmRsZXMgQ2FzZXMgNCAoY29pbnMgb25seSksIDYgKGNvaW5zLCBzcG9uc29yIGFkZHItYmFsIGdhcyksIDggKGNvaW5zK2FkZHItYmFsKS5cbiAgICpcbiAgICogUGF0aCAxYiDigJQgU3BvbnNvcmVkLCBhZGRyZXNzIGJhbGFuY2Ugb25seSAoc2VuZGVyIOKJoCBnYXNEYXRhLm93bmVyLCBubyBpbnB1dE9iamVjdHMpOlxuICAgKiAgIHdpdGhkcmF3YWwoZnVuZHNJbkFkZHJlc3NCYWxhbmNlKSDihpIgcmVkZWVtX2Z1bmRzIOKGkiBDb2luPFNVST5cbiAgICogICBTcGxpdENvaW5zKGFkZHJDb2luLCBbYW1vdW50XSkg4oaSIFRyYW5zZmVyT2JqZWN0c1xuICAgKiAgIEhhbmRsZXMgQ2FzZSA1IChzcG9uc29yIGNvaW4tb2JqZWN0IGdhcykgYW5kIENhc2UgNy9QaGFzZS00YiAoc3BvbnNvciBhZGRyLWJhbCBnYXMpLlxuICAgKiAgIENhbGxlciBtdXN0IHNldCBWYWxpZER1cmluZyBleHBpcmF0aW9uIHdoZW4gZ2FzRGF0YS5wYXltZW50ID0gW10gKENhc2VzIDcsIDkpLlxuICAgKlxuICAgKiBQYXRoIDIg4oCUIFNlbGYtcGF5IChzZW5kZXIgPT09IGdhc0RhdGEub3duZXIpOlxuICAgKiAgIFNwbGl0Q29pbnMoR2FzQ29pbiwgW2Ftb3VudF0pIOKGkiBUcmFuc2Zlck9iamVjdHNcbiAgICogICBHYXNDb2luIGF0IFN1aSBleGVjdXRpb24gdGltZSA9IGdhc0RhdGEucGF5bWVudCBvYmplY3RzIG1lcmdlZCArIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZS5cbiAgICogICBIYW5kbGVzIENhc2UgMSAoY29pbnMpLCBDYXNlIDIgKGFkZHItYmFsIG9ubHksIGNhbGxlciBzZXRzIFZhbGlkRHVyaW5nKSwgQ2FzZSAzIChtaXhlZCkuXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgICBjb25zdCBwcm9ncmFtbWFibGVUeEJ1aWxkZXIgPSBuZXcgUHJvZ3JhbW1pbmdUcmFuc2FjdGlvbkJsb2NrQnVpbGRlcigpO1xuXG4gICAgaWYgKHRoaXMuX3NlbmRlciAhPT0gdGhpcy5fZ2FzRGF0YS5vd25lciAmJiB0aGlzLl9pbnB1dE9iamVjdHMgJiYgdGhpcy5faW5wdXRPYmplY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFBhdGggMTogc3BvbnNvcmVkIHRyYW5zYWN0aW9uLlxuICAgICAgLy8gVGhlIGZlZSBwYXllciAoZ2FzRGF0YS5vd25lcikgcGF5cyBnYXMuIFRoZSBzZW5kZXIncyBmdW5kcyBjb21lIGZyb206XG4gICAgICAvLyAgIC0gY29pbiBvYmplY3RzIChpbnB1dE9iamVjdHMpXG4gICAgICAvLyAgIC0gYWRkcmVzcyBiYWxhbmNlIHZpYSB0eC53aXRoZHJhd2FsKCkgKyAweDI6OmNvaW46OnJlZGVlbV9mdW5kc1xuICAgICAgY29uc3QgaW5wdXRPYmplY3RzOiBUcmFuc2FjdGlvbkFyZ3VtZW50W10gPSB0aGlzLl9pbnB1dE9iamVjdHMubWFwKChvYmplY3QpID0+XG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5vYmplY3QoSW5wdXRzLk9iamVjdFJlZihvYmplY3QpKVxuICAgICAgKTtcblxuICAgICAgLy8gSWYgdGhlIHNlbmRlciBhbHNvIGhhcyBhZGRyZXNzIGJhbGFuY2UsIHdpdGhkcmF3IGl0IGFzIGEgQ29pbjxTVUk+IGFuZFxuICAgICAgLy8gbWVyZ2UgaXQgaW50byB0aGUgY29pbi1vYmplY3QgcG9vbCBiZWZvcmUgc3BsaXR0aW5nIGZvciByZWNpcGllbnRzLlxuICAgICAgaWYgKHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS5ndCgwKSkge1xuICAgICAgICBjb25zdCBbYWRkckNvaW5dID0gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm1vdmVDYWxsKHtcbiAgICAgICAgICB0YXJnZXQ6ICcweDI6OmNvaW46OnJlZGVlbV9mdW5kcycsXG4gICAgICAgICAgdHlwZUFyZ3VtZW50czogWycweDI6OnN1aTo6U1VJJ10sXG4gICAgICAgICAgYXJndW1lbnRzOiBbcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLndpdGhkcmF3YWwoeyBhbW91bnQ6IEJpZ0ludCh0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UudG9GaXhlZCgpKSB9KV0sXG4gICAgICAgIH0pO1xuICAgICAgICBpbnB1dE9iamVjdHMucHVzaChhZGRyQ29pbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lcmdlZE9iamVjdCA9IGlucHV0T2JqZWN0cy5zaGlmdCgpIGFzIFRyYW5zYWN0aW9uQXJndW1lbnQ7XG4gICAgICBpZiAoaW5wdXRPYmplY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm1lcmdlQ29pbnMobWVyZ2VkT2JqZWN0LCBpbnB1dE9iamVjdHMpO1xuICAgICAgfVxuICAgICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3BsaXRPYmplY3QgPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuc3BsaXRDb2lucyhtZXJnZWRPYmplY3QsIFtcbiAgICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIucHVyZShOdW1iZXIocmVjaXBpZW50LmFtb3VudCkpLFxuICAgICAgICBdKTtcbiAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnRyYW5zZmVyT2JqZWN0cyhbc3BsaXRPYmplY3RdLCBwcm9ncmFtbWFibGVUeEJ1aWxkZXIub2JqZWN0KHJlY2lwaWVudC5hZGRyZXNzKSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4RGF0YSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5ibG9ja0RhdGE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgICBzZW5kZXI6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgdHg6IHtcbiAgICAgICAgICBpbnB1dHM6IFsuLi50eERhdGEuaW5wdXRzXSxcbiAgICAgICAgICB0cmFuc2FjdGlvbnM6IFsuLi50eERhdGEudHJhbnNhY3Rpb25zXSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2FzRGF0YToge1xuICAgICAgICAgIC4uLnRoaXMuX2dhc0RhdGEsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGlyYXRpb246IHRoaXMuX2V4cGlyYXRpb24sXG4gICAgICAgIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogdGhpcy5fZnVuZHNJbkFkZHJlc3NCYWxhbmNlLmd0KDApID8gdGhpcy5fZnVuZHNJbkFkZHJlc3NCYWxhbmNlLnRvRml4ZWQoKSA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zZW5kZXIgIT09IHRoaXMuX2dhc0RhdGEub3duZXIgJiYgdGhpcy5fZnVuZHNJbkFkZHJlc3NCYWxhbmNlLmd0KDApKSB7XG4gICAgICAvLyBQYXRoIDFiOiBzcG9uc29yZWQsIGFkZHJlc3MgYmFsYW5jZSBvbmx5IOKAlCBubyBjb2luIGlucHV0T2JqZWN0cy5cbiAgICAgIC8vIFNlbmRlcidzIGZ1bmRzIGNvbWUgZW50aXJlbHkgZnJvbSBhZGRyZXNzIGJhbGFuY2U7IGdhcyBpcyBwYWlkIGJ5IHRoZSBzcG9uc29yLlxuICAgICAgLy8gd2l0aGRyYXdhbChmdW5kc0luQWRkcmVzc0JhbGFuY2UpIOKGkiByZWRlZW1fZnVuZHMg4oaSIENvaW48U1VJPiDihpIgU3BsaXRDb2lucyDihpIgVHJhbnNmZXJPYmplY3RzXG4gICAgICBjb25zdCBbYWRkckNvaW5dID0gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm1vdmVDYWxsKHtcbiAgICAgICAgdGFyZ2V0OiAnMHgyOjpjb2luOjpyZWRlZW1fZnVuZHMnLFxuICAgICAgICB0eXBlQXJndW1lbnRzOiBbJzB4Mjo6c3VpOjpTVUknXSxcbiAgICAgICAgYXJndW1lbnRzOiBbcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLndpdGhkcmF3YWwoeyBhbW91bnQ6IEJpZ0ludCh0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UudG9GaXhlZCgpKSB9KV0sXG4gICAgICB9KTtcbiAgICAgIC8vIGFkZHJDb2luIGlzIGEgY29tbWFuZCByZXN1bHQgKGZyb20gcmVkZWVtX2Z1bmRzKSBhbmQgbXVzdCBiZSBleHBsaWNpdGx5IGNvbnN1bWVkLlxuICAgICAgLy8gU3BsaXQgZm9yIGV2ZXJ5IHJlY2lwaWVudCDigJQga2VlcHMgYSAxOjEgU3BsaXRDb2luc+KGlFRyYW5zZmVyT2JqZWN0cyBzdHJ1Y3R1cmUgZm9yIHRoZVxuICAgICAgLy8gdHJhbnNhY3Rpb24gcGFyc2VyLiAgQWZ0ZXIgYWxsIHNwbGl0cywgY29uc3VtZSB0aGUgc291cmNlIGNvaW4gZXhwbGljaXRseTpcbiAgICAgIC8vICAgLSBJZiB0aGVyZSBpcyBjaGFuZ2UgKGZ1bmRzSW5BZGRyZXNzQmFsYW5jZSA+IHRvdGFsIHJlY2lwaWVudCBhbW91bnQpOiByZXR1cm4gYWRkckNvaW5cbiAgICAgIC8vICAgICB0byBzZW5kZXIgdmlhIFRyYW5zZmVyT2JqZWN0cy5cbiAgICAgIC8vICAgLSBJZiBzZW5kLWFsbCAobm8gY2hhbmdlKTogYWRkckNvaW4gaGFzIDAgYmFsYW5jZTsgZGVzdHJveSBpdCBieSBtZXJnaW5nIGludG8gdGhlXG4gICAgICAvLyAgICAgc3BvbnNvcidzIGdhcyBjb2luIChhIDAtdmFsdWUgbWVyZ2UgaXMgdmFsaWQgaW4gU3VpIGFuZCBkZWxldGVzIHRoZSBzb3VyY2Ugb2JqZWN0KS5cbiAgICAgIGNvbnN0IHRvdGFsUmVjaXBpZW50QW1vdW50ID0gdGhpcy5fcmVjaXBpZW50cy5yZWR1Y2UoKHN1bSwgcikgPT4gc3VtLnBsdXMoci5hbW91bnQpLCBuZXcgQmlnTnVtYmVyKDApKTtcbiAgICAgIGNvbnN0IGhhc0NoYW5nZSA9IHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS5ndCh0b3RhbFJlY2lwaWVudEFtb3VudCk7XG5cbiAgICAgIHRoaXMuX3JlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNwbGl0T2JqZWN0ID0gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnNwbGl0Q29pbnMoYWRkckNvaW4sIFtcbiAgICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIucHVyZShOdW1iZXIocmVjaXBpZW50LmFtb3VudCkpLFxuICAgICAgICBdKTtcbiAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnRyYW5zZmVyT2JqZWN0cyhbc3BsaXRPYmplY3RdLCBwcm9ncmFtbWFibGVUeEJ1aWxkZXIub2JqZWN0KHJlY2lwaWVudC5hZGRyZXNzKSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGhhc0NoYW5nZSkge1xuICAgICAgICAvLyBSZXR1cm4gdGhlIHJlbWFpbmluZyBiYWxhbmNlIChjaGFuZ2UpIHRvIHRoZSBzZW5kZXIuXG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci50cmFuc2Zlck9iamVjdHMoW2FkZHJDb2luXSwgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdCh0aGlzLl9zZW5kZXIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNlbmQtYWxsOiBhZGRyQ29pbiBoYXMgMCBiYWxhbmNlIGFmdGVyIGFsbCBzcGxpdHMuICBNZXJnZSBpdCBpbnRvIHRoZSBzcG9uc29yJ3MgZ2FzXG4gICAgICAgIC8vIGNvaW4gdG8gZGVzdHJveSB0aGUgemVyby1iYWxhbmNlIG9iamVjdCAoY29pbjo6am9pbiBhY2NlcHRzIGEgMC12YWx1ZSBzb3VyY2UpLlxuICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIubWVyZ2VDb2lucyhwcm9ncmFtbWFibGVUeEJ1aWxkZXIuZ2FzLCBbYWRkckNvaW5dKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR4RGF0YTFiID0gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmJsb2NrRGF0YTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6IHRoaXMuX3R5cGUsXG4gICAgICAgIHNlbmRlcjogdGhpcy5fc2VuZGVyLFxuICAgICAgICB0eDoge1xuICAgICAgICAgIGlucHV0czogWy4uLnR4RGF0YTFiLmlucHV0c10sXG4gICAgICAgICAgdHJhbnNhY3Rpb25zOiBbLi4udHhEYXRhMWIudHJhbnNhY3Rpb25zXSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2FzRGF0YToge1xuICAgICAgICAgIC4uLnRoaXMuX2dhc0RhdGEsXG4gICAgICAgIH0sXG4gICAgICAgIGV4cGlyYXRpb246IHRoaXMuX2V4cGlyYXRpb24sXG4gICAgICAgIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZTogdGhpcy5fZnVuZHNJbkFkZHJlc3NCYWxhbmNlLnRvRml4ZWQoKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG51bWJlciBvZiBvYmplY3RzIHBhc3NlZCBhcyBnYXMgcGF5bWVudCBzaG91bGQgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIGBNQVhfR0FTX09CSkVDVFNgLiBXaGVuIHRoZSB0cmFuc2FjdGlvblxuICAgICAgLy8gcmVxdWlyZXMgYSBsYXJnZXIgbnVtYmVyIG9mIGlucHV0cyB3ZSB1c2UgdGhlIG1lcmdlIGNvbW1hbmQgdG8gbWVyZ2UgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdHMgaW50byB0aGUgZ2FzQ29pblxuICAgICAgaWYgKHRoaXMuX2dhc0RhdGEucGF5bWVudC5sZW5ndGggPj0gTUFYX0dBU19PQkpFQ1RTKSB7XG4gICAgICAgIGNvbnN0IGdhc1BheW1lbnRPYmplY3RzID0gdGhpcy5fZ2FzRGF0YS5wYXltZW50XG4gICAgICAgICAgLnNsaWNlKE1BWF9HQVNfT0JKRUNUUyAtIDEpXG4gICAgICAgICAgLm1hcCgob2JqZWN0KSA9PiBJbnB1dHMuT2JqZWN0UmVmKG9iamVjdCkpO1xuXG4gICAgICAgIC8vIGxpbWl0IGZvciB0b3RhbCBudW1iZXIgb2YgYGFyZ3M6IENhbGxBcmdbXWAgZm9yIGEgc2luZ2xlIGNvbW1hbmQgaXMgTUFYX0NPTU1BTkRfQVJHUyBzbyB0aGUgbWF4IGxlbmd0aCBvZlxuICAgICAgICAvLyBgc291cmNlc1tdYCBmb3IgYSBgbWVyZ2VDb2lucyhkZXN0aW5hdGlvbiwgc291cmNlc1tdKWAgY29tbWFuZCBpcyBNQVhfQ09NTUFORF9BUkdTIC0gMSAoMSB1c2VkIHVwIGZvclxuICAgICAgICAvLyBgZGVzdGluYXRpb25gKS4gV2UgbmVlZCB0byBjcmVhdGUgYSB0b3RhbCBvZiBgZ2FzUGF5bWVudE9iamVjdHMvKE1BWF9DT01NQU5EX0FSR1MgLSAxKWAgbWVyZ2UgY29tbWFuZHMgdG9cbiAgICAgICAgLy8gbWVyZ2UgYWxsIHRoZSBvYmplY3RzXG4gICAgICAgIHdoaWxlIChnYXNQYXltZW50T2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm1lcmdlQ29pbnMoXG4gICAgICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuZ2FzLFxuICAgICAgICAgICAgZ2FzUGF5bWVudE9iamVjdHMuc3BsaWNlKDAsIE1BWF9DT01NQU5EX0FSR1MgLSAxKS5tYXAoKG9iamVjdCkgPT4gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChvYmplY3QpKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgY29uc3QgY29pbiA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5hZGQoXG4gICAgICAgICAgVHJhbnNhY3Rpb25zQ29uc3RydWN0b3IuU3BsaXRDb2lucyhwcm9ncmFtbWFibGVUeEJ1aWxkZXIuZ2FzLCBbXG4gICAgICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIucHVyZShOdW1iZXIocmVjaXBpZW50LmFtb3VudCkpLFxuICAgICAgICAgIF0pXG4gICAgICAgICk7XG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5hZGQoXG4gICAgICAgICAgVHJhbnNhY3Rpb25zQ29uc3RydWN0b3IuVHJhbnNmZXJPYmplY3RzKFtjb2luXSwgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChyZWNpcGllbnQuYWRkcmVzcykpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4RGF0YSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5ibG9ja0RhdGE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgICBzZW5kZXI6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgdHg6IHtcbiAgICAgICAgICBpbnB1dHM6IFsuLi50eERhdGEuaW5wdXRzXSxcbiAgICAgICAgICB0cmFuc2FjdGlvbnM6IFsuLi50eERhdGEudHJhbnNhY3Rpb25zXSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2FzRGF0YToge1xuICAgICAgICAgIC4uLnRoaXMuX2dhc0RhdGEsXG4gICAgICAgICAgcGF5bWVudDogdGhpcy5fZ2FzRGF0YS5wYXltZW50LnNsaWNlKDAsIE1BWF9HQVNfT0JKRUNUUyAtIDEpLFxuICAgICAgICB9LFxuICAgICAgICBleHBpcmF0aW9uOiB0aGlzLl9leHBpcmF0aW9uLFxuICAgICAgICBmdW5kc0luQWRkcmVzc0JhbGFuY2U6IHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS5ndCgwKSA/IHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS50b0ZpeGVkKCkgOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { BaseKey, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo-beta/sdk-core';
3
2
  import { SuiTransaction, TransactionExplanation, TransferProgrammableTransaction, TxData } from './iface';
4
3
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
@@ -51,5 +50,11 @@ export declare class TransferTransaction extends Transaction<TransferProgrammabl
51
50
  * @returns {TransactionExplanation}
52
51
  */
53
52
  explainTransferTransaction(json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
53
+ /**
54
+ * Extracts the objects that were provided as inputs while building the transaction
55
+ * @param tx
56
+ * @returns {SuiObjectRef[]} Objects that are inputs for the transaction
57
+ */
58
+ private getInputObjectsFromTx;
54
59
  }
55
60
  //# sourceMappingURL=transferTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EAGP,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAK1D,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,+BAA+B,CAAC;gBACvE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAAC,+BAA+B,CAAC,CAEpE;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,+BAA+B,CAAC,GAAG,IAAI;IAI5E,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,aAAa,IAAI,YAAY,EAAE;IAI/B,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAehB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAwB5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAqB5B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAchD;;;;OAIG;IACI,SAAS,IAAI,MAAM;IA2B1B;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;CAW5G"}
1
+ {"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AAY/E,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,+BAA+B,CAAC;gBACvE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAAC,+BAA+B,CAAC,CAEpE;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,+BAA+B,CAAC,GAAG,IAAI;IAI5E,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,aAAa,IAAI,YAAY,EAAE;IAI/B,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA6BhB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAwB5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAqB5B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAchD;;;;OAIG;IACI,SAAS,IAAI,MAAM;IA6D1B;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAiB3G;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;CA+B9B"}