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

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 (395) 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 +94 -23
  5. package/v0/protocol/SubstrateCryptoClient.js.map +1 -1
  6. package/v0/protocol/SubstrateDelegateProtocol.js +542 -297
  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 +672 -333
  11. package/v0/protocol/SubstrateProtocol.js.map +1 -1
  12. package/v0/protocol/SubstrateProtocolOptions.js +93 -25
  13. package/v0/protocol/SubstrateProtocolOptions.js.map +1 -1
  14. package/v0/protocol/astar/AstarAddress.js +27 -7
  15. package/v0/protocol/astar/AstarAddress.js.map +1 -1
  16. package/v0/protocol/common/SubstrateAccountController.js +687 -400
  17. package/v0/protocol/common/SubstrateAccountController.js.map +1 -1
  18. package/v0/protocol/common/SubstrateTransactionController.d.ts +1 -0
  19. package/v0/protocol/common/SubstrateTransactionController.js +346 -185
  20. package/v0/protocol/common/SubstrateTransactionController.js.map +1 -1
  21. package/v0/protocol/common/blockexplorer/SubstrateBlockExplorerClient.js +100 -52
  22. package/v0/protocol/common/blockexplorer/SubstrateBlockExplorerClient.js.map +1 -1
  23. package/v0/protocol/common/data/account/SubstrateAccountInfo.js +29 -27
  24. package/v0/protocol/common/data/account/SubstrateAccountInfo.js.map +1 -1
  25. package/v0/protocol/common/data/account/SubstrateAddress.d.ts +1 -0
  26. package/v0/protocol/common/data/account/SubstrateAddress.js +46 -43
  27. package/v0/protocol/common/data/account/SubstrateAddress.js.map +1 -1
  28. package/v0/protocol/common/data/account/SubstrateRegistration.js +56 -50
  29. package/v0/protocol/common/data/account/SubstrateRegistration.js.map +1 -1
  30. package/v0/protocol/common/data/metadata/Metadata.js +25 -24
  31. package/v0/protocol/common/data/metadata/Metadata.js.map +1 -1
  32. package/v0/protocol/common/data/metadata/MetadataVersioned.js +5 -2
  33. package/v0/protocol/common/data/metadata/MetadataVersioned.js.map +1 -1
  34. package/v0/protocol/common/data/metadata/decorator/MetadataDecorator.js +20 -18
  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 +1 -0
  37. package/v0/protocol/common/data/metadata/decorator/storage/SubstrateStorageEntry.js +237 -89
  38. package/v0/protocol/common/data/metadata/decorator/storage/SubstrateStorageEntry.js.map +1 -1
  39. package/v0/protocol/common/data/metadata/v11/MetadataV11.js +63 -43
  40. package/v0/protocol/common/data/metadata/v11/MetadataV11.js.map +1 -1
  41. package/v0/protocol/common/data/metadata/v11/module/MetadataV11Call.js +51 -30
  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 +38 -20
  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 +34 -16
  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 +36 -18
  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 +51 -29
  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 +35 -17
  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 +41 -23
  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 +114 -72
  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 +61 -41
  58. package/v0/protocol/common/data/metadata/v12/MetadataV12.js.map +1 -1
  59. package/v0/protocol/common/data/metadata/v12/module/MetadataV12Module.js +32 -14
  60. package/v0/protocol/common/data/metadata/v12/module/MetadataV12Module.js.map +1 -1
  61. package/v0/protocol/common/data/metadata/v13/MetadataV13.js +61 -41
  62. package/v0/protocol/common/data/metadata/v13/MetadataV13.js.map +1 -1
  63. package/v0/protocol/common/data/metadata/v13/module/MetadataV13Module.js +53 -31
  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 +35 -17
  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 +41 -23
  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 +130 -83
  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 +74 -53
  72. package/v0/protocol/common/data/metadata/v14/MetadataV14.js.map +1 -1
  73. package/v0/protocol/common/data/metadata/v14/MetadataV14Component.js +25 -7
  74. package/v0/protocol/common/data/metadata/v14/MetadataV14Component.js.map +1 -1
  75. package/v0/protocol/common/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js +35 -17
  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 +34 -16
  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 +28 -8
  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 +37 -19
  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 +28 -8
  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 +28 -8
  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 +48 -30
  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 +34 -16
  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 +41 -23
  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 +90 -49
  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 +41 -20
  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 +35 -17
  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 +38 -20
  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 +40 -22
  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 +34 -16
  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 +39 -21
  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 +150 -106
  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 +3 -2
  110. package/v0/protocol/common/data/scale/SCALEDecoder.js +74 -69
  111. package/v0/protocol/common/data/scale/SCALEDecoder.js.map +1 -1
  112. package/v0/protocol/common/data/scale/type/SCALEAccountId.d.ts +1 -0
  113. package/v0/protocol/common/data/scale/type/SCALEAccountId.js +44 -25
  114. package/v0/protocol/common/data/scale/type/SCALEAccountId.js.map +1 -1
  115. package/v0/protocol/common/data/scale/type/SCALEArray.js +45 -27
  116. package/v0/protocol/common/data/scale/type/SCALEArray.js.map +1 -1
  117. package/v0/protocol/common/data/scale/type/SCALEBoolean.js +36 -18
  118. package/v0/protocol/common/data/scale/type/SCALEBoolean.js.map +1 -1
  119. package/v0/protocol/common/data/scale/type/SCALEBytes.d.ts +1 -0
  120. package/v0/protocol/common/data/scale/type/SCALEBytes.js +42 -23
  121. package/v0/protocol/common/data/scale/type/SCALEBytes.js.map +1 -1
  122. package/v0/protocol/common/data/scale/type/SCALEClass.js +28 -8
  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 +73 -54
  126. package/v0/protocol/common/data/scale/type/SCALECompactInt.js.map +1 -1
  127. package/v0/protocol/common/data/scale/type/SCALEData.d.ts +1 -0
  128. package/v0/protocol/common/data/scale/type/SCALEData.js +51 -33
  129. package/v0/protocol/common/data/scale/type/SCALEData.js.map +1 -1
  130. package/v0/protocol/common/data/scale/type/SCALEEnum.js +39 -21
  131. package/v0/protocol/common/data/scale/type/SCALEEnum.js.map +1 -1
  132. package/v0/protocol/common/data/scale/type/SCALEEra.js +68 -46
  133. package/v0/protocol/common/data/scale/type/SCALEEra.js.map +1 -1
  134. package/v0/protocol/common/data/scale/type/SCALEHash.d.ts +1 -0
  135. package/v0/protocol/common/data/scale/type/SCALEHash.js +53 -29
  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 +65 -46
  139. package/v0/protocol/common/data/scale/type/SCALEInt.js.map +1 -1
  140. package/v0/protocol/common/data/scale/type/SCALEMultiAddress.d.ts +2 -1
  141. package/v0/protocol/common/data/scale/type/SCALEMultiAddress.js +59 -40
  142. package/v0/protocol/common/data/scale/type/SCALEMultiAddress.js.map +1 -1
  143. package/v0/protocol/common/data/scale/type/SCALEOptional.js +47 -27
  144. package/v0/protocol/common/data/scale/type/SCALEOptional.js.map +1 -1
  145. package/v0/protocol/common/data/scale/type/SCALEString.js +44 -25
  146. package/v0/protocol/common/data/scale/type/SCALEString.js.map +1 -1
  147. package/v0/protocol/common/data/scale/type/SCALETuple.js +40 -22
  148. package/v0/protocol/common/data/scale/type/SCALETuple.js.map +1 -1
  149. package/v0/protocol/common/data/scale/type/SCALEType.js +9 -6
  150. package/v0/protocol/common/data/scale/type/SCALEType.js.map +1 -1
  151. package/v0/protocol/common/data/staking/SubstrateActiveEraInfo.js +12 -11
  152. package/v0/protocol/common/data/staking/SubstrateActiveEraInfo.js.map +1 -1
  153. package/v0/protocol/common/data/staking/SubstrateEraElectionStatus.js +15 -14
  154. package/v0/protocol/common/data/staking/SubstrateEraElectionStatus.js.map +1 -1
  155. package/v0/protocol/common/data/staking/SubstrateEraRewardPoints.js +16 -13
  156. package/v0/protocol/common/data/staking/SubstrateEraRewardPoints.js.map +1 -1
  157. package/v0/protocol/common/data/staking/SubstrateExposure.js +17 -14
  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 +13 -12
  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 +14 -13
  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 +19 -16
  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 +10 -9
  174. package/v0/protocol/common/data/staking/SubstrateValidatorPrefs.js.map +1 -1
  175. package/v0/protocol/common/data/transaction/SubstrateSignature.d.ts +1 -0
  176. package/v0/protocol/common/data/transaction/SubstrateSignature.js +53 -30
  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 +73 -53
  180. package/v0/protocol/common/data/transaction/SubstrateTransaction.js.map +1 -1
  181. package/v0/protocol/common/data/transaction/SubstrateTransactionPayload.js +76 -44
  182. package/v0/protocol/common/data/transaction/SubstrateTransactionPayload.js.map +1 -1
  183. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethod.js +76 -40
  184. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethod.js.map +1 -1
  185. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethodArgs.js +631 -360
  186. package/v0/protocol/common/data/transaction/method/SubstrateTransactionMethodArgs.js.map +1 -1
  187. package/v0/protocol/common/node/SubstrateNodeClient.js +533 -226
  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 +2 -1
  193. package/v0/protocol/compat/SubstrateCompatAddress.js +30 -17
  194. package/v0/protocol/compat/SubstrateCompatAddress.js.map +1 -1
  195. package/v0/protocol/compat/SubstrateCompatSignature.d.ts +1 -0
  196. package/v0/protocol/compat/SubstrateCompatSignature.js +5 -4
  197. package/v0/protocol/compat/SubstrateCompatSignature.js.map +1 -1
  198. package/v0/protocol/kusama/KusamaAddress.js +27 -7
  199. package/v0/protocol/kusama/KusamaAddress.js.map +1 -1
  200. package/v0/protocol/moonbeam/MoonbeamAddress.d.ts +1 -0
  201. package/v0/protocol/moonbeam/MoonbeamAddress.js +36 -45
  202. package/v0/protocol/moonbeam/MoonbeamAddress.js.map +1 -1
  203. package/v0/protocol/moonbeam/MoonbeamSignature.d.ts +1 -0
  204. package/v0/protocol/moonbeam/MoonbeamSignature.js +35 -16
  205. package/v0/protocol/moonbeam/MoonbeamSignature.js.map +1 -1
  206. package/v0/protocol/polkadot/PolkadotAddress.js +27 -7
  207. package/v0/protocol/polkadot/PolkadotAddress.js.map +1 -1
  208. package/v0/serializer/validators/transaction-validator.js +83 -30
  209. package/v0/serializer/validators/transaction-validator.js.map +1 -1
  210. package/v0/serializer/validators/validators.js +133 -54
  211. package/v0/serializer/validators/validators.js.map +1 -1
  212. package/v0/utils/sr25519.js +74 -26
  213. package/v0/utils/sr25519.js.map +1 -1
  214. package/v1/block-explorer/subscan/SubscanBlockExplorer.js +61 -12
  215. package/v1/block-explorer/subscan/SubscanBlockExplorer.js.map +1 -1
  216. package/v1/block-explorer/subscan/SubscanBlockExplorerClient.js +103 -55
  217. package/v1/block-explorer/subscan/SubscanBlockExplorerClient.js.map +1 -1
  218. package/v1/controller/account/SubstrateCommonAccountController.js +132 -65
  219. package/v1/controller/account/SubstrateCommonAccountController.js.map +1 -1
  220. package/v1/controller/transaction/SubstrateCommonTransactionController.js +356 -194
  221. package/v1/controller/transaction/SubstrateCommonTransactionController.js.map +1 -1
  222. package/v1/crypto/SubstrateCryptoClient.js +94 -23
  223. package/v1/crypto/SubstrateCryptoClient.js.map +1 -1
  224. package/v1/data/account/SubstrateAccountInfo.js +29 -27
  225. package/v1/data/account/SubstrateAccountInfo.js.map +1 -1
  226. package/v1/data/account/SubstrateRegistration.js +56 -50
  227. package/v1/data/account/SubstrateRegistration.js.map +1 -1
  228. package/v1/data/account/address/SubstrateAddress.d.ts +2 -1
  229. package/v1/data/account/address/SubstrateAddress.js +3 -2
  230. package/v1/data/account/address/SubstrateAddress.js.map +1 -1
  231. package/v1/data/account/address/SubstrateAddressFactory.d.ts +3 -2
  232. package/v1/data/account/address/SubstrateAddressFactory.js +23 -16
  233. package/v1/data/account/address/SubstrateAddressFactory.js.map +1 -1
  234. package/v1/data/account/address/SubstrateEthAddress.d.ts +1 -0
  235. package/v1/data/account/address/SubstrateEthAddress.js +39 -48
  236. package/v1/data/account/address/SubstrateEthAddress.js.map +1 -1
  237. package/v1/data/account/address/SubstrateSS58Address.d.ts +1 -0
  238. package/v1/data/account/address/SubstrateSS58Address.js +50 -47
  239. package/v1/data/account/address/SubstrateSS58Address.js.map +1 -1
  240. package/v1/data/metadata/Metadata.js +25 -24
  241. package/v1/data/metadata/Metadata.js.map +1 -1
  242. package/v1/data/metadata/MetadataVersioned.js +5 -2
  243. package/v1/data/metadata/MetadataVersioned.js.map +1 -1
  244. package/v1/data/metadata/decorator/MetadataDecorator.js +20 -18
  245. package/v1/data/metadata/decorator/MetadataDecorator.js.map +1 -1
  246. package/v1/data/metadata/decorator/constant/SubstrateConstant.d.ts +1 -0
  247. package/v1/data/metadata/decorator/storage/SubstrateStorageEntry.js +237 -89
  248. package/v1/data/metadata/decorator/storage/SubstrateStorageEntry.js.map +1 -1
  249. package/v1/data/metadata/v11/MetadataV11.js +63 -43
  250. package/v1/data/metadata/v11/MetadataV11.js.map +1 -1
  251. package/v1/data/metadata/v11/module/MetadataV11Call.js +51 -30
  252. package/v1/data/metadata/v11/module/MetadataV11Call.js.map +1 -1
  253. package/v1/data/metadata/v11/module/MetadataV11Constant.js +38 -20
  254. package/v1/data/metadata/v11/module/MetadataV11Constant.js.map +1 -1
  255. package/v1/data/metadata/v11/module/MetadataV11Error.js +34 -16
  256. package/v1/data/metadata/v11/module/MetadataV11Error.js.map +1 -1
  257. package/v1/data/metadata/v11/module/MetadataV11Event.js +36 -18
  258. package/v1/data/metadata/v11/module/MetadataV11Event.js.map +1 -1
  259. package/v1/data/metadata/v11/module/MetadataV11Module.js +51 -29
  260. package/v1/data/metadata/v11/module/MetadataV11Module.js.map +1 -1
  261. package/v1/data/metadata/v11/module/storage/MetadataV11Storage.js +35 -17
  262. package/v1/data/metadata/v11/module/storage/MetadataV11Storage.js.map +1 -1
  263. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntry.js +41 -23
  264. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntry.js.map +1 -1
  265. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntryType.js +114 -72
  266. package/v1/data/metadata/v11/module/storage/MetadataV11StorageEntryType.js.map +1 -1
  267. package/v1/data/metadata/v12/MetadataV12.js +61 -41
  268. package/v1/data/metadata/v12/MetadataV12.js.map +1 -1
  269. package/v1/data/metadata/v12/module/MetadataV12Module.js +32 -14
  270. package/v1/data/metadata/v12/module/MetadataV12Module.js.map +1 -1
  271. package/v1/data/metadata/v13/MetadataV13.js +61 -41
  272. package/v1/data/metadata/v13/MetadataV13.js.map +1 -1
  273. package/v1/data/metadata/v13/module/MetadataV13Module.js +53 -31
  274. package/v1/data/metadata/v13/module/MetadataV13Module.js.map +1 -1
  275. package/v1/data/metadata/v13/module/storage/MetadataV13Storage.js +35 -17
  276. package/v1/data/metadata/v13/module/storage/MetadataV13Storage.js.map +1 -1
  277. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntry.js +41 -23
  278. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntry.js.map +1 -1
  279. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntryType.js +130 -83
  280. package/v1/data/metadata/v13/module/storage/MetadataV13StorageEntryType.js.map +1 -1
  281. package/v1/data/metadata/v14/MetadataV14.js +74 -53
  282. package/v1/data/metadata/v14/MetadataV14.js.map +1 -1
  283. package/v1/data/metadata/v14/MetadataV14Component.js +25 -7
  284. package/v1/data/metadata/v14/MetadataV14Component.js.map +1 -1
  285. package/v1/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js +35 -17
  286. package/v1/data/metadata/v14/extrinsic/MetadataV14Extrinsic.js.map +1 -1
  287. package/v1/data/metadata/v14/extrinsic/MetadataV14SignedExtension.js +34 -16
  288. package/v1/data/metadata/v14/extrinsic/MetadataV14SignedExtension.js.map +1 -1
  289. package/v1/data/metadata/v14/pallet/MetadataV14Call.js +28 -8
  290. package/v1/data/metadata/v14/pallet/MetadataV14Call.js.map +1 -1
  291. package/v1/data/metadata/v14/pallet/MetadataV14Constant.js +37 -19
  292. package/v1/data/metadata/v14/pallet/MetadataV14Constant.js.map +1 -1
  293. package/v1/data/metadata/v14/pallet/MetadataV14Error.js +28 -8
  294. package/v1/data/metadata/v14/pallet/MetadataV14Error.js.map +1 -1
  295. package/v1/data/metadata/v14/pallet/MetadataV14Event.js +28 -8
  296. package/v1/data/metadata/v14/pallet/MetadataV14Event.js.map +1 -1
  297. package/v1/data/metadata/v14/pallet/MetadataV14Pallet.js +48 -30
  298. package/v1/data/metadata/v14/pallet/MetadataV14Pallet.js.map +1 -1
  299. package/v1/data/metadata/v14/pallet/storage/MetadataV14Storage.js +34 -16
  300. package/v1/data/metadata/v14/pallet/storage/MetadataV14Storage.js.map +1 -1
  301. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntry.js +41 -23
  302. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntry.js.map +1 -1
  303. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntryType.js +90 -49
  304. package/v1/data/metadata/v14/pallet/storage/MetadataV14StorageEntryType.js.map +1 -1
  305. package/v1/data/metadata/v14/registry/MetadataV14PortableRegistry.js +41 -20
  306. package/v1/data/metadata/v14/registry/MetadataV14PortableRegistry.js.map +1 -1
  307. package/v1/data/metadata/v14/registry/MetadataV14PortableType.js +35 -17
  308. package/v1/data/metadata/v14/registry/MetadataV14PortableType.js.map +1 -1
  309. package/v1/data/metadata/v14/registry/si/MetadataV14SiField.js +38 -20
  310. package/v1/data/metadata/v14/registry/si/MetadataV14SiField.js.map +1 -1
  311. package/v1/data/metadata/v14/registry/si/MetadataV14SiType.js +40 -22
  312. package/v1/data/metadata/v14/registry/si/MetadataV14SiType.js.map +1 -1
  313. package/v1/data/metadata/v14/registry/si/MetadataV14SiTypeParameter.js +34 -16
  314. package/v1/data/metadata/v14/registry/si/MetadataV14SiTypeParameter.js.map +1 -1
  315. package/v1/data/metadata/v14/registry/si/MetadataV14SiVariant.js +39 -21
  316. package/v1/data/metadata/v14/registry/si/MetadataV14SiVariant.js.map +1 -1
  317. package/v1/data/metadata/v14/registry/si/MetadataV14TypeDef.js +150 -106
  318. package/v1/data/metadata/v14/registry/si/MetadataV14TypeDef.js.map +1 -1
  319. package/v1/data/scale/SCALEDecoder.d.ts +3 -2
  320. package/v1/data/scale/SCALEDecoder.js +80 -69
  321. package/v1/data/scale/SCALEDecoder.js.map +1 -1
  322. package/v1/data/scale/type/SCALEAccountId.d.ts +1 -0
  323. package/v1/data/scale/type/SCALEAccountId.js +46 -27
  324. package/v1/data/scale/type/SCALEAccountId.js.map +1 -1
  325. package/v1/data/scale/type/SCALEArray.js +45 -27
  326. package/v1/data/scale/type/SCALEArray.js.map +1 -1
  327. package/v1/data/scale/type/SCALEBoolean.js +36 -18
  328. package/v1/data/scale/type/SCALEBoolean.js.map +1 -1
  329. package/v1/data/scale/type/SCALEBytes.d.ts +1 -0
  330. package/v1/data/scale/type/SCALEBytes.js +42 -23
  331. package/v1/data/scale/type/SCALEBytes.js.map +1 -1
  332. package/v1/data/scale/type/SCALEClass.js +28 -8
  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 +73 -54
  336. package/v1/data/scale/type/SCALECompactInt.js.map +1 -1
  337. package/v1/data/scale/type/SCALEData.d.ts +1 -0
  338. package/v1/data/scale/type/SCALEData.js +51 -33
  339. package/v1/data/scale/type/SCALEData.js.map +1 -1
  340. package/v1/data/scale/type/SCALEEnum.js +39 -21
  341. package/v1/data/scale/type/SCALEEnum.js.map +1 -1
  342. package/v1/data/scale/type/SCALEEra.js +68 -46
  343. package/v1/data/scale/type/SCALEEra.js.map +1 -1
  344. package/v1/data/scale/type/SCALEHash.d.ts +1 -0
  345. package/v1/data/scale/type/SCALEHash.js +53 -29
  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 +65 -46
  349. package/v1/data/scale/type/SCALEInt.js.map +1 -1
  350. package/v1/data/scale/type/SCALEMultiAddress.d.ts +2 -1
  351. package/v1/data/scale/type/SCALEMultiAddress.js +59 -40
  352. package/v1/data/scale/type/SCALEMultiAddress.js.map +1 -1
  353. package/v1/data/scale/type/SCALEOptional.js +47 -27
  354. package/v1/data/scale/type/SCALEOptional.js.map +1 -1
  355. package/v1/data/scale/type/SCALEString.js +44 -25
  356. package/v1/data/scale/type/SCALEString.js.map +1 -1
  357. package/v1/data/scale/type/SCALETuple.js +40 -22
  358. package/v1/data/scale/type/SCALETuple.js.map +1 -1
  359. package/v1/data/scale/type/SCALEType.js +9 -6
  360. package/v1/data/scale/type/SCALEType.js.map +1 -1
  361. package/v1/data/transaction/SubstrateSignature.d.ts +1 -0
  362. package/v1/data/transaction/SubstrateSignature.js +61 -36
  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 +87 -66
  366. package/v1/data/transaction/SubstrateTransaction.js.map +1 -1
  367. package/v1/data/transaction/SubstrateTransactionPayload.js +114 -81
  368. package/v1/data/transaction/SubstrateTransactionPayload.js.map +1 -1
  369. package/v1/data/transaction/method/SubstrateTransactionMethod.js +76 -40
  370. package/v1/data/transaction/method/SubstrateTransactionMethod.js.map +1 -1
  371. package/v1/data/transaction/method/SubstrateTransactionMethodArgs.js +65 -35
  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 +357 -159
  377. package/v1/node/SubstrateCommonNodeClient.js.map +1 -1
  378. package/v1/protocol/SubstrateProtocol.js +388 -182
  379. package/v1/protocol/SubstrateProtocol.js.map +1 -1
  380. package/v1/protocol/SubstrateStakingProtocol.js +82 -15
  381. package/v1/protocol/SubstrateStakingProtocol.js.map +1 -1
  382. package/v1/serializer/v3/schemas/converter/transaction-converter.js +20 -8
  383. package/v1/serializer/v3/schemas/converter/transaction-converter.js.map +1 -1
  384. package/v1/serializer/v3/validators/transaction-validator.js +63 -15
  385. package/v1/serializer/v3/validators/transaction-validator.js.map +1 -1
  386. package/v1/serializer/v3/validators/validators.js +129 -48
  387. package/v1/serializer/v3/validators/validators.js.map +1 -1
  388. package/v1/types/configuration.d.ts +6 -6
  389. package/v1/types/crypto.d.ts +1 -1
  390. package/v1/utils/keys.js +5 -4
  391. package/v1/utils/keys.js.map +1 -1
  392. package/v1/utils/protocol.js +15 -14
  393. package/v1/utils/protocol.js.map +1 -1
  394. package/v1/utils/signature.js +4 -3
  395. package/v1/utils/signature.js.map +1 -1
