@airgap/substrate 0.13.45-beta.2 → 0.13.45-beta.3

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 (396) hide show
  1. package/package.json +5 -5
  2. package/v0/index.js +12 -12
  3. package/v0/index.js.map +1 -1
  4. package/v0/protocol/SubstrateCryptoClient.js +23 -94
  5. package/v0/protocol/SubstrateCryptoClient.js.map +1 -1
  6. package/v0/protocol/SubstrateDelegateProtocol.js +297 -542
  7. package/v0/protocol/SubstrateDelegateProtocol.js.map +1 -1
  8. package/v0/protocol/SubstrateNetwork.js +1 -1
  9. package/v0/protocol/SubstrateNetwork.js.map +1 -1
  10. package/v0/protocol/SubstrateProtocol.js +333 -672
  11. package/v0/protocol/SubstrateProtocol.js.map +1 -1
  12. package/v0/protocol/SubstrateProtocolOptions.js +25 -93
  13. package/v0/protocol/SubstrateProtocolOptions.js.map +1 -1
  14. package/v0/protocol/astar/AstarAddress.js +7 -27
  15. package/v0/protocol/astar/AstarAddress.js.map +1 -1
  16. package/v0/protocol/common/SubstrateAccountController.js +400 -687
  17. package/v0/protocol/common/SubstrateAccountController.js.map +1 -1
  18. package/v0/protocol/common/SubstrateTransactionController.d.ts +0 -1
  19. package/v0/protocol/common/SubstrateTransactionController.js +185 -346
  20. package/v0/protocol/common/SubstrateTransactionController.js.map +1 -1
  21. package/v0/protocol/common/blockexplorer/SubstrateBlockExplorerClient.js +52 -100
  22. package/v0/protocol/common/blockexplorer/SubstrateBlockExplorerClient.js.map +1 -1
  23. package/v0/protocol/common/data/account/SubstrateAccountInfo.js +27 -29
  24. package/v0/protocol/common/data/account/SubstrateAccountInfo.js.map +1 -1
  25. package/v0/protocol/common/data/account/SubstrateAddress.d.ts +0 -1
  26. package/v0/protocol/common/data/account/SubstrateAddress.js +43 -46
  27. package/v0/protocol/common/data/account/SubstrateAddress.js.map +1 -1
  28. package/v0/protocol/common/data/account/SubstrateRegistration.js +50 -56
  29. package/v0/protocol/common/data/account/SubstrateRegistration.js.map +1 -1
  30. package/v0/protocol/common/data/metadata/Metadata.js +24 -25
  31. package/v0/protocol/common/data/metadata/Metadata.js.map +1 -1
  32. package/v0/protocol/common/data/metadata/MetadataVersioned.js +2 -5
  33. package/v0/protocol/common/data/metadata/MetadataVersioned.js.map +1 -1
  34. package/v0/protocol/common/data/metadata/decorator/MetadataDecorator.js +18 -20
  35. package/v0/protocol/common/data/metadata/decorator/MetadataDecorator.js.map +1 -1
  36. package/v0/protocol/common/data/metadata/decorator/constant/SubstrateConstant.d.ts +0 -1
  37. package/v0/protocol/common/data/metadata/decorator/storage/SubstrateStorageEntry.js +89 -237
  38. package/v0/protocol/common/data/metadata/decorator/storage/SubstrateStorageEntry.js.map +1 -1
  39. package/v0/protocol/common/data/metadata/v11/MetadataV11.js +43 -63
  40. package/v0/protocol/common/data/metadata/v11/MetadataV11.js.map +1 -1
  41. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Call.js +30 -51
  42. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Call.js.map +1 -1
  43. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Constant.js +20 -38
  44. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Constant.js.map +1 -1
  45. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Error.js +16 -34
  46. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Error.js.map +1 -1
  47. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Event.js +18 -36
  48. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Event.js.map +1 -1
  49. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Module.js +29 -51
  50. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Module.js.map +1 -1
  51. package/v0/protocol/common/data/metadata/v11/module/storage/MetadataV11Storage.js +17 -35
  52. package/v0/protocol/common/data/metadata/v11/module/storage/MetadataV11Storage.js.map +1 -1
  53. package/v0/protocol/common/data/metadata/v11/module/storage/MetadataV11StorageEntry.js +23 -41
  54. package/v0/protocol/common/data/metadata/v11/module/storage/MetadataV11StorageEntry.js.map +1 -1
  55. package/v0/protocol/common/data/metadata/v11/module/storage/MetadataV11StorageEntryType.js +72 -114
  56. package/v0/protocol/common/data/metadata/v11/module/storage/MetadataV11StorageEntryType.js.map +1 -1
  57. package/v0/protocol/common/data/metadata/v12/MetadataV12.js +41 -61
  58. package/v0/protocol/common/data/metadata/v12/MetadataV12.js.map +1 -1
  59. package/v0/protocol/common/data/metadata/v12/module/MetadataV12Module.js +14 -32
  60. package/v0/protocol/common/data/metadata/v12/module/MetadataV12Module.js.map +1 -1
  61. package/v0/protocol/common/data/metadata/v13/MetadataV13.js +41 -61
  62. package/v0/protocol/common/data/metadata/v13/MetadataV13.js.map +1 -1
  63. package/v0/protocol/common/data/metadata/v13/module/MetadataV13Module.js +31 -53
  64. package/v0/protocol/common/data/metadata/v13/module/MetadataV13Module.js.map +1 -1
  65. package/v0/protocol/common/data/metadata/v13/module/storage/MetadataV13Storage.js +17 -35
  66. package/v0/protocol/common/data/metadata/v13/module/storage/MetadataV13Storage.js.map +1 -1
  67. package/v0/protocol/common/data/metadata/v13/module/storage/MetadataV13StorageEntry.js +23 -41
  68. package/v0/protocol/common/data/metadata/v13/module/storage/MetadataV13StorageEntry.js.map +1 -1
  69. package/v0/protocol/common/data/metadata/v13/module/storage/MetadataV13StorageEntryType.js +83 -130
  70. package/v0/protocol/common/data/metadata/v13/module/storage/MetadataV13StorageEntryType.js.map +1 -1
  71. package/v0/protocol/common/data/metadata/v14/MetadataV14.js +53 -74
  72. package/v0/protocol/common/data/metadata/v14/MetadataV14.js.map +1 -1
  73. package/v0/protocol/common/data/metadata/v14/MetadataV14Component.js +7 -25
  74. package/v0/protocol/common/data/metadata/v14/MetadataV14Component.js.map +1 -1
  75. package/v0/protocol/common/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js +17 -35
  76. package/v0/protocol/common/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js.map +1 -1
  77. package/v0/protocol/common/data/metadata/v14/extrinsic/MetadataV14SignedExtension.js +16 -34
  78. package/v0/protocol/common/data/metadata/v14/extrinsic/MetadataV14SignedExtension.js.map +1 -1
  79. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Call.js +8 -28
  80. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Call.js.map +1 -1
  81. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Constant.js +19 -37
  82. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Constant.js.map +1 -1
  83. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Error.js +8 -28
  84. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Error.js.map +1 -1
  85. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Event.js +8 -28
  86. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Event.js.map +1 -1
  87. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Pallet.js +30 -48
  88. package/v0/protocol/common/data/metadata/v14/pallet/MetadataV14Pallet.js.map +1 -1
  89. package/v0/protocol/common/data/metadata/v14/pallet/storage/MetadataV14Storage.js +16 -34
  90. package/v0/protocol/common/data/metadata/v14/pallet/storage/MetadataV14Storage.js.map +1 -1
  91. package/v0/protocol/common/data/metadata/v14/pallet/storage/MetadataV14StorageEntry.js +23 -41
  92. package/v0/protocol/common/data/metadata/v14/pallet/storage/MetadataV14StorageEntry.js.map +1 -1
  93. package/v0/protocol/common/data/metadata/v14/pallet/storage/MetadataV14StorageEntryType.js +49 -90
  94. package/v0/protocol/common/data/metadata/v14/pallet/storage/MetadataV14StorageEntryType.js.map +1 -1
  95. package/v0/protocol/common/data/metadata/v14/registry/MetadataV14PortableRegistry.js +20 -41
  96. package/v0/protocol/common/data/metadata/v14/registry/MetadataV14PortableRegistry.js.map +1 -1
  97. package/v0/protocol/common/data/metadata/v14/registry/MetadataV14PortableType.js +17 -35
  98. package/v0/protocol/common/data/metadata/v14/registry/MetadataV14PortableType.js.map +1 -1
  99. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiField.js +20 -38
  100. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiField.js.map +1 -1
  101. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiType.js +22 -40
  102. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiType.js.map +1 -1
  103. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiTypeParameter.js +16 -34
  104. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiTypeParameter.js.map +1 -1
  105. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiVariant.js +21 -39
  106. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14SiVariant.js.map +1 -1
  107. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14TypeDef.js +106 -150
  108. package/v0/protocol/common/data/metadata/v14/registry/si/MetadataV14TypeDef.js.map +1 -1
  109. package/v0/protocol/common/data/scale/SCALEDecoder.d.ts +2 -3
  110. package/v0/protocol/common/data/scale/SCALEDecoder.js +69 -74
  111. package/v0/protocol/common/data/scale/SCALEDecoder.js.map +1 -1
  112. package/v0/protocol/common/data/scale/type/SCALEAccountId.d.ts +0 -1
  113. package/v0/protocol/common/data/scale/type/SCALEAccountId.js +25 -44
  114. package/v0/protocol/common/data/scale/type/SCALEAccountId.js.map +1 -1
  115. package/v0/protocol/common/data/scale/type/SCALEArray.js +27 -45
  116. package/v0/protocol/common/data/scale/type/SCALEArray.js.map +1 -1
  117. package/v0/protocol/common/data/scale/type/SCALEBoolean.js +18 -36
  118. package/v0/protocol/common/data/scale/type/SCALEBoolean.js.map +1 -1
  119. package/v0/protocol/common/data/scale/type/SCALEBytes.d.ts +0 -1
  120. package/v0/protocol/common/data/scale/type/SCALEBytes.js +23 -42
  121. package/v0/protocol/common/data/scale/type/SCALEBytes.js.map +1 -1
  122. package/v0/protocol/common/data/scale/type/SCALEClass.js +8 -28
  123. package/v0/protocol/common/data/scale/type/SCALEClass.js.map +1 -1
  124. package/v0/protocol/common/data/scale/type/SCALECompactInt.d.ts +1 -1
  125. package/v0/protocol/common/data/scale/type/SCALECompactInt.js +54 -73
  126. package/v0/protocol/common/data/scale/type/SCALECompactInt.js.map +1 -1
  127. package/v0/protocol/common/data/scale/type/SCALEData.d.ts +0 -1
  128. package/v0/protocol/common/data/scale/type/SCALEData.js +33 -51
  129. package/v0/protocol/common/data/scale/type/SCALEData.js.map +1 -1
  130. package/v0/protocol/common/data/scale/type/SCALEEnum.js +21 -39
  131. package/v0/protocol/common/data/scale/type/SCALEEnum.js.map +1 -1
  132. package/v0/protocol/common/data/scale/type/SCALEEra.js +46 -68
  133. package/v0/protocol/common/data/scale/type/SCALEEra.js.map +1 -1
  134. package/v0/protocol/common/data/scale/type/SCALEHash.d.ts +0 -1
  135. package/v0/protocol/common/data/scale/type/SCALEHash.js +29 -53
  136. package/v0/protocol/common/data/scale/type/SCALEHash.js.map +1 -1
  137. package/v0/protocol/common/data/scale/type/SCALEInt.d.ts +1 -1
  138. package/v0/protocol/common/data/scale/type/SCALEInt.js +46 -65
  139. package/v0/protocol/common/data/scale/type/SCALEInt.js.map +1 -1
  140. package/v0/protocol/common/data/scale/type/SCALEMultiAddress.d.ts +1 -2
  141. package/v0/protocol/common/data/scale/type/SCALEMultiAddress.js +40 -59
  142. package/v0/protocol/common/data/scale/type/SCALEMultiAddress.js.map +1 -1
  143. package/v0/protocol/common/data/scale/type/SCALEOptional.js +27 -47
  144. package/v0/protocol/common/data/scale/type/SCALEOptional.js.map +1 -1
  145. package/v0/protocol/common/data/scale/type/SCALEString.js +25 -44
  146. package/v0/protocol/common/data/scale/type/SCALEString.js.map +1 -1
  147. package/v0/protocol/common/data/scale/type/SCALETuple.js +22 -40
  148. package/v0/protocol/common/data/scale/type/SCALETuple.js.map +1 -1
  149. package/v0/protocol/common/data/scale/type/SCALEType.js +6 -9
  150. package/v0/protocol/common/data/scale/type/SCALEType.js.map +1 -1
  151. package/v0/protocol/common/data/staking/SubstrateActiveEraInfo.js +11 -12
  152. package/v0/protocol/common/data/staking/SubstrateActiveEraInfo.js.map +1 -1
  153. package/v0/protocol/common/data/staking/SubstrateEraElectionStatus.js +14 -15
  154. package/v0/protocol/common/data/staking/SubstrateEraElectionStatus.js.map +1 -1
  155. package/v0/protocol/common/data/staking/SubstrateEraRewardPoints.js +13 -16
  156. package/v0/protocol/common/data/staking/SubstrateEraRewardPoints.js.map +1 -1
  157. package/v0/protocol/common/data/staking/SubstrateExposure.js +14 -17
  158. package/v0/protocol/common/data/staking/SubstrateExposure.js.map +1 -1
  159. package/v0/protocol/common/data/staking/SubstrateNominationStatus.js +1 -1
  160. package/v0/protocol/common/data/staking/SubstrateNominationStatus.js.map +1 -1
  161. package/v0/protocol/common/data/staking/SubstrateNominations.js +12 -13
  162. package/v0/protocol/common/data/staking/SubstrateNominations.js.map +1 -1
  163. package/v0/protocol/common/data/staking/SubstrateNominatorDetails.d.ts +1 -1
  164. package/v0/protocol/common/data/staking/SubstratePayee.js +1 -1
  165. package/v0/protocol/common/data/staking/SubstratePayee.js.map +1 -1
  166. package/v0/protocol/common/data/staking/SubstrateSlashingSpans.js +13 -14
  167. package/v0/protocol/common/data/staking/SubstrateSlashingSpans.js.map +1 -1
  168. package/v0/protocol/common/data/staking/SubstrateStakingActionType.js +1 -1
  169. package/v0/protocol/common/data/staking/SubstrateStakingActionType.js.map +1 -1
  170. package/v0/protocol/common/data/staking/SubstrateStakingLedger.js +16 -19
  171. package/v0/protocol/common/data/staking/SubstrateStakingLedger.js.map +1 -1
  172. package/v0/protocol/common/data/staking/SubstrateValidatorDetails.d.ts +1 -1
  173. package/v0/protocol/common/data/staking/SubstrateValidatorPrefs.js +9 -10
  174. package/v0/protocol/common/data/staking/SubstrateValidatorPrefs.js.map +1 -1
  175. package/v0/protocol/common/data/transaction/SubstrateSignature.d.ts +0 -1
  176. package/v0/protocol/common/data/transaction/SubstrateSignature.js +30 -53
  177. package/v0/protocol/common/data/transaction/SubstrateSignature.js.map +1 -1
  178. package/v0/protocol/common/data/transaction/SubstrateTransaction.d.ts +1 -1
  179. package/v0/protocol/common/data/transaction/SubstrateTransaction.js +53 -73
  180. package/v0/protocol/common/data/transaction/SubstrateTransaction.js.map +1 -1
  181. package/v0/protocol/common/data/transaction/SubstrateTransactionPayload.js +44 -76
  182. package/v0/protocol/common/data/transaction/SubstrateTransactionPayload.js.map +1 -1
  183. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethod.js +40 -76
  184. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethod.js.map +1 -1
  185. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethodArgs.js +360 -631
  186. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethodArgs.js.map +1 -1
  187. package/v0/protocol/common/node/SubstrateNodeClient.js +226 -533
  188. package/v0/protocol/common/node/SubstrateNodeClient.js.map +1 -1
  189. package/v0/protocol/common/node/supported.d.ts +9 -9
  190. package/v0/protocol/common/node/supported.js +1 -1
  191. package/v0/protocol/common/node/supported.js.map +1 -1
  192. package/v0/protocol/compat/SubstrateCompatAddress.d.ts +1 -2
  193. package/v0/protocol/compat/SubstrateCompatAddress.js +17 -30
  194. package/v0/protocol/compat/SubstrateCompatAddress.js.map +1 -1
  195. package/v0/protocol/compat/SubstrateCompatSignature.d.ts +0 -1
  196. package/v0/protocol/compat/SubstrateCompatSignature.js +4 -5
  197. package/v0/protocol/compat/SubstrateCompatSignature.js.map +1 -1
  198. package/v0/protocol/kusama/KusamaAddress.js +7 -27
  199. package/v0/protocol/kusama/KusamaAddress.js.map +1 -1
  200. package/v0/protocol/moonbeam/MoonbeamAddress.d.ts +0 -1
  201. package/v0/protocol/moonbeam/MoonbeamAddress.js +45 -36
  202. package/v0/protocol/moonbeam/MoonbeamAddress.js.map +1 -1
  203. package/v0/protocol/moonbeam/MoonbeamSignature.d.ts +0 -1
  204. package/v0/protocol/moonbeam/MoonbeamSignature.js +16 -35
  205. package/v0/protocol/moonbeam/MoonbeamSignature.js.map +1 -1
  206. package/v0/protocol/polkadot/PolkadotAddress.js +7 -27
  207. package/v0/protocol/polkadot/PolkadotAddress.js.map +1 -1
  208. package/v0/serializer/validators/transaction-validator.js +30 -83
  209. package/v0/serializer/validators/transaction-validator.js.map +1 -1
  210. package/v0/serializer/validators/validators.js +54 -133
  211. package/v0/serializer/validators/validators.js.map +1 -1
  212. package/v0/utils/sr25519.js +26 -74
  213. package/v0/utils/sr25519.js.map +1 -1
  214. package/v1/block-explorer/subscan/SubscanBlockExplorer.js +12 -61
  215. package/v1/block-explorer/subscan/SubscanBlockExplorer.js.map +1 -1
  216. package/v1/block-explorer/subscan/SubscanBlockExplorerClient.js +55 -103
  217. package/v1/block-explorer/subscan/SubscanBlockExplorerClient.js.map +1 -1
  218. package/v1/controller/account/SubstrateCommonAccountController.js +65 -132
  219. package/v1/controller/account/SubstrateCommonAccountController.js.map +1 -1
  220. package/v1/controller/transaction/SubstrateCommonTransactionController.js +194 -356
  221. package/v1/controller/transaction/SubstrateCommonTransactionController.js.map +1 -1
  222. package/v1/crypto/SubstrateCryptoClient.js +23 -94
  223. package/v1/crypto/SubstrateCryptoClient.js.map +1 -1
  224. package/v1/data/account/SubstrateAccountInfo.js +27 -29
  225. package/v1/data/account/SubstrateAccountInfo.js.map +1 -1
  226. package/v1/data/account/SubstrateRegistration.js +50 -56
  227. package/v1/data/account/SubstrateRegistration.js.map +1 -1
  228. package/v1/data/account/address/SubstrateAddress.d.ts +1 -2
  229. package/v1/data/account/address/SubstrateAddress.js +2 -3
  230. package/v1/data/account/address/SubstrateAddress.js.map +1 -1
  231. package/v1/data/account/address/SubstrateAddressFactory.d.ts +2 -3
  232. package/v1/data/account/address/SubstrateAddressFactory.js +16 -23
  233. package/v1/data/account/address/SubstrateAddressFactory.js.map +1 -1
  234. package/v1/data/account/address/SubstrateEthAddress.d.ts +0 -1
  235. package/v1/data/account/address/SubstrateEthAddress.js +48 -39
  236. package/v1/data/account/address/SubstrateEthAddress.js.map +1 -1
  237. package/v1/data/account/address/SubstrateSS58Address.d.ts +0 -1
  238. package/v1/data/account/address/SubstrateSS58Address.js +47 -50
  239. package/v1/data/account/address/SubstrateSS58Address.js.map +1 -1
  240. package/v1/data/metadata/Metadata.js +24 -25
  241. package/v1/data/metadata/Metadata.js.map +1 -1
  242. package/v1/data/metadata/MetadataVersioned.js +2 -5
  243. package/v1/data/metadata/MetadataVersioned.js.map +1 -1
  244. package/v1/data/metadata/decorator/MetadataDecorator.js +18 -20
  245. package/v1/data/metadata/decorator/MetadataDecorator.js.map +1 -1
  246. package/v1/data/metadata/decorator/constant/SubstrateConstant.d.ts +0 -1
  247. package/v1/data/metadata/decorator/storage/SubstrateStorageEntry.js +89 -237
  248. package/v1/data/metadata/decorator/storage/SubstrateStorageEntry.js.map +1 -1
  249. package/v1/data/metadata/v11/MetadataV11.js +43 -63
  250. package/v1/data/metadata/v11/MetadataV11.js.map +1 -1
  251. package/v1/data/metadata/v11/module/MetadataV11Call.js +30 -51
  252. package/v1/data/metadata/v11/module/MetadataV11Call.js.map +1 -1
  253. package/v1/data/metadata/v11/module/MetadataV11Constant.js +20 -38
  254. package/v1/data/metadata/v11/module/MetadataV11Constant.js.map +1 -1
  255. package/v1/data/metadata/v11/module/MetadataV11Error.js +16 -34
  256. package/v1/data/metadata/v11/module/MetadataV11Error.js.map +1 -1
  257. package/v1/data/metadata/v11/module/MetadataV11Event.js +18 -36
  258. package/v1/data/metadata/v11/module/MetadataV11Event.js.map +1 -1
  259. package/v1/data/metadata/v11/module/MetadataV11Module.js +29 -51
  260. package/v1/data/metadata/v11/module/MetadataV11Module.js.map +1 -1
  261. package/v1/data/metadata/v11/module/storage/MetadataV11Storage.js +17 -35
  262. package/v1/data/metadata/v11/module/storage/MetadataV11Storage.js.map +1 -1
  263. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntry.js +23 -41
  264. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntry.js.map +1 -1
  265. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntryType.js +72 -114
  266. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntryType.js.map +1 -1
  267. package/v1/data/metadata/v12/MetadataV12.js +41 -61
  268. package/v1/data/metadata/v12/MetadataV12.js.map +1 -1
  269. package/v1/data/metadata/v12/module/MetadataV12Module.js +14 -32
  270. package/v1/data/metadata/v12/module/MetadataV12Module.js.map +1 -1
  271. package/v1/data/metadata/v13/MetadataV13.js +41 -61
  272. package/v1/data/metadata/v13/MetadataV13.js.map +1 -1
  273. package/v1/data/metadata/v13/module/MetadataV13Module.js +31 -53
  274. package/v1/data/metadata/v13/module/MetadataV13Module.js.map +1 -1
  275. package/v1/data/metadata/v13/module/storage/MetadataV13Storage.js +17 -35
  276. package/v1/data/metadata/v13/module/storage/MetadataV13Storage.js.map +1 -1
  277. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntry.js +23 -41
  278. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntry.js.map +1 -1
  279. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntryType.js +83 -130
  280. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntryType.js.map +1 -1
  281. package/v1/data/metadata/v14/MetadataV14.js +53 -74
  282. package/v1/data/metadata/v14/MetadataV14.js.map +1 -1
  283. package/v1/data/metadata/v14/MetadataV14Component.js +7 -25
  284. package/v1/data/metadata/v14/MetadataV14Component.js.map +1 -1
  285. package/v1/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js +17 -35
  286. package/v1/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js.map +1 -1
  287. package/v1/data/metadata/v14/extrinsic/MetadataV14SignedExtension.js +16 -34
  288. package/v1/data/metadata/v14/extrinsic/MetadataV14SignedExtension.js.map +1 -1
  289. package/v1/data/metadata/v14/pallet/MetadataV14Call.js +8 -28
  290. package/v1/data/metadata/v14/pallet/MetadataV14Call.js.map +1 -1
  291. package/v1/data/metadata/v14/pallet/MetadataV14Constant.js +19 -37
  292. package/v1/data/metadata/v14/pallet/MetadataV14Constant.js.map +1 -1
  293. package/v1/data/metadata/v14/pallet/MetadataV14Error.js +8 -28
  294. package/v1/data/metadata/v14/pallet/MetadataV14Error.js.map +1 -1
  295. package/v1/data/metadata/v14/pallet/MetadataV14Event.js +8 -28
  296. package/v1/data/metadata/v14/pallet/MetadataV14Event.js.map +1 -1
  297. package/v1/data/metadata/v14/pallet/MetadataV14Pallet.js +30 -48
  298. package/v1/data/metadata/v14/pallet/MetadataV14Pallet.js.map +1 -1
  299. package/v1/data/metadata/v14/pallet/storage/MetadataV14Storage.js +16 -34
  300. package/v1/data/metadata/v14/pallet/storage/MetadataV14Storage.js.map +1 -1
  301. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntry.js +23 -41
  302. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntry.js.map +1 -1
  303. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntryType.js +49 -90
  304. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntryType.js.map +1 -1
  305. package/v1/data/metadata/v14/registry/MetadataV14PortableRegistry.js +20 -41
  306. package/v1/data/metadata/v14/registry/MetadataV14PortableRegistry.js.map +1 -1
  307. package/v1/data/metadata/v14/registry/MetadataV14PortableType.js +17 -35
  308. package/v1/data/metadata/v14/registry/MetadataV14PortableType.js.map +1 -1
  309. package/v1/data/metadata/v14/registry/si/MetadataV14SiField.js +20 -38
  310. package/v1/data/metadata/v14/registry/si/MetadataV14SiField.js.map +1 -1
  311. package/v1/data/metadata/v14/registry/si/MetadataV14SiType.js +22 -40
  312. package/v1/data/metadata/v14/registry/si/MetadataV14SiType.js.map +1 -1
  313. package/v1/data/metadata/v14/registry/si/MetadataV14SiTypeParameter.js +16 -34
  314. package/v1/data/metadata/v14/registry/si/MetadataV14SiTypeParameter.js.map +1 -1
  315. package/v1/data/metadata/v14/registry/si/MetadataV14SiVariant.js +21 -39
  316. package/v1/data/metadata/v14/registry/si/MetadataV14SiVariant.js.map +1 -1
  317. package/v1/data/metadata/v14/registry/si/MetadataV14TypeDef.js +106 -150
  318. package/v1/data/metadata/v14/registry/si/MetadataV14TypeDef.js.map +1 -1
  319. package/v1/data/scale/SCALEDecoder.d.ts +2 -3
  320. package/v1/data/scale/SCALEDecoder.js +69 -80
  321. package/v1/data/scale/SCALEDecoder.js.map +1 -1
  322. package/v1/data/scale/type/SCALEAccountId.d.ts +0 -1
  323. package/v1/data/scale/type/SCALEAccountId.js +27 -46
  324. package/v1/data/scale/type/SCALEAccountId.js.map +1 -1
  325. package/v1/data/scale/type/SCALEArray.js +27 -45
  326. package/v1/data/scale/type/SCALEArray.js.map +1 -1
  327. package/v1/data/scale/type/SCALEBoolean.js +18 -36
  328. package/v1/data/scale/type/SCALEBoolean.js.map +1 -1
  329. package/v1/data/scale/type/SCALEBytes.d.ts +0 -1
  330. package/v1/data/scale/type/SCALEBytes.js +23 -42
  331. package/v1/data/scale/type/SCALEBytes.js.map +1 -1
  332. package/v1/data/scale/type/SCALEClass.js +8 -28
  333. package/v1/data/scale/type/SCALEClass.js.map +1 -1
  334. package/v1/data/scale/type/SCALECompactInt.d.ts +1 -1
  335. package/v1/data/scale/type/SCALECompactInt.js +54 -73
  336. package/v1/data/scale/type/SCALECompactInt.js.map +1 -1
  337. package/v1/data/scale/type/SCALEData.d.ts +0 -1
  338. package/v1/data/scale/type/SCALEData.js +33 -51
  339. package/v1/data/scale/type/SCALEData.js.map +1 -1
  340. package/v1/data/scale/type/SCALEEnum.js +21 -39
  341. package/v1/data/scale/type/SCALEEnum.js.map +1 -1
  342. package/v1/data/scale/type/SCALEEra.js +46 -68
  343. package/v1/data/scale/type/SCALEEra.js.map +1 -1
  344. package/v1/data/scale/type/SCALEHash.d.ts +0 -1
  345. package/v1/data/scale/type/SCALEHash.js +29 -53
  346. package/v1/data/scale/type/SCALEHash.js.map +1 -1
  347. package/v1/data/scale/type/SCALEInt.d.ts +1 -1
  348. package/v1/data/scale/type/SCALEInt.js +46 -65
  349. package/v1/data/scale/type/SCALEInt.js.map +1 -1
  350. package/v1/data/scale/type/SCALEMultiAddress.d.ts +1 -2
  351. package/v1/data/scale/type/SCALEMultiAddress.js +40 -59
  352. package/v1/data/scale/type/SCALEMultiAddress.js.map +1 -1
  353. package/v1/data/scale/type/SCALEOptional.js +27 -47
  354. package/v1/data/scale/type/SCALEOptional.js.map +1 -1
  355. package/v1/data/scale/type/SCALEString.js +25 -44
  356. package/v1/data/scale/type/SCALEString.js.map +1 -1
  357. package/v1/data/scale/type/SCALETuple.js +22 -40
  358. package/v1/data/scale/type/SCALETuple.js.map +1 -1
  359. package/v1/data/scale/type/SCALEType.js +6 -9
  360. package/v1/data/scale/type/SCALEType.js.map +1 -1
  361. package/v1/data/transaction/SubstrateSignature.d.ts +0 -1
  362. package/v1/data/transaction/SubstrateSignature.js +36 -61
  363. package/v1/data/transaction/SubstrateSignature.js.map +1 -1
  364. package/v1/data/transaction/SubstrateTransaction.d.ts +2 -2
  365. package/v1/data/transaction/SubstrateTransaction.js +66 -87
  366. package/v1/data/transaction/SubstrateTransaction.js.map +1 -1
  367. package/v1/data/transaction/SubstrateTransactionPayload.js +81 -114
  368. package/v1/data/transaction/SubstrateTransactionPayload.js.map +1 -1
  369. package/v1/data/transaction/method/SubstrateTransactionMethod.js +40 -76
  370. package/v1/data/transaction/method/SubstrateTransactionMethod.js.map +1 -1
  371. package/v1/data/transaction/method/SubstrateTransactionMethodArgs.js +35 -65
  372. package/v1/data/transaction/method/SubstrateTransactionMethodArgs.js.map +1 -1
  373. package/v1/index.js +38 -38
  374. package/v1/index.js.map +1 -1
  375. package/v1/node/SubstrateCommonNodeClient.d.ts +12 -12
  376. package/v1/node/SubstrateCommonNodeClient.js +159 -357
  377. package/v1/node/SubstrateCommonNodeClient.js.map +1 -1
  378. package/v1/protocol/SubstrateProtocol.d.ts +2 -4
  379. package/v1/protocol/SubstrateProtocol.js +182 -410
  380. package/v1/protocol/SubstrateProtocol.js.map +1 -1
  381. package/v1/protocol/SubstrateStakingProtocol.js +15 -82
  382. package/v1/protocol/SubstrateStakingProtocol.js.map +1 -1
  383. package/v1/serializer/v3/schemas/converter/transaction-converter.js +8 -20
  384. package/v1/serializer/v3/schemas/converter/transaction-converter.js.map +1 -1
  385. package/v1/serializer/v3/validators/transaction-validator.js +15 -63
  386. package/v1/serializer/v3/validators/transaction-validator.js.map +1 -1
  387. package/v1/serializer/v3/validators/validators.js +48 -129
  388. package/v1/serializer/v3/validators/validators.js.map +1 -1
  389. package/v1/types/configuration.d.ts +6 -6
  390. package/v1/types/crypto.d.ts +1 -1
  391. package/v1/utils/keys.js +4 -5
  392. package/v1/utils/keys.js.map +1 -1
  393. package/v1/utils/protocol.js +14 -15
  394. package/v1/utils/protocol.js.map +1 -1
  395. package/v1/utils/signature.js +3 -4
  396. package/v1/utils/signature.js.map +1 -1
