@bitgo-beta/sdk-coin-polyx 1.0.1-beta.13 → 1.0.1-beta.1300

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 (237) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/baseBuilder.d.ts +24 -0
  5. package/dist/src/lib/baseBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/baseBuilder.js +31 -0
  7. package/dist/src/lib/batchStakingBuilder.d.ts +79 -0
  8. package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/batchStakingBuilder.js +302 -0
  10. package/dist/src/lib/batchUnstakingBuilder.d.ts +39 -0
  11. package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/batchUnstakingBuilder.js +129 -0
  13. package/dist/src/lib/bondExtraBuilder.d.ts +37 -0
  14. package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/bondExtraBuilder.js +103 -0
  16. package/dist/src/lib/constants.d.ts +21 -0
  17. package/dist/src/lib/constants.d.ts.map +1 -0
  18. package/dist/src/lib/constants.js +24 -0
  19. package/dist/src/lib/hexTokenTransferBuilder.d.ts +24 -0
  20. package/dist/src/lib/hexTokenTransferBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/hexTokenTransferBuilder.js +46 -0
  22. package/dist/src/lib/hexTransferBuilder.d.ts +28 -0
  23. package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/hexTransferBuilder.js +51 -0
  25. package/dist/src/lib/iface.d.ts +252 -2
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +48 -1
  28. package/dist/src/lib/index.d.ts +40 -7
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +86 -36
  31. package/dist/src/lib/nominateBuilder.d.ts +18 -0
  32. package/dist/src/lib/nominateBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/nominateBuilder.js +101 -0
  34. package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
  35. package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/preApproveAssetBuilder.js +77 -0
  37. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +34 -0
  38. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/registerDidWithCDDBuilder.js +86 -0
  40. package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
  41. package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/rejectInstructionBuilder.js +89 -0
  43. package/dist/src/lib/tokenTransferBuilder.d.ts +64 -0
  44. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/tokenTransferBuilder.js +167 -0
  46. package/dist/src/lib/transaction.d.ts +26 -4
  47. package/dist/src/lib/transaction.d.ts.map +1 -1
  48. package/dist/src/lib/transaction.js +201 -7
  49. package/dist/src/lib/transactionBuilderFactory.d.ts +67 -5
  50. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  51. package/dist/src/lib/transactionBuilderFactory.js +323 -8
  52. package/dist/src/lib/transferBuilder.d.ts +51 -3
  53. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  54. package/dist/src/lib/transferBuilder.js +111 -3
  55. package/dist/src/lib/txnSchema.d.ts +70 -0
  56. package/dist/src/lib/txnSchema.d.ts.map +1 -0
  57. package/dist/src/lib/txnSchema.js +244 -0
  58. package/dist/src/lib/unbondBuilder.d.ts +37 -0
  59. package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/unbondBuilder.js +100 -0
  61. package/dist/src/lib/utils.d.ts +44 -14
  62. package/dist/src/lib/utils.d.ts.map +1 -1
  63. package/dist/src/lib/utils.js +95 -20
  64. package/dist/src/lib/v8BatchStakingBuilder.d.ts +85 -0
  65. package/dist/src/lib/v8BatchStakingBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/v8BatchStakingBuilder.js +266 -0
  67. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts +11 -0
  68. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/v8BatchUnstakingBuilder.js +21 -0
  70. package/dist/src/lib/v8BondExtraBuilder.d.ts +11 -0
  71. package/dist/src/lib/v8BondExtraBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/v8BondExtraBuilder.js +21 -0
  73. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +20 -0
  74. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/v8HexTokenTransferBuilder.js +42 -0
  76. package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
  77. package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
  78. package/dist/src/lib/v8HexTransferBuilder.js +21 -0
  79. package/dist/src/lib/v8NominateBuilder.d.ts +11 -0
  80. package/dist/src/lib/v8NominateBuilder.d.ts.map +1 -0
  81. package/dist/src/lib/v8NominateBuilder.js +21 -0
  82. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
  83. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
  84. package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
  85. package/dist/src/lib/v8RegisterDidBuilder.d.ts +47 -0
  86. package/dist/src/lib/v8RegisterDidBuilder.d.ts.map +1 -0
  87. package/dist/src/lib/v8RegisterDidBuilder.js +96 -0
  88. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
  89. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
  91. package/dist/src/lib/v8TokenTransferBuilder.d.ts +24 -0
  92. package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
  93. package/dist/src/lib/v8TokenTransferBuilder.js +101 -0
  94. package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
  95. package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/v8TransferBuilder.js +21 -0
  97. package/dist/src/lib/v8UnbondBuilder.d.ts +11 -0
  98. package/dist/src/lib/v8UnbondBuilder.d.ts.map +1 -0
  99. package/dist/src/lib/v8UnbondBuilder.js +21 -0
  100. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts +11 -0
  101. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts.map +1 -0
  102. package/dist/src/lib/v8WithdrawUnbondedBuilder.js +21 -0
  103. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
  104. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  105. package/dist/src/lib/withdrawUnbondedBuilder.js +91 -0
  106. package/dist/src/polyx.d.ts +51 -9
  107. package/dist/src/polyx.d.ts.map +1 -1
  108. package/dist/src/polyx.js +296 -16
  109. package/dist/src/polyxToken.d.ts +20 -0
  110. package/dist/src/polyxToken.d.ts.map +1 -0
  111. package/dist/src/polyxToken.js +55 -0
  112. package/dist/src/register.d.ts.map +1 -1
  113. package/dist/src/register.js +5 -1
  114. package/dist/src/resources/index.d.ts +5 -0
  115. package/dist/src/resources/index.d.ts.map +1 -0
  116. package/dist/src/resources/index.js +21 -0
  117. package/dist/src/resources/mainnet.d.ts +13 -0
  118. package/dist/src/resources/mainnet.d.ts.map +1 -0
  119. package/dist/src/resources/mainnet.js +16 -0
  120. package/dist/src/resources/mainnetV8.d.ts +13 -0
  121. package/dist/src/resources/mainnetV8.d.ts.map +1 -0
  122. package/dist/src/resources/mainnetV8.js +24 -0
  123. package/dist/src/resources/testnet.d.ts +13 -0
  124. package/dist/src/resources/testnet.d.ts.map +1 -0
  125. package/dist/src/resources/testnet.js +16 -0
  126. package/dist/src/resources/testnetV8.d.ts +13 -0
  127. package/dist/src/resources/testnetV8.d.ts.map +1 -0
  128. package/dist/src/resources/testnetV8.js +16 -0
  129. package/dist/src/tpolyx.d.ts +7 -0
  130. package/dist/src/tpolyx.d.ts.map +1 -1
  131. package/dist/src/tpolyx.js +11 -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/resources/index.d.ts +139 -0
  136. package/dist/test/resources/index.d.ts.map +1 -0
  137. package/dist/test/resources/index.js +150 -0
  138. package/dist/test/resources/mainnet.d.ts +2 -0
  139. package/dist/test/resources/mainnet.d.ts.map +1 -0
  140. package/dist/test/resources/mainnet.js +5 -0
  141. package/dist/test/resources/materialData.json +8 -0
  142. package/dist/test/resources/materialDataModified.json +8 -0
  143. package/dist/test/resources/testnet.d.ts +2 -0
  144. package/dist/test/resources/testnet.d.ts.map +1 -0
  145. package/dist/test/resources/testnet.js +5 -0
  146. package/dist/test/resources/wrwUsers.d.ts +19 -0
  147. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  148. package/dist/test/resources/wrwUsers.js +60 -0
  149. package/dist/test/unit/polyx.d.ts +2 -0
  150. package/dist/test/unit/polyx.d.ts.map +1 -0
  151. package/dist/test/unit/polyx.js +603 -0
  152. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  153. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  154. package/dist/test/unit/transactionBuilder/base.js +245 -0
  155. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  156. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  157. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +309 -0
  158. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  159. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  160. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  161. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  162. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  163. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  164. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts +2 -0
  165. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts.map +1 -0
  166. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.js +261 -0
  167. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts +2 -0
  168. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts.map +1 -0
  169. package/dist/test/unit/transactionBuilder/hexTransferBuilder.js +389 -0
  170. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts +2 -0
  171. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts.map +1 -0
  172. package/dist/test/unit/transactionBuilder/nominateBuilder.js +226 -0
  173. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  174. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  175. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  176. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  177. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  178. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  179. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
  180. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
  181. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
  182. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  183. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  184. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  185. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  186. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  187. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  188. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  189. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  190. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +240 -0
  191. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  192. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  193. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  194. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  195. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  196. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  197. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts +2 -0
  198. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts.map +1 -0
  199. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.js +252 -0
  200. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
  201. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
  202. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +90 -0
  203. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
  204. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
  205. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
  206. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
  207. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
  208. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
  209. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts +2 -0
  210. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts.map +1 -0
  211. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.js +87 -0
  212. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
  213. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  214. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
  215. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
  216. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
  217. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +114 -0
  218. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
  219. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
  220. package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +107 -0
  221. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  222. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  223. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  224. package/dist/test/unit/utils.d.ts +2 -0
  225. package/dist/test/unit/utils.d.ts.map +1 -0
  226. package/dist/test/unit/utils.js +143 -0
  227. package/dist/tsconfig.tsbuildinfo +1 -0
  228. package/package.json +20 -10
  229. package/.eslintignore +0 -4
  230. package/.mocharc.yml +0 -8
  231. package/CHANGELOG.md +0 -0
  232. package/dist/src/lib/keyPair.d.ts +0 -12
  233. package/dist/src/lib/keyPair.d.ts.map +0 -1
  234. package/dist/src/lib/keyPair.js +0 -24
  235. package/dist/src/lib/transactionBuilder.d.ts +0 -43
  236. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  237. package/dist/src/lib/transactionBuilder.js +0 -78
