@xyo-network/xl1-protocol-sdk 1.15.27 → 1.16.0

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 (327) hide show
  1. package/dist/neutral/ChainServiceCollectionV2.d.ts +1 -1
  2. package/dist/neutral/ChainServiceCollectionV2.d.ts.map +1 -1
  3. package/dist/neutral/block/primitives/blockFromBlockNumber.d.ts +1 -1
  4. package/dist/neutral/block/primitives/blockFromBlockNumber.d.ts.map +1 -1
  5. package/dist/neutral/block/primitives/index.d.ts +1 -0
  6. package/dist/neutral/block/primitives/index.d.ts.map +1 -1
  7. package/dist/neutral/block/primitives/toStepIdentityString.d.ts +3 -0
  8. package/dist/neutral/block/primitives/toStepIdentityString.d.ts.map +1 -0
  9. package/dist/neutral/block/primitives/transfers/transfersStepSummaryFromRange.d.ts.map +1 -1
  10. package/dist/neutral/block/primitives/transfers/transfersSummary.d.ts +3 -2
  11. package/dist/neutral/block/primitives/transfers/transfersSummary.d.ts.map +1 -1
  12. package/dist/neutral/config/Config.d.ts +8 -2
  13. package/dist/neutral/config/Config.d.ts.map +1 -1
  14. package/dist/neutral/config/Log.d.ts +1 -1
  15. package/dist/neutral/config/Mempool.d.ts +9 -0
  16. package/dist/neutral/config/Mempool.d.ts.map +1 -0
  17. package/dist/neutral/driver/cache/LruCacheMap.d.ts +13 -0
  18. package/dist/neutral/driver/cache/LruCacheMap.d.ts.map +1 -0
  19. package/dist/neutral/driver/cache/index.d.ts +2 -0
  20. package/dist/neutral/driver/cache/index.d.ts.map +1 -0
  21. package/dist/neutral/driver/index.d.ts +3 -0
  22. package/dist/neutral/driver/index.d.ts.map +1 -0
  23. package/dist/neutral/driver/memory/MemoryMap.d.ts +12 -0
  24. package/dist/neutral/driver/memory/MemoryMap.d.ts.map +1 -0
  25. package/dist/neutral/driver/memory/index.d.ts +2 -0
  26. package/dist/neutral/driver/memory/index.d.ts.map +1 -0
  27. package/dist/neutral/eip-712/Payloads/EIP712Data.d.ts +0 -16
  28. package/dist/neutral/eip-712/Payloads/EIP712Data.d.ts.map +1 -1
  29. package/dist/neutral/index.d.ts +4 -2
  30. package/dist/neutral/index.d.ts.map +1 -1
  31. package/dist/neutral/index.mjs +438 -184
  32. package/dist/neutral/index.mjs.map +1 -1
  33. package/dist/neutral/instances/index.d.ts +0 -2
  34. package/dist/neutral/instances/index.d.ts.map +1 -1
  35. package/dist/neutral/interfaces/index.d.ts +2 -0
  36. package/dist/neutral/interfaces/index.d.ts.map +1 -0
  37. package/dist/neutral/interfaces/viewers/AccountBalance.d.ts +19 -0
  38. package/dist/neutral/interfaces/viewers/AccountBalance.d.ts.map +1 -0
  39. package/dist/neutral/interfaces/viewers/Block.d.ts +12 -0
  40. package/dist/neutral/interfaces/viewers/Block.d.ts.map +1 -0
  41. package/dist/neutral/interfaces/viewers/Chain.d.ts +6 -0
  42. package/dist/neutral/interfaces/viewers/Chain.d.ts.map +1 -0
  43. package/dist/neutral/interfaces/viewers/ChainContract.d.ts +10 -0
  44. package/dist/neutral/interfaces/viewers/ChainContract.d.ts.map +1 -0
  45. package/dist/neutral/interfaces/viewers/Fork.d.ts +8 -0
  46. package/dist/neutral/interfaces/viewers/Fork.d.ts.map +1 -0
  47. package/dist/neutral/interfaces/viewers/NetworkStakeStepReward.d.ts +30 -0
  48. package/dist/neutral/interfaces/viewers/NetworkStakeStepReward.d.ts.map +1 -0
  49. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/NetworkStakeViewer.d.ts +10 -0
  50. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/NetworkStakeViewer.d.ts.map +1 -0
  51. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RecordKeyType.d.ts +2 -0
  52. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RecordKeyType.d.ts.map +1 -0
  53. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByIndexViewerMethodsTemplate.d.ts +6 -0
  54. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByIndexViewerMethodsTemplate.d.ts.map +1 -0
  55. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByPositionViewer.d.ts +7 -0
  56. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByPositionViewer.d.ts.map +1 -0
  57. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByStakerViewer.d.ts +8 -0
  58. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByStakerViewer.d.ts.map +1 -0
  59. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByStepViewer.d.ts +8 -0
  60. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsByStepViewer.d.ts.map +1 -0
  61. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsTotalViewer.d.ts +8 -0
  62. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsTotalViewer.d.ts.map +1 -0
  63. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsViewerMethodsTemplate.d.ts +9 -0
  64. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsViewerMethodsTemplate.d.ts.map +1 -0
  65. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsViewerOptions.d.ts +15 -0
  66. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/RewardsViewerOptions.d.ts.map +1 -0
  67. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/StepRewardsViewer.d.ts +13 -0
  68. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/StepRewardsViewer.d.ts.map +1 -0
  69. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/StepViewer.d.ts +26 -0
  70. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/StepViewer.d.ts.map +1 -0
  71. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/index.d.ts +12 -0
  72. package/dist/neutral/interfaces/viewers/NetworkStakeViewer/index.d.ts.map +1 -0
  73. package/dist/neutral/interfaces/viewers/Stake.d.ts +14 -0
  74. package/dist/neutral/interfaces/viewers/Stake.d.ts.map +1 -0
  75. package/dist/neutral/interfaces/viewers/StakeTotalsViewer.d.ts +12 -0
  76. package/dist/neutral/interfaces/viewers/StakeTotalsViewer.d.ts.map +1 -0
  77. package/dist/neutral/interfaces/viewers/StakeViewer.d.ts +11 -0
  78. package/dist/neutral/interfaces/viewers/StakeViewer.d.ts.map +1 -0
  79. package/dist/neutral/interfaces/viewers/StepStake.d.ts +8 -0
  80. package/dist/neutral/interfaces/viewers/StepStake.d.ts.map +1 -0
  81. package/dist/neutral/interfaces/viewers/TimeSync.d.ts +16 -0
  82. package/dist/neutral/interfaces/viewers/TimeSync.d.ts.map +1 -0
  83. package/dist/neutral/interfaces/viewers/Transaction.d.ts +9 -0
  84. package/dist/neutral/interfaces/viewers/Transaction.d.ts.map +1 -0
  85. package/dist/neutral/interfaces/viewers/TransferBalance.d.ts +23 -0
  86. package/dist/neutral/interfaces/viewers/TransferBalance.d.ts.map +1 -0
  87. package/dist/neutral/interfaces/viewers/index.d.ts +15 -0
  88. package/dist/neutral/interfaces/viewers/index.d.ts.map +1 -0
  89. package/dist/neutral/model/ChainContext/ChainContext.d.ts +14 -4
  90. package/dist/neutral/model/ChainContext/ChainContext.d.ts.map +1 -1
  91. package/dist/neutral/model/ChainContext/ChainStateContext.d.ts +1 -1
  92. package/dist/neutral/model/ChainContext/ChainStateContext.d.ts.map +1 -1
  93. package/dist/neutral/model/ChainStake/ChainStakeRead.d.ts +12 -12
  94. package/dist/neutral/model/ChainStake/ChainStakeRead.d.ts.map +1 -1
  95. package/dist/neutral/model/StakeEvents.d.ts +1 -0
  96. package/dist/neutral/model/StakeEvents.d.ts.map +1 -1
  97. package/dist/neutral/model/summary.d.ts +2 -2
  98. package/dist/neutral/model/summary.d.ts.map +1 -1
  99. package/dist/neutral/primitives/index.d.ts +1 -0
  100. package/dist/neutral/primitives/index.d.ts.map +1 -1
  101. package/dist/neutral/primitives/timeBudget.d.ts +3 -0
  102. package/dist/neutral/primitives/timeBudget.d.ts.map +1 -0
  103. package/dist/neutral/provider/TransactionHelper.d.ts +8 -0
  104. package/dist/neutral/provider/TransactionHelper.d.ts.map +1 -0
  105. package/dist/neutral/provider/TransactionSubmitter.d.ts +18 -0
  106. package/dist/neutral/provider/TransactionSubmitter.d.ts.map +1 -0
  107. package/dist/neutral/provider/XyoClient.d.ts +19 -0
  108. package/dist/neutral/provider/XyoClient.d.ts.map +1 -0
  109. package/dist/neutral/provider/XyoConnection.d.ts +35 -0
  110. package/dist/neutral/provider/XyoConnection.d.ts.map +1 -0
  111. package/dist/neutral/provider/XyoDataLake.d.ts +18 -0
  112. package/dist/neutral/provider/XyoDataLake.d.ts.map +1 -0
  113. package/dist/neutral/provider/XyoGateway.d.ts +19 -0
  114. package/dist/neutral/provider/XyoGateway.d.ts.map +1 -0
  115. package/dist/neutral/provider/XyoGatewayHelpers.d.ts +16 -0
  116. package/dist/neutral/provider/XyoGatewayHelpers.d.ts.map +1 -0
  117. package/dist/neutral/provider/XyoNetwork.d.ts +6 -0
  118. package/dist/neutral/provider/XyoNetwork.d.ts.map +1 -0
  119. package/dist/neutral/provider/XyoRunner.d.ts +7 -0
  120. package/dist/neutral/provider/XyoRunner.d.ts.map +1 -0
  121. package/dist/neutral/provider/XyoSigner.d.ts +14 -0
  122. package/dist/neutral/provider/XyoSigner.d.ts.map +1 -0
  123. package/dist/neutral/provider/XyoViewer.d.ts +7 -0
  124. package/dist/neutral/provider/XyoViewer.d.ts.map +1 -0
  125. package/dist/neutral/provider/XyoWallet.d.ts +15 -0
  126. package/dist/neutral/provider/XyoWallet.d.ts.map +1 -0
  127. package/dist/neutral/provider/index.d.ts +13 -0
  128. package/dist/neutral/provider/index.d.ts.map +1 -0
  129. package/dist/neutral/provider/permissions/InvokerPermission.d.ts +51 -0
  130. package/dist/neutral/provider/permissions/InvokerPermission.d.ts.map +1 -0
  131. package/dist/neutral/provider/permissions/XyoPermissions.d.ts +32 -0
  132. package/dist/neutral/provider/permissions/XyoPermissions.d.ts.map +1 -0
  133. package/dist/neutral/provider/permissions/index.d.ts +3 -0
  134. package/dist/neutral/provider/permissions/index.d.ts.map +1 -0
  135. package/dist/neutral/services/AccountBalanceService.d.ts +16 -0
  136. package/dist/neutral/services/AccountBalanceService.d.ts.map +1 -0
  137. package/dist/neutral/services/AccountTransfersService.d.ts +11 -0
  138. package/dist/neutral/services/AccountTransfersService.d.ts.map +1 -0
  139. package/dist/neutral/services/BlockProducerService.d.ts +6 -0
  140. package/dist/neutral/services/BlockProducerService.d.ts.map +1 -0
  141. package/dist/neutral/services/BlockRewardService.d.ts +6 -0
  142. package/dist/neutral/services/BlockRewardService.d.ts.map +1 -0
  143. package/dist/neutral/services/BlockRewardServiceV2.d.ts +6 -0
  144. package/dist/neutral/services/BlockRewardServiceV2.d.ts.map +1 -0
  145. package/dist/neutral/services/Chain/BaseChainService.d.ts +6 -0
  146. package/dist/neutral/services/Chain/BaseChainService.d.ts.map +1 -0
  147. package/dist/neutral/services/Chain/ChainHeadService.d.ts +6 -0
  148. package/dist/neutral/services/Chain/ChainHeadService.d.ts.map +1 -0
  149. package/dist/neutral/services/Chain/ChainService.d.ts +5 -0
  150. package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -0
  151. package/dist/neutral/services/Chain/index.d.ts +5 -0
  152. package/dist/neutral/services/Chain/index.d.ts.map +1 -0
  153. package/dist/neutral/services/Chain/interfaces/ChainContractViewer.d.ts +4 -0
  154. package/dist/neutral/services/Chain/interfaces/ChainContractViewer.d.ts.map +1 -0
  155. package/dist/neutral/services/Chain/interfaces/ChainStakeViewer.d.ts +5 -0
  156. package/dist/neutral/services/Chain/interfaces/ChainStakeViewer.d.ts.map +1 -0
  157. package/dist/neutral/services/Chain/interfaces/ChainStaker.d.ts +6 -0
  158. package/dist/neutral/services/Chain/interfaces/ChainStaker.d.ts.map +1 -0
  159. package/dist/neutral/services/Chain/interfaces/index.d.ts +4 -0
  160. package/dist/neutral/services/Chain/interfaces/index.d.ts.map +1 -0
  161. package/dist/neutral/services/ChainIterator/ChainIteratorService.d.ts +23 -0
  162. package/dist/neutral/services/ChainIterator/ChainIteratorService.d.ts.map +1 -0
  163. package/dist/neutral/services/ChainIterator/ChainIteratorServiceEventData.d.ts +11 -0
  164. package/dist/neutral/services/ChainIterator/ChainIteratorServiceEventData.d.ts.map +1 -0
  165. package/dist/neutral/services/ChainIterator/index.d.ts +3 -0
  166. package/dist/neutral/services/ChainIterator/index.d.ts.map +1 -0
  167. package/dist/neutral/services/Election.d.ts +12 -0
  168. package/dist/neutral/services/Election.d.ts.map +1 -0
  169. package/dist/neutral/services/NetworkStakeService.d.ts +5 -0
  170. package/dist/neutral/services/NetworkStakeService.d.ts.map +1 -0
  171. package/dist/neutral/services/Params.d.ts +9 -0
  172. package/dist/neutral/services/Params.d.ts.map +1 -0
  173. package/dist/neutral/services/PendingTransactionsService.d.ts +7 -0
  174. package/dist/neutral/services/PendingTransactionsService.d.ts.map +1 -0
  175. package/dist/neutral/services/Service.d.ts +5 -0
  176. package/dist/neutral/services/Service.d.ts.map +1 -0
  177. package/dist/neutral/services/StakeIntentService/ChainIndexingServiceStateSchema.d.ts +32 -0
  178. package/dist/neutral/services/StakeIntentService/ChainIndexingServiceStateSchema.d.ts.map +1 -0
  179. package/dist/neutral/services/StakeIntentService/StakeIntentService.d.ts +31 -0
  180. package/dist/neutral/services/StakeIntentService/StakeIntentService.d.ts.map +1 -0
  181. package/dist/neutral/services/StakeIntentService/index.d.ts +3 -0
  182. package/dist/neutral/services/StakeIntentService/index.d.ts.map +1 -0
  183. package/dist/neutral/services/StepStakeService.d.ts +5 -0
  184. package/dist/neutral/services/StepStakeService.d.ts.map +1 -0
  185. package/dist/neutral/services/TimeSyncService.d.ts +7 -0
  186. package/dist/neutral/services/TimeSyncService.d.ts.map +1 -0
  187. package/dist/neutral/services/index.d.ts +15 -0
  188. package/dist/neutral/services/index.d.ts.map +1 -0
  189. package/dist/neutral/transaction/buildUnsignedTransaction.d.ts +2 -2
  190. package/dist/neutral/transaction/buildUnsignedTransaction.d.ts.map +1 -1
  191. package/dist/neutral/transaction/confirmSubmittedTransaction.d.ts +2 -1
  192. package/dist/neutral/transaction/confirmSubmittedTransaction.d.ts.map +1 -1
  193. package/dist/neutral/transaction/primitives/transactionElevatedPayloads.d.ts +2 -2
  194. package/dist/neutral/transaction/primitives/transactionElevatedPayloads.d.ts.map +1 -1
  195. package/dist/neutral/validation/block/BlockValidationFunction.d.ts +5 -0
  196. package/dist/neutral/validation/block/BlockValidationFunction.d.ts.map +1 -0
  197. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +18 -0
  198. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -0
  199. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts +11 -0
  200. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -0
  201. package/dist/neutral/validation/block/error.d.ts +15 -0
  202. package/dist/neutral/validation/block/error.d.ts.map +1 -0
  203. package/dist/neutral/validation/block/error.spec.d.ts +2 -0
  204. package/dist/neutral/validation/block/error.spec.d.ts.map +1 -0
  205. package/dist/neutral/validation/block/index.d.ts +5 -0
  206. package/dist/neutral/validation/block/index.d.ts.map +1 -0
  207. package/dist/neutral/validation/index.d.ts +1 -0
  208. package/dist/neutral/validation/index.d.ts.map +1 -1
  209. package/package.json +31 -27
  210. package/src/ChainServiceCollectionV2.ts +4 -3
  211. package/src/block/primitives/blockFromBlockNumber.ts +30 -27
  212. package/src/block/primitives/frames/spec/calculateFramesFromRange.spec.ts +1 -1
  213. package/src/block/primitives/index.ts +1 -0
  214. package/src/block/primitives/toStepIdentityString.ts +5 -0
  215. package/src/block/primitives/transfers/transfersStepSummaryFromRange.ts +9 -6
  216. package/src/block/primitives/transfers/transfersSummary.ts +11 -7
  217. package/src/config/Config.ts +2 -0
  218. package/src/config/Mempool.ts +42 -0
  219. package/src/driver/cache/LruCacheMap.ts +42 -0
  220. package/src/driver/cache/index.ts +1 -0
  221. package/src/driver/index.ts +2 -0
  222. package/src/driver/memory/MemoryMap.ts +42 -0
  223. package/src/driver/memory/index.ts +1 -0
  224. package/src/eip-712/Payloads/EIP712Data.ts +0 -19
  225. package/src/index.ts +4 -2
  226. package/src/instances/index.ts +0 -2
  227. package/src/interfaces/index.ts +1 -0
  228. package/src/interfaces/viewers/AccountBalance.ts +25 -0
  229. package/src/interfaces/viewers/Block.ts +13 -0
  230. package/src/interfaces/viewers/Chain.ts +6 -0
  231. package/src/interfaces/viewers/ChainContract.ts +10 -0
  232. package/src/interfaces/viewers/Fork.ts +9 -0
  233. package/src/interfaces/viewers/NetworkStakeStepReward.ts +69 -0
  234. package/src/interfaces/viewers/NetworkStakeViewer/NetworkStakeViewer.ts +12 -0
  235. package/src/interfaces/viewers/NetworkStakeViewer/RecordKeyType.ts +2 -0
  236. package/src/interfaces/viewers/NetworkStakeViewer/RewardsByIndexViewerMethodsTemplate.ts +7 -0
  237. package/src/interfaces/viewers/NetworkStakeViewer/RewardsByPositionViewer.ts +7 -0
  238. package/src/interfaces/viewers/NetworkStakeViewer/RewardsByStakerViewer.ts +9 -0
  239. package/src/interfaces/viewers/NetworkStakeViewer/RewardsByStepViewer.ts +9 -0
  240. package/src/interfaces/viewers/NetworkStakeViewer/RewardsTotalViewer.ts +9 -0
  241. package/src/interfaces/viewers/NetworkStakeViewer/RewardsViewerMethodsTemplate.ts +9 -0
  242. package/src/interfaces/viewers/NetworkStakeViewer/RewardsViewerOptions.ts +18 -0
  243. package/src/interfaces/viewers/NetworkStakeViewer/StepRewardsViewer.ts +13 -0
  244. package/src/interfaces/viewers/NetworkStakeViewer/StepViewer.ts +42 -0
  245. package/src/interfaces/viewers/NetworkStakeViewer/index.ts +13 -0
  246. package/src/interfaces/viewers/Stake.ts +22 -0
  247. package/src/interfaces/viewers/StakeTotalsViewer.ts +12 -0
  248. package/src/interfaces/viewers/StakeViewer.ts +13 -0
  249. package/src/interfaces/viewers/StepStake.ts +19 -0
  250. package/src/interfaces/viewers/TimeSync.ts +19 -0
  251. package/src/interfaces/viewers/Transaction.ts +9 -0
  252. package/src/interfaces/viewers/TransferBalance.ts +29 -0
  253. package/src/interfaces/viewers/index.ts +14 -0
  254. package/src/model/ChainContext/ChainContext.ts +49 -4
  255. package/src/model/ChainContext/ChainStateContext.ts +1 -1
  256. package/src/model/ChainStake/ChainStakeRead.ts +13 -12
  257. package/src/model/StakeEvents.ts +1 -0
  258. package/src/model/summary.ts +3 -2
  259. package/src/primitives/index.ts +1 -0
  260. package/src/primitives/summary/balances/balancesStepSummaryFromRange.ts +2 -2
  261. package/src/primitives/summary/balances/balancesSummary.ts +3 -3
  262. package/src/primitives/summary/transfers/transfersStepSummaryFromRange.ts +2 -2
  263. package/src/primitives/summary/transfers/transfersSummary.ts +3 -3
  264. package/src/primitives/timeBudget.ts +11 -0
  265. package/src/provider/TransactionHelper.ts +14 -0
  266. package/src/provider/TransactionSubmitter.ts +26 -0
  267. package/src/provider/XyoClient.ts +21 -0
  268. package/src/provider/XyoConnection.ts +55 -0
  269. package/src/provider/XyoDataLake.ts +43 -0
  270. package/src/provider/XyoGateway.ts +21 -0
  271. package/src/provider/XyoGatewayHelpers.ts +30 -0
  272. package/src/provider/XyoNetwork.ts +6 -0
  273. package/src/provider/XyoRunner.ts +7 -0
  274. package/src/provider/XyoSigner.ts +29 -0
  275. package/src/provider/XyoViewer.ts +17 -0
  276. package/src/provider/XyoWallet.ts +15 -0
  277. package/src/provider/index.ts +12 -0
  278. package/src/provider/permissions/InvokerPermission.ts +56 -0
  279. package/src/provider/permissions/XyoPermissions.ts +40 -0
  280. package/src/provider/permissions/index.ts +2 -0
  281. package/src/services/AccountBalanceService.ts +22 -0
  282. package/src/services/AccountTransfersService.ts +12 -0
  283. package/src/services/BlockProducerService.ts +10 -0
  284. package/src/services/BlockRewardService.ts +8 -0
  285. package/src/services/BlockRewardServiceV2.ts +8 -0
  286. package/src/services/Chain/BaseChainService.ts +7 -0
  287. package/src/services/Chain/ChainHeadService.ts +7 -0
  288. package/src/services/Chain/ChainService.ts +6 -0
  289. package/src/services/Chain/index.ts +4 -0
  290. package/src/services/Chain/interfaces/ChainContractViewer.ts +5 -0
  291. package/src/services/Chain/interfaces/ChainStakeViewer.ts +6 -0
  292. package/src/services/Chain/interfaces/ChainStaker.ts +5 -0
  293. package/src/services/Chain/interfaces/index.ts +3 -0
  294. package/src/services/ChainIterator/ChainIteratorService.ts +45 -0
  295. package/src/services/ChainIterator/ChainIteratorServiceEventData.ts +13 -0
  296. package/src/services/ChainIterator/index.ts +2 -0
  297. package/src/services/Election.ts +15 -0
  298. package/src/services/NetworkStakeService.ts +4 -0
  299. package/src/services/Params.ts +11 -0
  300. package/src/services/PendingTransactionsService.ts +8 -0
  301. package/src/services/Service.ts +5 -0
  302. package/src/services/StakeIntentService/ChainIndexingServiceStateSchema.ts +43 -0
  303. package/src/services/StakeIntentService/StakeIntentService.ts +36 -0
  304. package/src/services/StakeIntentService/index.ts +2 -0
  305. package/src/services/StepStakeService.ts +4 -0
  306. package/src/services/TimeSyncService.ts +6 -0
  307. package/src/services/index.ts +14 -0
  308. package/src/transaction/buildUnsignedTransaction.ts +4 -8
  309. package/src/transaction/confirmSubmittedTransaction.ts +3 -3
  310. package/src/transaction/primitives/transactionElevatedPayloads.ts +2 -2
  311. package/src/transaction/script.ts +3 -3
  312. package/src/validation/block/BlockValidationFunction.ts +9 -0
  313. package/src/validation/block/HydratedBlockStateValidationFunction.ts +24 -0
  314. package/src/validation/block/HydratedBlockValidationFunction.ts +15 -0
  315. package/src/validation/block/error.spec.ts +20 -0
  316. package/src/validation/block/error.ts +46 -0
  317. package/src/validation/block/index.ts +4 -0
  318. package/src/validation/index.ts +1 -0
  319. package/dist/neutral/ChainServiceCollection.d.ts +0 -61
  320. package/dist/neutral/ChainServiceCollection.d.ts.map +0 -1
  321. package/dist/neutral/instances/ShiftedBigIntConfig.d.ts +0 -9
  322. package/dist/neutral/instances/ShiftedBigIntConfig.d.ts.map +0 -1
  323. package/dist/neutral/instances/XL1Amount.d.ts +0 -15
  324. package/dist/neutral/instances/XL1Amount.d.ts.map +0 -1
  325. package/src/ChainServiceCollection.ts +0 -66
  326. package/src/instances/ShiftedBigIntConfig.ts +0 -8
  327. package/src/instances/XL1Amount.ts +0 -29
@@ -10,7 +10,7 @@ import { calculateFramesFromRange } from '../calculateFramesFromRange.ts'
10
10
 
11
11
  describe('calculateFramesFromRange', () => {
12
12
  it('handles range aligned with step size', () => {
13
- const step = 1 // 105
13
+ const step = 1 // 31
14
14
  const range: XL1BlockRange = [XL1_BLOCK_NUMBER_ZERO, asXL1BlockNumber(stepSize(step) - 1)]
15
15
  const [fitted, remaining] = calculateFramesFromRange(range, step)
16
16
 
@@ -3,4 +3,5 @@ export * from './frames/index.ts'
3
3
  export * from './hashFromBlockNumber.ts'
4
4
  export * from './model.ts'
5
5
  export * from './payloads/index.ts'
6
+ export * from './toStepIdentityString.ts'
6
7
  export * from './transfers/index.ts'
@@ -0,0 +1,5 @@
1
+ import type { StepIdentity, StepIdentityString } from '@xyo-network/xl1-protocol'
2
+
3
+ export function toStepIdentityString({ block, step }: StepIdentity): StepIdentityString {
4
+ return `${block}|${step}` as StepIdentityString
5
+ }
@@ -16,15 +16,16 @@ import {
16
16
  import { hydrateBlock } from '../../hydrate/index.ts'
17
17
  import { deepCalculateFramesFromRange } from '../frames/index.ts'
18
18
  import { hashFromBlockNumber } from '../hashFromBlockNumber.ts'
19
+ import { transfersSummaryKey } from './transfersSummary.ts'
19
20
 
20
21
  export async function transfersStepSummaryFromRange(
21
22
  context: TransfersStepSummaryContext,
22
23
  range: XL1BlockRange,
23
24
  ): Promise<WithStorageMeta<TransfersStepSummary>> {
24
- // console.log(`transfersStepSummaryFromRange: head=${head}, range=${range[0]}-${range[1]}`)
25
+ // console.log(`transfersStepSummaryFromRange: head=${context.head}, range=${range[0]}-${range[1]}`)
25
26
  const frameHeadHash = await hashFromBlockNumber(context, range[1])
26
27
  const frameSize = range[1] - range[0] + 1
27
- const head = await context.head()
28
+ const [headHash] = await context.head()
28
29
 
29
30
  let result: TransfersStepSummary | undefined = undefined
30
31
 
@@ -39,14 +40,16 @@ export async function transfersStepSummaryFromRange(
39
40
  }
40
41
  }
41
42
  result = {
42
- schema: TransfersStepSummarySchema, hash: head, stepSize: -1, transfers,
43
+ schema: TransfersStepSummarySchema, hash: headHash, stepSize: -1, transfers,
43
44
  }
44
45
  } else {
45
46
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
47
  const step = (StepSizes as any).indexOf(frameSize)
47
48
  assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)
48
49
 
49
- const summaryResult = await context.summaryMap.get(`${frameHeadHash}|${frameSize}`)
50
+ const key = transfersSummaryKey(frameHeadHash, frameSize)
51
+
52
+ const summaryResult = await context.summaryMap.get(key)
50
53
  if (isAnyPayload(summaryResult)) {
51
54
  result = summaryResult as WithStorageMeta<TransfersStepSummary>
52
55
  } else {
@@ -83,13 +86,13 @@ export async function transfersStepSummaryFromRange(
83
86
  schema: TransfersStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, transfers,
84
87
  }
85
88
 
86
- await context.summaryMap.set(`${frameHeadHash}|${frameSize}`, result)
89
+ await context.summaryMap.set(key, result)
87
90
  } finally {
88
91
  context.stepSemaphores[step].release()
89
92
  }
90
93
  }
91
94
  }
92
- // console.log(`transfersStepSummaryFromRange-result: head=${head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)
95
+ // console.log(`transfersStepSummaryFromRange-result: head=${context.head}, range=${range[0]}-${range[1]}: ${toSafeJsonString(result, 10)}`)
93
96
  const finalResult = await PayloadBuilder.addStorageMeta(result)
94
97
  return finalResult
95
98
  }
@@ -1,4 +1,4 @@
1
- import type { Address } from '@xylabs/hex'
1
+ import type { Address, Hash } from '@xylabs/hex'
2
2
  import { asAddress } from '@xylabs/hex'
3
3
  import { spanRootAsync } from '@xylabs/telemetry'
4
4
  import { isDefined } from '@xylabs/typeof'
@@ -11,15 +11,15 @@ import { transfersStepSummaryFromRange } from './transfersStepSummaryFromRange.t
11
11
 
12
12
  // the summary of amount of rewards claimed from the step reward pool by addresses
13
13
  export async function transfersSummary(
14
- context: TransfersStepSummaryContext,
14
+ transferContext: TransfersStepSummaryContext,
15
15
  ): Promise<Partial<Record<Address, Partial<Record<Address, bigint>>>>> {
16
16
  return await spanRootAsync('transferSummary', async () => {
17
- const head = await context.head()
18
- const headResult = await context.store.chainMap.get(head)
19
- const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${context.head}`, { required: true })
20
- const rangeStart = asXL1BlockNumber(isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0)
17
+ const [headHash] = await transferContext.head()
18
+ const headResult = await transferContext.store.chainMap.get(headHash)
19
+ const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${transferContext.head}`, { required: true })
20
+ const rangeStart = asXL1BlockNumber(isDefined(transferContext.windowSize) ? Math.max(headBoundWitness.block - transferContext.windowSize + 1, 0) : 0)
21
21
  const ranges = deepCalculateFramesFromRange([rangeStart, asXL1BlockNumber(headBoundWitness.block)])
22
- const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(context, range)))
22
+ const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(transferContext, range)))
23
23
  const transfers: Partial<Record<Address, Partial<Record<Address, bigint>>>> = {}