@@ -1,717 +1,430 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
39
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
4
  };
41
5
  Object.defineProperty(exports, "__esModule", { value: true });
42
6
  exports.SubstrateAccountController = void 0;
43
- var wasm_crypto_1 = require("@polkadot/wasm-crypto");
44
- var bignumber_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/bignumber.js-9.0.0/bignumber"));
45
- var sr25519_1 = require("../../utils/sr25519");
46
- var SubstrateCompatAddress_1 = require("../compat/SubstrateCompatAddress");
47
- var SubstrateEraElectionStatus_1 = require("./data/staking/SubstrateEraElectionStatus");
48
- var SubstrateNominationStatus_1 = require("./data/staking/SubstrateNominationStatus");
49
- var SubstrateStakingActionType_1 = require("./data/staking/SubstrateStakingActionType");
50
- var SubstrateAccountController = /** @class */ (function () {
51
- function SubstrateAccountController(network, nodeClient) {
7
+ const wasm_crypto_1 = require("@polkadot/wasm-crypto");
8
+ const bignumber_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/bignumber.js-9.0.0/bignumber"));
9
+ const sr25519_1 = require("../../utils/sr25519");
10
+ const SubstrateCompatAddress_1 = require("../compat/SubstrateCompatAddress");
11
+ const SubstrateEraElectionStatus_1 = require("./data/staking/SubstrateEraElectionStatus");
12
+ const SubstrateNominationStatus_1 = require("./data/staking/SubstrateNominationStatus");
13
+ const SubstrateStakingActionType_1 = require("./data/staking/SubstrateStakingActionType");
14
+ class SubstrateAccountController {
15
+ constructor(network, nodeClient) {
52
16
  this.network = network;
53
17
  this.nodeClient = nodeClient;
54
18
  }
55
- SubstrateAccountController.prototype.createKeyPairFromMnemonic = function (mnemonic, derivationPath, password) {
56
- return __awaiter(this, void 0, void 0, function () {
57
- var secret;
58
- return __generator(this, function (_a) {
59
- switch (_a.label) {
60
- case 0: return [4 /*yield*/, (0, wasm_crypto_1.waitReady)()];
61
- case 1:
62
- _a.sent();
63
- secret = (0, wasm_crypto_1.bip39ToMiniSecret)(mnemonic, password || '');
64
- return [2 /*return*/, this.createKeyPairFromHexSecret(Buffer.from(secret).toString('hex'), derivationPath)];
65
- }
66
- });
67
- });
68
- };
69
- SubstrateAccountController.prototype.createKeyPairFromHexSecret = function (secret, derivationPath) {
70
- return __awaiter(this, void 0, void 0, function () {
71
- return __generator(this, function (_a) {
72
- return [2 /*return*/, (0, sr25519_1.createSr25519KeyPair)(secret, derivationPath)];
73
- });
74
- });
75
- };
76
- SubstrateAccountController.prototype.createAddressFromPublicKey = function (publicKey) {
77
- return __awaiter(this, void 0, void 0, function () {
78
- return __generator(this, function (_a) {
79
- return [2 /*return*/, this.substrateAddressFrom(publicKey)];
80
- });
81
- });
82
- };
83
- SubstrateAccountController.prototype.getBalance = function (accountId) {
84
- return __awaiter(this, void 0, void 0, function () {
85
- var accountInfo, free, reserved;
86
- return __generator(this, function (_a) {
87
- switch (_a.label) {
88
- case 0: return [4 /*yield*/, this.nodeClient.getAccountInfo(this.substrateAddressFrom(accountId))];
89
- case 1:
90
- accountInfo = _a.sent();
91
- free = accountInfo === null || accountInfo === void 0 ? void 0 : accountInfo.data.free.value;
92
- reserved = accountInfo === null || accountInfo === void 0 ? void 0 : accountInfo.data.reserved.value;
93
- return [2 /*return*/, free && reserved ? free.plus(reserved) : new bignumber_1.default(0)];
94
- }
95
- });
96
- });
97
- };
98
- SubstrateAccountController.prototype.getTransferableBalance = function (accountId, excludeExistentialDeposit, ignoreFees) {
99
- if (excludeExistentialDeposit === void 0) { excludeExistentialDeposit = true; }
100
- if (ignoreFees === void 0) { ignoreFees = true; }
101
- return __awaiter(this, void 0, void 0, function () {
102
- var results, accountInfo, minBalance, free, locked;
103
- return __generator(this, function (_a) {
104
- switch (_a.label) {
105
- case 0: return [4 /*yield*/, Promise.all([
106
- this.nodeClient.getAccountInfo(this.substrateAddressFrom(accountId)),
107
- excludeExistentialDeposit ? this.nodeClient.getExistentialDeposit() : null
108
- ])];
109
- case 1:
110
- results = _a.sent();
111
- accountInfo = results[0];
112
- minBalance = results[1];
113
- if (!accountInfo) {
114
- return [2 /*return*/, new bignumber_1.default(0)];
115
- }
116
- free = accountInfo.data.free.value;
117
- locked = ignoreFees ? accountInfo.data.miscFrozen.value : accountInfo.data.feeFrozen.value;
118
- return [2 /*return*/, free.minus(locked).minus(minBalance || 0)];
119
- }
120
- });
121
- });
122
- };
123
- SubstrateAccountController.prototype.getUnlockingBalance = function (accountId) {
124
- var _a;
125
- return __awaiter(this, void 0, void 0, function () {
126
- var stakingDetails;
127
- return __generator(this, function (_b) {
128
- switch (_b.label) {
129
- case 0: return [4 /*yield*/, this.nodeClient.getStakingLedger(this.substrateAddressFrom(accountId))];
130
- case 1:
131
- stakingDetails = _b.sent();
132
- return [2 /*return*/, ((_a = stakingDetails === null || stakingDetails === void 0 ? void 0 : stakingDetails.unlocking.elements.map(function (entry) { return entry.first.value; }).reduce(function (sum, next) { return sum.plus(next); }, new bignumber_1.default(0))) !== null && _a !== void 0 ? _a : new bignumber_1.default(0))];
133
- }
134
- });
135
- });
136
- };
137
- SubstrateAccountController.prototype.isBonded = function (accountId) {
138
- return __awaiter(this, void 0, void 0, function () {
139
- var bonded;
140
- return __generator(this, function (_a) {
141
- switch (_a.label) {
142
- case 0: return [4 /*yield*/, this.nodeClient.getBonded(this.substrateAddressFrom(accountId))];
143
- case 1:
144
- bonded = _a.sent();
145
- return [2 /*return*/, bonded != null];
146
- }
147
- });
148
- });
149
- };
150
- SubstrateAccountController.prototype.isDelegating = function (accountId) {
151
- return __awaiter(this, void 0, void 0, function () {
152
- var nominations;
153
- return __generator(this, function (_a) {
154
- switch (_a.label) {
155
- case 0: return [4 /*yield*/, this.nodeClient.getNominations(this.substrateAddressFrom(accountId))];
156
- case 1:
157
- nominations = _a.sent();
158
- return [2 /*return*/, nominations != null];
159
- }
160
- });
161
- });
162
- };
163
- SubstrateAccountController.prototype.getCurrentValidators = function (accountId) {
164
- return __awaiter(this, void 0, void 0, function () {
165
- var nominations;
166
- return __generator(this, function (_a) {
167
- switch (_a.label) {
168
- case 0: return [4 /*yield*/, this.nodeClient.getNominations(this.substrateAddressFrom(accountId))];
169
- case 1:
170
- nominations = _a.sent();
171
- if (nominations) {
172
- return [2 /*return*/, nominations.targets.elements.map(function (target) { return target.asAddress(); })];
173
- }
174
- return [2 /*return*/, []];
175
- }
176
- });
177
- });
178
- };
179
- SubstrateAccountController.prototype.getValidatorDetails = function (accountId) {
180
- var _a;
181
- return __awaiter(this, void 0, void 0, function () {
182
- var address, activeEra, identity, status, exposure, validatorPrefs, lastEraReward, activeEraIndex, results, currentValidators;
183
- return __generator(this, function (_b) {
184
- switch (_b.label) {
185
- case 0:
186
- address = this.substrateAddressFrom(accountId);
187
- return [4 /*yield*/, this.nodeClient.getActiveEraInfo()];
188
- case 1:
189
- activeEra = _b.sent();
190
- if (!activeEra) return [3 /*break*/, 4];
191
- activeEraIndex = activeEra.index.toNumber();
192
- return [4 /*yield*/, Promise.all([
193
- this.getAccountIdentityInfo(address),
194
- this.nodeClient.getValidators(),
195
- this.nodeClient.getValidatorPrefs(activeEraIndex, address),
196
- this.nodeClient.getValidatorExposure(activeEraIndex, address)
197
- ])];
198
- case 2:
199
- results = _b.sent();
200
- identity = results[0] || undefined;
201
- currentValidators = results[1];
202
- validatorPrefs = results[2] || undefined;
203
- exposure = results[3] || undefined;
204
- return [4 /*yield*/, this.getEraValidatorReward(address, activeEraIndex - 1)];
205
- case 3:
206
- lastEraReward = (_b.sent()) || undefined;
207
- if (currentValidators && currentValidators.find(function (current) { return current.compare(address) == 0; })) {
208
- status = 'Active';
209
- }
210
- else if (currentValidators) {
211
- status = 'Inactive';
212
- }
213
- _b.label = 4;
214
- case 4: return [2 /*return*/, {
215
- address: address.asString(),
216
- name: identity ? identity.display.toString() : undefined,
217
- status: status || undefined,
218
- ownStash: exposure ? exposure.own.toString() : undefined,
219
- totalStakingBalance: exposure ? exposure.total.toString() : undefined,
220
- commission: validatorPrefs
221
- ? validatorPrefs.commission.value.dividedBy(1000000000).toString() // commission is Perbill (parts per billion)
222
- : undefined,
223
- lastEraReward: lastEraReward,
224
- nominators: (_a = exposure === null || exposure === void 0 ? void 0 : exposure.others.elements.length) !== null && _a !== void 0 ? _a : 0
225
- }];
226
- }
227
- });
228
- });
229
- };
230
- SubstrateAccountController.prototype.getNominatorDetails = function (accountId, validatorIds) {
231
- var _a, _b;
232
- return __awaiter(this, void 0, void 0, function () {
233
- var address, results, balance, transferableBalance, stakingLedger, nominations, activeEra, expectedEraDuration, validators, stakingDetails, availableActions;
234
- return __generator(this, function (_c) {
235
- switch (_c.label) {
236
- case 0:
237
- address = this.substrateAddressFrom(accountId);
238
- return [4 /*yield*/, Promise.all([
239
- this.getBalance(address),
240
- this.getTransferableBalance(address, false, false),
241
- this.nodeClient.getStakingLedger(address),
242
- this.nodeClient.getNominations(address),
243
- this.nodeClient.getActiveEraInfo(),
244
- this.nodeClient.getExpectedEraDuration(),
245
- this.nodeClient.getExistentialDeposit()
246
- ])];
247
- case 1:
248
- results = _c.sent();
249
- balance = results[0];
250
- transferableBalance = results[1];
251
- stakingLedger = results[2];
252
- nominations = results[3];
253
- activeEra = results[4];
254
- expectedEraDuration = results[5];
255
- if (!balance || !transferableBalance || !activeEra || !expectedEraDuration) {
256
- return [2 /*return*/, Promise.reject('Could not fetch nominator details.')];
257
- }
258
- validators = ((_b = (_a = nominations === null || nominations === void 0 ? void 0 : nominations.targets) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.map(function (target) { return target.asAddress(); })) || [];
259
- return [4 /*yield*/, this.getStakingDetails(accountId, stakingLedger, nominations, activeEra, expectedEraDuration)];
260
- case 2:
261
- stakingDetails = _c.sent();
262
- return [4 /*yield*/, this.getAvailableStakingActions(stakingDetails, nominations, validatorIds !== null && validatorIds !== void 0 ? validatorIds : validators, transferableBalance)];
263
- case 3:
264
- availableActions = _c.sent();
265
- return [2 /*return*/, {
266
- address: address.asString(),
267
- balance: balance.toString(),
268
- delegatees: validators,
269
- availableActions: availableActions,
270
- stakingDetails: stakingDetails || undefined
271
- }];
272
- }
273
- });
274
- });
275
- };
276
- SubstrateAccountController.prototype.getNominationStatus = function (nominator, validator, era) {
277
- var _a;
278
- return __awaiter(this, void 0, void 0, function () {
279
- var eraIndex, _b, nominations, exposure, isActive, isOversubscribed, position;
280
- return __generator(this, function (_c) {
281
- switch (_c.label) {
282
- case 0:
283
- if (!(era !== undefined)) return [3 /*break*/, 1];
284
- _b = era;
285
- return [3 /*break*/, 3];
286
- case 1: return [4 /*yield*/, this.nodeClient.getActiveEraInfo()];
287
- case 2:
288
- _b = (_a = (_c.sent())) === null || _a === void 0 ? void 0 : _a.index.toNumber();
289
- _c.label = 3;
290
- case 3:
291
- eraIndex = _b;
292
- if (eraIndex === undefined) {
293
- return [2 /*return*/, Promise.reject('Could not fetch active era')];
294
- }
295
- return [4 /*yield*/, this.nodeClient.getNominations(this.substrateAddressFrom(nominator))];
296
- case 4:
297
- nominations = _c.sent();
298
- if (nominations === null || !nominations.targets.elements.some(function (target) { return target.asAddress() === validator; })) {
299
- return [2 /*return*/, undefined];
300
- }
301
- return [4 /*yield*/, this.nodeClient.getValidatorExposure(eraIndex, this.substrateAddressFrom(validator))];
302
- case 5:
303
- exposure = _c.sent();
304
- if (!exposure) {
305
- return [2 /*return*/, SubstrateNominationStatus_1.SubstrateNominationStatus.INACTIVE];
306
- }
307
- isActive = exposure.others.elements.some(function (element) { return element.first.asAddress() === nominator.toString(); });
308
- if (!isActive) {
309
- return [2 /*return*/, SubstrateNominationStatus_1.SubstrateNominationStatus.INACTIVE];
310
- }
311
- isOversubscribed = exposure.others.elements.length > 256;
312
- if (isOversubscribed) {
313
- position = exposure.others.elements
314
- .sort(function (a, b) { return b.second.value.minus(a.second.value).toNumber(); })
315
- .map(function (exposure) { return exposure.first.asAddress(); })
316
- .indexOf(nominator.toString());
317
- if (position > 256) {
318
- return [2 /*return*/, SubstrateNominationStatus_1.SubstrateNominationStatus.OVERSUBSCRIBED];
319
- }
320
- }
321
- return [2 /*return*/, SubstrateNominationStatus_1.SubstrateNominationStatus.ACTIVE];
322
- }
323
- });
324
- });
325
- };
326
- SubstrateAccountController.prototype.getSlashingSpansNumber = function (accountId) {
327
- return __awaiter(this, void 0, void 0, function () {
328
- var slashingSpans;
329
- return __generator(this, function (_a) {
330
- switch (_a.label) {
331
- case 0: return [4 /*yield*/, this.nodeClient.getSlashingSpan(this.substrateAddressFrom(accountId))];
332
- case 1:
333
- slashingSpans = _a.sent();
334
- return [2 /*return*/, slashingSpans ? slashingSpans.prior.elements.length + 1 : 0];
335
- }
336
- });
337
- });
338
- };
339
- SubstrateAccountController.prototype.getStakingDetails = function (accountId, stakingLedger, nominations, activeEra, expectedEraDuration) {
340
- var _a, _b;
341
- return __awaiter(this, void 0, void 0, function () {
342
- var unlockingDetails, results, stakingStatus, rewards;
343
- return __generator(this, function (_c) {
344
- switch (_c.label) {
345
- case 0:
346
- if (!stakingLedger) {
347
- return [2 /*return*/, null];
348
- }
349
- unlockingDetails = this.getUnlockingDetails(stakingLedger.unlocking.elements.map(function (tuple) { return [tuple.first.value, tuple.second.value]; }), activeEra, expectedEraDuration);
350
- return [4 /*yield*/, Promise.all([
351
- this.getStakingStatus(accountId, nominations, activeEra.index.toNumber()),
352
- nominations
353
- ? this.getNominatorRewards(accountId, nominations.targets.elements.map(function (id) { return id.address; }), activeEra, 5)
354
- : []
355
- ])];
356
- case 1:
357
- results = _c.sent();
358
- stakingStatus = results[0];
359
- rewards = results[1];
360
- return [2 /*return*/, {
361
- total: stakingLedger.total.toString(),
362
- active: stakingLedger.active.toString(),
363
- locked: unlockingDetails.locked,
364
- unlocked: unlockingDetails.unlocked,
365
- status: stakingStatus,
366
- nextEra: ((_b = (_a = activeEra.start.value) === null || _a === void 0 ? void 0 : _a.plus(expectedEraDuration)) === null || _b === void 0 ? void 0 : _b.toNumber()) || 0,
367
- rewards: rewards
368
- }];
369
- }
370
- });
371
- });
372
- };
373
- SubstrateAccountController.prototype.getUnlockingDetails = function (unlocking, activeEra, expectedEraDuration) {
374
- var _a = this.partitionArray(unlocking, function (_a) {
375
- var _ = _a[0], era = _a[1];
376
- return activeEra.index.lt(era);
377
- }), locked = _a[0], unlocked = _a[1];
378
- var lockedDetails = locked.map(function (_a) {
379
- var _b;
380
- var value = _a[0], era = _a[1];
381
- var eraStart = ((_b = activeEra.start.value) === null || _b === void 0 ? void 0 : _b.value) || new bignumber_1.default(0);
382
- var estimatedDuration = era.minus(activeEra.index.value).multipliedBy(expectedEraDuration);
383
- var expectedUnlock = eraStart.plus(estimatedDuration);
19
+ async createKeyPairFromMnemonic(mnemonic, derivationPath, password) {
20
+ await (0, wasm_crypto_1.waitReady)();
21
+ const secret = (0, wasm_crypto_1.bip39ToMiniSecret)(mnemonic, password || '');
22
+ return this.createKeyPairFromHexSecret(Buffer.from(secret).toString('hex'), derivationPath);
23
+ }
24
+ async createKeyPairFromHexSecret(secret, derivationPath) {
25
+ return (0, sr25519_1.createSr25519KeyPair)(secret, derivationPath);
26
+ }
27
+ async createAddressFromPublicKey(publicKey) {
28
+ return this.substrateAddressFrom(publicKey);
29
+ }
30
+ async getBalance(accountId) {
31
+ const accountInfo = await this.nodeClient.getAccountInfo(this.substrateAddressFrom(accountId));
32
+ const free = accountInfo?.data.free.value;
33
+ const reserved = accountInfo?.data.reserved.value;
34
+ return free && reserved ? free.plus(reserved) : new bignumber_1.default(0);
35
+ }
36
+ async getTransferableBalance(accountId, excludeExistentialDeposit = true, ignoreFees = true) {
37
+ const results = await Promise.all([
38
+ this.nodeClient.getAccountInfo(this.substrateAddressFrom(accountId)),
39
+ excludeExistentialDeposit ? this.nodeClient.getExistentialDeposit() : null
40
+ ]);
41
+ const accountInfo = results[0];
42
+ const minBalance = results[1];
43
+ if (!accountInfo) {
44
+ return new bignumber_1.default(0);
45
+ }
46
+ const free = accountInfo.data.free.value;
47
+ const locked = ignoreFees ? accountInfo.data.miscFrozen.value : accountInfo.data.feeFrozen.value;
48
+ return free.minus(locked).minus(minBalance || 0);
49
+ }
50
+ async getUnlockingBalance(accountId) {
51
+ const stakingDetails = await this.nodeClient.getStakingLedger(this.substrateAddressFrom(accountId));
52
+ return (stakingDetails?.unlocking.elements.map((entry) => entry.first.value).reduce((sum, next) => sum.plus(next), new bignumber_1.default(0)) ??
53
+ new bignumber_1.default(0));
54
+ }
55
+ async isBonded(accountId) {
56
+ const bonded = await this.nodeClient.getBonded(this.substrateAddressFrom(accountId));
57
+ return bonded != null;
58
+ }
59
+ async isDelegating(accountId) {
60
+ const nominations = await this.nodeClient.getNominations(this.substrateAddressFrom(accountId));
61
+ return nominations != null;
62
+ }
63
+ async getCurrentValidators(accountId) {
64
+ const nominations = await this.nodeClient.getNominations(this.substrateAddressFrom(accountId));
65
+ if (nominations) {
66
+ return nominations.targets.elements.map((target) => target.asAddress());
67
+ }
68
+ return [];
69
+ }
70
+ async getValidatorDetails(accountId) {
71
+ const address = this.substrateAddressFrom(accountId);
72
+ const activeEra = await this.nodeClient.getActiveEraInfo();
73
+ let identity;
74
+ let status;
75
+ let exposure;
76
+ let validatorPrefs;
77
+ let lastEraReward;
78
+ if (activeEra) {
79
+ const activeEraIndex = activeEra.index.toNumber();
80
+ const results = await Promise.all([
81
+ this.getAccountIdentityInfo(address),
82
+ this.nodeClient.getValidators(),
83
+ this.nodeClient.getValidatorPrefs(activeEraIndex, address),
84
+ this.nodeClient.getValidatorExposure(activeEraIndex, address)
85
+ ]);
86
+ identity = results[0] || undefined;
87
+ const currentValidators = results[1];
88
+ validatorPrefs = results[2] || undefined;
89
+ exposure = results[3] || undefined;
90
+ lastEraReward = (await this.getEraValidatorReward(address, activeEraIndex - 1)) || undefined;
91
+ if (currentValidators && currentValidators.find((current) => current.compare(address) == 0)) {
92
+ status = 'Active';
93
+ }
94
+ else if (currentValidators) {
95
+ status = 'Inactive';
96
+ }
97
+ }
98
+ return {
99
+ address: address.asString(),
100
+ name: identity ? identity.display.toString() : undefined,
101
+ status: status || undefined,
102
+ ownStash: exposure ? exposure.own.toString() : undefined,
103
+ totalStakingBalance: exposure ? exposure.total.toString() : undefined,
104
+ commission: validatorPrefs
105
+ ? validatorPrefs.commission.value.dividedBy(1_000_000_000).toString() // commission is Perbill (parts per billion)
106
+ : undefined,
107
+ lastEraReward,
108
+ nominators: exposure?.others.elements.length ?? 0
109
+ };
110
+ }
111
+ async getNominatorDetails(accountId, validatorIds) {
112
+ const address = this.substrateAddressFrom(accountId);
113
+ const results = await Promise.all([
114
+ this.getBalance(address),
115
+ this.getTransferableBalance(address, false, false),
116
+ this.nodeClient.getStakingLedger(address),
117
+ this.nodeClient.getNominations(address),
118
+ this.nodeClient.getActiveEraInfo(),
119
+ this.nodeClient.getExpectedEraDuration(),
120
+ this.nodeClient.getExistentialDeposit()
121
+ ]);
122
+ const balance = results[0];
123
+ const transferableBalance = results[1];
124
+ const stakingLedger = results[2];
125
+ const nominations = results[3];
126
+ const activeEra = results[4];
127
+ const expectedEraDuration = results[5];
128
+ if (!balance || !transferableBalance || !activeEra || !expectedEraDuration) {
129
+ return Promise.reject('Could not fetch nominator details.');
130
+ }
131
+ const validators = nominations?.targets?.elements?.map((target) => target.asAddress()) || [];
132
+ const stakingDetails = await this.getStakingDetails(accountId, stakingLedger, nominations, activeEra, expectedEraDuration);
133
+ const availableActions = await this.getAvailableStakingActions(stakingDetails, nominations, validatorIds ?? validators, transferableBalance);
134
+ return {
135
+ address: address.asString(),
136
+ balance: balance.toString(),
137
+ delegatees: validators,
138
+ availableActions,
139
+ stakingDetails: stakingDetails || undefined
140
+ };
141
+ }
142
+ async getNominationStatus(nominator, validator, era) {
143
+ const eraIndex = era !== undefined ? era : (await this.nodeClient.getActiveEraInfo())?.index.toNumber();
144
+ if (eraIndex === undefined) {
145
+ return Promise.reject('Could not fetch active era');
146
+ }
147
+ const nominations = await this.nodeClient.getNominations(this.substrateAddressFrom(nominator));
148
+ if (nominations === null || !nominations.targets.elements.some((target) => target.asAddress() === validator)) {
149
+ return undefined;
150
+ }
151
+ const exposure = await this.nodeClient.getValidatorExposure(eraIndex, this.substrateAddressFrom(validator));
152
+ if (!exposure) {
153
+ return SubstrateNominationStatus_1.SubstrateNominationStatus.INACTIVE;
154
+ }
155
+ const isActive = exposure.others.elements.some((element) => element.first.asAddress() === nominator.toString());
156
+ if (!isActive) {
157
+ return SubstrateNominationStatus_1.SubstrateNominationStatus.INACTIVE;
158
+ }
159
+ const isOversubscribed = exposure.others.elements.length > 256;
160
+ if (isOversubscribed) {
161
+ const position = exposure.others.elements
162
+ .sort((a, b) => b.second.value.minus(a.second.value).toNumber())
163
+ .map((exposure) => exposure.first.asAddress())
164
+ .indexOf(nominator.toString());
165
+ if (position > 256) {
166
+ return SubstrateNominationStatus_1.SubstrateNominationStatus.OVERSUBSCRIBED;
167
+ }
168
+ }
169
+ return SubstrateNominationStatus_1.SubstrateNominationStatus.ACTIVE;
170
+ }
171
+ async getSlashingSpansNumber(accountId) {
172
+ const slashingSpans = await this.nodeClient.getSlashingSpan(this.substrateAddressFrom(accountId));
173
+ return slashingSpans ? slashingSpans.prior.elements.length + 1 : 0;
174
+ }
175
+ async getStakingDetails(accountId, stakingLedger, nominations, activeEra, expectedEraDuration) {
176
+ if (!stakingLedger) {
177
+ return null;
178
+ }
179
+ const unlockingDetails = this.getUnlockingDetails(stakingLedger.unlocking.elements.map((tuple) => [tuple.first.value, tuple.second.value]), activeEra, expectedEraDuration);
180
+ const results = await Promise.all([
181
+ this.getStakingStatus(accountId, nominations, activeEra.index.toNumber()),
182
+ nominations
183
+ ? this.getNominatorRewards(accountId, nominations.targets.elements.map((id) => id.address), activeEra, 5)
184
+ : []
185
+ ]);
186
+ const stakingStatus = results[0];
187
+ const rewards = results[1];
188
+ return {
189
+ total: stakingLedger.total.toString(),
190
+ active: stakingLedger.active.toString(),
191
+ locked: unlockingDetails.locked,
192
+ unlocked: unlockingDetails.unlocked,
193
+ status: stakingStatus,
194
+ nextEra: activeEra.start.value?.plus(expectedEraDuration)?.toNumber() || 0,
195
+ rewards
196
+ };
197
+ }
198
+ getUnlockingDetails(unlocking, activeEra, expectedEraDuration) {
199
+ const [locked, unlocked] = this.partitionArray(unlocking, ([_, era]) => activeEra.index.lt(era));
200
+ const lockedDetails = locked.map(([value, era]) => {
201
+ const eraStart = activeEra.start.value?.value || new bignumber_1.default(0);
202
+ const estimatedDuration = era.minus(activeEra.index.value).multipliedBy(expectedEraDuration);
203
+ const expectedUnlock = eraStart.plus(estimatedDuration);
384
204
  return {
385
205
  value: value.toString(10),
386
206
  expectedUnlock: expectedUnlock.toNumber()
387
207
  };
388
208
  });
389
- var totalUnlocked = unlocked.reduce(function (total, _a) {
390
- var value = _a[0], _ = _a[1];
391
- return total.plus(value);
392
- }, new bignumber_1.default(0));
209
+ const totalUnlocked = unlocked.reduce((total, [value, _]) => total.plus(value), new bignumber_1.default(0));
393
210
  return {
394
211
  locked: lockedDetails,
395
212
  unlocked: totalUnlocked.toString()
396
213
  };
397
- };
398
- SubstrateAccountController.prototype.getStakingStatus = function (nominator, nominations, eraIndex) {
399
- var _a;
400
- return __awaiter(this, void 0, void 0, function () {
401
- var isWaitingForNomination, hasActiveNominations;
402
- var _this = this;
403
- return __generator(this, function (_b) {
404
- switch (_b.label) {
405
- case 0:
406
- isWaitingForNomination = (_a = nominations === null || nominations === void 0 ? void 0 : nominations.submittedIn.gte(eraIndex)) !== null && _a !== void 0 ? _a : false;
407
- hasActiveNominations = false;
408
- if (!(!isWaitingForNomination && nominations)) return [3 /*break*/, 2];
409
- return [4 /*yield*/, Promise.all(nominations.targets.elements.map(function (target) {
410
- return _this.getNominationStatus(nominator, target.asAddress(), eraIndex);
411
- }))];
412
- case 1:
413
- hasActiveNominations = (_b.sent()).some(function (status) { return status === SubstrateNominationStatus_1.SubstrateNominationStatus.ACTIVE; });
414
- _b.label = 2;
415
- case 2:
416
- if (nominations === null) {
417
- return [2 /*return*/, 'bonded'];
418
- }
419
- else if (hasActiveNominations) {
420
- return [2 /*return*/, 'nominating'];
421
- }
422
- else if (!isWaitingForNomination && !hasActiveNominations) {
423
- return [2 /*return*/, 'nominating_inactive'];
424
- }
425
- else {
426
- return [2 /*return*/, 'nominating_waiting'];
427
- }
428
- return [2 /*return*/];
429
- }
214
+ }
215
+ async getStakingStatus(nominator, nominations, eraIndex) {
216
+ const isWaitingForNomination = nominations?.submittedIn.gte(eraIndex) ?? false;
217
+ let hasActiveNominations = false;
218
+ if (!isWaitingForNomination && nominations) {
219
+ hasActiveNominations = (await Promise.all(nominations.targets.elements.map((target) => this.getNominationStatus(nominator, target.asAddress(), eraIndex)))).some((status) => status === SubstrateNominationStatus_1.SubstrateNominationStatus.ACTIVE);
220
+ }
221
+ if (nominations === null) {
222
+ return 'bonded';
223
+ }
224
+ else if (hasActiveNominations) {
225
+ return 'nominating';
226
+ }
227
+ else if (!isWaitingForNomination && !hasActiveNominations) {
228
+ return 'nominating_inactive';
229
+ }
230
+ else {
231
+ return 'nominating_waiting';
232
+ }
233
+ }
234
+ async getEraValidatorReward(accountId, eraIndex) {
235
+ const address = this.substrateAddressFrom(accountId);
236
+ const results = await Promise.all([
237
+ this.nodeClient.getValidatorReward(eraIndex).then(async (result) => {
238
+ return result ? result : this.nodeClient.getValidatorReward(eraIndex - 1);
239
+ }),
240
+ this.nodeClient.getRewardPoints(eraIndex),
241
+ this.nodeClient.getStakersClipped(eraIndex, address),
242
+ this.nodeClient.getValidatorPrefs(eraIndex, address)
243
+ ]);
244
+ if (results.some((result) => !result)) {
245
+ return null;
246
+ }
247
+ const eraReward = results[0];
248
+ const eraPoints = results[1];
249
+ const exposureClipped = results[2];
250
+ const validatorPrefs = results[3];
251
+ const validatorPoints = eraPoints?.individual?.elements?.find((element) => element.first.address.compare(address))?.second?.value;
252
+ if (!eraReward || !eraPoints || !exposureClipped || !validatorPrefs || !validatorPoints) {
253
+ return null;
254
+ }
255
+ const validatorReward = this.calculateValidatorReward(eraReward, eraPoints.total.value, validatorPoints);
256
+ return {
257
+ amount: validatorReward.toFixed(),
258
+ totalStake: exposureClipped.total.toString(),
259
+ ownStake: exposureClipped.own.toString(),
260
+ commission: validatorPrefs.commission.toString()
261
+ };
262
+ }
263
+ async getNominatorRewards(accountId, validators, activeEra, eras) {
264
+ const address = this.substrateAddressFrom(accountId);
265
+ const expectedEraDuration = await this.nodeClient.getExpectedEraDuration();
266
+ if (!expectedEraDuration) {
267
+ return Promise.reject('Could not fetch all necessary data.');
268
+ }
269
+ const eraIndices = Array.isArray(eras) ? eras : Array.from(Array(eras).keys()).map((index) => activeEra.index.toNumber() - 1 - index);
270
+ const rewards = await Promise.all(eraIndices.map((era) => this.calculateEraNominatorReward(address, validators.map((validator) => this.substrateAddressFrom(validator)), era).then((partial) => {
271
+ if (partial) {
272
+ const rewardEra = partial.eraIndex || activeEra.index.toNumber();
273
+ const erasPassed = activeEra.index.minus(rewardEra).toNumber();
274
+ partial.timestamp = activeEra.start.value
275
+ ? activeEra.start.value.minus(expectedEraDuration.multipliedBy(erasPassed - 1)).toNumber()
276
+ : 0;
277
+ }
278
+ return partial;
279
+ })));
280
+ return rewards.filter((reward) => reward);
281
+ }
282
+ async calculateEraNominatorReward(accountId, validators, eraIndex) {
283
+ const results = await Promise.all([
284
+ this.nodeClient.getValidatorReward(eraIndex),
285
+ this.nodeClient.getRewardPoints(eraIndex),
286
+ Promise.all(validators.map(async (validator) => [
287
+ this.substrateAddressFrom(validator),
288
+ await this.nodeClient
289
+ .getValidatorPrefs(eraIndex, this.substrateAddressFrom(validator))
290
+ .then((prefs) => prefs?.commission?.value),
291
+ await this.nodeClient.getStakersClipped(eraIndex, this.substrateAddressFrom(validator))
292
+ ]))
293
+ ]);
294
+ const reward = results[0];
295
+ const rewardPoints = results[1];
296
+ const exposuresWithValidators = results[2];
297
+ if (!reward || !rewardPoints || !exposuresWithValidators) {
298
+ return null;
299
+ }
300
+ const partialRewards = exposuresWithValidators
301
+ .map(([validator, commission, exposure]) => {
302
+ const validatorPoints = rewardPoints.individual.elements.find((element) => element.first.compare(validator) === 0)?.second?.value;
303
+ const nominatorStake = exposure?.others.elements.find((element) => element.first.compare(accountId) === 0)?.second?.value;
304
+ if (commission && exposure && validatorPoints && nominatorStake) {
305
+ const validatorReward = this.calculateValidatorReward(reward, rewardPoints.total.value, validatorPoints);
306
+ return this.calculateNominatorReward(validatorReward, commission, exposure.total.value, nominatorStake);
307
+ }
308
+ else {
309
+ return null;
310
+ }
311
+ })
312
+ .filter((reward) => reward !== null);
313
+ if (partialRewards.every((reward) => !reward)) {
314
+ return null;
315
+ }
316
+ return {
317
+ eraIndex,
318
+ amount: partialRewards.reduce((sum, next) => sum.plus(next), new bignumber_1.default(0)).toFixed(0),
319
+ exposures: exposuresWithValidators
320
+ ?.map(([validator, _, exposure]) => [
321
+ validator.asString(),
322
+ exposure?.others.elements.findIndex((element) => element.first.compare(accountId) === 0)
323
+ ])
324
+ .filter(([_, index]) => index !== undefined)
325
+ };
326
+ }
327
+ calculateValidatorReward(totalReward, totalPoints, validatorPoints) {
328
+ return validatorPoints.dividedBy(totalPoints).multipliedBy(totalReward);
329
+ }
330
+ calculateNominatorReward(validatorReward, validatorCommission, totalStake, nominatorStake) {
331
+ const nominatorShare = nominatorStake.dividedBy(totalStake);
332
+ return new bignumber_1.default(1).minus(validatorCommission.dividedBy(1_000_000_000)).multipliedBy(validatorReward).multipliedBy(nominatorShare);
333
+ }
334
+ // tslint:disable-next-line: cyclomatic-complexity
335
+ async getAvailableStakingActions(stakingDetails, nominations, validatorIds, maxDelegationValue) {
336
+ const availableActions = [];
337
+ const currentValidators = nominations?.targets?.elements?.map((target) => target.asAddress()) || [];
338
+ const validatorAddresses = validatorIds.map((id) => this.substrateAddressFrom(id).asString());
339
+ const isBonded = new bignumber_1.default(stakingDetails?.active ?? 0).gt(0);
340
+ const isDelegating = nominations !== null;
341
+ const isUnbonding = stakingDetails && stakingDetails.locked.length > 0;
342
+ const minBondingValue = await this.nodeClient.getExistentialDeposit();
343
+ const minDelegationValue = new bignumber_1.default(1);
344
+ const electionStatus = await this.nodeClient.getElectionStatus().then((eraElectionStatus) => eraElectionStatus?.status.value);
345
+ const isElectionClosed = electionStatus !== SubstrateEraElectionStatus_1.SubstrateElectionStatus.OPEN;
346
+ const hasFundsToWithdraw = new bignumber_1.default(stakingDetails?.unlocked ?? 0).gt(0);
347
+ if (maxDelegationValue.gt(minBondingValue) && !isBonded && !isUnbonding && isElectionClosed) {
348
+ availableActions.push({
349
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.BOND_NOMINATE,
350
+ args: ['targets', 'controller', 'value', 'payee']
430
351
  });
431
- });
432
- };
433
- SubstrateAccountController.prototype.getEraValidatorReward = function (accountId, eraIndex) {
434
- var _a, _b, _c, _d;
435
- return __awaiter(this, void 0, void 0, function () {
436
- var address, results, eraReward, eraPoints, exposureClipped, validatorPrefs, validatorPoints, validatorReward;
437
- var _this = this;
438
- return __generator(this, function (_e) {
439
- switch (_e.label) {
440
- case 0:
441
- address = this.substrateAddressFrom(accountId);
442
- return [4 /*yield*/, Promise.all([
443
- this.nodeClient.getValidatorReward(eraIndex).then(function (result) { return __awaiter(_this, void 0, void 0, function () {
444
- return __generator(this, function (_a) {
445
- return [2 /*return*/, result ? result : this.nodeClient.getValidatorReward(eraIndex - 1)];
446
- });
447
- }); }),
448
- this.nodeClient.getRewardPoints(eraIndex),
449
- this.nodeClient.getStakersClipped(eraIndex, address),
450
- this.nodeClient.getValidatorPrefs(eraIndex, address)
451
- ])];
452
- case 1:
453
- results = _e.sent();
454
- if (results.some(function (result) { return !result; })) {
455
- return [2 /*return*/, null];
456
- }
457
- eraReward = results[0];
458
- eraPoints = results[1];
459
- exposureClipped = results[2];
460
- validatorPrefs = results[3];
461
- validatorPoints = (_d = (_c = (_b = (_a = eraPoints === null || eraPoints === void 0 ? void 0 : eraPoints.individual) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.find(function (element) {
462
- return element.first.address.compare(address);
463
- })) === null || _c === void 0 ? void 0 : _c.second) === null || _d === void 0 ? void 0 : _d.value;
464
- if (!eraReward || !eraPoints || !exposureClipped || !validatorPrefs || !validatorPoints) {
465
- return [2 /*return*/, null];
466
- }
467
- validatorReward = this.calculateValidatorReward(eraReward, eraPoints.total.value, validatorPoints);
468
- return [2 /*return*/, {
469
- amount: validatorReward.toFixed(),
470
- totalStake: exposureClipped.total.toString(),
471
- ownStake: exposureClipped.own.toString(),
472
- commission: validatorPrefs.commission.toString()
473
- }];
474
- }
352
+ }
353
+ if (maxDelegationValue.gt(minDelegationValue) && isBonded && !isUnbonding && isElectionClosed) {
354
+ availableActions.push({
355
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.BOND_EXTRA,
356
+ args: ['value']
475
357
  });
476
- });
477
- };
478
- SubstrateAccountController.prototype.getNominatorRewards = function (accountId, validators, activeEra, eras) {
479
- return __awaiter(this, void 0, void 0, function () {
480
- var address, expectedEraDuration, eraIndices, rewards;
481
- var _this = this;
482
- return __generator(this, function (_a) {
483
- switch (_a.label) {
484
- case 0:
485
- address = this.substrateAddressFrom(accountId);
486
- return [4 /*yield*/, this.nodeClient.getExpectedEraDuration()];
487
- case 1:
488
- expectedEraDuration = _a.sent();
489
- if (!expectedEraDuration) {
490
- return [2 /*return*/, Promise.reject('Could not fetch all necessary data.')];
491
- }
492
- eraIndices = Array.isArray(eras) ? eras : Array.from(Array(eras).keys()).map(function (index) { return activeEra.index.toNumber() - 1 - index; });
493
- return [4 /*yield*/, Promise.all(eraIndices.map(function (era) {
494
- return _this.calculateEraNominatorReward(address, validators.map(function (validator) { return _this.substrateAddressFrom(validator); }), era).then(function (partial) {
495
- if (partial) {
496
- var rewardEra = partial.eraIndex || activeEra.index.toNumber();
497
- var erasPassed = activeEra.index.minus(rewardEra).toNumber();
498
- partial.timestamp = activeEra.start.value
499
- ? activeEra.start.value.minus(expectedEraDuration.multipliedBy(erasPassed - 1)).toNumber()
500
- : 0;
501
- }
502
- return partial;
503
- });
504
- }))];
505
- case 2:
506
- rewards = _a.sent();
507
- return [2 /*return*/, rewards.filter(function (reward) { return reward; })];
508
- }
358
+ }
359
+ if (isBonded && !isDelegating && !isUnbonding && isElectionClosed) {
360
+ availableActions.push({
361
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.NOMINATE,
362
+ args: ['targets']
363
+ }, {
364
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.UNBOND,
365
+ args: ['value']
509
366
  });
510
- });
511
- };
512
- SubstrateAccountController.prototype.calculateEraNominatorReward = function (accountId, validators, eraIndex) {
513
- return __awaiter(this, void 0, void 0, function () {
514
- var results, reward, rewardPoints, exposuresWithValidators, partialRewards;
515
- var _this = this;
516
- return __generator(this, function (_a) {
517
- switch (_a.label) {
518
- case 0: return [4 /*yield*/, Promise.all([
519
- this.nodeClient.getValidatorReward(eraIndex),
520
- this.nodeClient.getRewardPoints(eraIndex),
521
- Promise.all(validators.map(function (validator) { return __awaiter(_this, void 0, void 0, function () {
522
- var _a;
523
- return __generator(this, function (_b) {
524
- switch (_b.label) {
525
- case 0:
526
- _a = [this.substrateAddressFrom(validator)];
527
- return [4 /*yield*/, this.nodeClient
528
- .getValidatorPrefs(eraIndex, this.substrateAddressFrom(validator))
529
- .then(function (prefs) { var _a; return (_a = prefs === null || prefs === void 0 ? void 0 : prefs.commission) === null || _a === void 0 ? void 0 : _a.value; })];
530
- case 1:
531
- _a = _a.concat([
532
- _b.sent()
533
- ]);
534
- return [4 /*yield*/, this.nodeClient.getStakersClipped(eraIndex, this.substrateAddressFrom(validator))];
535
- case 2: return [2 /*return*/, _a.concat([
536
- _b.sent()
537
- ])];
538
- }
539
- });
540
- }); }))
541
- ])];
542
- case 1:
543
- results = _a.sent();
544
- reward = results[0];
545
- rewardPoints = results[1];
546
- exposuresWithValidators = results[2];
547
- if (!reward || !rewardPoints || !exposuresWithValidators) {
548
- return [2 /*return*/, null];
549
- }
550
- partialRewards = exposuresWithValidators
551
- .map(function (_a) {
552
- var _b, _c, _d, _e;
553
- var validator = _a[0], commission = _a[1], exposure = _a[2];
554
- var validatorPoints = (_c = (_b = rewardPoints.individual.elements.find(function (element) { return element.first.compare(validator) === 0; })) === null || _b === void 0 ? void 0 : _b.second) === null || _c === void 0 ? void 0 : _c.value;
555
- var nominatorStake = (_e = (_d = exposure === null || exposure === void 0 ? void 0 : exposure.others.elements.find(function (element) { return element.first.compare(accountId) === 0; })) === null || _d === void 0 ? void 0 : _d.second) === null || _e === void 0 ? void 0 : _e.value;
556
- if (commission && exposure && validatorPoints && nominatorStake) {
557
- var validatorReward = _this.calculateValidatorReward(reward, rewardPoints.total.value, validatorPoints);
558
- return _this.calculateNominatorReward(validatorReward, commission, exposure.total.value, nominatorStake);
559
- }
560
- else {
561
- return null;
562
- }
563
- })
564
- .filter(function (reward) { return reward !== null; });
565
- if (partialRewards.every(function (reward) { return !reward; })) {
566
- return [2 /*return*/, null];
567
- }
568
- return [2 /*return*/, {
569
- eraIndex: eraIndex,
570
- amount: partialRewards.reduce(function (sum, next) { return sum.plus(next); }, new bignumber_1.default(0)).toFixed(0),
571
- exposures: exposuresWithValidators === null || exposuresWithValidators === void 0 ? void 0 : exposuresWithValidators.map(function (_a) {
572
- var validator = _a[0], _ = _a[1], exposure = _a[2];
573
- return [
574
- validator.asString(),
575
- exposure === null || exposure === void 0 ? void 0 : exposure.others.elements.findIndex(function (element) { return element.first.compare(accountId) === 0; })
576
- ];
577
- }).filter(function (_a) {
578
- var _ = _a[0], index = _a[1];
579
- return index !== undefined;
580
- })
581
- }];
582
- }
367
+ }
368
+ if (isUnbonding && !isDelegating && isElectionClosed) {
369
+ availableActions.push({
370
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.REBOND_NOMINATE,
371
+ args: ['targets', 'value']
583
372
  });
584
- });
585
- };
586
- SubstrateAccountController.prototype.calculateValidatorReward = function (totalReward, totalPoints, validatorPoints) {
587
- return validatorPoints.dividedBy(totalPoints).multipliedBy(totalReward);
588
- };
589
- SubstrateAccountController.prototype.calculateNominatorReward = function (validatorReward, validatorCommission, totalStake, nominatorStake) {
590
- var nominatorShare = nominatorStake.dividedBy(totalStake);
591
- return new bignumber_1.default(1).minus(validatorCommission.dividedBy(1000000000)).multipliedBy(validatorReward).multipliedBy(nominatorShare);
592
- };
593
- // tslint:disable-next-line: cyclomatic-complexity
594
- SubstrateAccountController.prototype.getAvailableStakingActions = function (stakingDetails, nominations, validatorIds, maxDelegationValue) {
595
- var _a, _b, _c, _d;
596
- return __awaiter(this, void 0, void 0, function () {
597
- var availableActions, currentValidators, validatorAddresses, isBonded, isDelegating, isUnbonding, minBondingValue, minDelegationValue, electionStatus, isElectionClosed, hasFundsToWithdraw;
598
- var _this = this;
599
- return __generator(this, function (_e) {
600
- switch (_e.label) {
601
- case 0:
602
- availableActions = [];
603
- currentValidators = ((_b = (_a = nominations === null || nominations === void 0 ? void 0 : nominations.targets) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.map(function (target) { return target.asAddress(); })) || [];
604
- validatorAddresses = validatorIds.map(function (id) { return _this.substrateAddressFrom(id).asString(); });
605
- isBonded = new bignumber_1.default((_c = stakingDetails === null || stakingDetails === void 0 ? void 0 : stakingDetails.active) !== null && _c !== void 0 ? _c : 0).gt(0);
606
- isDelegating = nominations !== null;
607
- isUnbonding = stakingDetails && stakingDetails.locked.length > 0;
608
- return [4 /*yield*/, this.nodeClient.getExistentialDeposit()];
609
- case 1:
610
- minBondingValue = _e.sent();
611
- minDelegationValue = new bignumber_1.default(1);
612
- return [4 /*yield*/, this.nodeClient.getElectionStatus().then(function (eraElectionStatus) { return eraElectionStatus === null || eraElectionStatus === void 0 ? void 0 : eraElectionStatus.status.value; })];
613
- case 2:
614
- electionStatus = _e.sent();
615
- isElectionClosed = electionStatus !== SubstrateEraElectionStatus_1.SubstrateElectionStatus.OPEN;
616
- hasFundsToWithdraw = new bignumber_1.default((_d = stakingDetails === null || stakingDetails === void 0 ? void 0 : stakingDetails.unlocked) !== null && _d !== void 0 ? _d : 0).gt(0);
617
- if (maxDelegationValue.gt(minBondingValue) && !isBonded && !isUnbonding && isElectionClosed) {
618
- availableActions.push({
619
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.BOND_NOMINATE,
620
- args: ['targets', 'controller', 'value', 'payee']
621
- });
622
- }
623
- if (maxDelegationValue.gt(minDelegationValue) && isBonded && !isUnbonding && isElectionClosed) {
624
- availableActions.push({
625
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.BOND_EXTRA,
626
- args: ['value']
627
- });
628
- }
629
- if (isBonded && !isDelegating && !isUnbonding && isElectionClosed) {
630
- availableActions.push({
631
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.NOMINATE,
632
- args: ['targets']
633
- }, {
634
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.UNBOND,
635
- args: ['value']
636
- });
637
- }
638
- if (isUnbonding && !isDelegating && isElectionClosed) {
639
- availableActions.push({
640
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.REBOND_NOMINATE,
641
- args: ['targets', 'value']
642
- });
643
- }
644
- if (isUnbonding && isDelegating && isElectionClosed) {
645
- availableActions.push({
646
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.REBOND_EXTRA,
647
- args: ['value']
648
- });
649
- }
650
- if (isDelegating && isElectionClosed) {
651
- if (validatorAddresses.every(function (validator) { return currentValidators.includes(validator); }) &&
652
- validatorAddresses.length === currentValidators.length) {
653
- availableActions.push({
654
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.CANCEL_NOMINATION,
655
- args: ['value']
656
- });
657
- }
658
- else if (validatorAddresses.length > 0) {
659
- availableActions.push({
660
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.CHANGE_NOMINATION,
661
- args: ['targets']
662
- });
663
- }
664
- }
665
- if (hasFundsToWithdraw && isElectionClosed) {
666
- availableActions.push({
667
- type: SubstrateStakingActionType_1.SubstrateStakingActionType.WITHDRAW_UNBONDED,
668
- args: []
669
- });
670
- }
671
- availableActions.sort(function (a, b) { return a.type - b.type; });
672
- return [2 /*return*/, availableActions];
673
- }
373
+ }
374
+ if (isUnbonding && isDelegating && isElectionClosed) {
375
+ availableActions.push({
376
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.REBOND_EXTRA,
377
+ args: ['value']
674
378
  });
675
- });
676
- };
677
- SubstrateAccountController.prototype.getAccountIdentityInfo = function (address) {
678
- return __awaiter(this, void 0, void 0, function () {
679
- var registration, superOf, _a;
680
- return __generator(this, function (_b) {
681
- switch (_b.label) {
682
- case 0:
683
- _b.trys.push([0, 3, , 4]);
684
- return [4 /*yield*/, this.nodeClient.getIdentityOf(address)];
685
- case 1:
686
- registration = _b.sent();
687
- if (registration) {
688
- return [2 /*return*/, registration.identityInfo];
689
- }
690
- return [4 /*yield*/, this.nodeClient.getSuperOf(address)];
691
- case 2:
692
- superOf = _b.sent();
693
- return [2 /*return*/, superOf ? this.getAccountIdentityInfo(superOf.first.address) : null];
694
- case 3:
695
- _a = _b.sent();
696
- return [2 /*return*/, null];
697
- case 4: return [2 /*return*/];
698
- }
379
+ }
380
+ if (isDelegating && isElectionClosed) {
381
+ if (validatorAddresses.every((validator) => currentValidators.includes(validator)) &&
382
+ validatorAddresses.length === currentValidators.length) {
383
+ availableActions.push({
384
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.CANCEL_NOMINATION,
385
+ args: ['value']
386
+ });
387
+ }
388
+ else if (validatorAddresses.length > 0) {
389
+ availableActions.push({
390
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.CHANGE_NOMINATION,
391
+ args: ['targets']
392
+ });
393
+ }
394
+ }
395
+ if (hasFundsToWithdraw && isElectionClosed) {
396
+ availableActions.push({
397
+ type: SubstrateStakingActionType_1.SubstrateStakingActionType.WITHDRAW_UNBONDED,
398
+ args: []
699
399
  });
700
- });
701
- };
702
- SubstrateAccountController.prototype.partitionArray = function (array, predicate) {
703
- var partitioned = [[], []];
704
- for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {
705
- var item = array_1[_i];
706
- var index = predicate(item) ? 0 : 1;
400
+ }
401
+ availableActions.sort((a, b) => a.type - b.type);
402
+ return availableActions;
403
+ }
404
+ async getAccountIdentityInfo(address) {
405
+ try {
406
+ const registration = await this.nodeClient.getIdentityOf(address);
407
+ if (registration) {
408
+ return registration.identityInfo;
409
+ }
410
+ const superOf = await this.nodeClient.getSuperOf(address);
411
+ return superOf ? this.getAccountIdentityInfo(superOf.first.address) : null;
412
+ }
413
+ catch {
414
+ return null;
415
+ }
416
+ }
417
+ partitionArray(array, predicate) {
418
+ const partitioned = [[], []];
419
+ for (const item of array) {
420
+ const index = predicate(item) ? 0 : 1;
707
421
  partitioned[index].push(item);
708
422
  }
709
423
  return partitioned;
710
- };
711
- SubstrateAccountController.prototype.substrateAddressFrom = function (accountId) {
424
+ }
425
+ substrateAddressFrom(accountId) {
712
426
  return (0, SubstrateCompatAddress_1.substrateAddressFactory)(this.network).from(accountId);
713
- };
714
- return SubstrateAccountController;
715
- }());
427
+ }
428
+ }
716
429
  exports.SubstrateAccountController = SubstrateAccountController;
717
430
  //# sourceMappingURL=SubstrateAccountController.js.map