@@ -1,33 +1,108 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Utils = void 0;
4
- class Utils {
5
- /** @inheritdoc */
6
- isValidAddress(address) {
7
- throw new Error('Method not implemented.');
4
+ const abstract_substrate_1 = require("@bitgo-beta/abstract-substrate");
5
+ const statics_1 = require("@bitgo-beta/statics");
6
+ const resources_1 = require("../resources");
7
+ const constants_1 = require("./constants");
8
+ class Utils extends abstract_substrate_1.Utils {
9
+ /**
10
+ * Get the appropriate address format based on network type
11
+ * Returns 12 for mainnet and 42 for testnet
12
+ *
13
+ * @param coinName The name of the coin
14
+ * @returns The address format to use
15
+ */
16
+ getAddressFormat(coinName) {
17
+ const isMainnet = coinName.toLowerCase() === 'polyx';
18
+ return isMainnet ? 12 : 42;
8
19
  }
9
- /** @inheritdoc */
10
- isValidBlockId(hash) {
11
- throw new Error('Method not implemented.');
20
+ /**
21
+ * Checks if a string is a valid Polymesh DID (Decentralized Identifier)
22
+ * DIDs are 32-byte hex strings (0x prefix + 64 hex characters)
23
+ *
24
+ * @param {string} did - The string to validate
25
+ * @returns {boolean} true if valid DID format, false otherwise
26
+ */
27
+ isValidDid(did) {
28
+ return constants_1.POLYX_DID_REGEX.test(did);
12
29
  }
13
- /** @inheritdoc */
14
- isValidPrivateKey(key) {
15
- throw new Error('Method not implemented.');
30
+ /**
31
+ * Encode a memo string using the NEW Polymesh format:
32
+ * UTF-8 bytes right-padded with 0x00 to 32 bytes, returned as a 0x-prefixed hex string.
33
+ *
34
+ * @param text The intended memo string
35
+ * @returns 0x-prefixed 66-character hex string representing the 32-byte encoded memo
36
+ */
37
+ encodeMemoNew(text) {
38
+ const bytes = Buffer.from(text, 'utf8');
39
+ if (bytes.length > constants_1.MEMO_MAX_BYTES) {
40
+ throw new Error(`Memo exceeds maximum length of ${constants_1.MEMO_MAX_BYTES} bytes (got ${bytes.length} bytes)`);
41
+ }
42
+ const textHex = bytes.toString('hex');
43
+ return `0x${textHex.padEnd(64, '0')}`;
16
44
  }
17
- /** @inheritdoc */
18
- isValidPublicKey(key) {
19
- throw new Error('Method not implemented.');
45
+ /**
46
+ * Detect whether a decoded 32-byte memo (0x-prefixed hex from txwrapper decode()) uses NEW encoding.
47
+ *
48
+ * Detection rules (see problem.md):
49
+ * - Any 0x00 byte → NEW (null right-padding)
50
+ * - All 0x30 bytes → OLD (memo "0" in ASCII-left-padded form)
51
+ * - Leading 0x30 bytes then non-0x30 content → OLD (ASCII '0' left-padding)
52
+ * - Otherwise → NEW (content at byte 0, full 32-byte memo, or no ASCII pad)
53
+ *
54
+ * @param memo 0x-prefixed 66-char hex string as returned by txwrapper decode()
55
+ */
56
+ isNewMemoEncoding(memo) {
57
+ if (!constants_1.MEMO_HEX_REGEX.test(memo))
58
+ return false;
59
+ const bytes = Buffer.from(memo.slice(2), 'hex');
60
+ if (bytes.some((b) => b === 0x00))
61
+ return true;
62
+ if (bytes.every((b) => b === 0x30))
63
+ return false;
64
+ let leadingAsciiZeros = 0;
65
+ while (leadingAsciiZeros < bytes.length && bytes[leadingAsciiZeros] === 0x30) {
66
+ leadingAsciiZeros++;
67
+ }
68
+ if (leadingAsciiZeros > 0 && leadingAsciiZeros < bytes.length)
69
+ return false;
70
+ return true;
20
71
  }
21
- /** @inheritdoc */
22
- isValidSignature(signature) {
23
- throw new Error('Method not implemented.');
72
+ getMaterial(networkType) {
73
+ return (networkType === statics_1.NetworkType.MAINNET ? resources_1.mainnetMaterial : resources_1.testnetMaterial);
24
74
  }
25
- /** @inheritdoc */
26
- isValidTransactionId(txId) {
27
- throw new Error('Method not implemented.');
75
+ getV8Material(networkType) {
76
+ return (networkType === statics_1.NetworkType.MAINNET
77
+ ? resources_1.mainnetV8Material
78
+ : resources_1.testnetV8Material);
79
+ }
80
+ decodeMethodName(call, registry) {
81
+ // Handle both callIndex and method formats
82
+ const callWithIndex = call;
83
+ const methodIdentifier = callWithIndex.callIndex || call.method;
84
+ if (typeof methodIdentifier === 'string') {
85
+ // Check if it looks like a hex callIndex
86
+ if (methodIdentifier.startsWith('0x') && methodIdentifier.length > 2) {
87
+ try {
88
+ const decodedCall = registry.findMetaCall(new Uint8Array(Buffer.from(methodIdentifier.replace('0x', ''), 'hex')));
89
+ return decodedCall.method;
90
+ }
91
+ catch (e) {
92
+ // Fallback: assume it's already the method name
93
+ return methodIdentifier;
94
+ }
95
+ }
96
+ else {
97
+ // Already a simple method name
98
+ return methodIdentifier;
99
+ }
100
+ }
101
+ // Fallback
102
+ return String(methodIdentifier);
28
103
  }
29
104
  }
30
105
  exports.Utils = Utils;
31
106
  const utils = new Utils();
32
107
  exports.default = utils;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEsS0FBSztJQUNoQixrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLE9BQWU7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsY0FBYyxDQUFDLElBQVk7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsR0FBVztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQTlCRCxzQkE4QkM7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VVdGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVFQUFvRjtBQUNwRixpREFBa0Q7QUFFbEQsNENBQXNHO0FBRXRHLDJDQUE4RTtBQUU5RSxNQUFhLEtBQU0sU0FBUSwwQkFBYztJQUN2Qzs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDO1FBQ3JELE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTywyQkFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLElBQVk7UUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLDBCQUFjLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQywwQkFBYyxlQUFlLEtBQUssQ0FBQyxNQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsaUJBQWlCLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsMEJBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRWpELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE9BQU8saUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3RSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLGlCQUFpQixHQUFHLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsTUFBTTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTVFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUF3QjtRQUNsQyxPQUFPLENBQUMsV0FBVyxLQUFLLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywyQkFBZSxDQUFDLENBQUMsQ0FBQywyQkFBZSxDQUFrQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxhQUFhLENBQUMsV0FBd0I7UUFDcEMsT0FBTyxDQUFDLFdBQVcsS0FBSyxxQkFBVyxDQUFDLE9BQU87WUFDekMsQ0FBQyxDQUFDLDZCQUFpQjtZQUNuQixDQUFDLENBQUMsNkJBQWlCLENBQWtDLENBQUM7SUFDMUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQXFCLEVBQUUsUUFBc0I7UUFDNUQsMkNBQTJDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQWdELENBQUM7UUFDdkUsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFaEUsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLHlDQUF5QztZQUN6QyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JFLElBQUksQ0FBQztvQkFDSCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUN2QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDdkUsQ0FBQztvQkFDRixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxnREFBZ0Q7b0JBQ2hELE9BQU8sZ0JBQWdCLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sK0JBQStCO2dCQUMvQixPQUFPLGdCQUFnQixDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsV0FBVztRQUNYLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBeEdELHNCQXdHQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFDMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXRpbHMgYXMgU3Vic3RyYXRlVXRpbHMsIEludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LXN1YnN0cmF0ZSc7XG5pbXBvcnQgeyBOZXR3b3JrVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHsgbWFpbm5ldE1hdGVyaWFsLCB0ZXN0bmV0TWF0ZXJpYWwsIG1haW5uZXRWOE1hdGVyaWFsLCB0ZXN0bmV0VjhNYXRlcmlhbCB9IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBCYXRjaENhbGxPYmplY3QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IE1FTU9fSEVYX1JFR0VYLCBNRU1PX01BWF9CWVRFUywgUE9MWVhfRElEX1JFR0VYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgZXh0ZW5kcyBTdWJzdHJhdGVVdGlscyB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFkZHJlc3MgZm9ybWF0IGJhc2VkIG9uIG5ldHdvcmsgdHlwZVxuICAgKiBSZXR1cm5zIDEyIGZvciBtYWlubmV0IGFuZCA0MiBmb3IgdGVzdG5ldFxuICAgKlxuICAgKiBAcGFyYW0gY29pbk5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvaW5cbiAgICogQHJldHVybnMgVGhlIGFkZHJlc3MgZm9ybWF0IHRvIHVzZVxuICAgKi9cbiAgZ2V0QWRkcmVzc0Zvcm1hdChjb2luTmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBpc01haW5uZXQgPSBjb2luTmFtZS50b0xvd2VyQ2FzZSgpID09PSAncG9seXgnO1xuICAgIHJldHVybiBpc01haW5uZXQgPyAxMiA6IDQyO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIFBvbHltZXNoIERJRCAoRGVjZW50cmFsaXplZCBJZGVudGlmaWVyKVxuICAgKiBESURzIGFyZSAzMi1ieXRlIGhleCBzdHJpbmdzICgweCBwcmVmaXggKyA2NCBoZXggY2hhcmFjdGVycylcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpZCAtIFRoZSBzdHJpbmcgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdmFsaWQgRElEIGZvcm1hdCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBpc1ZhbGlkRGlkKGRpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBPTFlYX0RJRF9SRUdFWC50ZXN0KGRpZCk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlIGEgbWVtbyBzdHJpbmcgdXNpbmcgdGhlIE5FVyBQb2x5bWVzaCBmb3JtYXQ6XG4gICAqIFVURi04IGJ5dGVzIHJpZ2h0LXBhZGRlZCB3aXRoIDB4MDAgdG8gMzIgYnl0ZXMsIHJldHVybmVkIGFzIGEgMHgtcHJlZml4ZWQgaGV4IHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHRleHQgVGhlIGludGVuZGVkIG1lbW8gc3RyaW5nXG4gICAqIEByZXR1cm5zIDB4LXByZWZpeGVkIDY2LWNoYXJhY3RlciBoZXggc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgMzItYnl0ZSBlbmNvZGVkIG1lbW9cbiAgICovXG4gIGVuY29kZU1lbW9OZXcodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKHRleHQsICd1dGY4Jyk7XG4gICAgaWYgKGJ5dGVzLmxlbmd0aCA+IE1FTU9fTUFYX0JZVEVTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1lbW8gZXhjZWVkcyBtYXhpbXVtIGxlbmd0aCBvZiAke01FTU9fTUFYX0JZVEVTfSBieXRlcyAoZ290ICR7Ynl0ZXMubGVuZ3RofSBieXRlcylgKTtcbiAgICB9XG4gICAgY29uc3QgdGV4dEhleCA9IGJ5dGVzLnRvU3RyaW5nKCdoZXgnKTtcbiAgICByZXR1cm4gYDB4JHt0ZXh0SGV4LnBhZEVuZCg2NCwgJzAnKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVjdCB3aGV0aGVyIGEgZGVjb2RlZCAzMi1ieXRlIG1lbW8gKDB4LXByZWZpeGVkIGhleCBmcm9tIHR4d3JhcHBlciBkZWNvZGUoKSkgdXNlcyBORVcgZW5jb2RpbmcuXG4gICAqXG4gICAqIERldGVjdGlvbiBydWxlcyAoc2VlIHByb2JsZW0ubWQpOlxuICAgKiAtIEFueSAweDAwIGJ5dGUg4oaSIE5FVyAobnVsbCByaWdodC1wYWRkaW5nKVxuICAgKiAtIEFsbCAweDMwIGJ5dGVzIOKGkiBPTEQgKG1lbW8gXCIwXCIgaW4gQVNDSUktbGVmdC1wYWRkZWQgZm9ybSlcbiAgICogLSBMZWFkaW5nIDB4MzAgYnl0ZXMgdGhlbiBub24tMHgzMCBjb250ZW50IOKGkiBPTEQgKEFTQ0lJICcwJyBsZWZ0LXBhZGRpbmcpXG4gICAqIC0gT3RoZXJ3aXNlIOKGkiBORVcgKGNvbnRlbnQgYXQgYnl0ZSAwLCBmdWxsIDMyLWJ5dGUgbWVtbywgb3Igbm8gQVNDSUkgcGFkKVxuICAgKlxuICAgKiBAcGFyYW0gbWVtbyAweC1wcmVmaXhlZCA2Ni1jaGFyIGhleCBzdHJpbmcgYXMgcmV0dXJuZWQgYnkgdHh3cmFwcGVyIGRlY29kZSgpXG4gICAqL1xuICBpc05ld01lbW9FbmNvZGluZyhtZW1vOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIU1FTU9fSEVYX1JFR0VYLnRlc3QobWVtbykpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20obWVtby5zbGljZSgyKSwgJ2hleCcpO1xuXG4gICAgaWYgKGJ5dGVzLnNvbWUoKGIpID0+IGIgPT09IDB4MDApKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoYnl0ZXMuZXZlcnkoKGIpID0+IGIgPT09IDB4MzApKSByZXR1cm4gZmFsc2U7XG5cbiAgICBsZXQgbGVhZGluZ0FzY2lpWmVyb3MgPSAwO1xuICAgIHdoaWxlIChsZWFkaW5nQXNjaWlaZXJvcyA8IGJ5dGVzLmxlbmd0aCAmJiBieXRlc1tsZWFkaW5nQXNjaWlaZXJvc10gPT09IDB4MzApIHtcbiAgICAgIGxlYWRpbmdBc2NpaVplcm9zKys7XG4gICAgfVxuICAgIGlmIChsZWFkaW5nQXNjaWlaZXJvcyA+IDAgJiYgbGVhZGluZ0FzY2lpWmVyb3MgPCBieXRlcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWwobmV0d29ya1R5cGU6IE5ldHdvcmtUeXBlKTogSW50ZXJmYWNlLk1hdGVyaWFsIHtcbiAgICByZXR1cm4gKG5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUID8gbWFpbm5ldE1hdGVyaWFsIDogdGVzdG5ldE1hdGVyaWFsKSBhcyB1bmtub3duIGFzIEludGVyZmFjZS5NYXRlcmlhbDtcbiAgfVxuXG4gIGdldFY4TWF0ZXJpYWwobmV0d29ya1R5cGU6IE5ldHdvcmtUeXBlKTogSW50ZXJmYWNlLk1hdGVyaWFsIHtcbiAgICByZXR1cm4gKG5ldHdvcmtUeXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICA/IG1haW5uZXRWOE1hdGVyaWFsXG4gICAgICA6IHRlc3RuZXRWOE1hdGVyaWFsKSBhcyB1bmtub3duIGFzIEludGVyZmFjZS5NYXRlcmlhbDtcbiAgfVxuXG4gIGRlY29kZU1ldGhvZE5hbWUoY2FsbDogQmF0Y2hDYWxsT2JqZWN0LCByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5KTogc3RyaW5nIHtcbiAgICAvLyBIYW5kbGUgYm90aCBjYWxsSW5kZXggYW5kIG1ldGhvZCBmb3JtYXRzXG4gICAgY29uc3QgY2FsbFdpdGhJbmRleCA9IGNhbGwgYXMgQmF0Y2hDYWxsT2JqZWN0ICYgeyBjYWxsSW5kZXg/OiBzdHJpbmcgfTtcbiAgICBjb25zdCBtZXRob2RJZGVudGlmaWVyID0gY2FsbFdpdGhJbmRleC5jYWxsSW5kZXggfHwgY2FsbC5tZXRob2Q7XG5cbiAgICBpZiAodHlwZW9mIG1ldGhvZElkZW50aWZpZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBDaGVjayBpZiBpdCBsb29rcyBsaWtlIGEgaGV4IGNhbGxJbmRleFxuICAgICAgaWYgKG1ldGhvZElkZW50aWZpZXIuc3RhcnRzV2l0aCgnMHgnKSAmJiBtZXRob2RJZGVudGlmaWVyLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHJlZ2lzdHJ5LmZpbmRNZXRhQ2FsbChcbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1ldGhvZElkZW50aWZpZXIucmVwbGFjZSgnMHgnLCAnJyksICdoZXgnKSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBkZWNvZGVkQ2FsbC5tZXRob2Q7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBGYWxsYmFjazogYXNzdW1lIGl0J3MgYWxyZWFkeSB0aGUgbWV0aG9kIG5hbWVcbiAgICAgICAgICByZXR1cm4gbWV0aG9kSWRlbnRpZmllcjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWxyZWFkeSBhIHNpbXBsZSBtZXRob2QgbmFtZVxuICAgICAgICByZXR1cm4gbWV0aG9kSWRlbnRpZmllcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFja1xuICAgIHJldHVybiBTdHJpbmcobWV0aG9kSWRlbnRpZmllcik7XG4gIH1cbn1cblxuY29uc3QgdXRpbHMgPSBuZXcgVXRpbHMoKTtcbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
@@ -0,0 +1,85 @@
1
+ import { Transaction } from './transaction';
2
+ import { PolyxBaseBuilder } from './baseBuilder';
3
+ import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
4
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
5
+ import { TransactionType } from '@bitgo-beta/sdk-core';
6
+ import { NominateArgs, V8BondArgs } from './iface';
7
+ /**
8
+ * Polymesh v8 batch staking builder.
9
+ *
10
+ * Polymesh v8 changed `staking.bond` from `bond(controller, value, payee)` to `bond(value, payee)`
11
+ * — the stash account is its own controller, so no `controller` leg is encoded. This builder
12
+ * constructs `utility.batchAll([bond, nominate])` with the 2-arg bond call against v8 chain
13
+ * metadata (v8 specVersion / txVersion).
14
+ *
15
+ * Behaviour is otherwise identical to the v7 {@link BatchStakingBuilder}, which is retained as the
16
+ * `[CLEANUP-V8-OLD]` rollback path.
17
+ */
18
+ export declare class V8BatchStakingBuilder extends PolyxBaseBuilder {
19
+ protected _amount: string;
20
+ protected _payee: string | {
21
+ Account: string;
22
+ };
23
+ protected _validators: string[];
24
+ constructor(_coinConfig: Readonly<CoinConfig>);
25
+ protected get transactionType(): TransactionType;
26
+ /**
27
+ * Build a batch transaction that combines bond and nominate operations
28
+ * Both operations are required and always atomic (using batchAll)
29
+ */
30
+ protected buildTransaction(): UnsignedTransaction;
31
+ /**
32
+ * Set the staking amount for bond
33
+ */
34
+ amount(amount: string): this;
35
+ /**
36
+ * Get the staking amount
37
+ */
38
+ getAmount(): string;
39
+ /**
40
+ * Set the rewards destination for bond ('Staked', 'Stash','Controller', or { Account: string })
41
+ */
42
+ payee(payee: string | {
43
+ Account: string;
44
+ }): this;
45
+ /**
46
+ * Get the payee
47
+ */
48
+ getPayee(): string | {
49
+ Account: string;
50
+ };
51
+ /**
52
+ * Set the validators to nominate
53
+ */
54
+ validators(validators: string[]): this;
55
+ /**
56
+ * Get the validators to nominate
57
+ */
58
+ getValidators(): string[];
59
+ /** @inheritdoc */
60
+ validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx): void;
61
+ /**
62
+ * Normalize a decoded payee value into the construction-side shape.
63
+ */
64
+ private normalizePayee;
65
+ /**
66
+ * Validate v8 bond arguments (no controller)
67
+ */
68
+ private validateBondArgs;
69
+ /**
70
+ * Validate nominate arguments
71
+ */
72
+ private validateNominateArgs;
73
+ /** @inheritdoc */
74
+ protected fromImplementation(rawTransaction: string): Transaction;
75
+ /** @inheritdoc */
76
+ validateTransaction(tx: Transaction): void;
77
+ /**
78
+ * Validate the builder fields
79
+ */
80
+ private validateFields;
81
+ testValidateFields(): void;
82
+ testValidateBondArgs(args: V8BondArgs): void;
83
+ testValidateNominateArgs(args: NominateArgs): void;
84
+ }
85
+ //# sourceMappingURL=v8BatchStakingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8BatchStakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/v8BatchStakingBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAExG,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAAa,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAc9D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IAEzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAG/C,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;gBAEzB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IA0CjD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKhD;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIxC;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAQtC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,GAAG,IAAI;IA0CrF;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IA0CjE,kBAAkB;IAClB,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAK1C;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB,kBAAkB,IAAI,IAAI;IAInB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI5C,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAG1D"}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.V8BatchStakingBuilder = void 0;
7
+ const baseBuilder_1 = require("./baseBuilder");
8
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
9
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
10
+ const txnSchema_1 = require("./txnSchema");
11
+ const utils_1 = __importDefault(require("./utils"));
12
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
13
+ /**
14
+ * Polymesh v8 batch staking builder.
15
+ *
16
+ * Polymesh v8 changed `staking.bond` from `bond(controller, value, payee)` to `bond(value, payee)`
17
+ * — the stash account is its own controller, so no `controller` leg is encoded. This builder
18
+ * constructs `utility.batchAll([bond, nominate])` with the 2-arg bond call against v8 chain
19
+ * metadata (v8 specVersion / txVersion).
20
+ *
21
+ * Behaviour is otherwise identical to the v7 {@link BatchStakingBuilder}, which is retained as the
22
+ * `[CLEANUP-V8-OLD]` rollback path.
23
+ */
24
+ class V8BatchStakingBuilder extends baseBuilder_1.PolyxBaseBuilder {
25
+ constructor(_coinConfig) {
26
+ super(_coinConfig);
27
+ // For nominate operation
28
+ this._validators = [];
29
+ this.material(utils_1.default.getV8Material(_coinConfig.network.type));
30
+ }
31
+ get transactionType() {
32
+ return sdk_core_1.TransactionType.Batch;
33
+ }
34
+ /**
35
+ * Build a batch transaction that combines bond and nominate operations
36
+ * Both operations are required and always atomic (using batchAll)
37
+ */
38
+ buildTransaction() {
39
+ // Ensure both bond and nominate operations are included
40
+ if (!this._amount || this._validators.length === 0) {
41
+ throw new sdk_core_1.InvalidTransactionError('Batch transaction must include both bond and nominate operations');
42
+ }
43
+ const baseTxInfo = this.createBaseTxInfo();
44
+ // Create the individual calls
45
+ const calls = [];
46
+ // Add bond call — v8 bond takes only { value, payee } (no controller)
47
+ const bondCall = txwrapper_polkadot_1.methods.staking.bond({
48
+ value: this._amount,
49
+ payee: this._payee || 'Staked',
50
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
51
+ calls.push(bondCall.method);
52
+ // Add nominate call
53
+ const nominateCall = txwrapper_polkadot_1.methods.staking.nominate({
54
+ targets: this._validators,
55
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
56
+ calls.push(nominateCall.method);
57
+ // Always use batchAll (atomic)
58
+ return txwrapper_polkadot_1.methods.utility.batchAll({
59
+ calls,
60
+ }, baseTxInfo.baseTxInfo, baseTxInfo.options);
61
+ }
62
+ /**
63
+ * Set the staking amount for bond
64
+ */
65
+ amount(amount) {
66
+ this.validateValue(new bignumber_js_1.default(amount));
67
+ this._amount = amount;
68
+ return this;
69
+ }
70
+ /**
71
+ * Get the staking amount
72
+ */
73
+ getAmount() {
74
+ return this._amount;
75
+ }
76
+ /**
77
+ * Set the rewards destination for bond ('Staked', 'Stash','Controller', or { Account: string })
78
+ */
79
+ payee(payee) {
80
+ this._payee = payee;
81
+ return this;
82
+ }
83
+ /**
84
+ * Get the payee
85
+ */
86
+ getPayee() {
87
+ return this._payee;
88
+ }
89
+ /**
90
+ * Set the validators to nominate
91
+ */
92
+ validators(validators) {
93
+ for (const address of validators) {
94
+ this.validateAddress({ address });
95
+ }
96
+ this._validators = validators;
97
+ return this;
98
+ }
99
+ /**
100
+ * Get the validators to nominate
101
+ */
102
+ getValidators() {
103
+ return this._validators;
104
+ }
105
+ /** @inheritdoc */
106
+ validateDecodedTransaction(decodedTxn) {
107
+ const methodName = decodedTxn.method?.name;
108
+ // batch bond and nominate
109
+ if (methodName === 'batchAll') {
110
+ const txMethod = decodedTxn.method.args;
111
+ const calls = txMethod.calls;
112
+ if (calls.length !== 2) {
113
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch staking transaction: expected 2 calls but got ${calls.length}`);
114
+ }
115
+ // Check that first call is bond
116
+ const firstCallMethod = utils_1.default.decodeMethodName(calls[0], this._registry);
117
+ if (firstCallMethod !== 'bond') {
118
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch staking transaction: first call should be bond but got ${firstCallMethod}`);
119
+ }
120
+ // Check that second call is nominate
121
+ const secondCallMethod = utils_1.default.decodeMethodName(calls[1], this._registry);
122
+ if (secondCallMethod !== 'nominate') {
123
+ throw new sdk_core_1.InvalidTransactionError(`Invalid batch staking transaction: second call should be nominate but got ${secondCallMethod}`);
124
+ }
125
+ // Validate bond arguments
126
+ const bondArgs = calls[0].args;
127
+ this.validateBondArgs(bondArgs);
128
+ // Validate nominate arguments
129
+ const nominateArgs = calls[1].args;
130
+ this.validateNominateArgs(nominateArgs);
131
+ }
132
+ else {
133
+ throw new sdk_core_1.InvalidTransactionError(`Invalid transaction type: ${methodName}`);
134
+ }
135
+ }
136
+ /**
137
+ * Normalize a decoded payee value into the construction-side shape.
138
+ */
139
+ normalizePayee(payeeValue) {
140
+ let normalizedPayee = payeeValue;
141
+ if (typeof payeeValue === 'object' && payeeValue !== null) {
142
+ const decodedPayee = payeeValue;
143
+ if (decodedPayee.staked !== undefined) {
144
+ normalizedPayee = 'Staked';
145
+ }
146
+ else if (decodedPayee.stash !== undefined) {
147
+ normalizedPayee = 'Stash';
148
+ }
149
+ else if (decodedPayee.controller !== undefined) {
150
+ normalizedPayee = 'Controller';
151
+ }
152
+ else if (decodedPayee.account) {
153
+ normalizedPayee = { Account: decodedPayee.account };
154
+ }
155
+ }
156
+ return normalizedPayee;
157
+ }
158
+ /**
159
+ * Validate v8 bond arguments (no controller)
160
+ */
161
+ validateBondArgs(args) {
162
+ // Handle both string and number formats for value
163
+ const amountValue = args.value;
164
+ const valueString = typeof amountValue === 'string' ? amountValue : amountValue.toString();
165
+ const normalizedPayee = this.normalizePayee(args.payee);
166
+ const validationResult = txnSchema_1.V8BatchTransactionSchema.validateBond({
167
+ value: valueString,
168
+ payee: normalizedPayee,
169
+ });
170
+ if (validationResult.error) {
171
+ throw new sdk_core_1.InvalidTransactionError(`Invalid bond args: ${validationResult.error.message}`);
172
+ }
173
+ }
174
+ /**
175
+ * Validate nominate arguments
176
+ */
177
+ validateNominateArgs(args) {
178
+ // Handle both string and object formats for targets
179
+ const targetAddresses = args.targets.map((target) => {
180
+ if (typeof target === 'string') {
181
+ return target;
182
+ }
183
+ else if (target && typeof target === 'object' && 'id' in target) {
184
+ return target.id;
185
+ }
186
+ throw new sdk_core_1.InvalidTransactionError(`Invalid target format: ${JSON.stringify(target)}`);
187
+ });
188
+ const validationResult = txnSchema_1.V8BatchTransactionSchema.validateNominate({
189
+ validators: targetAddresses,
190
+ });
191
+ if (validationResult.error) {
192
+ throw new sdk_core_1.InvalidTransactionError(`Invalid nominate args: ${validationResult.error.message}`);
193
+ }
194
+ }
195
+ /** @inheritdoc */
196
+ fromImplementation(rawTransaction) {
197
+ const tx = super.fromImplementation(rawTransaction);
198
+ // Check if the transaction is a batch transaction
199
+ if (this._method?.name !== 'batchAll') {
200
+ throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected batchAll`);
201
+ }
202
+ if (this._method) {
203
+ const txMethod = this._method.args;
204
+ for (const call of txMethod.calls) {
205
+ const callMethod = utils_1.default.decodeMethodName(call, this._registry);
206
+ if (callMethod === 'bond') {
207
+ const bondArgs = call.args;
208
+ // Handle both string and number formats for value
209
+ const amountValue = bondArgs.value;
210
+ const valueString = typeof amountValue === 'string' ? amountValue : amountValue.toString();
211
+ this.amount(valueString);
212
+ // Handle different payee formats
213
+ this.payee(this.normalizePayee(bondArgs.payee));
214
+ }
215
+ else if (callMethod === 'nominate') {
216
+ const nominateArgs = call.args;
217
+ // Handle both string and object formats for targets
218
+ const targetAddresses = nominateArgs.targets.map((target) => {
219
+ if (typeof target === 'string') {
220
+ return target;
221
+ }
222
+ else if (target && typeof target === 'object' && 'id' in target) {
223
+ return target.id;
224
+ }
225
+ throw new sdk_core_1.InvalidTransactionError(`Invalid target format: ${JSON.stringify(target)}`);
226
+ });
227
+ this.validators(targetAddresses);
228
+ }
229
+ }
230
+ }
231
+ return tx;
232
+ }
233
+ /** @inheritdoc */
234
+ validateTransaction(tx) {
235
+ super.validateTransaction(tx);
236
+ this.validateFields();
237
+ }
238
+ /**
239
+ * Validate the builder fields
240
+ */
241
+ validateFields() {
242
+ // Ensure both bond and nominate operations are included
243
+ if (!this._amount || this._validators.length === 0) {
244
+ throw new sdk_core_1.InvalidTransactionError('Batch transaction must include both bond and nominate operations');
245
+ }
246
+ const validationResult = txnSchema_1.V8BatchTransactionSchema.validate({
247
+ amount: this._amount,
248
+ payee: this._payee,
249
+ validators: this._validators,
250
+ });
251
+ if (validationResult.error) {
252
+ throw new sdk_core_1.InvalidTransactionError(`Invalid transaction: ${validationResult.error.message}`);
253
+ }
254
+ }
255
+ testValidateFields() {
256
+ this.validateFields();
257
+ }
258
+ testValidateBondArgs(args) {
259
+ return this.validateBondArgs(args);
260
+ }
261
+ testValidateNominateArgs(args) {
262
+ return this.validateNominateArgs(args);
263
+ }
264
+ }
265
+ exports.V8BatchStakingBuilder = V8BatchStakingBuilder;
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhCYXRjaFN0YWtpbmdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92OEJhdGNoU3Rha2luZ0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsK0NBQWlEO0FBRWpELHNFQUF3RDtBQUV4RCxtREFBZ0Y7QUFDaEYsMkNBQXVEO0FBQ3ZELG9EQUE0QjtBQUU1QixnRUFBcUM7QUFhckM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEscUJBQXNCLFNBQVEsOEJBQWdCO0lBUXpELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSnJCLHlCQUF5QjtRQUNmLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBSW5DLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDTyxnQkFBZ0I7UUFDeEIsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUzQyw4QkFBOEI7UUFDOUIsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBRTNCLHNFQUFzRTtRQUN0RSxNQUFNLFFBQVEsR0FBRyw0QkFBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ25DO1lBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ25CLEtBQUssRUFBRSxJQUFJLENB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LENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYztRQUNwQix3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFDeEcsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsb0NBQXdCLENBQUMsUUFBUSxDQUFDO1lBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzdCLENBQUMsQ0FBQztRQUVILElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHdCQUF3QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLG9CQUFvQixDQUFDLElBQWdCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxJQUFrQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUExU0Qsc0RBMFNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFBvbHl4QmFzZUJ1aWxkZXIgfSBmcm9tICcuL2Jhc2VCdWlsZGVyJztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgeyBtZXRob2RzIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFY4QmF0Y2hUcmFuc2FjdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJhdGNoQXJncywgTm9taW5hdGVBcmdzLCBWOEJvbmRBcmdzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMgZm9yIGRlY29kZWQgdHJhbnNhY3Rpb24gZm9ybWF0c1xuaW50ZXJmYWNlIERlY29kZWRQYXllZSB7XG4gIHN0YWtlZD86IG51bGw7XG4gIHN0YXNoPzogbnVsbDtcbiAgY29udHJvbGxlcj86IG51bGw7XG4gIGFjY291bnQ/OiBzdHJpbmc7XG59XG5cbnR5cGUgUGF5ZWVWYWx1ZSA9IHN0cmluZyB8IERlY29kZWRQYXllZTtcbnR5cGUgQW1vdW50VmFsdWUgPSBzdHJpbmcgfCBudW1iZXI7XG5cbi8qKlxuICogUG9seW1lc2ggdjggYmF0Y2ggc3Rha2luZyBidWlsZGVyLlxuICpcbiAqIFBvbHltZXNoIHY4IGNoYW5nZWQgYHN0YWtpbmcuYm9uZGAgZnJvbSBgYm9uZChjb250cm9sbGVyLCB2YWx1ZSwgcGF5ZWUpYCB0byBgYm9uZCh2YWx1ZSwgcGF5ZWUpYFxuICog4oCUIHRoZSBzdGFzaCBhY2NvdW50IGlzIGl0cyBvd24gY29udHJvbGxlciwgc28gbm8gYGNvbnRyb2xsZXJgIGxlZyBpcyBlbmNvZGVkLiBUaGlzIGJ1aWxkZXJcbiAqIGNvbnN0cnVjdHMgYHV0aWxpdHkuYmF0Y2hBbGwoW2JvbmQsIG5vbWluYXRlXSlgIHdpdGggdGhlIDItYXJnIGJvbmQgY2FsbCBhZ2FpbnN0IHY4IGNoYWluXG4gKiBtZXRhZGF0YSAodjggc3BlY1ZlcnNpb24gLyB0eFZlcnNpb24pLlxuICpcbiAqIEJlaGF2aW91ciBpcyBvdGhlcndpc2UgaWRlbnRpY2FsIHRvIHRoZSB2NyB7QGxpbmsgQmF0Y2hTdGFraW5nQnVpbGRlcn0sIHdoaWNoIGlzIHJldGFpbmVkIGFzIHRoZVxuICogYFtDTEVBTlVQLVY4LU9MRF1gIHJvbGxiYWNrIHBhdGguXG4gKi9cbmV4cG9ydCBjbGFzcyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIgZXh0ZW5kcyBQb2x5eEJhc2VCdWlsZGVyIHtcbiAgLy8gRm9yIGJvbmQgb3BlcmF0aW9uXG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcGF5ZWU6IHN0cmluZyB8IHsgQWNjb3VudDogc3RyaW5nIH07XG5cbiAgLy8gRm9yIG5vbWluYXRlIG9wZXJhdGlvblxuICBwcm90ZWN0ZWQgX3ZhbGlkYXRvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMubWF0ZXJpYWwodXRpbHMuZ2V0VjhNYXRlcmlhbChfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5CYXRjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGJhdGNoIHRyYW5zYWN0aW9uIHRoYXQgY29tYmluZXMgYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9uc1xuICAgKiBCb3RoIG9wZXJhdGlvbnMgYXJlIHJlcXVpcmVkIGFuZCBhbHdheXMgYXRvbWljICh1c2luZyBiYXRjaEFsbClcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb24ge1xuICAgIC8vIEVuc3VyZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMgYXJlIGluY2x1ZGVkXG4gICAgaWYgKCF0aGlzLl9hbW91bnQgfHwgdGhpcy5fdmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQmF0Y2ggdHJhbnNhY3Rpb24gbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucycpO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VUeEluZm8gPSB0aGlzLmNyZWF0ZUJhc2VUeEluZm8oKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgaW5kaXZpZHVhbCBjYWxsc1xuICAgIGNvbnN0IGNhbGxzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gQWRkIGJvbmQgY2FsbCDigJQgdjggYm9uZCB0YWtlcyBvbmx5IHsgdmFsdWUsIHBheWVlIH0gKG5vIGNvbnRyb2xsZXIpXG4gICAgY29uc3QgYm9uZENhbGwgPSBtZXRob2RzLnN0YWtpbmcuYm9uZChcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMuX2Ftb3VudCxcbiAgICAgICAgcGF5ZWU6IHRoaXMuX3BheWVlIHx8ICdTdGFrZWQnLFxuICAgICAgfSBhcyB1bmtub3duIGFzIHsgY29udHJvbGxlcjogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBwYXllZTogc3RyaW5nIHwgeyBBY2NvdW50OiBzdHJpbmcgfSB9LFxuICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgYmFzZVR4SW5mby5vcHRpb25zXG4gICAgKTtcbiAgICBjYWxscy5wdXNoKGJvbmRDYWxsLm1ldGhvZCk7XG5cbiAgICAvLyBBZGQgbm9taW5hdGUgY2FsbFxuICAgIGNvbnN0IG5vbWluYXRlQ2FsbCA9IG1ldGhvZHMuc3Rha2luZy5ub21pbmF0ZShcbiAgICAgIHtcbiAgICAgICAgdGFyZ2V0czogdGhpcy5fdmFsaWRhdG9ycyxcbiAgICAgIH0sXG4gICAgICBiYXNlVHhJbmZvLmJhc2VUeEluZm8sXG4gICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICApO1xuICAgIGNhbGxzLnB1c2gobm9taW5hdGVDYWxsLm1ldGhvZCk7XG5cbiAgICAvLyBBbHdheXMgdXNlIGJhdGNoQWxsIChhdG9taWMpXG4gICAgcmV0dXJuIG1ldGhvZHMudXRpbGl0eS5iYXRjaEFsbChcbiAgICAgIHtcbiAgICAgICAgY2FsbHMsXG4gICAgICB9LFxuICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgYmFzZVR4SW5mby5vcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YWtpbmcgYW1vdW50IGZvciBib25kXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFraW5nIGFtb3VudFxuICAgKi9cbiAgZ2V0QW1vdW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Ftb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJld2FyZHMgZGVzdGluYXRpb24gZm9yIGJvbmQgKCdTdGFrZWQnLCAnU3Rhc2gnLCdDb250cm9sbGVyJywgb3IgeyBBY2NvdW50OiBzdHJpbmcgfSlcbiAgICovXG4gIHBheWVlKHBheWVlOiBzdHJpbmcgfCB7IEFjY291bnQ6IHN0cmluZyB9KTogdGhpcyB7XG4gICAgdGhpcy5fcGF5ZWUgPSBwYXllZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBheWVlXG4gICAqL1xuICBnZXRQYXllZSgpOiBzdHJpbmcgfCB7IEFjY291bnQ6IHN0cmluZyB9IHtcbiAgICByZXR1cm4gdGhpcy5fcGF5ZWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB2YWxpZGF0b3JzIHRvIG5vbWluYXRlXG4gICAqL1xuICB2YWxpZGF0b3JzKHZhbGlkYXRvcnM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgZm9yIChjb25zdCBhZGRyZXNzIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB9XG4gICAgdGhpcy5fdmFsaWRhdG9ycyA9IHZhbGlkYXRvcnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWxpZGF0b3JzIHRvIG5vbWluYXRlXG4gICAqL1xuICBnZXRWYWxpZGF0b3JzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdG9ycztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHhuOiBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfCBEZWNvZGVkU2lnbmVkVHgpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gZGVjb2RlZFR4bi5tZXRob2Q/Lm5hbWUgYXMgc3RyaW5nO1xuXG4gICAgLy8gYmF0Y2ggYm9uZCBhbmQgbm9taW5hdGVcbiAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ2JhdGNoQWxsJykge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuICAgICAgY29uc3QgY2FsbHMgPSB0eE1ldGhvZC5jYWxscztcblxuICAgICAgaWYgKGNhbGxzLmxlbmd0aCAhPT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgYmF0Y2ggc3Rha2luZyB0cmFuc2FjdGlvbjogZXhwZWN0ZWQgMiBjYWxscyBidXQgZ290ICR7Y2FsbHMubGVuZ3RofWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgdGhhdCBmaXJzdCBjYWxsIGlzIGJvbmRcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoY2FsbHNbMF0sIHRoaXMuX3JlZ2lzdHJ5KTtcbiAgICAgIGlmIChmaXJzdENhbGxNZXRob2QgIT09ICdib25kJykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgYmF0Y2ggc3Rha2luZyB0cmFuc2FjdGlvbjogZmlyc3QgY2FsbCBzaG91bGQgYmUgYm9uZCBidXQgZ290ICR7Zmlyc3RDYWxsTWV0aG9kfWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgdGhhdCBzZWNvbmQgY2FsbCBpcyBub21pbmF0ZVxuICAgICAgY29uc3Qgc2Vjb25kQ2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoY2FsbHNbMV0sIHRoaXMuX3JlZ2lzdHJ5KTtcbiAgICAgIGlmIChzZWNvbmRDYWxsTWV0aG9kICE9PSAnbm9taW5hdGUnKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICBgSW52YWxpZCBiYXRjaCBzdGFraW5nIHRyYW5zYWN0aW9uOiBzZWNvbmQgY2FsbCBzaG91bGQgYmUgbm9taW5hdGUgYnV0IGdvdCAke3NlY29uZENhbGxNZXRob2R9YFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGF0ZSBib25kIGFyZ3VtZW50c1xuICAgICAgY29uc3QgYm9uZEFyZ3MgPSBjYWxsc1swXS5hcmdzIGFzIHVua25vd24gYXMgVjhCb25kQXJncztcbiAgICAgIHRoaXMudmFsaWRhdGVCb25kQXJncyhib25kQXJncyk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIG5vbWluYXRlIGFyZ3VtZW50c1xuICAgICAgY29uc3Qgbm9taW5hdGVBcmdzID0gY2FsbHNbMV0uYXJncyBhcyB1bmtub3duIGFzIE5vbWluYXRlQXJncztcbiAgICAgIHRoaXMudmFsaWRhdGVOb21pbmF0ZUFyZ3Mobm9taW5hdGVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGU6ICR7bWV0aG9kTmFtZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplIGEgZGVjb2RlZCBwYXllZSB2YWx1ZSBpbnRvIHRoZSBjb25zdHJ1Y3Rpb24tc2lkZSBzaGFwZS5cbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplUGF5ZWUocGF5ZWVWYWx1ZTogUGF5ZWVWYWx1ZSk6IHN0cmluZyB8IHsgQWNjb3VudDogc3RyaW5nIH0ge1xuICAgIGxldCBub3JtYWxpemVkUGF5ZWU6IHN0cmluZyB8IHsgQWNjb3VudDogc3RyaW5nIH0gPSBwYXllZVZhbHVlIGFzIHN0cmluZztcbiAgICBpZiAodHlwZW9mIHBheWVlVmFsdWUgPT09ICdvYmplY3QnICYmIHBheWVlVmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlY29kZWRQYXllZSA9IHBheWVlVmFsdWUgYXMgRGVjb2RlZFBheWVlO1xuICAgICAgaWYgKGRlY29kZWRQYXllZS5zdGFrZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub3JtYWxpemVkUGF5ZWUgPSAnU3Rha2VkJztcbiAgICAgIH0gZWxzZSBpZiAoZGVjb2RlZFBheWVlLnN0YXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9ybWFsaXplZFBheWVlID0gJ1N0YXNoJztcbiAgICAgIH0gZWxzZSBpZiAoZGVjb2RlZFBheWVlLmNvbnRyb2xsZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub3JtYWxpemVkUGF5ZWUgPSAnQ29udHJvbGxlcic7XG4gICAgICB9IGVsc2UgaWYgKGRlY29kZWRQYXllZS5hY2NvdW50KSB7XG4gICAgICAgIG5vcm1hbGl6ZWRQYXllZSA9IHsgQWNjb3VudDogZGVjb2RlZFBheWVlLmFjY291bnQgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXllZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB2OCBib25kIGFyZ3VtZW50cyAobm8gY29udHJvbGxlcilcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVCb25kQXJncyhhcmdzOiBWOEJvbmRBcmdzKTogdm9pZCB7XG4gICAgLy8gSGFuZGxlIGJvdGggc3RyaW5nIGFuZCBudW1iZXIgZm9ybWF0cyBmb3IgdmFsdWVcbiAgICBjb25zdCBhbW91bnRWYWx1ZSA9IGFyZ3MudmFsdWUgYXMgQW1vdW50VmFsdWU7XG4gICAgY29uc3QgdmFsdWVTdHJpbmcgPSB0eXBlb2YgYW1vdW50VmFsdWUgPT09ICdzdHJpbmcnID8gYW1vdW50VmFsdWUgOiBhbW91bnRWYWx1ZS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZFBheWVlID0gdGhpcy5ub3JtYWxpemVQYXllZShhcmdzLnBheWVlIGFzIFBheWVlVmFsdWUpO1xuXG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFY4QmF0Y2hUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZUJvbmQoe1xuICAgICAgdmFsdWU6IHZhbHVlU3RyaW5nLFxuICAgICAgcGF5ZWU6IG5vcm1hbGl6ZWRQYXllZSxcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgYm9uZCBhcmdzOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgbm9taW5hdGUgYXJndW1lbnRzXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlTm9taW5hdGVBcmdzKGFyZ3M6IE5vbWluYXRlQXJncyk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSBib3RoIHN0cmluZyBhbmQgb2JqZWN0IGZvcm1hdHMgZm9yIHRhcmdldHNcbiAgICBjb25zdCB0YXJnZXRBZGRyZXNzZXMgPSBhcmdzLnRhcmdldHMubWFwKCh0YXJnZXQpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgJ2lkJyBpbiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgeyBpZDogc3RyaW5nIH0pLmlkO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHRhcmdldCBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX1gKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBWOEJhdGNoVHJhbnNhY3Rpb25TY2hlbWEudmFsaWRhdGVOb21pbmF0ZSh7XG4gICAgICB2YWxpZGF0b3JzOiB0YXJnZXRBZGRyZXNzZXMsXG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIG5vbWluYXRlIGFyZ3M6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGEgYmF0Y2ggdHJhbnNhY3Rpb25cbiAgICBpZiAoKHRoaXMuX21ldGhvZD8ubmFtZSBhcyBzdHJpbmcpICE9PSAnYmF0Y2hBbGwnKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgVHJhbnNhY3Rpb24gVHlwZTogJHt0aGlzLl9tZXRob2Q/Lm5hbWV9LiBFeHBlY3RlZCBiYXRjaEFsbGApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9tZXRob2QpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gdGhpcy5fbWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBCYXRjaEFyZ3M7XG5cbiAgICAgIGZvciAoY29uc3QgY2FsbCBvZiB0eE1ldGhvZC5jYWxscykge1xuICAgICAgICBjb25zdCBjYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShjYWxsLCB0aGlzLl9yZWdpc3RyeSk7XG4gICAgICAgIGlmIChjYWxsTWV0aG9kID09PSAnYm9uZCcpIHtcbiAgICAgICAgICBjb25zdCBib25kQXJncyA9IGNhbGwuYXJncyBhcyB1bmtub3duIGFzIFY4Qm9uZEFyZ3M7XG4gICAgICAgICAgLy8gSGFuZGxlIGJvdGggc3RyaW5nIGFuZCBudW1iZXIgZm9ybWF0cyBmb3IgdmFsdWVcbiAgICAgICAgICBjb25zdCBhbW91bnRWYWx1ZSA9IGJvbmRBcmdzLnZhbHVlIGFzIEFtb3VudFZhbHVlO1xuICAgICAgICAgIGNvbnN0IHZhbHVlU3RyaW5nID0gdHlwZW9mIGFtb3VudFZhbHVlID09PSAnc3RyaW5nJyA/IGFtb3VudFZhbHVlIDogYW1vdW50VmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgICB0aGlzLmFtb3VudCh2YWx1ZVN0cmluZyk7XG5cbiAgICAgICAgICAvLyBIYW5kbGUgZGlmZmVyZW50IHBheWVlIGZvcm1hdHNcbiAgICAgICAgICB0aGlzLnBheWVlKHRoaXMubm9ybWFsaXplUGF5ZWUoYm9uZEFyZ3MucGF5ZWUgYXMgUGF5ZWVWYWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNhbGxNZXRob2QgPT09ICdub21pbmF0ZScpIHtcbiAgICAgICAgICBjb25zdCBub21pbmF0ZUFyZ3MgPSBjYWxsLmFyZ3MgYXMgdW5rbm93biBhcyBOb21pbmF0ZUFyZ3M7XG5cbiAgICAgICAgICAvLyBIYW5kbGUgYm90aCBzdHJpbmcgYW5kIG9iamVjdCBmb3JtYXRzIGZvciB0YXJnZXRzXG4gICAgICAgICAgY29uc3QgdGFyZ2V0QWRkcmVzc2VzID0gbm9taW5hdGVBcmdzLnRhcmdldHMubWFwKCh0YXJnZXQpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0YXJnZXQgJiYgdHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcgJiYgJ2lkJyBpbiB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgeyBpZDogc3RyaW5nIH0pLmlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHRhcmdldCBmb3JtYXQ6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0KX1gKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvcnModGFyZ2V0QWRkcmVzc2VzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHgpO1xuICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYnVpbGRlciBmaWVsZHNcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZHMoKTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucyBhcmUgaW5jbHVkZWRcbiAgICBpZiAoIXRoaXMuX2Ftb3VudCB8fCB0aGlzLl92YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdCYXRjaCB0cmFuc2FjdGlvbiBtdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFY4QmF0Y2hUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7XG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIHBheWVlOiB0aGlzLl9wYXllZSxcbiAgICAgIHZhbGlkYXRvcnM6IHRoaXMuX3ZhbGlkYXRvcnMsXG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHRyYW5zYWN0aW9uOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICB0ZXN0VmFsaWRhdGVGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkcygpO1xuICB9XG5cbiAgcHVibGljIHRlc3RWYWxpZGF0ZUJvbmRBcmdzKGFyZ3M6IFY4Qm9uZEFyZ3MpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZUJvbmRBcmdzKGFyZ3MpO1xuICB9XG5cbiAgcHVibGljIHRlc3RWYWxpZGF0ZU5vbWluYXRlQXJncyhhcmdzOiBOb21pbmF0ZUFyZ3MpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0ZU5vbWluYXRlQXJncyhhcmdzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,11 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BatchUnstakingBuilder } from './batchUnstakingBuilder';
3
+ /**
4
+ * Builds a `utility.batchAll([chill, unbond])` unstaking transaction against Polymesh v8 chain
5
+ * metadata. chill/unbond are unchanged between v7 and v8; only the material (specVersion /
6
+ * txVersion) differs from {@link BatchUnstakingBuilder}.
7
+ */
8
+ export declare class V8BatchUnstakingBuilder extends BatchUnstakingBuilder {
9
+ constructor(_coinConfig: Readonly<CoinConfig>);
10
+ }
11
+ //# sourceMappingURL=v8BatchUnstakingBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8BatchUnstakingBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/v8BatchUnstakingBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,qBAAqB;gBACpD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI9C"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.V8BatchUnstakingBuilder = void 0;
7
+ const batchUnstakingBuilder_1 = require("./batchUnstakingBuilder");
8
+ const utils_1 = __importDefault(require("./utils"));
9
+ /**
10
+ * Builds a `utility.batchAll([chill, unbond])` unstaking transaction against Polymesh v8 chain
11
+ * metadata. chill/unbond are unchanged between v7 and v8; only the material (specVersion /
12
+ * txVersion) differs from {@link BatchUnstakingBuilder}.
13
+ */
14
+ class V8BatchUnstakingBuilder extends batchUnstakingBuilder_1.BatchUnstakingBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ this.material(utils_1.default.getV8Material(_coinConfig.network.type));
18
+ }
19
+ }
20
+ exports.V8BatchUnstakingBuilder = V8BatchUnstakingBuilder;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Y4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1FQUFnRTtBQUNoRSxvREFBNEI7QUFFNUI7Ozs7R0FJRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsNkNBQXFCO0lBQ2hFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGO0FBTEQsMERBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCYXRjaFVuc3Rha2luZ0J1aWxkZXIgfSBmcm9tICcuL2JhdGNoVW5zdGFraW5nQnVpbGRlcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQnVpbGRzIGEgYHV0aWxpdHkuYmF0Y2hBbGwoW2NoaWxsLCB1bmJvbmRdKWAgdW5zdGFraW5nIHRyYW5zYWN0aW9uIGFnYWluc3QgUG9seW1lc2ggdjggY2hhaW5cbiAqIG1ldGFkYXRhLiBjaGlsbC91bmJvbmQgYXJlIHVuY2hhbmdlZCBiZXR3ZWVuIHY3IGFuZCB2ODsgb25seSB0aGUgbWF0ZXJpYWwgKHNwZWNWZXJzaW9uIC9cbiAqIHR4VmVyc2lvbikgZGlmZmVycyBmcm9tIHtAbGluayBCYXRjaFVuc3Rha2luZ0J1aWxkZXJ9LlxuICovXG5leHBvcnQgY2xhc3MgVjhCYXRjaFVuc3Rha2luZ0J1aWxkZXIgZXh0ZW5kcyBCYXRjaFVuc3Rha2luZ0J1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5tYXRlcmlhbCh1dGlscy5nZXRWOE1hdGVyaWFsKF9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BondExtraBuilder } from './bondExtraBuilder';
3
+ /**
4
+ * Builds a staking.bondExtra transaction against Polymesh v8 chain metadata. bondExtra is
5
+ * unchanged between v7 and v8 (`bondExtra(maxAdditional)`); only the material (specVersion /
6
+ * txVersion) differs from {@link BondExtraBuilder}.
7
+ */
8
+ export declare class V8BondExtraBuilder extends BondExtraBuilder {
9
+ constructor(_coinConfig: Readonly<CoinConfig>);
10
+ }
11
+ //# sourceMappingURL=v8BondExtraBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8BondExtraBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/v8BondExtraBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,gBAAgB;gBAC1C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;CAI9C"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.V8BondExtraBuilder = void 0;
7
+ const bondExtraBuilder_1 = require("./bondExtraBuilder");
8
+ const utils_1 = __importDefault(require("./utils"));
9
+ /**
10
+ * Builds a staking.bondExtra transaction against Polymesh v8 chain metadata. bondExtra is
11
+ * unchanged between v7 and v8 (`bondExtra(maxAdditional)`); only the material (specVersion /
12
+ * txVersion) differs from {@link BondExtraBuilder}.
13
+ */
14
+ class V8BondExtraBuilder extends bondExtraBuilder_1.BondExtraBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ this.material(utils_1.default.getV8Material(_coinConfig.network.type));
18
+ }
19
+ }
20
+ exports.V8BondExtraBuilder = V8BondExtraBuilder;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhCb25kRXh0cmFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi92OEJvbmRFeHRyYUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EseURBQXNEO0FBQ3RELG9EQUE0QjtBQUU1Qjs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxtQ0FBZ0I7SUFDdEQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUFMRCxnREFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJvbmRFeHRyYUJ1aWxkZXIgfSBmcm9tICcuL2JvbmRFeHRyYUJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHN0YWtpbmcuYm9uZEV4dHJhIHRyYW5zYWN0aW9uIGFnYWluc3QgUG9seW1lc2ggdjggY2hhaW4gbWV0YWRhdGEuIGJvbmRFeHRyYSBpc1xuICogdW5jaGFuZ2VkIGJldHdlZW4gdjcgYW5kIHY4IChgYm9uZEV4dHJhKG1heEFkZGl0aW9uYWwpYCk7IG9ubHkgdGhlIG1hdGVyaWFsIChzcGVjVmVyc2lvbiAvXG4gKiB0eFZlcnNpb24pIGRpZmZlcnMgZnJvbSB7QGxpbmsgQm9uZEV4dHJhQnVpbGRlcn0uXG4gKi9cbmV4cG9ydCBjbGFzcyBWOEJvbmRFeHRyYUJ1aWxkZXIgZXh0ZW5kcyBCb25kRXh0cmFCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMubWF0ZXJpYWwodXRpbHMuZ2V0VjhNYXRlcmlhbChfY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpKTtcbiAgfVxufVxuIl19