@xyo-network/xl1-protocol-sdk 1.18.0-rc.1 → 1.18.1

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 (258) hide show
  1. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts +57 -25
  2. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts.map +1 -1
  3. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts +16 -11
  4. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts.map +1 -1
  5. package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts +2 -4
  6. package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts.map +1 -1
  7. package/dist/neutral/CreatableProvider/ProviderFactory.d.ts +6 -4
  8. package/dist/neutral/CreatableProvider/ProviderFactory.d.ts.map +1 -1
  9. package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts +7 -7
  10. package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts.map +1 -1
  11. package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts +3 -2
  12. package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts.map +1 -1
  13. package/dist/neutral/actor/Actor.d.ts +176 -0
  14. package/dist/neutral/actor/Actor.d.ts.map +1 -0
  15. package/dist/neutral/actor/index.d.ts +2 -0
  16. package/dist/neutral/actor/index.d.ts.map +1 -0
  17. package/dist/neutral/block/hydrate/allHashesPresent.d.ts +2 -2
  18. package/dist/neutral/block/hydrate/allHashesPresent.d.ts.map +1 -1
  19. package/dist/neutral/block/hydrate/hydrateBlock.d.ts +2 -2
  20. package/dist/neutral/block/hydrate/hydrateBlock.d.ts.map +1 -1
  21. package/dist/neutral/config/Api.d.ts +1 -1
  22. package/dist/neutral/config/Api.d.ts.map +1 -1
  23. package/dist/neutral/config/Bridge.d.ts +41 -21
  24. package/dist/neutral/config/Bridge.d.ts.map +1 -1
  25. package/dist/neutral/config/Chain.d.ts +7 -3
  26. package/dist/neutral/config/Chain.d.ts.map +1 -1
  27. package/dist/neutral/config/Config.d.ts +50 -22
  28. package/dist/neutral/config/Config.d.ts.map +1 -1
  29. package/dist/neutral/config/Evm.d.ts +1 -1
  30. package/dist/neutral/config/Evm.d.ts.map +1 -1
  31. package/dist/neutral/config/Log.d.ts +2 -2
  32. package/dist/neutral/config/Log.d.ts.map +1 -1
  33. package/dist/neutral/config/Mempool.d.ts +1 -1
  34. package/dist/neutral/config/Mempool.d.ts.map +1 -1
  35. package/dist/neutral/config/Producer.d.ts +6 -2
  36. package/dist/neutral/config/Producer.d.ts.map +1 -1
  37. package/dist/neutral/config/RewardRedemptionApi.d.ts +1 -1
  38. package/dist/neutral/config/RewardRedemptionApi.d.ts.map +1 -1
  39. package/dist/neutral/config/Services.d.ts +3 -3
  40. package/dist/neutral/config/Services.d.ts.map +1 -1
  41. package/dist/neutral/config/Telemetry.d.ts +11 -4
  42. package/dist/neutral/config/Telemetry.d.ts.map +1 -1
  43. package/dist/neutral/config/UsageMeta.d.ts +1 -1
  44. package/dist/neutral/config/UsageMeta.d.ts.map +1 -1
  45. package/dist/neutral/config/Validation.d.ts +11 -3
  46. package/dist/neutral/config/Validation.d.ts.map +1 -1
  47. package/dist/neutral/config/index.d.ts +1 -0
  48. package/dist/neutral/config/index.d.ts.map +1 -1
  49. package/dist/neutral/config/storage/Storage.d.ts +1 -1
  50. package/dist/neutral/config/storage/Storage.d.ts.map +1 -1
  51. package/dist/neutral/config/storage/driver/Mongo.d.ts +1 -1
  52. package/dist/neutral/config/storage/driver/Mongo.d.ts.map +1 -1
  53. package/dist/neutral/eip-712/Payloads/EIP712Data.d.ts +4 -4
  54. package/dist/neutral/eip-712/Payloads/EIP712Data.d.ts.map +1 -1
  55. package/dist/neutral/eip-712/Payloads/EIP712Signature.d.ts +3 -3
  56. package/dist/neutral/eip-712/Payloads/EIP712Signature.d.ts.map +1 -1
  57. package/dist/neutral/eip-712/Types.d.ts +4 -4
  58. package/dist/neutral/eip-712/Types.d.ts.map +1 -1
  59. package/dist/neutral/index.d.ts +1 -0
  60. package/dist/neutral/index.d.ts.map +1 -1
  61. package/dist/neutral/index.mjs +3440 -3089
  62. package/dist/neutral/index.mjs.map +1 -1
  63. package/dist/neutral/model/ChainQualification.d.ts +42 -0
  64. package/dist/neutral/model/ChainQualification.d.ts.map +1 -0
  65. package/dist/neutral/model/index.d.ts +1 -1
  66. package/dist/neutral/model/index.d.ts.map +1 -1
  67. package/dist/neutral/payloads/netBalancesForPayloads.d.ts +5 -2
  68. package/dist/neutral/payloads/netBalancesForPayloads.d.ts.map +1 -1
  69. package/dist/neutral/payloads/netSchemasForPayloads.d.ts +5 -2
  70. package/dist/neutral/payloads/netSchemasForPayloads.d.ts.map +1 -1
  71. package/dist/neutral/primitives/chain/getWindowedChain.d.ts +11 -0
  72. package/dist/neutral/primitives/chain/getWindowedChain.d.ts.map +1 -0
  73. package/dist/neutral/primitives/chain/index.d.ts +1 -0
  74. package/dist/neutral/primitives/chain/index.d.ts.map +1 -1
  75. package/dist/neutral/primitives/index.d.ts +1 -0
  76. package/dist/neutral/primitives/index.d.ts.map +1 -1
  77. package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts +1 -1
  78. package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts.map +1 -1
  79. package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts +2 -1
  80. package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts.map +1 -1
  81. package/dist/neutral/primitives/uncle/findBestUncle.d.ts +32 -0
  82. package/dist/neutral/primitives/uncle/findBestUncle.d.ts.map +1 -0
  83. package/dist/neutral/primitives/uncle/findUncles.d.ts +33 -0
  84. package/dist/neutral/primitives/uncle/findUncles.d.ts.map +1 -0
  85. package/dist/neutral/primitives/uncle/index.d.ts +4 -0
  86. package/dist/neutral/primitives/uncle/index.d.ts.map +1 -0
  87. package/dist/neutral/primitives/uncle/scoreUncle.d.ts +3 -0
  88. package/dist/neutral/primitives/uncle/scoreUncle.d.ts.map +1 -0
  89. package/dist/neutral/provider/signer/XyoSigner.d.ts +2 -0
  90. package/dist/neutral/provider/signer/XyoSigner.d.ts.map +1 -1
  91. package/dist/neutral/provider/viewer/XyoViewer.d.ts +7 -5
  92. package/dist/neutral/provider/viewer/XyoViewer.d.ts.map +1 -1
  93. package/dist/neutral/runners/Finalization.d.ts +12 -0
  94. package/dist/neutral/runners/Finalization.d.ts.map +1 -0
  95. package/dist/neutral/runners/index.d.ts +1 -0
  96. package/dist/neutral/runners/index.d.ts.map +1 -1
  97. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +96 -12
  98. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
  99. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +9 -25
  100. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
  101. package/dist/neutral/simple/blockReward/SimpleBlockRewardViewer.d.ts +1 -0
  102. package/dist/neutral/simple/blockReward/SimpleBlockRewardViewer.d.ts.map +1 -1
  103. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts +32 -0
  104. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts.map +1 -0
  105. package/dist/neutral/simple/blockValidation/index.d.ts +2 -0
  106. package/dist/neutral/simple/blockValidation/index.d.ts.map +1 -0
  107. package/dist/neutral/simple/chainStake/SimpleStakeViewer.d.ts +1 -0
  108. package/dist/neutral/simple/chainStake/SimpleStakeViewer.d.ts.map +1 -1
  109. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts +1 -1
  110. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts.map +1 -1
  111. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +1 -0
  112. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts.map +1 -1
  113. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts +1 -0
  114. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts.map +1 -1
  115. package/dist/neutral/simple/finalization/SimpleFinalizationRunner.d.ts +21 -0
  116. package/dist/neutral/simple/finalization/SimpleFinalizationRunner.d.ts.map +1 -0
  117. package/dist/neutral/simple/finalization/SimpleFinalizationViewer.d.ts +61 -0
  118. package/dist/neutral/simple/finalization/SimpleFinalizationViewer.d.ts.map +1 -0
  119. package/dist/neutral/simple/finalization/index.d.ts +3 -0
  120. package/dist/neutral/simple/finalization/index.d.ts.map +1 -0
  121. package/dist/neutral/simple/index.d.ts +3 -0
  122. package/dist/neutral/simple/index.d.ts.map +1 -1
  123. package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts +2 -0
  124. package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts.map +1 -1
  125. package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts +7 -2
  126. package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts.map +1 -1
  127. package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts +1 -0
  128. package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts.map +1 -1
  129. package/dist/neutral/simple/signer/SimpleXyoSigner.d.ts +19 -3
  130. package/dist/neutral/simple/signer/SimpleXyoSigner.d.ts.map +1 -1
  131. package/dist/neutral/simple/stakeEvents/SimpleStakeEventsViewer.d.ts +1 -0
  132. package/dist/neutral/simple/stakeEvents/SimpleStakeEventsViewer.d.ts.map +1 -1
  133. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts +2 -1
  134. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts.map +1 -1
  135. package/dist/neutral/simple/windowedBlock/SimpleWindowedBlockViewer.d.ts +191 -0
  136. package/dist/neutral/simple/windowedBlock/SimpleWindowedBlockViewer.d.ts.map +1 -0
  137. package/dist/neutral/simple/windowedBlock/index.d.ts +2 -0
  138. package/dist/neutral/simple/windowedBlock/index.d.ts.map +1 -0
  139. package/dist/neutral/summary/model/summary.d.ts +3 -2
  140. package/dist/neutral/summary/model/summary.d.ts.map +1 -1
  141. package/dist/neutral/summary/primitives/balances/balancesSummary.d.ts +2 -2
  142. package/dist/neutral/summary/primitives/balances/balancesSummary.d.ts.map +1 -1
  143. package/dist/neutral/summary/primitives/schemas/schemasSummary.d.ts +2 -2
  144. package/dist/neutral/summary/primitives/schemas/schemasSummary.d.ts.map +1 -1
  145. package/dist/neutral/summary/primitives/transfers/transfersSummary.d.ts +3 -3
  146. package/dist/neutral/summary/primitives/transfers/transfersSummary.d.ts.map +1 -1
  147. package/dist/neutral/transaction/TransactionBuilder.d.ts +56 -33
  148. package/dist/neutral/transaction/TransactionBuilder.d.ts.map +1 -1
  149. package/dist/neutral/transaction/signTransaction.d.ts +24 -12
  150. package/dist/neutral/transaction/signTransaction.d.ts.map +1 -1
  151. package/dist/neutral/utils/isZodError.d.ts +1 -1
  152. package/dist/neutral/utils/isZodError.d.ts.map +1 -1
  153. package/dist/neutral/validation/schema/Mnemonic.d.ts +1 -1
  154. package/dist/neutral/validation/schema/Mnemonic.d.ts.map +1 -1
  155. package/dist/neutral/viewers/AccountBalance.d.ts +92 -44
  156. package/dist/neutral/viewers/AccountBalance.d.ts.map +1 -1
  157. package/dist/neutral/viewers/Block.d.ts +2 -2
  158. package/dist/neutral/viewers/Block.d.ts.map +1 -1
  159. package/dist/neutral/viewers/BlockValidation.d.ts +54 -0
  160. package/dist/neutral/viewers/BlockValidation.d.ts.map +1 -0
  161. package/dist/neutral/viewers/Finalization.d.ts +14 -0
  162. package/dist/neutral/viewers/Finalization.d.ts.map +1 -0
  163. package/dist/neutral/viewers/Mempool.d.ts +5 -5
  164. package/dist/neutral/viewers/Mempool.d.ts.map +1 -1
  165. package/dist/neutral/viewers/StakeIntent.d.ts +2 -2
  166. package/dist/neutral/viewers/StakeIntent.d.ts.map +1 -1
  167. package/dist/neutral/viewers/TransactionValidation.d.ts +35 -0
  168. package/dist/neutral/viewers/TransactionValidation.d.ts.map +1 -0
  169. package/dist/neutral/viewers/WindowedBlock.d.ts +14 -0
  170. package/dist/neutral/viewers/WindowedBlock.d.ts.map +1 -0
  171. package/dist/neutral/viewers/index.d.ts +4 -0
  172. package/dist/neutral/viewers/index.d.ts.map +1 -1
  173. package/package.json +25 -23
  174. package/src/CreatableProvider/AbstractCreatableProvider.ts +34 -12
  175. package/src/CreatableProvider/CreatableProvider.ts +24 -12
  176. package/src/CreatableProvider/CreatableProviderRegistry.ts +4 -3
  177. package/src/CreatableProvider/ProviderFactory.ts +21 -12
  178. package/src/CreatableProvider/ProviderFactoryLocator.ts +8 -6
  179. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +6 -2
  180. package/src/actor/Actor.ts +209 -0
  181. package/src/actor/index.ts +1 -0
  182. package/src/block/hydrate/allHashesPresent.ts +2 -2
  183. package/src/block/hydrate/hydrateBlock.ts +2 -2
  184. package/src/config/Api.ts +1 -2
  185. package/src/config/Bridge.ts +1 -2
  186. package/src/config/Chain.ts +1 -2
  187. package/src/config/Config.ts +1 -1
  188. package/src/config/Evm.ts +1 -2
  189. package/src/config/Log.ts +1 -2
  190. package/src/config/Mempool.ts +1 -2
  191. package/src/config/Producer.ts +1 -2
  192. package/src/config/RewardRedemptionApi.ts +1 -2
  193. package/src/config/Services.ts +5 -4
  194. package/src/config/Telemetry.ts +10 -4
  195. package/src/config/UsageMeta.ts +1 -1
  196. package/src/config/Validation.ts +1 -2
  197. package/src/config/index.ts +1 -0
  198. package/src/config/storage/Storage.ts +1 -2
  199. package/src/config/storage/driver/Mongo.ts +1 -2
  200. package/src/eip-712/Payloads/EIP712Data.ts +1 -1
  201. package/src/eip-712/Payloads/EIP712Signature.ts +1 -1
  202. package/src/eip-712/Types.ts +1 -1
  203. package/src/index.ts +1 -0
  204. package/src/model/ChainQualification.ts +33 -0
  205. package/src/model/index.ts +1 -1
  206. package/src/primitives/chain/getWindowedChain.ts +42 -0
  207. package/src/primitives/chain/index.ts +1 -0
  208. package/src/primitives/index.ts +1 -0
  209. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +4 -3
  210. package/src/primitives/stake/allStakersForStep.ts +1 -1
  211. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +10 -2
  212. package/src/primitives/uncle/findBestUncle.ts +8 -0
  213. package/src/primitives/uncle/findUncles.ts +75 -0
  214. package/src/primitives/uncle/index.ts +3 -0
  215. package/src/primitives/uncle/scoreUncle.ts +6 -0
  216. package/src/provider/signer/XyoSigner.ts +3 -0
  217. package/src/provider/viewer/XyoViewer.ts +7 -7
  218. package/src/runners/Finalization.ts +15 -0
  219. package/src/runners/index.ts +1 -0
  220. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +47 -30
  221. package/src/simple/block/SimpleBlockViewer.ts +23 -37
  222. package/src/simple/blockReward/SimpleBlockRewardViewer.ts +1 -0
  223. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +129 -0
  224. package/src/simple/blockValidation/index.ts +1 -0
  225. package/src/simple/chainStake/SimpleStakeViewer.ts +1 -0
  226. package/src/simple/datalake/AbstractSimpleDataLake.ts +2 -1
  227. package/src/simple/datalake/SimpleDataLakeRunner.ts +1 -0
  228. package/src/simple/datalake/SimpleDataLakeViewer.ts +1 -1
  229. package/src/simple/finalization/SimpleFinalizationRunner.ts +45 -0
  230. package/src/simple/finalization/SimpleFinalizationViewer.ts +101 -0
  231. package/src/simple/finalization/index.ts +2 -0
  232. package/src/simple/index.ts +3 -0
  233. package/src/simple/mempool/SimpleMempoolRunner.ts +11 -1
  234. package/src/simple/mempool/SimpleMempoolViewer.ts +41 -8
  235. package/src/simple/runner/SimpleXyoRunner.ts +3 -1
  236. package/src/simple/signer/SimpleXyoSigner.ts +26 -5
  237. package/src/simple/stakeEvents/SimpleStakeEventsViewer.ts +1 -0
  238. package/src/simple/timesync/SimpleTimeSyncViewer.ts +4 -2
  239. package/src/simple/windowedBlock/SimpleWindowedBlockViewer.ts +208 -0
  240. package/src/simple/windowedBlock/index.ts +1 -0
  241. package/src/summary/model/summary.ts +3 -4
  242. package/src/summary/primitives/balances/balancesSummary.ts +12 -12
  243. package/src/summary/primitives/schemas/schemasSummary.ts +12 -10
  244. package/src/summary/primitives/transfers/transfersSummary.ts +15 -17
  245. package/src/utils/isZodError.ts +1 -1
  246. package/src/validation/schema/Mnemonic.ts +1 -1
  247. package/src/viewers/AccountBalance.ts +23 -15
  248. package/src/viewers/Block.ts +2 -2
  249. package/src/viewers/BlockValidation.ts +47 -0
  250. package/src/viewers/Finalization.ts +19 -0
  251. package/src/viewers/Mempool.ts +1 -1
  252. package/src/viewers/StakeIntent.ts +2 -2
  253. package/src/viewers/TransactionValidation.ts +35 -0
  254. package/src/viewers/WindowedBlock.ts +17 -0
  255. package/src/viewers/index.ts +4 -0
  256. package/dist/neutral/model/Qualified.d.ts +0 -6
  257. package/dist/neutral/model/Qualified.d.ts.map +0 -1
  258. package/src/model/Qualified.ts +0 -9
@@ -1,27 +1,27 @@
1
1
  import type { Address } from '@xylabs/sdk-js'
2
- import {
3
- asAddress, isDefined, spanRootAsync,
4
- } from '@xylabs/sdk-js'
5
- import {
6
- asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
7
- } from '@xyo-network/xl1-protocol'
2
+ import { asAddress, spanRootAsync } from '@xylabs/sdk-js'
3
+ import { asBlockBoundWitnessWithStorageMeta, asXL1BlockRange } from '@xyo-network/xl1-protocol'
8
4
 
9
5
  import { deepCalculateFramesFromRange } from '../../../block/index.ts'
10
- import type { Qualified } from '../../../model/index.ts'
6
+ import {
7
+ type ChainQualified, type ChainQualifiedConfig, isChainQualifiedHeadConfig,
8
+ isChainQualifiedRangeConfig,
9
+ } from '../../../model/index.ts'
11
10
  import { parseSignedBigInt } from '../../../SignedBigInt.ts'
12
11
  import type { BalanceStepSummaryContext } from '../../model/index.ts'
13
12
  import { balancesStepSummaryFromRange } from './balancesStepSummaryFromRange.ts'
14
13
 
15
14
  export async function balancesSummary(
16
15
  context: BalanceStepSummaryContext,
17
- ): Promise<Qualified<Record<Address, bigint>>> {
16
+ config?: ChainQualifiedConfig,
17
+ ): Promise<ChainQualified<Record<Address, bigint>>> {
18
18
  return await spanRootAsync('balancesSummary', async () => {
19
- const [headHash] = await context.head()
19
+ const [headHash] = isChainQualifiedHeadConfig(config) ? [config.head] : await context.head()
20
20
  const headResult = await context.store.chainMap.get(headHash)
21
21
  const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`)
22
- const rangeStart = asXL1BlockNumber(isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0, true)
22
+ const range = isChainQualifiedRangeConfig(config) ? config.range : asXL1BlockRange([0, headBoundWitness.block], true)
23
23
  const ranges = deepCalculateFramesFromRange(asXL1BlockRange(
24
- [rangeStart, headBoundWitness.block],
24
+ range,
25
25
  { name: 'balancesSummary' },
26
26
  ))
27
27
  const summaries = await Promise.all(ranges.map(range => balancesStepSummaryFromRange(context, range)))
@@ -32,6 +32,6 @@ export async function balancesSummary(
32
32
  balances[validAddress] = (balances[validAddress] ?? 0n) + parseSignedBigInt(balance)
33
33
  }
34
34
  }
35
- return [balances, [rangeStart, headBoundWitness.block], headHash]
35
+ return [balances, { range, head: headHash }]
36
36
  })
37
37
  }
@@ -1,24 +1,26 @@
1
- import { isDefined, spanRootAsync } from '@xylabs/sdk-js'
1
+ import { spanRootAsync } from '@xylabs/sdk-js'
2
2
  import type { Schema } from '@xyo-network/payload-model'
3
- import {
4
- asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
5
- } from '@xyo-network/xl1-protocol'
3
+ import { asBlockBoundWitnessWithStorageMeta, asXL1BlockRange } from '@xyo-network/xl1-protocol'
6
4
 
7
5
  import { deepCalculateFramesFromRange } from '../../../block/index.ts'
8
- import type { Qualified } from '../../../model/index.ts'
6
+ import {
7
+ type ChainQualified, type ChainQualifiedConfig, isChainQualifiedHeadConfig,
8
+ isChainQualifiedRangeConfig,
9
+ } from '../../../model/index.ts'
9
10
  import type { SchemasStepSummaryContext } from '../../model/index.ts'
10
11
  import { schemasStepSummaryFromRange } from './schemasStepSummaryFromRange.ts'
11
12
 
12
13
  export async function schemasSummary(
13
14
  context: SchemasStepSummaryContext,
14
- ): Promise<Qualified<Record<Schema, number>>> {
15
+ config?: ChainQualifiedConfig,
16
+ ): Promise<ChainQualified<Record<Schema, number>>> {
15
17
  return await spanRootAsync('schemasSummary', async () => {
16
- const [headHash] = await context.head()
18
+ const [headHash] = isChainQualifiedHeadConfig(config) ? [config.head] : await context.head()
17
19
  const headResult = await context.store.chainMap.get(headHash)
18
20
  const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`)
19
- const rangeStart = asXL1BlockNumber(isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0, true)
21
+ const range = isChainQualifiedRangeConfig(config) ? config.range : asXL1BlockRange([0, headBoundWitness.block], true)
20
22
  const ranges = deepCalculateFramesFromRange(asXL1BlockRange(
21
- [rangeStart, headBoundWitness.block],
23
+ range,
22
24
  { name: 'schemasSummary' },
23
25
  ))
24
26
  const summaries = await Promise.all(ranges.map(range => schemasStepSummaryFromRange(context, range)))
@@ -28,6 +30,6 @@ export async function schemasSummary(
28
30
  results[schema] = (results[schema] ?? 0) + count
29
31
  }
30
32
  }
31
- return [results, [rangeStart, headBoundWitness.block], headHash]
33
+ return [results, { range, head: headHash }]
32
34
  })