@@ -1,352 +1,691 @@
1
1
  "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ var __generator = (this && this.__generator) || function (thisArg, body) {
38
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
39
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
40
+ function verb(n) { return function (v) { return step([n, v]); }; }
41
+ function step(op) {
42
+ if (f) throw new TypeError("Generator is already executing.");
43
+ while (_) try {
44
+ 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;
45
+ if (y = 0, t) op = [op[0] & 2, t.value];
46
+ switch (op[0]) {
47
+ case 0: case 1: t = op; break;
48
+ case 4: _.label++; return { value: op[1], done: false };
49
+ case 5: _.label++; y = op[1]; op = [0]; continue;
50
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
51
+ default:
52
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
53
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
54
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
55
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
56
+ if (t[2]) _.ops.pop();
57
+ _.trys.pop(); continue;
58
+ }
59
+ op = body.call(thisArg, _);
60
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
61
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62
+ }
63
+ };
2
64
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
65
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
66
  };
5
67
  Object.defineProperty(exports, "__esModule", { value: true });
6
68
  exports.SubstrateProtocol = void 0;
7
- const bignumber_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/bignumber.js-9.0.0/bignumber"));
8
- const errors_1 = require("@airgap/coinlib-core/errors");
9
- const coinlib_error_1 = require("@airgap/coinlib-core/errors/coinlib-error");
10
- const NonExtendedProtocol_1 = require("@airgap/coinlib-core/protocols/NonExtendedProtocol");
11
- const SubstrateAddress_1 = require("./common/data/account/SubstrateAddress");
12
- const SubstrateTransaction_1 = require("./common/data/transaction/SubstrateTransaction");
13
- const SubstrateCryptoClient_1 = require("./SubstrateCryptoClient");
14
- class SubstrateProtocol extends NonExtendedProtocol_1.NonExtendedProtocol {
15
- constructor(options) {
16
- super();
17
- this.options = options;
18
- this.supportsHD = false;
19
- this.addressIsCaseSensitive = true;
20
- this.addressValidationPattern = '^5[a-km-zA-HJ-NP-Z1-9]+$';
21
- this.addressPlaceholder = `5ABC...`;
22
- this.cryptoClient = new SubstrateCryptoClient_1.SubstrateCryptoClient();
23
- }
24
- async getSymbol() {
25
- return this.symbol;
26
- }
27
- async getName() {
28
- return this.name;
29
- }
30
- async getMarketSymbol() {
31
- return this.marketSymbol;
32
- }
33
- async getAssetSymbol() {
34
- return undefined;
35
- }
36
- async getFeeSymbol() {
37
- return this.feeSymbol;
38
- }
39
- async getDecimals() {
40
- return this.decimals;
41
- }
42
- async getFeeDecimals() {
43
- return this.feeDecimals;
44
- }
45
- async getIdentifier() {
46
- return this.identifier;
47
- }
48
- async getFeeDefaults() {
49
- return this.feeDefaults;
50
- }
51
- async getUnits() {
52
- return this.units;
53
- }
54
- async getStandardDerivationPath() {
55
- return this.standardDerivationPath;
56
- }
57
- async getSupportsHD() {
58
- return this.supportsHD;
59
- }
60
- async getAddressIsCaseSensitive() {
61
- return this.addressIsCaseSensitive;
62
- }
63
- async getAddressValidationPattern() {
64
- return this.addressValidationPattern;
65
- }
66
- async getAddressPlaceholder() {
67
- return this.addressPlaceholder;
68
- }
69
- async getOptions() {
70
- return this.options;
71
- }
72
- async getBlockExplorerLinkForAddress(address) {
73
- return this.options.network.blockExplorer.getAddressLink(address);
74
- }
75
- async getBlockExplorerLinkForTxId(txId) {
76
- return this.options.network.blockExplorer.getTransactionLink(txId);
77
- }
78
- async getPublicKeyFromMnemonic(mnemonic, derivationPath, password) {
79
- const keyPair = await this.options.accountController.createKeyPairFromMnemonic(mnemonic, derivationPath, password);
80
- return keyPair.publicKey.toString('hex');
81
- }
82
- async getPrivateKeyFromMnemonic(mnemonic, derivationPath, password) {
83
- const keyPair = await this.options.accountController.createKeyPairFromMnemonic(mnemonic, derivationPath, password);
84
- return keyPair.privateKey.toString('hex');
85
- }
86
- async getPublicKeyFromHexSecret(secret, derivationPath) {
87
- const keyPair = await this.options.accountController.createKeyPairFromHexSecret(secret, derivationPath);
88
- return keyPair.publicKey.toString('hex');
89
- }
90
- async getPrivateKeyFromHexSecret(secret, derivationPath) {
91
- const keyPair = await this.options.accountController.createKeyPairFromHexSecret(secret, derivationPath);
92
- return keyPair.privateKey.toString('hex');
93
- }
94
- async getAddressFromPublicKey(publicKey, cursor) {
95
- const address = await this.options.accountController.createAddressFromPublicKey(publicKey);
96
- return {
97
- address: address.asString(),
98
- cursor: { hasNext: false }
99
- };
100
- }
101
- async getAddressesFromPublicKey(publicKey, cursor) {
102
- return [await this.getAddressFromPublicKey(publicKey, cursor)];
103
- }
104
- async getTransactionsFromPublicKey(publicKey, limit, cursor) {
105
- const addresses = await this.getAddressesFromPublicKey(publicKey).then((addresses) => addresses.map((address) => address.address));
106
- return this.getTransactionsFromAddresses(addresses, limit, cursor);
107
- }
108
- async getTransactionsFromAddresses(addresses, limit, cursor) {
109
- const txs = await Promise.all(addresses.map((address) => this.options.blockExplorerClient.getTransactions(address, limit, this.decimals, cursor)));
110
- const transactions = txs
111
- .reduce((flatten, toFlatten) => flatten.concat(toFlatten), [])
112
- .map((tx) => ({
113
- protocolIdentifier: this.identifier,
114
- network: this.options.network,
115
- from: [],
116
- to: [],
117
- isInbound: false,
118
- amount: '',
119
- fee: '',
120
- ...tx
121
- }));
122
- return { transactions, cursor: { page: cursor ? cursor.page + 1 : 1 } };
123
- }
124
- async signWithPrivateKey(privateKey, rawTransaction) {
125
- const txs = this.options.transactionController.decodeDetails(rawTransaction.encoded);
126
- const signed = await Promise.all(txs.map((tx) => this.options.transactionController.signTransaction(Buffer.from(privateKey, 'hex'), tx.transaction, tx.payload)));
127
- txs.forEach((tx, index) => (tx.transaction = signed[index]));
128
- return this.options.transactionController.encodeDetails(txs);
129
- }
130
- async getTransactionDetails(transaction) {
131
- return this.getTransactionDetailsFromEncoded(transaction.transaction.encoded);
132
- }
133
- async getTransactionDetailsFromSigned(transaction) {
134
- return this.getTransactionDetailsFromEncoded(transaction.transaction);
135
- }
136
- async getBalanceOfAddresses(addresses) {
137
- const balances = await Promise.all(addresses.map((address) => this.options.accountController.getBalance(address)));
138
- const balance = balances.reduce((current, next) => current.plus(next));
139
- return balance.toString(10);
140
- }
141
- async getAvailableBalanceOfAddresses(addresses) {
142
- const balances = await Promise.all(addresses.map((address) => this.options.accountController.getTransferableBalance(address, false)));
143
- const balance = balances.reduce((current, next) => current.plus(next));
144
- return balance.toString(10);
145
- }
146
- async getBalanceOfPublicKey(publicKey) {
147
- const address = await this.getAddressFromPublicKey(publicKey);
148
- return this.getBalanceOfAddresses([address.address]);
149
- }
150
- async getBalanceOfPublicKeyForSubProtocols(publicKey, subProtocols) {
151
- throw Promise.reject('get balance of sub protocols not supported');
152
- }
153
- async estimateMaxTransactionValueFromPublicKey(publicKey, _recipients, fee, data) {
154
- const results = await Promise.all([
155
- this.options.accountController.getTransferableBalance(publicKey, data?.excludeExistentialDeposit),
156
- this.getFutureRequiredTransactions(publicKey, 'transfer')
157
- ]);
158
- const transferableBalance = results[0];
159
- const futureTransactions = results[1];
160
- const feeEstimate = await this.options.transactionController.estimateTransactionFees(publicKey, futureTransactions);
161
- if (!feeEstimate) {
162
- return Promise.reject('Could not estimate max value.');
163
- }
164
- let maxAmount = transferableBalance.minus(feeEstimate).minus(new bignumber_1.default(fee || 0));
165
- if (maxAmount.lt(0)) {
166
- maxAmount = new bignumber_1.default(0);
167
- }
168
- return maxAmount.toFixed();
169
- }
170
- async estimateFeeDefaultsFromPublicKey(publicKey, recipients, values, data) {
171
- const destination = recipients[0];
172
- const value = values[0];
173
- const transaction = await this.options.transactionController.createTransaction(SubstrateTransaction_1.SubstrateTransactionType.TRANSFER, publicKey, 0, {
174
- to: destination && destination.length > 0 ? destination : publicKey,
175
- value: new bignumber_1.default(value)
176
- });
177
- const fee = await this.options.transactionController.calculateTransactionFee(transaction);
178
- if (!fee) {
179
- return Promise.reject('Could not fetch all necessary data.');
180
- }
181
- return {
182
- low: fee.shiftedBy(-this.feeDecimals).toFixed(),
183
- medium: fee.shiftedBy(-this.feeDecimals).toFixed(),
184
- high: fee.shiftedBy(-this.feeDecimals).toFixed()
185
- };
186
- }
187
- async prepareTransactionFromPublicKey(publicKey, recipients, values, fee, data) {
188
- if (recipients.length !== values.length) {
189
- return Promise.reject("Recipients length doesn't match values length.");
190
- }
191
- const recipientsWithValues = recipients.map((recipient, index) => [recipient, values[index]]);
192
- const excludeExistentialDeposit = data?.excludeExistentialDeposit;
193
- const transferableBalance = await this.options.accountController.getTransferableBalance(publicKey, excludeExistentialDeposit);
194
- const totalValue = values.map((value) => new bignumber_1.default(value)).reduce((total, next) => total.plus(next), new bignumber_1.default(0));
195
- const available = new bignumber_1.default(transferableBalance).minus(totalValue);
196
- const encoded = await this.options.transactionController.prepareSubmittableTransactions(publicKey, available, recipientsWithValues.map(([recipient, value]) => ({
197
- type: SubstrateTransaction_1.SubstrateTransactionType.TRANSFER,
198
- tip: 0, // temporary, until we handle Substrate fee/tip model
199
- args: {
200
- to: recipient,
201
- value: new bignumber_1.default(value)
202
- }
203
- })));
204
- return { encoded };
205
- }
206
- async broadcastTransaction(encoded) {
207
- const txs = this.options.transactionController
208
- .decodeDetails(encoded)
209
- .map((tx) => [tx.runtimeVersion, tx.transaction]);
210
- const txHashes = await Promise.all(txs.map((tx) => this.options.nodeClient.submitTransaction(tx[1].encode({ network: this.options.network.extras.network, runtimeVersion: tx[0] })))).catch((error) => {
211
- throw new errors_1.NetworkError(coinlib_error_1.Domain.SUBSTRATE, error);
212
- });
213
- return txs[0][1]?.type !== SubstrateTransaction_1.SubstrateTransactionType.SUBMIT_BATCH ? txHashes[0] : '';
214
- }
215
- async getFutureRequiredTransactions(accountId, intention) {
216
- const results = await Promise.all([
217
- this.options.accountController.isBonded(accountId),
218
- this.options.accountController.isDelegating(accountId),
219
- this.options.accountController.getTransferableBalance(accountId),
220
- this.options.accountController.getTransferableBalance(accountId, false, false),
221
- this.options.accountController.getUnlockingBalance(accountId)
222
- ]);
223
- const isBonded = results[0];
224
- const isNominating = results[1];
225
- const transferableBalance = results[2];
226
- const stakingBalance = results[3];
227
- const unlockingBalance = results[4];
228
- const isUnbonding = unlockingBalance.gt(0);
229
- const requiredTransactions = [];
230
- if (intention === 'transfer') {
231
- requiredTransactions.push([
232
- SubstrateTransaction_1.SubstrateTransactionType.TRANSFER,
233
- {
234
- to: SubstrateAddress_1.SubstrateAddress.createPlaceholder(),
235
- value: transferableBalance
69
+ var bignumber_1 = __importDefault(require("@airgap/coinlib-core/dependencies/src/bignumber.js-9.0.0/bignumber"));
70
+ var errors_1 = require("@airgap/coinlib-core/errors");
71
+ var coinlib_error_1 = require("@airgap/coinlib-core/errors/coinlib-error");
72
+ var NonExtendedProtocol_1 = require("@airgap/coinlib-core/protocols/NonExtendedProtocol");
73
+ var SubstrateAddress_1 = require("./common/data/account/SubstrateAddress");
74
+ var SubstrateTransaction_1 = require("./common/data/transaction/SubstrateTransaction");
75
+ var SubstrateCryptoClient_1 = require("./SubstrateCryptoClient");
76
+ var SubstrateProtocol = /** @class */ (function (_super) {
77
+ __extends(SubstrateProtocol, _super);
78
+ function SubstrateProtocol(options) {
79
+ var _this = _super.call(this) || this;
80
+ _this.options = options;
81
+ _this.supportsHD = false;
82
+ _this.addressIsCaseSensitive = true;
83
+ _this.addressValidationPattern = '^5[a-km-zA-HJ-NP-Z1-9]+$';
84
+ _this.addressPlaceholder = "5ABC...";
85
+ _this.cryptoClient = new SubstrateCryptoClient_1.SubstrateCryptoClient();
86
+ return _this;
87
+ }
88
+ SubstrateProtocol.prototype.getSymbol = function () {
89
+ return __awaiter(this, void 0, void 0, function () {
90
+ return __generator(this, function (_a) {
91
+ return [2 /*return*/, this.symbol];
92
+ });
93
+ });
94
+ };
95
+ SubstrateProtocol.prototype.getName = function () {
96
+ return __awaiter(this, void 0, void 0, function () {
97
+ return __generator(this, function (_a) {
98
+ return [2 /*return*/, this.name];
99
+ });
100
+ });
101
+ };
102
+ SubstrateProtocol.prototype.getMarketSymbol = function () {
103
+ return __awaiter(this, void 0, void 0, function () {
104
+ return __generator(this, function (_a) {
105
+ return [2 /*return*/, this.marketSymbol];
106
+ });
107
+ });
108
+ };
109
+ SubstrateProtocol.prototype.getAssetSymbol = function () {
110
+ return __awaiter(this, void 0, void 0, function () {
111
+ return __generator(this, function (_a) {
112
+ return [2 /*return*/, undefined];
113
+ });
114
+ });
115
+ };
116
+ SubstrateProtocol.prototype.getFeeSymbol = function () {
117
+ return __awaiter(this, void 0, void 0, function () {
118
+ return __generator(this, function (_a) {
119
+ return [2 /*return*/, this.feeSymbol];
120
+ });
121
+ });
122
+ };
123
+ SubstrateProtocol.prototype.getDecimals = function () {
124
+ return __awaiter(this, void 0, void 0, function () {
125
+ return __generator(this, function (_a) {
126
+ return [2 /*return*/, this.decimals];
127
+ });
128
+ });
129
+ };
130
+ SubstrateProtocol.prototype.getFeeDecimals = function () {
131
+ return __awaiter(this, void 0, void 0, function () {
132
+ return __generator(this, function (_a) {
133
+ return [2 /*return*/, this.feeDecimals];
134
+ });
135
+ });
136
+ };
137
+ SubstrateProtocol.prototype.getIdentifier = function () {
138
+ return __awaiter(this, void 0, void 0, function () {
139
+ return __generator(this, function (_a) {
140
+ return [2 /*return*/, this.identifier];
141
+ });
142
+ });
143
+ };
144
+ SubstrateProtocol.prototype.getFeeDefaults = function () {
145
+ return __awaiter(this, void 0, void 0, function () {
146
+ return __generator(this, function (_a) {
147
+ return [2 /*return*/, this.feeDefaults];
148
+ });
149
+ });
150
+ };
151
+ SubstrateProtocol.prototype.getUnits = function () {
152
+ return __awaiter(this, void 0, void 0, function () {
153
+ return __generator(this, function (_a) {
154
+ return [2 /*return*/, this.units];
155
+ });
156
+ });
157
+ };
158
+ SubstrateProtocol.prototype.getStandardDerivationPath = function () {
159
+ return __awaiter(this, void 0, void 0, function () {
160
+ return __generator(this, function (_a) {
161
+ return [2 /*return*/, this.standardDerivationPath];
162
+ });
163
+ });
164
+ };
165
+ SubstrateProtocol.prototype.getSupportsHD = function () {
166
+ return __awaiter(this, void 0, void 0, function () {
167
+ return __generator(this, function (_a) {
168
+ return [2 /*return*/, this.supportsHD];
169
+ });
170
+ });
171
+ };
172
+ SubstrateProtocol.prototype.getAddressIsCaseSensitive = function () {
173
+ return __awaiter(this, void 0, void 0, function () {
174
+ return __generator(this, function (_a) {
175
+ return [2 /*return*/, this.addressIsCaseSensitive];
176
+ });
177
+ });
178
+ };
179
+ SubstrateProtocol.prototype.getAddressValidationPattern = function () {
180
+ return __awaiter(this, void 0, void 0, function () {
181
+ return __generator(this, function (_a) {
182
+ return [2 /*return*/, this.addressValidationPattern];
183
+ });
184
+ });
185
+ };
186
+ SubstrateProtocol.prototype.getAddressPlaceholder = function () {
187
+ return __awaiter(this, void 0, void 0, function () {
188
+ return __generator(this, function (_a) {
189
+ return [2 /*return*/, this.addressPlaceholder];
190
+ });
191
+ });
192
+ };
193
+ SubstrateProtocol.prototype.getOptions = function () {
194
+ return __awaiter(this, void 0, void 0, function () {
195
+ return __generator(this, function (_a) {
196
+ return [2 /*return*/, this.options];
197
+ });
198
+ });
199
+ };
200
+ SubstrateProtocol.prototype.getBlockExplorerLinkForAddress = function (address) {
201
+ return __awaiter(this, void 0, void 0, function () {
202
+ return __generator(this, function (_a) {
203
+ return [2 /*return*/, this.options.network.blockExplorer.getAddressLink(address)];
204
+ });
205
+ });
206
+ };
207
+ SubstrateProtocol.prototype.getBlockExplorerLinkForTxId = function (txId) {
208
+ return __awaiter(this, void 0, void 0, function () {
209
+ return __generator(this, function (_a) {
210
+ return [2 /*return*/, this.options.network.blockExplorer.getTransactionLink(txId)];
211
+ });
212
+ });
213
+ };
214
+ SubstrateProtocol.prototype.getPublicKeyFromMnemonic = function (mnemonic, derivationPath, password) {
215
+ return __awaiter(this, void 0, void 0, function () {
216
+ var keyPair;
217
+ return __generator(this, function (_a) {
218
+ switch (_a.label) {
219
+ case 0: return [4 /*yield*/, this.options.accountController.createKeyPairFromMnemonic(mnemonic, derivationPath, password)];
220
+ case 1:
221
+ keyPair = _a.sent();
222
+ return [2 /*return*/, keyPair.publicKey.toString('hex')];
236
223
  }
237
- ]);
238
- }
239
- if (!isBonded && !isUnbonding && intention === 'delegate') {
240
- // not delegated & unbond
241
- requiredTransactions.push([
242
- SubstrateTransaction_1.SubstrateTransactionType.BOND,
243
- {
244
- controller: SubstrateAddress_1.SubstrateAddress.createPlaceholder(),
245
- value: stakingBalance,
246
- payee: 0
224
+ });
225
+ });
226
+ };
227
+ SubstrateProtocol.prototype.getPrivateKeyFromMnemonic = function (mnemonic, derivationPath, password) {
228
+ return __awaiter(this, void 0, void 0, function () {
229
+ var keyPair;
230
+ return __generator(this, function (_a) {
231
+ switch (_a.label) {
232
+ case 0: return [4 /*yield*/, this.options.accountController.createKeyPairFromMnemonic(mnemonic, derivationPath, password)];
233
+ case 1:
234
+ keyPair = _a.sent();
235
+ return [2 /*return*/, keyPair.privateKey.toString('hex')];
247
236
  }
248
- ], [
249
- SubstrateTransaction_1.SubstrateTransactionType.NOMINATE,
250
- {
251
- targets: [SubstrateAddress_1.SubstrateAddress.createPlaceholder()]
237
+ });
238
+ });
239
+ };
240
+ SubstrateProtocol.prototype.getPublicKeyFromHexSecret = function (secret, derivationPath) {
241
+ return __awaiter(this, void 0, void 0, function () {
242
+ var keyPair;
243
+ return __generator(this, function (_a) {
244
+ switch (_a.label) {
245
+ case 0: return [4 /*yield*/, this.options.accountController.createKeyPairFromHexSecret(secret, derivationPath)];
246
+ case 1:
247
+ keyPair = _a.sent();
248
+ return [2 /*return*/, keyPair.publicKey.toString('hex')];
252
249
  }
253
- ], [SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION, {}], [
254
- SubstrateTransaction_1.SubstrateTransactionType.UNBOND,
255
- {
256
- value: stakingBalance
250
+ });
251
+ });
252
+ };
253
+ SubstrateProtocol.prototype.getPrivateKeyFromHexSecret = function (secret, derivationPath) {
254
+ return __awaiter(this, void 0, void 0, function () {
255
+ var keyPair;
256
+ return __generator(this, function (_a) {
257
+ switch (_a.label) {
258
+ case 0: return [4 /*yield*/, this.options.accountController.createKeyPairFromHexSecret(secret, derivationPath)];
259
+ case 1:
260
+ keyPair = _a.sent();
261
+ return [2 /*return*/, keyPair.privateKey.toString('hex')];
257
262
  }
258
- ], [
259
- SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED,
260
- {
261
- slashingSpansNumber: 0
263
+ });
264
+ });
265
+ };
266
+ SubstrateProtocol.prototype.getAddressFromPublicKey = function (publicKey, cursor) {
267
+ return __awaiter(this, void 0, void 0, function () {
268
+ var address;
269
+ return __generator(this, function (_a) {
270
+ switch (_a.label) {
271
+ case 0: return [4 /*yield*/, this.options.accountController.createAddressFromPublicKey(publicKey)];
272
+ case 1:
273
+ address = _a.sent();
274
+ return [2 /*return*/, {
275
+ address: address.asString(),
276
+ cursor: { hasNext: false }
277
+ }];
262
278
  }
263
- ]);
264
- }
265
- else if (isUnbonding && intention === 'delegate') {
266
- requiredTransactions.push([
267
- SubstrateTransaction_1.SubstrateTransactionType.REBOND,
268
- {
269
- value: unlockingBalance
279
+ });
280
+ });
281
+ };
282
+ SubstrateProtocol.prototype.getAddressesFromPublicKey = function (publicKey, cursor) {
283
+ return __awaiter(this, void 0, void 0, function () {
284
+ return __generator(this, function (_a) {
285
+ switch (_a.label) {
286
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey, cursor)];
287
+ case 1: return [2 /*return*/, [_a.sent()]];
270
288
  }
271
- ], [
272
- SubstrateTransaction_1.SubstrateTransactionType.NOMINATE,
273
- {
274
- targets: [SubstrateAddress_1.SubstrateAddress.createPlaceholder()]
289
+ });
290
+ });
291
+ };
292
+ SubstrateProtocol.prototype.getTransactionsFromPublicKey = function (publicKey, limit, cursor) {
293
+ return __awaiter(this, void 0, void 0, function () {
294
+ var addresses;
295
+ return __generator(this, function (_a) {
296
+ switch (_a.label) {
297
+ case 0: return [4 /*yield*/, this.getAddressesFromPublicKey(publicKey).then(function (addresses) {
298
+ return addresses.map(function (address) { return address.address; });
299
+ })];
300
+ case 1:
301
+ addresses = _a.sent();
302
+ return [2 /*return*/, this.getTransactionsFromAddresses(addresses, limit, cursor)];
275
303
  }
276
- ], [SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION, {}], [
277
- SubstrateTransaction_1.SubstrateTransactionType.UNBOND,
278
- {
279
- value: stakingBalance.plus(unlockingBalance)
304
+ });
305
+ });
306
+ };
307
+ SubstrateProtocol.prototype.getTransactionsFromAddresses = function (addresses, limit, cursor) {
308
+ return __awaiter(this, void 0, void 0, function () {
309
+ var txs, transactions;
310
+ var _this = this;
311
+ return __generator(this, function (_a) {
312
+ switch (_a.label) {
313
+ case 0: return [4 /*yield*/, Promise.all(addresses.map(function (address) { return _this.options.blockExplorerClient.getTransactions(address, limit, _this.decimals, cursor); }))];
314
+ case 1:
315
+ txs = _a.sent();
316
+ transactions = txs
317
+ .reduce(function (flatten, toFlatten) { return flatten.concat(toFlatten); }, [])
318
+ .map(function (tx) { return (__assign({ protocolIdentifier: _this.identifier, network: _this.options.network, from: [], to: [], isInbound: false, amount: '', fee: '' }, tx)); });
319
+ return [2 /*return*/, { transactions: transactions, cursor: { page: cursor ? cursor.page + 1 : 1 } }];
280
320
  }
281
- ], [
282
- SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED,
283
- {
284
- slashingSpansNumber: 0
321
+ });
322
+ });
323
+ };
324
+ SubstrateProtocol.prototype.signWithPrivateKey = function (privateKey, rawTransaction) {
325
+ return __awaiter(this, void 0, void 0, function () {
326
+ var txs, signed;
327
+ var _this = this;
328
+ return __generator(this, function (_a) {
329
+ switch (_a.label) {
330
+ case 0:
331
+ txs = this.options.transactionController.decodeDetails(rawTransaction.encoded);
332
+ return [4 /*yield*/, Promise.all(txs.map(function (tx) { return _this.options.transactionController.signTransaction(Buffer.from(privateKey, 'hex'), tx.transaction, tx.payload); }))];
333
+ case 1:
334
+ signed = _a.sent();
335
+ txs.forEach(function (tx, index) { return (tx.transaction = signed[index]); });
336
+ return [2 /*return*/, this.options.transactionController.encodeDetails(txs)];
285
337
  }
286
- ]);
287
- }
288
- else if (isBonded) {
289
- requiredTransactions.push([
290
- SubstrateTransaction_1.SubstrateTransactionType.UNBOND,
291
- {
292
- value: stakingBalance
338
+ });
339
+ });
340
+ };
341
+ SubstrateProtocol.prototype.getTransactionDetails = function (transaction) {
342
+ return __awaiter(this, void 0, void 0, function () {
343
+ return __generator(this, function (_a) {
344
+ return [2 /*return*/, this.getTransactionDetailsFromEncoded(transaction.transaction.encoded)];
345
+ });
346
+ });
347
+ };
348
+ SubstrateProtocol.prototype.getTransactionDetailsFromSigned = function (transaction) {
349
+ return __awaiter(this, void 0, void 0, function () {
350
+ return __generator(this, function (_a) {
351
+ return [2 /*return*/, this.getTransactionDetailsFromEncoded(transaction.transaction)];
352
+ });
353
+ });
354
+ };
355
+ SubstrateProtocol.prototype.getBalanceOfAddresses = function (addresses) {
356
+ return __awaiter(this, void 0, void 0, function () {
357
+ var balances, balance;
358
+ var _this = this;
359
+ return __generator(this, function (_a) {
360
+ switch (_a.label) {
361
+ case 0: return [4 /*yield*/, Promise.all(addresses.map(function (address) { return _this.options.accountController.getBalance(address); }))];
362
+ case 1:
363
+ balances = _a.sent();
364
+ balance = balances.reduce(function (current, next) { return current.plus(next); });
365
+ return [2 /*return*/, balance.toString(10)];
293
366
  }
294
- ], [
295
- SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED,
296
- {
297
- slashingSpansNumber: 0
367
+ });
368
+ });
369
+ };
370
+ SubstrateProtocol.prototype.getAvailableBalanceOfAddresses = function (addresses) {
371
+ return __awaiter(this, void 0, void 0, function () {
372
+ var balances, balance;
373
+ var _this = this;
374
+ return __generator(this, function (_a) {
375
+ switch (_a.label) {
376
+ case 0: return [4 /*yield*/, Promise.all(addresses.map(function (address) { return _this.options.accountController.getTransferableBalance(address, false); }))];
377
+ case 1:
378
+ balances = _a.sent();
379
+ balance = balances.reduce(function (current, next) { return current.plus(next); });
380
+ return [2 /*return*/, balance.toString(10)];
298
381
  }
299
- ]);
300
- }
301
- if (isNominating) {
302
- requiredTransactions.push([SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION, {}]);
303
- }
304
- return requiredTransactions;
305
- }
306
- async getTransactionDetailsFromEncoded(encoded) {
307
- const txs = this.options.transactionController.decodeDetails(encoded);
308
- return txs
309
- .map((tx) => {
310
- return tx.transaction.toAirGapTransactions().map((part) => ({
311
- from: [],
312
- to: [],
313
- amount: '',
314
- fee: tx.fee.toString(),
315
- protocolIdentifier: this.identifier,
316
- network: this.options.network,
317
- isInbound: false,
318
- ...part
319
- }));
320
- })
321
- .reduce((flatten, toFlatten) => flatten.concat(toFlatten), []);
322
- }
323
- async signMessage(message, keypair) {
324
- return this.cryptoClient.signMessage(message, keypair);
325
- }
326
- async verifyMessage(message, signature, publicKey) {
327
- return this.cryptoClient.verifyMessage(message, signature, publicKey);
328
- }
329
- async encryptAsymmetric(message, publicKey) {
330
- return this.cryptoClient.encryptAsymmetric(message, publicKey);
331
- }
332
- async decryptAsymmetric(message, keypair) {
333
- return this.cryptoClient.decryptAsymmetric(message, keypair);
334
- }
335
- async encryptAES(message, privateKey) {
336
- // https://github.com/w3f/schnorrkel/blob/master/src/keys.rs
337
- // https://github.com/polkadot-js/wasm/blob/master/packages/wasm-crypto/src/sr25519.rs
338
- const key = Buffer.from(privateKey, 'hex').slice(0, 32); // Substrate key is 32 bytes key + 32 bytes nonce
339
- return this.cryptoClient.encryptAES(message, key.toString('hex'));
340
- }
341
- async decryptAES(message, privateKey) {
342
- // https://github.com/w3f/schnorrkel/blob/master/src/keys.rs
343
- // https://github.com/polkadot-js/wasm/blob/master/packages/wasm-crypto/src/sr25519.rs
344
- const key = Buffer.from(privateKey, 'hex').slice(0, 32); // Substrate key is 32 bytes key + 32 bytes nonce
345
- return this.cryptoClient.decryptAES(message, key.toString('hex'));
346
- }
347
- async getTransactionStatuses(transactionHashes) {
348
- return Promise.reject('Transaction status not implemented');
349
- }
350
- }
382
+ });
383
+ });
384
+ };
385
+ SubstrateProtocol.prototype.getBalanceOfPublicKey = function (publicKey) {
386
+ return __awaiter(this, void 0, void 0, function () {
387
+ var address;
388
+ return __generator(this, function (_a) {
389
+ switch (_a.label) {
390
+ case 0: return [4 /*yield*/, this.getAddressFromPublicKey(publicKey)];
391
+ case 1:
392
+ address = _a.sent();
393
+ return [2 /*return*/, this.getBalanceOfAddresses([address.address])];
394
+ }
395
+ });
396
+ });
397
+ };
398
+ SubstrateProtocol.prototype.getBalanceOfPublicKeyForSubProtocols = function (publicKey, subProtocols) {
399
+ return __awaiter(this, void 0, void 0, function () {
400
+ return __generator(this, function (_a) {
401
+ throw Promise.reject('get balance of sub protocols not supported');
402
+ });
403
+ });
404
+ };
405
+ SubstrateProtocol.prototype.estimateMaxTransactionValueFromPublicKey = function (publicKey, _recipients, fee, data) {
406
+ return __awaiter(this, void 0, void 0, function () {
407
+ var results, transferableBalance, futureTransactions, feeEstimate, maxAmount;
408
+ return __generator(this, function (_a) {
409
+ switch (_a.label) {
410
+ case 0: return [4 /*yield*/, Promise.all([
411
+ this.options.accountController.getTransferableBalance(publicKey, data === null || data === void 0 ? void 0 : data.excludeExistentialDeposit),
412
+ this.getFutureRequiredTransactions(publicKey, 'transfer')
413
+ ])];
414
+ case 1:
415
+ results = _a.sent();
416
+ transferableBalance = results[0];
417
+ futureTransactions = results[1];
418
+ return [4 /*yield*/, this.options.transactionController.estimateTransactionFees(publicKey, futureTransactions)];
419
+ case 2:
420
+ feeEstimate = _a.sent();
421
+ if (!feeEstimate) {
422
+ return [2 /*return*/, Promise.reject('Could not estimate max value.')];
423
+ }
424
+ maxAmount = transferableBalance.minus(feeEstimate).minus(new bignumber_1.default(fee || 0));
425
+ if (maxAmount.lt(0)) {
426
+ maxAmount = new bignumber_1.default(0);
427
+ }
428
+ return [2 /*return*/, maxAmount.toFixed()];
429
+ }
430
+ });
431
+ });
432
+ };
433
+ SubstrateProtocol.prototype.estimateFeeDefaultsFromPublicKey = function (publicKey, recipients, values, data) {
434
+ return __awaiter(this, void 0, void 0, function () {
435
+ var destination, value, transaction, fee;
436
+ return __generator(this, function (_a) {
437
+ switch (_a.label) {
438
+ case 0:
439
+ destination = recipients[0];
440
+ value = values[0];
441
+ return [4 /*yield*/, this.options.transactionController.createTransaction(SubstrateTransaction_1.SubstrateTransactionType.TRANSFER, publicKey, 0, {
442
+ to: destination && destination.length > 0 ? destination : publicKey,
443
+ value: new bignumber_1.default(value)
444
+ })];
445
+ case 1:
446
+ transaction = _a.sent();
447
+ return [4 /*yield*/, this.options.transactionController.calculateTransactionFee(transaction)];
448
+ case 2:
449
+ fee = _a.sent();
450
+ if (!fee) {
451
+ return [2 /*return*/, Promise.reject('Could not fetch all necessary data.')];
452
+ }
453
+ return [2 /*return*/, {
454
+ low: fee.shiftedBy(-this.feeDecimals).toFixed(),
455
+ medium: fee.shiftedBy(-this.feeDecimals).toFixed(),
456
+ high: fee.shiftedBy(-this.feeDecimals).toFixed()
457
+ }];
458
+ }
459
+ });
460
+ });
461
+ };
462
+ SubstrateProtocol.prototype.prepareTransactionFromPublicKey = function (publicKey, recipients, values, fee, data) {
463
+ return __awaiter(this, void 0, void 0, function () {
464
+ var recipientsWithValues, excludeExistentialDeposit, transferableBalance, totalValue, available, encoded;
465
+ return __generator(this, function (_a) {
466
+ switch (_a.label) {
467
+ case 0:
468
+ if (recipients.length !== values.length) {
469
+ return [2 /*return*/, Promise.reject("Recipients length doesn't match values length.")];
470
+ }
471
+ recipientsWithValues = recipients.map(function (recipient, index) { return [recipient, values[index]]; });
472
+ excludeExistentialDeposit = data === null || data === void 0 ? void 0 : data.excludeExistentialDeposit;
473
+ return [4 /*yield*/, this.options.accountController.getTransferableBalance(publicKey, excludeExistentialDeposit)];
474
+ case 1:
475
+ transferableBalance = _a.sent();
476
+ totalValue = values.map(function (value) { return new bignumber_1.default(value); }).reduce(function (total, next) { return total.plus(next); }, new bignumber_1.default(0));
477
+ available = new bignumber_1.default(transferableBalance).minus(totalValue);
478
+ return [4 /*yield*/, this.options.transactionController.prepareSubmittableTransactions(publicKey, available, recipientsWithValues.map(function (_a) {
479
+ var recipient = _a[0], value = _a[1];
480
+ return ({
481
+ type: SubstrateTransaction_1.SubstrateTransactionType.TRANSFER,
482
+ tip: 0,
483
+ args: {
484
+ to: recipient,
485
+ value: new bignumber_1.default(value)
486
+ }
487
+ });
488
+ }))];
489
+ case 2:
490
+ encoded = _a.sent();
491
+ return [2 /*return*/, { encoded: encoded }];
492
+ }
493
+ });
494
+ });
495
+ };
496
+ SubstrateProtocol.prototype.broadcastTransaction = function (encoded) {
497
+ var _a;
498
+ return __awaiter(this, void 0, void 0, function () {
499
+ var txs, txHashes;
500
+ var _this = this;
501
+ return __generator(this, function (_b) {
502
+ switch (_b.label) {
503
+ case 0:
504
+ txs = this.options.transactionController
505
+ .decodeDetails(encoded)
506
+ .map(function (tx) { return [tx.runtimeVersion, tx.transaction]; });
507
+ return [4 /*yield*/, Promise.all(txs.map(function (tx) {
508
+ return _this.options.nodeClient.submitTransaction(tx[1].encode({ network: _this.options.network.extras.network, runtimeVersion: tx[0] }));
509
+ })).catch(function (error) {
510
+ throw new errors_1.NetworkError(coinlib_error_1.Domain.SUBSTRATE, error);
511
+ })];
512
+ case 1:
513
+ txHashes = _b.sent();
514
+ return [2 /*return*/, ((_a = txs[0][1]) === null || _a === void 0 ? void 0 : _a.type) !== SubstrateTransaction_1.SubstrateTransactionType.SUBMIT_BATCH ? txHashes[0] : ''];
515
+ }
516
+ });
517
+ });
518
+ };
519
+ SubstrateProtocol.prototype.getFutureRequiredTransactions = function (accountId, intention) {
520
+ return __awaiter(this, void 0, void 0, function () {
521
+ var results, isBonded, isNominating, transferableBalance, stakingBalance, unlockingBalance, isUnbonding, requiredTransactions;
522
+ return __generator(this, function (_a) {
523
+ switch (_a.label) {
524
+ case 0: return [4 /*yield*/, Promise.all([
525
+ this.options.accountController.isBonded(accountId),
526
+ this.options.accountController.isDelegating(accountId),
527
+ this.options.accountController.getTransferableBalance(accountId),
528
+ this.options.accountController.getTransferableBalance(accountId, false, false),
529
+ this.options.accountController.getUnlockingBalance(accountId)
530
+ ])];
531
+ case 1:
532
+ results = _a.sent();
533
+ isBonded = results[0];
534
+ isNominating = results[1];
535
+ transferableBalance = results[2];
536
+ stakingBalance = results[3];
537
+ unlockingBalance = results[4];
538
+ isUnbonding = unlockingBalance.gt(0);
539
+ requiredTransactions = [];
540
+ if (intention === 'transfer') {
541
+ requiredTransactions.push([
542
+ SubstrateTransaction_1.SubstrateTransactionType.TRANSFER,
543
+ {
544
+ to: SubstrateAddress_1.SubstrateAddress.createPlaceholder(),
545
+ value: transferableBalance
546
+ }
547
+ ]);
548
+ }
549
+ if (!isBonded && !isUnbonding && intention === 'delegate') {
550
+ // not delegated & unbond
551
+ requiredTransactions.push([
552
+ SubstrateTransaction_1.SubstrateTransactionType.BOND,
553
+ {
554
+ controller: SubstrateAddress_1.SubstrateAddress.createPlaceholder(),
555
+ value: stakingBalance,
556
+ payee: 0
557
+ }
558
+ ], [
559
+ SubstrateTransaction_1.SubstrateTransactionType.NOMINATE,
560
+ {
561
+ targets: [SubstrateAddress_1.SubstrateAddress.createPlaceholder()]
562
+ }
563
+ ], [SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION, {}], [
564
+ SubstrateTransaction_1.SubstrateTransactionType.UNBOND,
565
+ {
566
+ value: stakingBalance
567
+ }
568
+ ], [
569
+ SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED,
570
+ {
571
+ slashingSpansNumber: 0
572
+ }
573
+ ]);
574
+ }
575
+ else if (isUnbonding && intention === 'delegate') {
576
+ requiredTransactions.push([
577
+ SubstrateTransaction_1.SubstrateTransactionType.REBOND,
578
+ {
579
+ value: unlockingBalance
580
+ }
581
+ ], [
582
+ SubstrateTransaction_1.SubstrateTransactionType.NOMINATE,
583
+ {
584
+ targets: [SubstrateAddress_1.SubstrateAddress.createPlaceholder()]
585
+ }
586
+ ], [SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION, {}], [
587
+ SubstrateTransaction_1.SubstrateTransactionType.UNBOND,
588
+ {
589
+ value: stakingBalance.plus(unlockingBalance)
590
+ }
591
+ ], [
592
+ SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED,
593
+ {
594
+ slashingSpansNumber: 0
595
+ }
596
+ ]);
597
+ }
598
+ else if (isBonded) {
599
+ requiredTransactions.push([
600
+ SubstrateTransaction_1.SubstrateTransactionType.UNBOND,
601
+ {
602
+ value: stakingBalance
603
+ }
604
+ ], [
605
+ SubstrateTransaction_1.SubstrateTransactionType.WITHDRAW_UNBONDED,
606
+ {
607
+ slashingSpansNumber: 0
608
+ }
609
+ ]);
610
+ }
611
+ if (isNominating) {
612
+ requiredTransactions.push([SubstrateTransaction_1.SubstrateTransactionType.CANCEL_NOMINATION, {}]);
613
+ }
614
+ return [2 /*return*/, requiredTransactions];
615
+ }
616
+ });
617
+ });
618
+ };
619
+ SubstrateProtocol.prototype.getTransactionDetailsFromEncoded = function (encoded) {
620
+ return __awaiter(this, void 0, void 0, function () {
621
+ var txs;
622
+ var _this = this;
623
+ return __generator(this, function (_a) {
624
+ txs = this.options.transactionController.decodeDetails(encoded);
625
+ return [2 /*return*/, txs
626
+ .map(function (tx) {
627
+ return tx.transaction.toAirGapTransactions().map(function (part) { return (__assign({ from: [], to: [], amount: '', fee: tx.fee.toString(), protocolIdentifier: _this.identifier, network: _this.options.network, isInbound: false }, part)); });
628
+ })
629
+ .reduce(function (flatten, toFlatten) { return flatten.concat(toFlatten); }, [])];
630
+ });
631
+ });
632
+ };
633
+ SubstrateProtocol.prototype.signMessage = function (message, keypair) {
634
+ return __awaiter(this, void 0, void 0, function () {
635
+ return __generator(this, function (_a) {
636
+ return [2 /*return*/, this.cryptoClient.signMessage(message, keypair)];
637
+ });
638
+ });
639
+ };
640
+ SubstrateProtocol.prototype.verifyMessage = function (message, signature, publicKey) {
641
+ return __awaiter(this, void 0, void 0, function () {
642
+ return __generator(this, function (_a) {
643
+ return [2 /*return*/, this.cryptoClient.verifyMessage(message, signature, publicKey)];
644
+ });
645
+ });
646
+ };
647
+ SubstrateProtocol.prototype.encryptAsymmetric = function (message, publicKey) {
648
+ return __awaiter(this, void 0, void 0, function () {
649
+ return __generator(this, function (_a) {
650
+ return [2 /*return*/, this.cryptoClient.encryptAsymmetric(message, publicKey)];
651
+ });
652
+ });
653
+ };
654
+ SubstrateProtocol.prototype.decryptAsymmetric = function (message, keypair) {
655
+ return __awaiter(this, void 0, void 0, function () {
656
+ return __generator(this, function (_a) {
657
+ return [2 /*return*/, this.cryptoClient.decryptAsymmetric(message, keypair)];
658
+ });
659
+ });
660
+ };
661
+ SubstrateProtocol.prototype.encryptAES = function (message, privateKey) {
662
+ return __awaiter(this, void 0, void 0, function () {
663
+ var key;
664
+ return __generator(this, function (_a) {
665
+ key = Buffer.from(privateKey, 'hex').slice(0, 32) // Substrate key is 32 bytes key + 32 bytes nonce
666
+ ;
667
+ return [2 /*return*/, this.cryptoClient.encryptAES(message, key.toString('hex'))];
668
+ });
669
+ });
670
+ };
671
+ SubstrateProtocol.prototype.decryptAES = function (message, privateKey) {
672
+ return __awaiter(this, void 0, void 0, function () {
673
+ var key;
674
+ return __generator(this, function (_a) {
675
+ key = Buffer.from(privateKey, 'hex').slice(0, 32) // Substrate key is 32 bytes key + 32 bytes nonce
676
+ ;
677
+ return [2 /*return*/, this.cryptoClient.decryptAES(message, key.toString('hex'))];
678
+ });
679
+ });
680
+ };
681
+ SubstrateProtocol.prototype.getTransactionStatuses = function (transactionHashes) {
682
+ return __awaiter(this, void 0, void 0, function () {
683
+ return __generator(this, function (_a) {
684
+ return [2 /*return*/, Promise.reject('Transaction status not implemented')];
685
+ });
686
+ });
687
+ };
688
+ return SubstrateProtocol;
689
+ }(NonExtendedProtocol_1.NonExtendedProtocol));
351
690
  exports.SubstrateProtocol = SubstrateProtocol;
352
691
  //# sourceMappingURL=SubstrateProtocol.js.map