24
24
  for (let summary of summaries) {
25
25
  for (const [from, toMap] of Object.entries(summary.transfers)) {
@@ -34,3 +34,7 @@ export async function transfersSummary(
34
34
  return transfers
35
35
  })
36
36
  }
37
+
38
+ export function transfersSummaryKey(frameHeadHash: Hash, frameSize: number) {
39
+ return `${frameHeadHash}|${frameSize}`
40
+ }
@@ -6,6 +6,7 @@ import { BridgeConfigZod } from './Bridge.ts'
6
6
  import { ChainConfigZod } from './Chain.ts'
7
7
  import { EvmConfigZod } from './Evm.ts'
8
8
  import { LogConfigZod } from './Log.ts'
9
+ import { MempoolConfigZod } from './Mempool.ts'
9
10
  import { ProducerConfigZod } from './Producer.ts'
10
11
  import { RewardRedemptionApiConfigZod } from './RewardRedemptionApi.ts'
11
12
  import { StorageConfigZod } from './storage/index.ts'
@@ -21,6 +22,7 @@ export const ConfigZod = z.object({
21
22
  bridge: BridgeConfigZod.default(BridgeConfigZod.parse({})).describe('Configuration for the Bridge node'),
22
23
  chain: ChainConfigZod.default(ChainConfigZod.parse({})).describe('Configuration for the chain'),
23
24
  evm: EvmConfigZod.default(EvmConfigZod.parse({})).describe('Configuration for EVM-backed services'),
25
+ mempool: MempoolConfigZod.default(MempoolConfigZod.parse({})).describe('Configuration for the mempool'),
24
26
  producer: ProducerConfigZod.default(ProducerConfigZod.parse({})).describe('Configuration for the producer'),
25
27
  rewardRedemptionApi: RewardRedemptionApiConfigZod.default(RewardRedemptionApiConfigZod.parse({})).describe('Configuration for the rewards redemption API'),
26
28
  storage: StorageConfigZod.default(StorageConfigZod.parse({})).describe('Configuration for the storage'),
@@ -0,0 +1,42 @@
1
+ import { globalRegistry } from 'zod'
2
+ import * as z from 'zod'
3
+
4
+ import { MnemonicStringZod } from '../validation/index.ts'
5
+
6
+ export const MempoolConfigZod = z.object({
7
+ enabled: z.string().default('false').transform((val, ctx) => {
8
+ const normalized = val.toLowerCase().trim()
9
+ if (['true', '1', 'yes', 'on'].includes(normalized)) return true
10
+ if (['false', '0', 'no', 'off'].includes(normalized)) return false
11
+ ctx.addIssue({
12
+ code: 'invalid_type',
13
+ expected: 'boolean',
14
+ message: `Invalid boolean value: "${val}". Use true/false, 1/0, yes/no.`,
15
+ })
16
+ return z.NEVER
17
+ }).register(globalRegistry, {
18
+ default: 'false',
19
+ description: 'Enable the Mempool',
20
+ title: 'mempool.enabled',
21
+ type: 'boolean',
22
+ }),
23
+ host: z.string().default('localhost').register(globalRegistry, {
24
+ default: 'localhost',
25
+ description: 'Host for the Mempool',
26
+ title: 'mempool.host',
27
+ type: 'string',
28
+ }),
29
+ mnemonic: MnemonicStringZod.optional().register(globalRegistry, {
30
+ description: 'Mnemonic for the Mempool wallet',
31
+ title: 'mempool.mnemonic',
32
+ type: 'string',
33
+ }),
34
+ port: z.coerce.number().default(8083).register(globalRegistry, {
35
+ default: 8083,
36
+ description: 'Port for the Mempool',
37
+ title: 'mempool.port',
38
+ type: 'number',
39
+ }),
40
+ })
41
+
42
+ export type MempoolConfig = z.infer<typeof MempoolConfigZod>
@@ -0,0 +1,42 @@
1
+ import { LRUCache } from 'lru-cache'
2
+
3
+ import type { SynchronousMap } from '../../map/index.ts'
4
+
5
+ export class LruCacheMap<K extends {}, V extends {} | string | number | bigint, FC = () => void> implements SynchronousMap<K, V> {
6
+ private lruCache: LRUCache<K, V, FC>
7
+
8
+ constructor(options?: LRUCache.Options<K, V, FC>) {
9
+ this.lruCache = new LRUCache<K, V, FC>(options ?? { max: 5000 })
10
+ }
11
+
12
+ clear(): void {
13
+ this.lruCache.clear()
14
+ }
15
+
16
+ delete(id: K): boolean {
17
+ return this.lruCache.delete(id)
18
+ }
19
+
20
+ get(id: K): V | undefined {
21
+ return this.lruCache.get(id)
22
+ }
23
+
24
+ getMany(id: K[]): V[] {
25
+ const results: V[] = []
26
+ for (const key of id) {
27
+ const value = this.lruCache.get(key)
28
+ if (value !== undefined) {
29
+ results.push(value)
30
+ }
31
+ }
32
+ return results
33
+ }
34
+
35
+ has(id: K): boolean {
36
+ return this.lruCache.has(id)
37
+ }
38
+
39
+ set(id: K, data: V) {
40
+ this.lruCache.set(id, data)
41
+ }
42
+ }
@@ -0,0 +1 @@
1
+ export * from './LruCacheMap.ts'
@@ -0,0 +1,2 @@
1
+ export * from './cache/index.ts'
2
+ export * from './memory/index.ts'
@@ -0,0 +1,42 @@
1
+ import { isDefined } from '@xylabs/typeof'
2
+
3
+ import type { SynchronousMap } from '../../map/index.ts'
4
+
5
+ export class MemoryMap<K extends {}, V = {}> implements SynchronousMap<K, V> {
6
+ private map: Map<K, V>
7
+
8
+ constructor() {
9
+ this.map = new Map<K, V>()
10
+ }
11
+
12
+ clear(): void {
13
+ this.map.clear()
14
+ }
15
+
16
+ delete(id: K): boolean {
17
+ return this.map.delete(id)
18
+ }
19
+
20
+ get(id: K): V | undefined {
21
+ return this.map.get(id)
22
+ }
23
+
24
+ getMany(ids: K[]): V[] {
25
+ const results: V[] = []
26
+ for (const id of ids) {
27
+ const data = this.map.get(id)
28
+ if (isDefined(data)) {
29
+ results.push(data)
30
+ }
31
+ }
32
+ return results
33
+ }
34
+
35
+ has(id: K): boolean {
36
+ return this.map.has(id)
37
+ }
38
+
39
+ set(id: K, data: V) {
40
+ this.map.set(id, data)
41
+ }
42
+ }
@@ -0,0 +1 @@
1
+ export * from './MemoryMap.ts'
@@ -13,30 +13,11 @@ export const EIP712DataPayloadFieldsZod = z.object({
13
13
  })
14
14
  export type EIP712DataPayloadFields = z.infer<typeof EIP712DataPayloadFieldsZod>
15
15
 
16
- /**
17
- * @deprecated Use EIP712DataPayloadFields instead
18
- */
19
- export type EIP712PayloadFields = EIP712DataPayloadFields
20
-
21
16
  export const EIP712DataPayloadSchema = 'network.xyo.chains.ethereum.eip712.data' as const
22
17
  export type EIP712DataPayloadSchema = typeof EIP712DataPayloadSchema
23
18
 
24
- /**
25
- * @deprecated Use EIP712DataPayloadSchema instead
26
- */
27
- export const EIP712PayloadSchema = EIP712DataPayloadSchema
28
- /**
29
- * @deprecated Use EIP712DataPayloadSchema instead
30
- */
31
- export type EIP712PayloadSchema = typeof EIP712DataPayloadSchema
32
-
33
19
  export type EIP712DataPayload = Payload<EIP712DataPayloadFields, EIP712DataPayloadSchema>
34
20
 
35
- /**
36
- * @deprecated Use EIP712DataPayload instead
37
- */
38
- export type EIP712Payload = EIP712DataPayload
39
-
40
21
  export const isEIP712DataPayload = isPayloadOfZodType<EIP712DataPayload>(
41
22
  EIP712DataPayloadFieldsZod,
42
23
  EIP712DataPayloadSchema,
package/src/index.ts CHANGED
@@ -1,16 +1,18 @@
1
1
  export * from './block/index.ts'
2
- export * from './ChainServiceCollection.ts'
3
2
  export * from './ChainServiceCollectionV2.ts'
4
3
  export * from './config/index.ts'
5
4
  export * from './constants.ts'
5
+ export * from './driver/index.ts'
6
6
  export * from './eip-712/index.ts'
7
7
  export * from './instances/index.ts'
8
+ export * from './interfaces/index.ts'
8
9
  export * from './map/index.ts'
9
10
  export * from './model/index.ts'
10
11
  export * from './multipliers.ts'
11
12
  export * from './payloads/index.ts'
12
13
  export * from './primitives/index.ts'
13
- export * from './primitives/index.ts'
14
+ export * from './provider/index.ts'
15
+ export * from './services/index.ts'
14
16
  export * from './SignedBigInt.ts'
15
17
  export * from './time/index.ts'
16
18
  export * from './transaction/index.ts'
@@ -6,7 +6,5 @@ export * from './Fees.ts'
6
6
  export * from './modifiers/index.ts'
7
7
  export * from './Object.ts'
8
8
  export * from './Payload.ts'
9
- export * from './ShiftedBigIntConfig.ts'
10
9
  export * from './Signature.ts'
11
10
  export * from './transaction/index.ts'
12
- export * from './XL1Amount.ts'
@@ -0,0 +1 @@
1
+ export * from './viewers/index.ts'
@@ -0,0 +1,25 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { Signed } from '@xyo-network/boundwitness-model'
4
+ import type { WithStorageMeta } from '@xyo-network/payload-model'
5
+ import type {
6
+ AttoXL1,
7
+ BlockBoundWitness, TransactionBoundWitness, Transfer,
8
+ XL1BlockRange,
9
+ } from '@xyo-network/xl1-protocol'
10
+
11
+ export type AccountBalanceHistoryItem = [
12
+ WithStorageMeta<Signed<BlockBoundWitness>> /* block */,
13
+ WithStorageMeta<Signed<TransactionBoundWitness>> | null,
14
+ WithStorageMeta<Transfer>, /* the actual transfer payload */
15
+ ]
16
+
17
+ export interface AccountBalancesViewInterface {
18
+ accountBalances(address: Address[]): Promisable<Partial<Record<Address, AttoXL1>>>
19
+ accountBalancesHistories(address: Address[]): Promisable<Partial<Record<Address, AccountBalanceHistoryItem[]>>>
20
+ }
21
+
22
+ export interface AccountBalanceViewInterface {
23
+ accountBalance(address: Address): Promisable<AttoXL1>
24
+ accountBalanceHistory(address: Address, range?: XL1BlockRange): Promisable<AccountBalanceHistoryItem[]>
25
+ }
@@ -0,0 +1,13 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol'
4
+
5
+ export interface BlockViewInterface {
6
+ blockByHash(hash: Hash): Promisable<HydratedBlock | null>
7
+ blockByNumber(blockNumber: number): Promisable<HydratedBlock | null>
8
+ blocksByHash(hash: Hash, limit?: number): Promisable<HydratedBlock[]>
9
+
10
+ currentBlock(): Promisable<HydratedBlock>
11
+ currentBlockHash(): Promisable<Hash>
12
+ currentBlockNumber(): Promisable<number>
13
+ }
@@ -0,0 +1,6 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+ import type { ChainId } from '@xyo-network/xl1-protocol'
3
+
4
+ export interface ChainViewInterface {
5
+ chainId(): Promisable<ChainId>
6
+ }
@@ -0,0 +1,10 @@
1
+ import type { Address } from '@xylabs/hex'
2
+
3
+ export interface ChainContractViewInterface {
4
+ forkedAtBlockNumber(): Promise<bigint>
5
+ forkedAtHash(): Promise<bigint>
6
+ forkedChainId(): Promise<Address>
7
+ minWithdrawalBlocks(): Promise<bigint>
8
+ rewardsContract(): Promise<string>
9
+ stakingTokenAddress(): Promise<string>
10
+ }
@@ -0,0 +1,9 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+ import type { ChainId } from '@xyo-network/xl1-protocol'
3
+
4
+ export type ForkHistory = Record<number, ChainId>
5
+
6
+ export interface ForkViewer {
7
+ chainIdAtBlock(blockNumber: number): Promisable<ChainId | undefined>
8
+ forkHistory(): Promisable<ForkHistory>
9
+ }
@@ -0,0 +1,69 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { StepIdentity, StepIdentityString } from '@xyo-network/xl1-protocol'
4
+
5
+ export interface NetworkStakeStepAddressRewardViewInterface {
6
+ // the step rewards for a specific network stakers for all of history
7
+ networkStakeStepRewardAddressHistory(address: Address): Promisable<Record<Address, bigint>>
8
+
9
+ // the step rewards for a specific network stakers for a given step and block
10
+ networkStakeStepRewardAddressReward(context: StepIdentity, address: Address): Promisable<Record<Address, bigint>>
11
+
12
+ // the shares for a specific network staker for a given step and block
13
+ networkStakeStepRewardAddressShare(context: StepIdentity, address: Address): Promisable<[/* address shares */bigint, /* total shares */bigint]>
14
+
15
+ // estimate the current reward weight for a given address at a given step
16
+ networkStakeStepRewardWeightForAddress(context: StepIdentity, address: Address): Promisable<bigint>
17
+ }
18
+
19
+ export interface NetworkStakeStepPoolRewardViewInterface {
20
+
21
+ // all the step rewards for all the network stakers for a given step and block
22
+ networkStakeStepRewardPoolRewards(context: StepIdentity): Promisable<Record<Address, bigint>>
23
+
24
+ // all the shares for all the network stakers for a given step and block
25
+ networkStakeStepRewardPoolShares(context: StepIdentity): Promisable<Record<Address, bigint>>
26
+ }
27
+
28
+ export interface NetworkStakeStepRewardPositionViewInterface {
29
+ // estimate the current weight for a given position at a given step
30
+ networkStakeStepRewardPositionWeight(context: StepIdentity, position: number): Promisable<bigint>
31
+
32
+ // estimate the potential loss for removing a given position at a given step
33
+ networkStakeStepRewardPotentialPositionLoss(context: StepIdentity, position: number): Promisable<bigint>
34
+ }
35
+
36
+ export interface NetworkStakeStepRewardViewInterface extends
37
+ NetworkStakeStepPoolRewardViewInterface,
38
+ NetworkStakeStepAddressRewardViewInterface,
39
+ NetworkStakeStepRewardPositionViewInterface
40
+ {
41
+ networkStakeStepRewardClaimedByAddress(address: Address): Promisable<bigint>
42
+
43
+ // the share & total rewards for a given position
44
+ networkStakeStepRewardForPosition(position: number, range: [number, number]): Promisable<[bigint, bigint]>
45
+
46
+ // estimate the total possible block rewards for a given step
47
+ networkStakeStepRewardForStep(context: StepIdentity): Promisable<bigint>
48
+
49
+ // the share & total rewards for a given step and block for a given position
50
+ networkStakeStepRewardForStepForPosition(context: StepIdentity, position: number): Promisable<[bigint, bigint]>
51
+
52
+ // the predictable random number for a given step and block
53
+ networkStakeStepRewardRandomizer(context: StepIdentity): Promisable<bigint>
54
+
55
+ // the total number of stakers for a given step and block
56
+ networkStakeStepRewardStakerCount(context: StepIdentity): Promisable<number>
57
+
58
+ networkStakeStepRewardUnclaimedByAddress(address: Address): Promisable<bigint>
59
+
60
+ // the share & total rewards for a given position for each step in range
61
+ networkStakeStepRewardsForPosition(position: number,
62
+ range: [number, number]): Promisable<Record<StepIdentityString, [bigint, bigint]>>
63
+
64
+ // the total rewards for a given range
65
+ networkStakeStepRewardsForRange(range: [number, number]): Promisable<bigint>
66
+
67
+ // the total rewards for a given range and step level
68
+ networkStakeStepRewardsForStepLevel(stepLevel: number, range: [number, number]): Promisable<bigint>
69
+ }
@@ -0,0 +1,12 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+
3
+ import type { StepRewardsViewer } from './StepRewardsViewer.ts'
4
+
5
+ export interface NetworkStakeViewerMethods {
6
+ /** @returns the active stake and the number of active validators [active, block] */
7
+ active(blockNumber?: number): Promisable<[bigint, number]>
8
+ }
9
+
10
+ export interface NetworkStakeViewer extends NetworkStakeViewerMethods {
11
+ stepRewards?: StepRewardsViewer
12
+ }
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
+ export type RecordKeyType<T = keyof any> = T extends keyof any ? T : never
@@ -0,0 +1,7 @@
1
+ import type { AttoXL1 } from '@xyo-network/xl1-protocol'
2
+
3
+ import type { RecordKeyType } from './RecordKeyType.ts'
4
+ import type { RewardsViewerMethodsTemplate } from './RewardsViewerMethodsTemplate.ts'
5
+
6
+ export interface RewardsByIndexViewerMethodsTemplate<TOptions, TResultIndex extends RecordKeyType>
7
+ extends RewardsViewerMethodsTemplate<TOptions, Record<TResultIndex, AttoXL1>> {}
@@ -0,0 +1,7 @@
1
+ import type { RewardsByIndexViewerMethodsTemplate } from './RewardsByIndexViewerMethodsTemplate.ts'
2
+ import type { RewardsByPositionViewerOptions } from './RewardsViewerOptions.ts'
3
+
4
+ // Note: Viewers are client objects that can nest other viewers and ViewerMethods objects consist only of methods that return data.
5
+
6
+ export interface RewardsByPositionViewerMethods extends RewardsByIndexViewerMethodsTemplate<RewardsByPositionViewerOptions, number> {}
7
+ export interface RewardsByPositionViewer extends RewardsByPositionViewerMethods {}
@@ -0,0 +1,9 @@
1
+ import type { Address } from '@xylabs/hex'
2
+
3
+ import type { RewardsByIndexViewerMethodsTemplate } from './RewardsByIndexViewerMethodsTemplate.ts'
4
+ import type { RewardsByStakerViewerOptions } from './RewardsViewerOptions.ts'
5
+
6
+ // Note: Viewers are client objects that can nest other viewers and ViewerMethods objects consist only of methods that return data.
7
+
8
+ export interface RewardsByStakerViewerMethods extends RewardsByIndexViewerMethodsTemplate<RewardsByStakerViewerOptions, Address> {}
9
+ export interface RewardsByStakerViewer extends RewardsByStakerViewerMethods {}
@@ -0,0 +1,9 @@
1
+ import type { StepIdentityString } from '@xyo-network/xl1-protocol'
2
+
3
+ import type { RewardsByIndexViewerMethodsTemplate } from './RewardsByIndexViewerMethodsTemplate.ts'
4
+ import type { RewardsByStepViewerOptions } from './RewardsViewerOptions.ts'
5
+
6
+ // Note: Viewers are client objects that can nest other viewers and ViewerMethods objects consist only of methods that return data.
7
+
8
+ export interface RewardsByStepViewerMethods extends RewardsByIndexViewerMethodsTemplate<RewardsByStepViewerOptions, StepIdentityString> {}
9
+ export interface RewardsByStepViewer extends RewardsByStepViewerMethods {}
@@ -0,0 +1,9 @@
1
+ import type { AttoXL1 } from '@xyo-network/xl1-protocol'
2
+
3
+ import type { RewardsViewerMethodsTemplate } from './RewardsViewerMethodsTemplate.ts'
4
+ import type { RewardsRangeOptions } from './RewardsViewerOptions.ts'
5
+
6
+ // Note: Viewers are client objects that can nest other viewers and ViewerMethods objects consist only of methods that return data.
7
+
8
+ export interface RewardsTotalViewerMethods extends RewardsViewerMethodsTemplate<RewardsRangeOptions, AttoXL1> {}
9
+ export interface RewardsTotalViewer extends RewardsTotalViewerMethods {}
@@ -0,0 +1,9 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+
3
+ export interface RewardsViewerMethodsTemplate<TOptions, TResult> {
4
+ bonus(options?: TOptions): Promisable<TResult>
5
+ claimed(options?: TOptions): Promisable<TResult>
6
+ earned(options?: TOptions): Promisable<TResult>
7
+ total(options?: TOptions): Promisable<TResult>
8
+ unclaimed(options?: TOptions): Promisable<TResult>
9
+ }
@@ -0,0 +1,18 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import type { BlockRange, StepIdentity } from '@xyo-network/xl1-protocol'
3
+
4
+ export interface RewardsRangeOptions {
5
+ range?: BlockRange
6
+ }
7
+
8
+ export interface RewardsByStepViewerOptions extends RewardsRangeOptions {
9
+ steps?: StepIdentity[]
10
+ }
11
+
12
+ export interface RewardsByStakerViewerOptions extends RewardsRangeOptions {
13
+ stakers?: Address[]
14
+ }
15
+
16
+ export interface RewardsByPositionViewerOptions extends RewardsRangeOptions {
17
+ positions?: number[]
18
+ }
@@ -0,0 +1,13 @@
1
+ import type { RewardsByPositionViewer } from './RewardsByPositionViewer.ts'
2
+ import type { RewardsByStakerViewer } from './RewardsByStakerViewer.ts'
3
+ import type { RewardsByStepViewer } from './RewardsByStepViewer.ts'
4
+ import type { RewardsTotalViewer } from './RewardsTotalViewer.ts'
5
+
6
+ export interface StepRewardsViewerMethods {}
7
+
8
+ export interface StepRewardsViewer extends StepRewardsViewerMethods {
9
+ position?: RewardsByPositionViewer
10
+ staker?: RewardsByStakerViewer
11
+ step?: RewardsByStepViewer
12
+ total?: RewardsTotalViewer
13
+ }
@@ -0,0 +1,42 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { PositionId, StepIdentity } from '@xyo-network/xl1-protocol'
4
+
5
+ import type { Position } from '../Stake.ts'
6
+
7
+ export interface PagedPositionsOptions {
8
+ cursor?: PositionId
9
+ limit?: number
10
+ }
11
+
12
+ export interface PagedStakersOptions {
13
+ cursor?: Address
14
+ limit?: number
15
+ }
16
+
17
+ export interface StepStatistics {
18
+ endTime: number
19
+ startTime: number
20
+ }
21
+
22
+ export interface StepViewerMethods {
23
+
24
+ // the total number of positions for a given step
25
+ positionCount(step: StepIdentity): Promisable<number>
26
+
27
+ positions(step: StepIdentity, options?: PagedPositionsOptions): Promisable<Position[]>
28
+
29
+ // the predictable random number for a given step
30
+ randomizer(step: StepIdentity): Promisable<bigint>
31
+
32
+ // total amount staked during a given step
33
+ stake(step: StepIdentity): Promisable<bigint>
34
+
35
+ // the total number of stakers for a given step
36
+ stakerCount(step: StepIdentity): Promisable<number>
37
+
38
+ stakers(step: StepIdentity, options?: PagedStakersOptions): Promisable<Address[]>
39
+
40
+ // total weight of all stakers during a given step
41
+ weight(step: StepIdentity): Promisable<bigint>
42
+ }
@@ -0,0 +1,13 @@
1
+ export * from './NetworkStakeViewer.ts'
2
+ export * from './RecordKeyType.ts'
3
+ export * from './RewardsByIndexViewerMethodsTemplate.ts'
4
+ export * from './RewardsByPositionViewer.ts'
5
+ export * from './RewardsByStakerViewer.ts'
6
+ export * from './RewardsByStepViewer.ts'
7
+ export * from './RewardsTotalViewer.ts'
8
+ export * from './RewardsViewerMethodsTemplate.ts'
9
+ export * from './RewardsViewerOptions.ts'
10
+ export * from './StepRewardsViewer.ts'
11
+ export * from './StepViewer.ts'
12
+
13
+ // Note: Viewers are client objects that can nest other viewers and ViewerMethods objects consist only of methods that return data.