33
35
  }
@@ -1,31 +1,29 @@
1
1
  import type { Address, Hash } from '@xylabs/sdk-js'
2
- import {
3
- asAddress, isDefined, spanRootAsync,
4
- } from '@xylabs/sdk-js'
5
- import {
6
- asBlockBoundWitnessWithStorageMeta, asXL1BlockNumber, asXL1BlockRange,
7
- } from '@xyo-network/xl1-protocol'
2
+ import { asAddress, spanRootAsync } from '@xylabs/sdk-js'
3
+ import { asBlockBoundWitnessWithStorageMeta, asXL1BlockRange } from '@xyo-network/xl1-protocol'
8
4
 
9
5
  import { deepCalculateFramesFromRange } from '../../../block/index.ts'
10
- import type { Qualified } from '../../../model/index.ts'
6
+ import type { ChainQualified, ChainQualifiedConfig } from '../../../model/index.ts'
7
+ import { isChainQualifiedHeadConfig, isChainQualifiedRangeConfig } from '../../../model/index.ts'
11
8
  import { parseSignedBigInt } from '../../../SignedBigInt.ts'
12
- import type { TransfersStepSummaryContext } from '../../index.ts'
9
+ import type { TransfersStepSummaryContext } from '../../model/index.ts'
13
10
  import { transfersStepSummaryFromRange } from './transfersStepSummaryFromRange.ts'
14
11
 
15
12
  // the summary of amount of rewards claimed from the step reward pool by addresses
16
13
  export async function transfersSummary(
17
- transferContext: TransfersStepSummaryContext,
18
- ): Promise<Qualified<Record<Address, Record<Address, bigint>>>> {
14
+ context: TransfersStepSummaryContext,
15
+ config?: ChainQualifiedConfig,
16
+ ): Promise<ChainQualified<Record<Address, Record<Address, bigint>>>> {
19
17
  return await spanRootAsync('transferSummary', async () => {
20
- const [headHash] = await transferContext.head()
21
- const headResult = await transferContext.store.chainMap.get(headHash)
22
- const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${transferContext.head}`)
23
- const rangeStart = asXL1BlockNumber(isDefined(transferContext.windowSize) ? Math.max(headBoundWitness.block - transferContext.windowSize + 1, 0) : 0, true)
18
+ const [headHash] = isChainQualifiedHeadConfig(config) ? [config.head] : await context.head()
19
+ const headResult = await context.store.chainMap.get(headHash)
20
+ const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult, () => `Head block not found for hash: ${headHash}`)
21
+ const range = isChainQualifiedRangeConfig(config) ? config.range : asXL1BlockRange([0, headBoundWitness.block], true)
24
22
  const ranges = deepCalculateFramesFromRange(asXL1BlockRange(
25
- [rangeStart, headBoundWitness.block],
23
+ range,
26
24
  { name: 'transfersSummary' },
27
25
  ))
28
- const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(transferContext, range)))
26
+ const summaries = await Promise.all(ranges.map(range => transfersStepSummaryFromRange(context, range)))
29
27
  const transfers: Record<Address, Record<Address, bigint>> = {}
30
28
  for (let summary of summaries) {
31
29
  for (const [from, toMap] of Object.entries(summary.transfers)) {
@@ -37,7 +35,7 @@ export async function transfersSummary(
37
35
  }
38
36
  }
39
37
  }
40
- return [transfers, [rangeStart, headBoundWitness.block], headHash]
38
+ return [transfers, { range, head: headHash }]
41
39
  })
42
40
  }
43
41
 
@@ -1,4 +1,4 @@
1
- import * as z from 'zod'
1
+ import { z } from 'zod'
2
2
 
3
3
  export const isZodError = (error: unknown): error is z.ZodError => {
4
4
  return error instanceof z.ZodError
@@ -1,4 +1,4 @@
1
- import * as z from 'zod'
1
+ import { z } from 'zod'
2
2
 
3
3
  /**
4
4
  * Validates a single string containing a BIP-39 mnemonic.
@@ -1,18 +1,18 @@
1
- import type {
2
- Address, Hash, Promisable,
3
- } from '@xylabs/sdk-js'
1
+ import { type Address, type Promisable } from '@xylabs/sdk-js'
2
+ import { zodIsFactory } from '@xylabs/zod'
4
3
  import { WithHashMetaZod } from '@xyo-network/payload-model'
5
4
  import {
6
5
  type AttoXL1,
7
6
  TransferZod,
8
- type XL1BlockRange,
9
7
  } from '@xyo-network/xl1-protocol'
10
8
  import { BlockBoundWitnessZod, TransactionBoundWitnessZod } from '@xyo-network/xl1-protocol'
11
- import z from 'zod'
9
+ import { z } from 'zod'
12
10
 
13
- import type {
14
- Provider,
15
- Qualified,
11
+ import {
12
+ ChainQualificationZod,
13
+ type ChainQualified,
14
+ ChainQualifiedConfigZod,
15
+ type Provider,
16
16
  } from '../model/index.ts'
17
17
 
18
18
  export const AccountBalanceHistoryItemZod = z.tuple([
@@ -23,19 +23,27 @@ export const AccountBalanceHistoryItemZod = z.tuple([
23
23
 
24
24
  export type AccountBalanceHistoryItem = z.infer<typeof AccountBalanceHistoryItemZod>
25
25
 
26
+ export const AccountBalanceQualificationZod = ChainQualificationZod
27
+ export type AccountBalanceQualification = z.infer<typeof AccountBalanceQualificationZod>
28
+ export const isAccountBalanceQualification = zodIsFactory(AccountBalanceQualificationZod)
29
+
30
+ export const AccountBalanceConfigZod = ChainQualifiedConfigZod
31
+ export type AccountBalanceConfig = z.infer<typeof AccountBalanceConfigZod>
32
+ export const isAccountBalanceCOnfig = zodIsFactory(AccountBalanceConfigZod)
33
+
26
34
  export interface AccountBalanceViewerMethods {
27
35
  qualifiedAccountBalanceHistories(
28
36
  address: Address[],
29
- headOrRange?: Hash | XL1BlockRange
30
- ): Promisable<Qualified<Record<Address, AccountBalanceHistoryItem[]>>>
31
- qualifiedAccountBalances(address: Address[], headOrRange?: Hash | XL1BlockRange): Promisable<Qualified<Record<Address, AttoXL1>>>
37
+ config: AccountBalanceConfig
38
+ ): Promisable<ChainQualified<Record<Address, AccountBalanceHistoryItem[]>>>
39
+ qualifiedAccountBalances(address: Address[], config: AccountBalanceConfig): Promisable<ChainQualified<Record<Address, AttoXL1>>>
32
40
  }
33
41
 
34
42
  export interface AccountBalanceViewer extends AccountBalanceViewerMethods, Provider<AccountBalanceViewerMoniker> {
35
- accountBalance(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AttoXL1>
36
- accountBalanceHistories(address: Address[], headOrRange?: Hash | XL1BlockRange): Promisable<Record<Address, AccountBalanceHistoryItem[]>>
37
- accountBalanceHistory(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<AccountBalanceHistoryItem[]>
38
- accountBalances(address: Address[], headOrRange?: Hash | XL1BlockRange): Promisable<Record<Address, AttoXL1>>
43
+ accountBalance(address: Address, config?: AccountBalanceConfig): Promisable<AttoXL1>
44
+ accountBalanceHistories(address: Address[], config?: AccountBalanceConfig): Promisable<Record<Address, AccountBalanceHistoryItem[]>>
45
+ accountBalanceHistory(address: Address, config?: AccountBalanceConfig): Promisable<AccountBalanceHistoryItem[]>
46
+ accountBalances(address: Address[], config?: AccountBalanceConfig): Promisable<Record<Address, AttoXL1>>
39
47
  }
40
48
 
41
49
  export const AccountBalanceViewerMoniker = 'AccountBalanceViewer' as const
@@ -4,7 +4,7 @@ import type {
4
4
  ChainId, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
5
5
  } from '@xyo-network/xl1-protocol'
6
6
 
7
- import type { Provider } from '../model/index.ts'
7
+ import type { Provider, ProviderMoniker } from '../model/index.ts'
8
8
 
9
9
  export interface BlockViewerMethods {
10
10
  blocksByHash(hash: Hash, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
@@ -16,7 +16,7 @@ export interface BlockViewerMethods {
16
16
  export const BlockViewerMoniker = 'BlockViewer' as const
17
17
  export type BlockViewerMoniker = typeof BlockViewerMoniker
18
18
 
19
- export interface BlockViewer extends BlockViewerMethods, Provider<BlockViewerMoniker> {
19
+ export interface BlockViewer<TMoniker extends ProviderMoniker = BlockViewerMoniker> extends BlockViewerMethods, Provider<TMoniker> {
20
20
  blockByHash(hash: Hash): Promisable<SignedHydratedBlockWithHashMeta | null>
21
21
  blockByNumber(block: XL1BlockNumber): Promisable<SignedHydratedBlockWithHashMeta | null>
22
22
  chainId(): Promisable<ChainId>
@@ -0,0 +1,47 @@
1
+ import { type Promisable } from '@xylabs/sdk-js'
2
+ import { zodIsFactory } from '@xylabs/zod'
3
+ import type { HydratedBlock, SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
4
+ import { z } from 'zod'
5
+
6
+ import {
7
+ ChainQualificationZod, ChainQualifiedHeadConfigZod, ChainQualifiedRangeConfigZod, type Provider,
8
+ } from '../model/index.ts'
9
+ import type { HydratedBlockValidationError } from '../validation/index.ts'
10
+
11
+ export const BlockValidationQualificationZod = ChainQualificationZod
12
+ export type BlockValidationQualification = z.infer<typeof BlockValidationQualificationZod>
13
+ export const isBlockValidationQualification = zodIsFactory(BlockValidationQualificationZod)
14
+
15
+ export const BlockValidationConfigFieldsZod = z.object({
16
+ value: z.boolean().optional(),
17
+ state: z.boolean().optional(),
18
+ })
19
+
20
+ export const BlockValidationConfigZod = z.union([
21
+ BlockValidationConfigFieldsZod.extend(ChainQualifiedHeadConfigZod.shape),
22
+ BlockValidationConfigFieldsZod.extend(ChainQualifiedRangeConfigZod.shape),
23
+ BlockValidationConfigFieldsZod,
24
+ z.object({}),
25
+ ])
26
+
27
+ export type BlockValidationConfig = z.infer<typeof BlockValidationConfigZod>
28
+ export const isBlockValidationConfig = zodIsFactory(BlockValidationConfigZod)
29
+
30
+ export interface BlockValidationViewerMethods {
31
+ qualifiedValidateBlocks(
32
+ blocks: HydratedBlock[],
33
+ config?: BlockValidationConfig
34
+ ): Promisable<[HydratedBlockValidationError[], BlockValidationQualification]>
35
+ }
36
+
37
+ export const BlockValidationViewerMoniker = 'BlockValidationViewer' as const
38
+ export type BlockValidationViewerMoniker = typeof BlockValidationViewerMoniker
39
+
40
+ export interface BlockValidationViewer extends BlockValidationViewerMethods, Provider<BlockValidationViewerMoniker> {
41
+ qualifiedValidateBlock(
42
+ block: SignedHydratedBlockWithHashMeta,
43
+ config?: BlockValidationConfig
44
+ ): Promisable<[HydratedBlockValidationError[], BlockValidationQualification]>
45
+ validateBlock(block: SignedHydratedBlockWithHashMeta, config?: BlockValidationConfig): Promisable<HydratedBlockValidationError[]>
46
+ validateBlocks(blocks: SignedHydratedBlockWithHashMeta[], config?: BlockValidationConfig): Promisable<HydratedBlockValidationError[]>
47
+ }
@@ -0,0 +1,19 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import type {
3
+ SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
4
+ } from '@xyo-network/xl1-protocol'
5
+
6
+ import type { Provider } from '../model/index.ts'
7
+
8
+ export interface FinalizationViewerMethods {
9
+ head(): Promise<SignedHydratedBlockWithHashMeta>
10
+ }
11
+
12
+ export const FinalizationViewerMoniker = 'FinalizationViewer' as const
13
+ export type FinalizationViewerMoniker = typeof FinalizationViewerMoniker
14
+
15
+ export interface FinalizationViewer extends FinalizationViewerMethods, Provider<FinalizationViewerMoniker> {
16
+ headBlock(): Promise<SignedBlockBoundWitnessWithHashMeta>
17
+ headHash(): Promise<Hash>
18
+ headNumber(): Promise<XL1BlockNumber>
19
+ }
@@ -1,7 +1,7 @@
1
1
  import { HashZod } from '@xylabs/sdk-js'
2
2
  import type { SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHashMeta } from '@xyo-network/xl1-protocol'
3
3
  import { XL1BlockRangeZod } from '@xyo-network/xl1-protocol'
4
- import z from 'zod'
4
+ import { z } from 'zod'
5
5
 
6
6
  import type { Provider } from '../model/index.ts'
7
7
 
@@ -3,10 +3,10 @@ import type {
3
3
  } from '@xylabs/sdk-js'
4
4
  import type { ChainStakeIntent, XL1BlockRange } from '@xyo-network/xl1-protocol'
5
5
 
6
- import type { Provider, Qualified } from '../model/index.ts'
6
+ import type { ChainQualified, Provider } from '../model/index.ts'
7
7
 
8
8
  export interface StakeIntentViewerMethods {
9
- qualifiedIntentByAddress(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<Qualified<ChainStakeIntent | null>>
9
+ qualifiedIntentByAddress(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<ChainQualified<ChainStakeIntent | null>>
10
10
  }
11
11
 
12
12
  export const StakeIntentViewerMoniker = 'StakeIntentViewer' as const
@@ -0,0 +1,35 @@
1
+ import { type Promisable } from '@xylabs/sdk-js'
2
+ import { zodIsFactory } from '@xylabs/zod'
3
+ import { type HydratedTransaction, type ValidationError } from '@xyo-network/xl1-protocol'
4
+ import type { z } from 'zod'
5
+
6
+ import {
7
+ ChainQualificationZod, ChainQualifiedConfigZod, type Provider,
8
+ } from '../model/index.ts'
9
+
10
+ export const TransactionValidationQualificationZod = ChainQualificationZod
11
+ export type TransactionValidationQualification = z.infer<typeof TransactionValidationQualificationZod>
12
+ export const isTransactionValidationQualification = zodIsFactory(TransactionValidationQualificationZod)
13
+
14
+ export const TransactionValidationConfigZod = ChainQualifiedConfigZod
15
+ export type TransactionValidationConfig = z.infer<typeof TransactionValidationConfigZod>
16
+ export const isTransactionValidationConfig = zodIsFactory(TransactionValidationConfigZod)
17
+
18
+ export interface TransactionValidationViewerMethods {
19
+ qualifiedValidateTransactions(
20
+ transactions: HydratedTransaction[],
21
+ config?: TransactionValidationConfig
22
+ ): Promisable<[ValidationError[][], TransactionValidationQualification]>
23
+ }
24
+
25
+ export const TransactionValidationViewerMoniker = 'TransactionValidationViewer' as const
26
+ export type TransactionValidationViewerMoniker = typeof TransactionValidationViewerMoniker
27
+
28
+ export interface TransactionValidationViewer extends TransactionValidationViewerMethods, Provider<TransactionValidationViewerMoniker> {
29
+ qualifiedValidateTransaction(
30
+ transaction: HydratedTransaction,
31
+ config?: TransactionValidationConfig
32
+ ): Promisable<[ValidationError[], TransactionValidationQualification]>
33
+ validateTransaction(transaction: HydratedTransaction[], config?: TransactionValidationConfig): Promisable<ValidationError[]>
34
+ validateTransactions(transactions: HydratedTransaction[], config?: TransactionValidationConfig): Promisable<ValidationError[][]>
35
+ }
@@ -0,0 +1,17 @@
1
+ import type { Hash } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/sdk-js'
3
+ import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
4
+
5
+ import type { Provider, ProviderMoniker } from '../model/index.ts'
6
+ import type { BlockViewerMethods } from './Block.ts'
7
+
8
+ export interface WindowedBlockViewerMethods extends BlockViewerMethods {
9
+ blocksByTransactionHashes(hashes: Hash[]): Promisable<HydratedBlockWithHashMeta[]>
10
+ }
11
+
12
+ export const WindowedBlockViewerMoniker = 'WindowedBlockViewer' as const
13
+ export type WindowedBlockViewerMoniker = typeof WindowedBlockViewerMoniker
14
+
15
+ export interface WindowedBlockViewer<TMoniker extends ProviderMoniker = WindowedBlockViewerMoniker> extends WindowedBlockViewerMethods, Provider<TMoniker> {
16
+ blockByTransactionHash(hash: Hash): Promisable<HydratedBlockWithHashMeta | null>
17
+ }
@@ -1,8 +1,10 @@
1
1
  export * from './AccountBalance.ts'
2
2
  export * from './Block.ts'
3
3
  export * from './BlockReward.ts'
4
+ export * from './BlockValidation.ts'
4
5
  export * from './ChainContract.ts'
5
6
  export * from './ChainStakeViewer.ts'
7
+ export * from './Finalization.ts'
6
8
  export * from './Fork.ts'
7
9
  export * from './Mempool.ts'
8
10
  export * from './NetworkStakeStepReward.ts'
@@ -13,4 +15,6 @@ export * from './StepStake.ts'
13
15
  export * from './StepViewer.ts'
14
16
  export * from './TimeSync.ts'
15
17
  export * from './Transaction.ts'
18
+ export * from './TransactionValidation.ts'
16
19
  export * from './TransferBalance.ts'
20
+ export * from './WindowedBlock.ts'
@@ -1,6 +0,0 @@
1
- import { type Hash } from '@xylabs/sdk-js';
2
- import { type XL1BlockRange } from '@xyo-network/xl1-protocol';
3
- import z from 'zod';
4
- export type Qualified<T> = [T, XL1BlockRange, Hash];
5
- export declare const QualifiedZod: <T>(zodType: z.ZodType<T>) => z.ZodTuple<[z.ZodType<T, unknown, z.z.core.$ZodTypeInternals<T, unknown>>, z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>, z.ZodPipe<z.ZodString, z.ZodTransform<Hash, string>>], null>;
6
- //# sourceMappingURL=Qualified.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Qualified.d.ts","sourceRoot":"","sources":["../../../src/model/Qualified.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAW,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,2BAA2B,CAAA;AAChF,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;AAEnD,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wWAEpD,CAAA"}
@@ -1,9 +0,0 @@
1
- import { type Hash, HashZod } from '@xylabs/sdk-js'
2
- import { type XL1BlockRange, XL1BlockRangeZod } from '@xyo-network/xl1-protocol'
3
- import z from 'zod'
4
-
5
- export type Qualified<T> = [T, XL1BlockRange, Hash]
6
-
7
- export const QualifiedZod = <T>(zodType: z.ZodType<T>) => {
8
- return z.tuple([zodType, XL1BlockRangeZod, HashZod])
9
- }