@xyo-network/xl1-protocol-lib 1.26.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 (260) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +81 -0
  3. package/dist/neutral/OpenTelemetryProviders.d.ts +7 -0
  4. package/dist/neutral/OpenTelemetryProviders.d.ts.map +1 -0
  5. package/dist/neutral/index.d.ts +10 -0
  6. package/dist/neutral/index.d.ts.map +1 -0
  7. package/dist/neutral/index.mjs +375 -0
  8. package/dist/neutral/index.mjs.map +1 -0
  9. package/dist/neutral/network/Status.d.ts +26 -0
  10. package/dist/neutral/network/Status.d.ts.map +1 -0
  11. package/dist/neutral/network/index.d.ts +2 -0
  12. package/dist/neutral/network/index.d.ts.map +1 -0
  13. package/dist/neutral/permissions/InvokerPermission.d.ts +53 -0
  14. package/dist/neutral/permissions/InvokerPermission.d.ts.map +1 -0
  15. package/dist/neutral/permissions/XyoPermissions.d.ts +33 -0
  16. package/dist/neutral/permissions/XyoPermissions.d.ts.map +1 -0
  17. package/dist/neutral/permissions/index.d.ts +3 -0
  18. package/dist/neutral/permissions/index.d.ts.map +1 -0
  19. package/dist/neutral/providers/DataLake/Provider.d.ts +10 -0
  20. package/dist/neutral/providers/DataLake/Provider.d.ts.map +1 -0
  21. package/dist/neutral/providers/DataLake/Runner.d.ts +15 -0
  22. package/dist/neutral/providers/DataLake/Runner.d.ts.map +1 -0
  23. package/dist/neutral/providers/DataLake/Viewer.d.ts +14 -0
  24. package/dist/neutral/providers/DataLake/Viewer.d.ts.map +1 -0
  25. package/dist/neutral/providers/DataLake/index.d.ts +4 -0
  26. package/dist/neutral/providers/DataLake/index.d.ts.map +1 -0
  27. package/dist/neutral/providers/TransactionHelper.d.ts +9 -0
  28. package/dist/neutral/providers/TransactionHelper.d.ts.map +1 -0
  29. package/dist/neutral/providers/XyoClient.d.ts +23 -0
  30. package/dist/neutral/providers/XyoClient.d.ts.map +1 -0
  31. package/dist/neutral/providers/XyoConnection.d.ts +18 -0
  32. package/dist/neutral/providers/XyoConnection.d.ts.map +1 -0
  33. package/dist/neutral/providers/XyoGateway.d.ts +20 -0
  34. package/dist/neutral/providers/XyoGateway.d.ts.map +1 -0
  35. package/dist/neutral/providers/XyoGatewayRunner.d.ts +50 -0
  36. package/dist/neutral/providers/XyoGatewayRunner.d.ts.map +1 -0
  37. package/dist/neutral/providers/XyoNetwork.d.ts +7 -0
  38. package/dist/neutral/providers/XyoNetwork.d.ts.map +1 -0
  39. package/dist/neutral/providers/XyoRunner.d.ts +16 -0
  40. package/dist/neutral/providers/XyoRunner.d.ts.map +1 -0
  41. package/dist/neutral/providers/index.d.ts +9 -0
  42. package/dist/neutral/providers/index.d.ts.map +1 -0
  43. package/dist/neutral/providers/signer/XyoSigner.d.ts +21 -0
  44. package/dist/neutral/providers/signer/XyoSigner.d.ts.map +1 -0
  45. package/dist/neutral/providers/signer/index.d.ts +2 -0
  46. package/dist/neutral/providers/signer/index.d.ts.map +1 -0
  47. package/dist/neutral/repository/Repository.d.ts +27 -0
  48. package/dist/neutral/repository/Repository.d.ts.map +1 -0
  49. package/dist/neutral/repository/TransactionReadRepository.d.ts +6 -0
  50. package/dist/neutral/repository/TransactionReadRepository.d.ts.map +1 -0
  51. package/dist/neutral/repository/TransactionRepository.d.ts +13 -0
  52. package/dist/neutral/repository/TransactionRepository.d.ts.map +1 -0
  53. package/dist/neutral/repository/TransactionRepositoryIterator.d.ts +6 -0
  54. package/dist/neutral/repository/TransactionRepositoryIterator.d.ts.map +1 -0
  55. package/dist/neutral/repository/TransactionWriteRepository.d.ts +6 -0
  56. package/dist/neutral/repository/TransactionWriteRepository.d.ts.map +1 -0
  57. package/dist/neutral/repository/index.d.ts +6 -0
  58. package/dist/neutral/repository/index.d.ts.map +1 -0
  59. package/dist/neutral/runners/Block.d.ts +16 -0
  60. package/dist/neutral/runners/Block.d.ts.map +1 -0
  61. package/dist/neutral/runners/Finalization.d.ts +15 -0
  62. package/dist/neutral/runners/Finalization.d.ts.map +1 -0
  63. package/dist/neutral/runners/Mempool.d.ts +25 -0
  64. package/dist/neutral/runners/Mempool.d.ts.map +1 -0
  65. package/dist/neutral/runners/index.d.ts +4 -0
  66. package/dist/neutral/runners/index.d.ts.map +1 -0
  67. package/dist/neutral/validation/block/BlockValidationFunction.d.ts +6 -0
  68. package/dist/neutral/validation/block/BlockValidationFunction.d.ts.map +1 -0
  69. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +19 -0
  70. package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -0
  71. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts +14 -0
  72. package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -0
  73. package/dist/neutral/validation/block/error.d.ts +21 -0
  74. package/dist/neutral/validation/block/error.d.ts.map +1 -0
  75. package/dist/neutral/validation/block/index.d.ts +5 -0
  76. package/dist/neutral/validation/block/index.d.ts.map +1 -0
  77. package/dist/neutral/validation/boundwitness/BoundWitnessValidationFunction.d.ts +6 -0
  78. package/dist/neutral/validation/boundwitness/BoundWitnessValidationFunction.d.ts.map +1 -0
  79. package/dist/neutral/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts +8 -0
  80. package/dist/neutral/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts.map +1 -0
  81. package/dist/neutral/validation/boundwitness/error.d.ts +13 -0
  82. package/dist/neutral/validation/boundwitness/error.d.ts.map +1 -0
  83. package/dist/neutral/validation/boundwitness/index.d.ts +4 -0
  84. package/dist/neutral/validation/boundwitness/index.d.ts.map +1 -0
  85. package/dist/neutral/validation/error.d.ts +11 -0
  86. package/dist/neutral/validation/error.d.ts.map +1 -0
  87. package/dist/neutral/validation/index.d.ts +6 -0
  88. package/dist/neutral/validation/index.d.ts.map +1 -0
  89. package/dist/neutral/validation/payload/InBlockPayloadValidationFunction.d.ts +10 -0
  90. package/dist/neutral/validation/payload/InBlockPayloadValidationFunction.d.ts.map +1 -0
  91. package/dist/neutral/validation/payload/error.d.ts +12 -0
  92. package/dist/neutral/validation/payload/error.d.ts.map +1 -0
  93. package/dist/neutral/validation/payload/index.d.ts +3 -0
  94. package/dist/neutral/validation/payload/index.d.ts.map +1 -0
  95. package/dist/neutral/validation/transaction/HydratedTransactionStateValidationFunction.d.ts +18 -0
  96. package/dist/neutral/validation/transaction/HydratedTransactionStateValidationFunction.d.ts.map +1 -0
  97. package/dist/neutral/validation/transaction/HydratedTransactionValidationFunction.d.ts +16 -0
  98. package/dist/neutral/validation/transaction/HydratedTransactionValidationFunction.d.ts.map +1 -0
  99. package/dist/neutral/validation/transaction/error.d.ts +8 -0
  100. package/dist/neutral/validation/transaction/error.d.ts.map +1 -0
  101. package/dist/neutral/validation/transaction/index.d.ts +4 -0
  102. package/dist/neutral/validation/transaction/index.d.ts.map +1 -0
  103. package/dist/neutral/viewers/Block.d.ts +29 -0
  104. package/dist/neutral/viewers/Block.d.ts.map +1 -0
  105. package/dist/neutral/viewers/BlockInvalidation.d.ts +68 -0
  106. package/dist/neutral/viewers/BlockInvalidation.d.ts.map +1 -0
  107. package/dist/neutral/viewers/BlockReward.d.ts +14 -0
  108. package/dist/neutral/viewers/BlockReward.d.ts.map +1 -0
  109. package/dist/neutral/viewers/BlockValidation.d.ts +68 -0
  110. package/dist/neutral/viewers/BlockValidation.d.ts.map +1 -0
  111. package/dist/neutral/viewers/ChainContract.d.ts +22 -0
  112. package/dist/neutral/viewers/ChainContract.d.ts.map +1 -0
  113. package/dist/neutral/viewers/ChainStakeViewer.d.ts +11 -0
  114. package/dist/neutral/viewers/ChainStakeViewer.d.ts.map +1 -0
  115. package/dist/neutral/viewers/Finalization.d.ts +18 -0
  116. package/dist/neutral/viewers/Finalization.d.ts.map +1 -0
  117. package/dist/neutral/viewers/Fork.d.ts +9 -0
  118. package/dist/neutral/viewers/Fork.d.ts.map +1 -0
  119. package/dist/neutral/viewers/Mempool.d.ts +31 -0
  120. package/dist/neutral/viewers/Mempool.d.ts.map +1 -0
  121. package/dist/neutral/viewers/NetworkStake/NetworkStakeViewer.d.ts +17 -0
  122. package/dist/neutral/viewers/NetworkStake/NetworkStakeViewer.d.ts.map +1 -0
  123. package/dist/neutral/viewers/NetworkStake/Rewards/ByPositionViewer.d.ts +14 -0
  124. package/dist/neutral/viewers/NetworkStake/Rewards/ByPositionViewer.d.ts.map +1 -0
  125. package/dist/neutral/viewers/NetworkStake/Rewards/ByStakerViewer.d.ts +15 -0
  126. package/dist/neutral/viewers/NetworkStake/Rewards/ByStakerViewer.d.ts.map +1 -0
  127. package/dist/neutral/viewers/NetworkStake/Rewards/ByStepViewer.d.ts +14 -0
  128. package/dist/neutral/viewers/NetworkStake/Rewards/ByStepViewer.d.ts.map +1 -0
  129. package/dist/neutral/viewers/NetworkStake/Rewards/Options.d.ts +19 -0
  130. package/dist/neutral/viewers/NetworkStake/Rewards/Options.d.ts.map +1 -0
  131. package/dist/neutral/viewers/NetworkStake/Rewards/TotalViewer.d.ts +14 -0
  132. package/dist/neutral/viewers/NetworkStake/Rewards/TotalViewer.d.ts.map +1 -0
  133. package/dist/neutral/viewers/NetworkStake/Rewards/Viewer.d.ts +20 -0
  134. package/dist/neutral/viewers/NetworkStake/Rewards/Viewer.d.ts.map +1 -0
  135. package/dist/neutral/viewers/NetworkStake/Rewards/index.d.ts +8 -0
  136. package/dist/neutral/viewers/NetworkStake/Rewards/index.d.ts.map +1 -0
  137. package/dist/neutral/viewers/NetworkStake/Rewards/templates/ByIndexMethodsTemplate.d.ts +6 -0
  138. package/dist/neutral/viewers/NetworkStake/Rewards/templates/ByIndexMethodsTemplate.d.ts.map +1 -0
  139. package/dist/neutral/viewers/NetworkStake/Rewards/templates/MethodsTemplate.d.ts +10 -0
  140. package/dist/neutral/viewers/NetworkStake/Rewards/templates/MethodsTemplate.d.ts.map +1 -0
  141. package/dist/neutral/viewers/NetworkStake/Rewards/templates/index.d.ts +3 -0
  142. package/dist/neutral/viewers/NetworkStake/Rewards/templates/index.d.ts.map +1 -0
  143. package/dist/neutral/viewers/NetworkStake/index.d.ts +3 -0
  144. package/dist/neutral/viewers/NetworkStake/index.d.ts.map +1 -0
  145. package/dist/neutral/viewers/NetworkStakeStepReward.d.ts +40 -0
  146. package/dist/neutral/viewers/NetworkStakeStepReward.d.ts.map +1 -0
  147. package/dist/neutral/viewers/Stake.d.ts +38 -0
  148. package/dist/neutral/viewers/Stake.d.ts.map +1 -0
  149. package/dist/neutral/viewers/StakeEvents.d.ts +44 -0
  150. package/dist/neutral/viewers/StakeEvents.d.ts.map +1 -0
  151. package/dist/neutral/viewers/StakeIntent.d.ts +15 -0
  152. package/dist/neutral/viewers/StakeIntent.d.ts.map +1 -0
  153. package/dist/neutral/viewers/StakeTotals.d.ts +20 -0
  154. package/dist/neutral/viewers/StakeTotals.d.ts.map +1 -0
  155. package/dist/neutral/viewers/StepStake.d.ts +14 -0
  156. package/dist/neutral/viewers/StepStake.d.ts.map +1 -0
  157. package/dist/neutral/viewers/StepViewer.d.ts +37 -0
  158. package/dist/neutral/viewers/StepViewer.d.ts.map +1 -0
  159. package/dist/neutral/viewers/TimeSync.d.ts +21 -0
  160. package/dist/neutral/viewers/TimeSync.d.ts.map +1 -0
  161. package/dist/neutral/viewers/Transaction.d.ts +22 -0
  162. package/dist/neutral/viewers/Transaction.d.ts.map +1 -0
  163. package/dist/neutral/viewers/TransactionInvalidation.d.ts +66 -0
  164. package/dist/neutral/viewers/TransactionInvalidation.d.ts.map +1 -0
  165. package/dist/neutral/viewers/TransactionValidation.d.ts +67 -0
  166. package/dist/neutral/viewers/TransactionValidation.d.ts.map +1 -0
  167. package/dist/neutral/viewers/TransferBalance.d.ts +30 -0
  168. package/dist/neutral/viewers/TransferBalance.d.ts.map +1 -0
  169. package/dist/neutral/viewers/WindowedBlock.d.ts +18 -0
  170. package/dist/neutral/viewers/WindowedBlock.d.ts.map +1 -0
  171. package/dist/neutral/viewers/XyoViewer.d.ts +55 -0
  172. package/dist/neutral/viewers/XyoViewer.d.ts.map +1 -0
  173. package/dist/neutral/viewers/index.d.ts +24 -0
  174. package/dist/neutral/viewers/index.d.ts.map +1 -0
  175. package/package.json +73 -0
  176. package/src/OpenTelemetryProviders.ts +7 -0
  177. package/src/index.ts +9 -0
  178. package/src/network/Status.ts +30 -0
  179. package/src/network/index.ts +1 -0
  180. package/src/permissions/InvokerPermission.ts +58 -0
  181. package/src/permissions/XyoPermissions.ts +41 -0
  182. package/src/permissions/index.ts +2 -0
  183. package/src/providers/DataLake/Provider.ts +11 -0
  184. package/src/providers/DataLake/Runner.ts +16 -0
  185. package/src/providers/DataLake/Viewer.ts +16 -0
  186. package/src/providers/DataLake/index.ts +3 -0
  187. package/src/providers/TransactionHelper.ts +15 -0
  188. package/src/providers/XyoClient.ts +27 -0
  189. package/src/providers/XyoConnection.ts +20 -0
  190. package/src/providers/XyoGateway.ts +24 -0
  191. package/src/providers/XyoGatewayRunner.ts +72 -0
  192. package/src/providers/XyoNetwork.ts +8 -0
  193. package/src/providers/XyoRunner.ts +19 -0
  194. package/src/providers/index.ts +8 -0
  195. package/src/providers/signer/XyoSigner.ts +36 -0
  196. package/src/providers/signer/index.ts +1 -0
  197. package/src/repository/Repository.ts +32 -0
  198. package/src/repository/TransactionReadRepository.ts +6 -0
  199. package/src/repository/TransactionRepository.ts +12 -0
  200. package/src/repository/TransactionRepositoryIterator.ts +6 -0
  201. package/src/repository/TransactionWriteRepository.ts +6 -0
  202. package/src/repository/index.ts +5 -0
  203. package/src/runners/Block.ts +21 -0
  204. package/src/runners/Finalization.ts +17 -0
  205. package/src/runners/Mempool.ts +31 -0
  206. package/src/runners/index.ts +3 -0
  207. package/src/validation/block/BlockValidationFunction.ts +13 -0
  208. package/src/validation/block/HydratedBlockStateValidationFunction.ts +29 -0
  209. package/src/validation/block/HydratedBlockValidationFunction.ts +21 -0
  210. package/src/validation/block/error.ts +51 -0
  211. package/src/validation/block/index.ts +4 -0
  212. package/src/validation/boundwitness/BoundWitnessValidationFunction.ts +9 -0
  213. package/src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts +15 -0
  214. package/src/validation/boundwitness/error.ts +29 -0
  215. package/src/validation/boundwitness/index.ts +3 -0
  216. package/src/validation/error.ts +25 -0
  217. package/src/validation/index.ts +5 -0
  218. package/src/validation/payload/InBlockPayloadValidationFunction.ts +16 -0
  219. package/src/validation/payload/error.ts +24 -0
  220. package/src/validation/payload/index.ts +2 -0
  221. package/src/validation/transaction/HydratedTransactionStateValidationFunction.ts +27 -0
  222. package/src/validation/transaction/HydratedTransactionValidationFunction.ts +23 -0
  223. package/src/validation/transaction/error.ts +16 -0
  224. package/src/validation/transaction/index.ts +3 -0
  225. package/src/viewers/Block.ts +40 -0
  226. package/src/viewers/BlockInvalidation.ts +81 -0
  227. package/src/viewers/BlockReward.ts +18 -0
  228. package/src/viewers/BlockValidation.ts +81 -0
  229. package/src/viewers/ChainContract.ts +28 -0
  230. package/src/viewers/ChainStakeViewer.ts +15 -0
  231. package/src/viewers/Finalization.ts +22 -0
  232. package/src/viewers/Fork.ts +10 -0
  233. package/src/viewers/Mempool.ts +40 -0
  234. package/src/viewers/NetworkStake/NetworkStakeViewer.ts +20 -0
  235. package/src/viewers/NetworkStake/Rewards/ByPositionViewer.ts +19 -0
  236. package/src/viewers/NetworkStake/Rewards/ByStakerViewer.ts +20 -0
  237. package/src/viewers/NetworkStake/Rewards/ByStepViewer.ts +18 -0
  238. package/src/viewers/NetworkStake/Rewards/Options.ts +22 -0
  239. package/src/viewers/NetworkStake/Rewards/TotalViewer.ts +17 -0
  240. package/src/viewers/NetworkStake/Rewards/Viewer.ts +22 -0
  241. package/src/viewers/NetworkStake/Rewards/index.ts +7 -0
  242. package/src/viewers/NetworkStake/Rewards/templates/ByIndexMethodsTemplate.ts +7 -0
  243. package/src/viewers/NetworkStake/Rewards/templates/MethodsTemplate.ts +10 -0
  244. package/src/viewers/NetworkStake/Rewards/templates/index.ts +2 -0
  245. package/src/viewers/NetworkStake/index.ts +4 -0
  246. package/src/viewers/NetworkStakeStepReward.ts +82 -0
  247. package/src/viewers/Stake.ts +44 -0
  248. package/src/viewers/StakeEvents.ts +54 -0
  249. package/src/viewers/StakeIntent.ts +21 -0
  250. package/src/viewers/StakeTotals.ts +21 -0
  251. package/src/viewers/StepStake.ts +26 -0
  252. package/src/viewers/StepViewer.ts +57 -0
  253. package/src/viewers/TimeSync.ts +27 -0
  254. package/src/viewers/Transaction.ts +27 -0
  255. package/src/viewers/TransactionInvalidation.ts +71 -0
  256. package/src/viewers/TransactionValidation.ts +72 -0
  257. package/src/viewers/TransferBalance.ts +35 -0
  258. package/src/viewers/WindowedBlock.ts +23 -0
  259. package/src/viewers/XyoViewer.ts +73 -0
  260. package/src/viewers/index.ts +23 -0
@@ -0,0 +1,21 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ BaseContext, ChainId, HydratedBlockWithHashMeta, XL1BlockNumber,
4
+ } from '@xyo-network/xl1-protocol-model'
5
+
6
+ import type { HydratedBlockValidationError } from './error.ts'
7
+
8
+ /** Context for HydratedBlockValidationFunction operations. */
9
+ export interface HydratedBlockValidationFunctionContext extends BaseContext {}
10
+
11
+ /**
12
+ * A function that validates a hydrated block.
13
+ * @param hydratedBlock The hydrated block to validate.
14
+ * @param chainIdAtBlockNumber A function to get the chain ID at a specific block number.
15
+ * @returns An array of errors if the block is invalid, or an empty array if it is valid.
16
+ */
17
+ export type HydratedBlockValidationFunction = (
18
+ context: HydratedBlockValidationFunctionContext,
19
+ hydratedBlock: HydratedBlockWithHashMeta,
20
+ chainIdAtBlockNumber?: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,
21
+ ) => Promisable<HydratedBlockValidationError[]>
@@ -0,0 +1,51 @@
1
+ import type { Hash } from '@xylabs/sdk-js'
2
+ import type {
3
+ BlockBoundWitness, ChainId, HydratedBlock,
4
+ } from '@xyo-network/xl1-protocol-model'
5
+
6
+ import { isValidationError, ValidationError } from '../error.ts'
7
+
8
+ /** Error thrown during Blockvalidation operations. */
9
+ export class BlockValidationError extends ValidationError<BlockBoundWitness> {}
10
+
11
+ /** Type guard that checks if a value is a valid BlockValidationError. */
12
+ export const isBlockValidationError = (
13
+ error: unknown,
14
+ ): error is BlockValidationError => {
15
+ if (!isValidationError(error)) return false
16
+ return (
17
+ error.name === BlockValidationError.constructor.name
18
+ )
19
+ }
20
+
21
+ /** Error thrown during HydratedBlockvalidation operations. */
22
+ export class HydratedBlockValidationError extends ValidationError<HydratedBlock> {}
23
+
24
+ /** Type guard that checks if a value is a valid HydratedBlockValidationError. */
25
+ export const isHydratedBlockValidationError = (
26
+ error: unknown,
27
+ ): error is HydratedBlockValidationError => {
28
+ if (!isValidationError(error)) return false
29
+ return (
30
+ error.name === HydratedBlockValidationError.constructor.name
31
+ )
32
+ }
33
+
34
+ /** Error thrown during HydratedBlockStatevalidation operations. */
35
+ export class HydratedBlockStateValidationError extends ValidationError<HydratedBlock> {
36
+ chainId: ChainId
37
+ constructor(hash: Hash, chainId: ChainId, value: HydratedBlock, message?: string, cause?: unknown) {
38
+ super(hash, value, message, cause)
39
+ this.chainId = chainId
40
+ }
41
+ }
42
+
43
+ /** Type guard that checks if a value is a valid HydratedBlockStateValidationError. */
44
+ export const isHydratedBlockStateValidationError = (
45
+ error: unknown,
46
+ ): error is HydratedBlockStateValidationError => {
47
+ if (!isValidationError(error)) return false
48
+ return (
49
+ error.name === HydratedBlockStateValidationError.constructor.name
50
+ )
51
+ }
@@ -0,0 +1,4 @@
1
+ export * from './BlockValidationFunction.ts'
2
+ export * from './error.ts'
3
+ export * from './HydratedBlockStateValidationFunction.ts'
4
+ export * from './HydratedBlockValidationFunction.ts'
@@ -0,0 +1,9 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type { BoundWitness } from '@xyo-network/sdk-js'
3
+
4
+ import type { BoundWitnessValidationError } from './error.ts'
5
+
6
+ /** Function type for BoundWitnessValidation operations. */
7
+ export type BoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (
8
+ bw: T,
9
+ ) => Promisable<BoundWitnessValidationError[]>
@@ -0,0 +1,15 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ BoundWitness, Payload, WithHashMeta,
4
+ } from '@xyo-network/sdk-js'
5
+
6
+ import type { HydratedBoundWitnessValidationError } from './error.ts'
7
+
8
+ /** Type representing a hydrated BoundWitnessWithHashMeta with resolved payloads. */
9
+ export type HydratedBoundWitnessWithHashMeta<T extends BoundWitness = BoundWitness, P extends Payload = Payload>
10
+ = [WithHashMeta<T>, WithHashMeta<P>[]]
11
+
12
+ /** Type representing a hydrated BoundWitnessValidationFunction with resolved payloads. */
13
+ export type HydratedBoundWitnessValidationFunction<T extends BoundWitness = BoundWitness> = (
14
+ bw: HydratedBoundWitnessWithHashMeta<T>,
15
+ ) => Promisable<HydratedBoundWitnessValidationError[]>
@@ -0,0 +1,29 @@
1
+ import type { BoundWitness, HydratedBoundWitness } from '@xyo-network/sdk-js'
2
+
3
+ import { isValidationError, ValidationError } from '../error.ts'
4
+
5
+ /** Error thrown during BoundWitnessvalidation operations. */
6
+ export class BoundWitnessValidationError extends ValidationError<BoundWitness> {}
7
+
8
+ /** Type guard that checks if a value is a valid BoundWitnessValidationError. */
9
+ export const isBoundWitnessValidationError = (
10
+ error: unknown,
11
+ ): error is BoundWitnessValidationError => {
12
+ if (!isValidationError(error)) return false
13
+ return (
14
+ error.name === BoundWitnessValidationError.constructor.name
15
+ )
16
+ }
17
+
18
+ /** Error thrown during HydratedBoundWitnessvalidation operations. */
19
+ export class HydratedBoundWitnessValidationError extends ValidationError<HydratedBoundWitness> {}
20
+
21
+ /** Type guard that checks if a value is a valid HydratedBoundWitnessValidationError. */
22
+ export const isHydratedBoundWitnessValidationError = (
23
+ error: unknown,
24
+ ): error is HydratedBoundWitnessValidationError => {
25
+ if (!isValidationError(error)) return false
26
+ return (
27
+ error.name === HydratedBoundWitnessValidationError.constructor.name
28
+ )
29
+ }
@@ -0,0 +1,3 @@
1
+ export * from './BoundWitnessValidationFunction.ts'
2
+ export * from './error.ts'
3
+ export * from './HydratedBoundWitnessValidationFunction.ts'
@@ -0,0 +1,25 @@
1
+ import { type Hash, isHash } from '@xylabs/sdk-js'
2
+ import { isError } from '@xylabs/sdk-js'
3
+ import type { Payload } from '@xyo-network/sdk-js'
4
+
5
+ /** Error thrown during validation operations. */
6
+ export class ValidationError<TValue = Payload> extends Error {
7
+ hash: Hash
8
+ value: TValue
9
+ constructor(hash: Hash, value: TValue, message?: string, cause?: unknown) {
10
+ super(message)
11
+ this.hash = hash
12
+ this.name = this.constructor.name
13
+ this.value = value
14
+ this.cause = cause
15
+ }
16
+ }
17
+
18
+ /** Type guard that checks if a value is a valid ValidationError. */
19
+ export const isValidationError = <TValue = Payload>(
20
+ error: unknown,
21
+ ): error is ValidationError<TValue> => {
22
+ return (
23
+ isError(error) && isHash((error as ValidationError<TValue>)?.hash) && (error as ValidationError<TValue>)?.value !== undefined
24
+ )
25
+ }
@@ -0,0 +1,5 @@
1
+ export * from './block/index.ts'
2
+ export * from './boundwitness/index.ts'
3
+ export * from './error.ts'
4
+ export * from './payload/index.ts'
5
+ export * from './transaction/index.ts'
@@ -0,0 +1,16 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
3
+ import type { BaseContext, HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol-model'
4
+
5
+ import type { InBlockPayloadValidationError } from './error.ts'
6
+
7
+ /** Context for InBlockPayloadValidationFunction operations. */
8
+ export interface InBlockPayloadValidationFunctionContext extends BaseContext {
9
+
10
+ }
11
+
12
+ /** Function type for InBlockPayloadValidation operations. */
13
+ export type InBlockPayloadValidationFunction = (
14
+ context: InBlockPayloadValidationFunctionContext,
15
+ payload: WithHashMeta<Payload>, block: HydratedBlockWithHashMeta,
16
+ ) => Promisable<InBlockPayloadValidationError[]>
@@ -0,0 +1,24 @@
1
+ import type { Hash } from '@xylabs/sdk-js'
2
+ import { type Payload } from '@xyo-network/sdk-js'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-protocol-model'
4
+
5
+ import { isValidationError, ValidationError } from '../error.ts'
6
+
7
+ /** Error thrown during InBlockPayloadvalidation operations. */
8
+ export class InBlockPayloadValidationError extends ValidationError<Payload> {
9
+ block: HydratedBlock
10
+ constructor(hash: Hash, block: HydratedBlock, value: Payload, message?: string, cause?: unknown) {
11
+ super(hash, value, message, cause)
12
+ this.block = block
13
+ }
14
+ }
15
+
16
+ /** Type guard that checks if a value is a valid InBlockPayloadValidationError. */
17
+ export const isInBlockPayloadValidationError = (
18
+ error: unknown,
19
+ ): error is InBlockPayloadValidationError => {
20
+ if (!isValidationError(error)) return false
21
+ return (
22
+ error.name === InBlockPayloadValidationError.constructor.name
23
+ )
24
+ }
@@ -0,0 +1,2 @@
1
+ export * from './error.ts'
2
+ export * from './InBlockPayloadValidationFunction.ts'
@@ -0,0 +1,27 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ AccountBalanceViewer,
4
+ BaseContext, ChainId,
5
+ HydratedTransactionWithHashMeta,
6
+ } from '@xyo-network/xl1-protocol-model'
7
+
8
+ import type { BlockViewer } from '../../viewers/index.ts'
9
+ import type { HydratedTransactionValidationError } from './error.ts'
10
+
11
+ /** Context for HydratedTransactionStateValidationFunction operations. */
12
+ export interface HydratedTransactionStateValidationFunctionContext extends BaseContext {
13
+ accountBalanceViewer: AccountBalanceViewer
14
+ blockViewer: BlockViewer
15
+ chainId: ChainId
16
+ }
17
+
18
+ /**
19
+ * A function that validates a hydrated transaction against chain state.
20
+ * @param context The context to use for validation.
21
+ * @param hydratedTransaction The hydrated transaction to validate.
22
+ * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.
23
+ */
24
+ export type HydratedTransactionStateValidationFunction = (
25
+ context: HydratedTransactionStateValidationFunctionContext,
26
+ hydratedTransaction: HydratedTransactionWithHashMeta,
27
+ ) => Promisable<HydratedTransactionValidationError[]>
@@ -0,0 +1,23 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ BaseContext, ChainId, HydratedTransactionWithHashMeta, StepIdentity,
4
+ } from '@xyo-network/xl1-protocol-model'
5
+
6
+ import type { HydratedTransactionValidationError } from './error.ts'
7
+
8
+ /** Context for HydratedTransactionValidationFunction operations. */
9
+ export interface HydratedTransactionValidationFunctionContext extends BaseContext {
10
+ chainId: ChainId
11
+ step?: StepIdentity
12
+ }
13
+
14
+ /**
15
+ * A function that validates a hydrated transaction.
16
+ * @param bw The hydrated transaction to validate.
17
+ * @param context The context to use for validation.
18
+ * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.
19
+ */
20
+ export type HydratedTransactionValidationFunction<TContext extends HydratedTransactionValidationFunctionContext = HydratedTransactionValidationFunctionContext> = (
21
+ context: TContext,
22
+ hydratedTransaction: HydratedTransactionWithHashMeta,
23
+ ) => Promisable<HydratedTransactionValidationError[]>
@@ -0,0 +1,16 @@
1
+ import type { HydratedTransaction } from '@xyo-network/xl1-protocol-model'
2
+
3
+ import { isValidationError, ValidationError } from '../error.ts'
4
+
5
+ /** Error thrown during HydratedTransactionvalidation operations. */
6
+ export class HydratedTransactionValidationError extends ValidationError<HydratedTransaction> {}
7
+
8
+ /** Type guard that checks if a value is a valid HydratedTransactionValidationError. */
9
+ export const isHydratedTransactionValidationError = (
10
+ error: unknown,
11
+ ): error is HydratedTransactionValidationError => {
12
+ if (!isValidationError(error)) return false
13
+ return (
14
+ error.name === HydratedTransactionValidationError.constructor.name
15
+ )
16
+ }
@@ -0,0 +1,3 @@
1
+ export * from './error.ts'
2
+ export * from './HydratedTransactionStateValidationFunction.ts'
3
+ export * from './HydratedTransactionValidationFunction.ts'
@@ -0,0 +1,40 @@
1
+ import type { Hash, Promisable } from '@xylabs/sdk-js'
2
+ import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
3
+ import type {
4
+ BlockRate, ChainId,
5
+ Provider, ProviderMoniker, SignedHydratedBlockWithHashMeta, SingleTimeConfig, TimeDurations, XL1BlockNumber, XL1BlockRange,
6
+ } from '@xyo-network/xl1-protocol-model'
7
+
8
+ /** BlockViewerMethods interface. */
9
+ export interface BlockViewerMethods {
10
+ blocksByHash(hash: Hash, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
11
+ blocksByNumber(block: XL1BlockNumber, limit?: number): Promisable<SignedHydratedBlockWithHashMeta[]>
12
+ currentBlock(): Promisable<SignedHydratedBlockWithHashMeta>
13
+ payloadsByHash(hashes: Hash[]): Promisable<WithHashMeta<Payload>[]>
14
+ }
15
+
16
+ /** Moniker identifier for the BlockViewer provider. */
17
+ export const BlockViewerMoniker = 'BlockViewer' as const
18
+ /** Type literal for the BlockViewer provider moniker. */
19
+ export type BlockViewerMoniker = typeof BlockViewerMoniker
20
+
21
+ /** Viewer interface for reading Block data. */
22
+ export interface BlockViewer<TMoniker extends ProviderMoniker = BlockViewerMoniker> extends BlockViewerMethods, Provider<TMoniker> {
23
+ blockByHash(hash: Hash): Promisable<SignedHydratedBlockWithHashMeta | null>
24
+ blockByNumber(block: XL1BlockNumber): Promisable<SignedHydratedBlockWithHashMeta | null>
25
+ chainId(): Promisable<ChainId>
26
+ chainId(blockNumber: XL1BlockNumber): Promisable<ChainId>
27
+ chainId(blockNumber: 'latest'): Promisable<ChainId>
28
+ currentBlockHash(): Promisable<Hash>
29
+ currentBlockNumber(): Promisable<XL1BlockNumber>
30
+ payloadByHash(hash: Hash): Promisable<WithHashMeta<Payload> | null>
31
+ rate(range: XL1BlockRange, timeUnit?: keyof TimeDurations): Promisable<BlockRate>
32
+ stepSizeRate(start: XL1BlockNumber, stepIndex: number, count?: number, timeUnit?: keyof TimeDurations): Promisable<BlockRate>
33
+ timeDurationRate(
34
+ timeConfig: SingleTimeConfig,
35
+ startBlockNumber?: XL1BlockNumber,
36
+ timeUnit?: keyof TimeDurations,
37
+ toleranceMs?: number,
38
+ maxAttempts?: number,
39
+ ): Promisable<BlockRate>
40
+ }
@@ -0,0 +1,81 @@
1
+ import { type Promisable } from '@xylabs/sdk-js'
2
+ import { zodIsFactory } from '@xylabs/sdk-js'
3
+ import type {
4
+ Provider, SignedHydratedBlock, SignedHydratedBlockWithHashMeta,
5
+ } from '@xyo-network/xl1-protocol-model'
6
+ import {
7
+ ChainQualificationZod, ChainQualifiedHeadConfigZod, ChainQualifiedRangeConfigZod,
8
+ } from '@xyo-network/xl1-protocol-model'
9
+ import { z } from 'zod'
10
+
11
+ import type { HydratedBlockValidationError } from '../validation/index.ts'
12
+
13
+ /** BlockInvalidationQualificationZod constant. */
14
+ export const BlockInvalidationQualificationZod = ChainQualificationZod
15
+ /** BlockInvalidationQualification type. */
16
+ export type BlockInvalidationQualification = z.infer<typeof BlockInvalidationQualificationZod>
17
+ /** Type guard that checks if a value is a valid BlockInvalidationQualification. */
18
+ export const isBlockInvalidationQualification = zodIsFactory(BlockInvalidationQualificationZod)
19
+
20
+ /** BlockInvalidationConfigFieldsZod constant. */
21
+ export const BlockInvalidationConfigFieldsZod = z.object({
22
+ state: z.boolean().optional(),
23
+ value: z.boolean().optional(),
24
+ })
25
+
26
+ /** BlockInvalidationConfigZod constant. */
27
+ export const BlockInvalidationConfigZod = z.union([
28
+ BlockInvalidationConfigFieldsZod.extend(ChainQualifiedHeadConfigZod.shape),
29
+ BlockInvalidationConfigFieldsZod.extend(ChainQualifiedRangeConfigZod.shape),
30
+ BlockInvalidationConfigFieldsZod,
31
+ z.object({}),
32
+ ])
33
+
34
+ /** BlockInvalidationConfig type. */
35
+ export type BlockInvalidationConfig = z.infer<typeof BlockInvalidationConfigZod>
36
+ /** Type guard that checks if a value is a valid BlockInvalidationConfig. */
37
+ export const isBlockInvalidationConfig = zodIsFactory(BlockInvalidationConfigZod)
38
+
39
+ /**
40
+ * Checks if blocks are invalid (impossible to ever become valid) according to protocol rules.
41
+ */
42
+
43
+ export interface BlockInvalidationViewerMethods {
44
+ qualifiedInvalidateBlocks(
45
+ blocks: SignedHydratedBlock[],
46
+ config?: BlockInvalidationConfig
47
+ ): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]>
48
+
49
+ qualifiedInvalidateUncle(
50
+ blocks: SignedHydratedBlock[],
51
+ config?: BlockInvalidationConfig
52
+ ): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockInvalidationQualification]>
53
+ }
54
+
55
+ /** Moniker identifier for the BlockInvalidationViewer provider. */
56
+ export const BlockInvalidationViewerMoniker = 'BlockInvalidationViewer' as const
57
+ /** Type literal for the BlockInvalidationViewer provider moniker. */
58
+ export type BlockInvalidationViewerMoniker = typeof BlockInvalidationViewerMoniker
59
+
60
+ /** Viewer interface for reading BlockInvalidation data. */
61
+ export interface BlockInvalidationViewer extends BlockInvalidationViewerMethods, Provider<BlockInvalidationViewerMoniker> {
62
+ invalidateBlock(
63
+ block: SignedHydratedBlock,
64
+ config?: BlockInvalidationConfig
65
+ ): Promisable<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>
66
+
67
+ invalidateBlocks(
68
+ blocks: SignedHydratedBlock[],
69
+ config?: BlockInvalidationConfig
70
+ ): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
71
+
72
+ invalidateUncle(
73
+ blocks: SignedHydratedBlock[],
74
+ config?: BlockInvalidationConfig
75
+ ): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
76
+
77
+ qualifiedInvalidateBlock(
78
+ block: SignedHydratedBlock,
79
+ config?: BlockInvalidationConfig
80
+ ): Promisable<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockInvalidationQualification]>
81
+ }
@@ -0,0 +1,18 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ AttoXL1, Provider, XL1BlockNumber,
4
+ } from '@xyo-network/xl1-protocol-model'
5
+
6
+ /** BlockRewardViewerMethods interface. */
7
+ export interface BlockRewardViewerMethods {
8
+ // The amount of xl1 to send to the producer from the block reward
9
+ allowedRewardForBlock(block: XL1BlockNumber): Promisable<AttoXL1>
10
+ }
11
+
12
+ /** Moniker identifier for the BlockRewardViewer provider. */
13
+ export const BlockRewardViewerMoniker = 'BlockRewardViewer' as const
14
+ /** Type literal for the BlockRewardViewer provider moniker. */
15
+ export type BlockRewardViewerMoniker = typeof BlockRewardViewerMoniker
16
+
17
+ /** Viewer interface for reading BlockReward data. */
18
+ export interface BlockRewardViewer extends BlockRewardViewerMethods, Provider<BlockRewardViewerMoniker> {}
@@ -0,0 +1,81 @@
1
+ import { type Promisable } from '@xylabs/sdk-js'
2
+ import { zodIsFactory } from '@xylabs/sdk-js'
3
+ import type {
4
+ Provider, SignedHydratedBlock, SignedHydratedBlockWithHashMeta,
5
+ } from '@xyo-network/xl1-protocol-model'
6
+ import {
7
+ ChainQualificationZod, ChainQualifiedHeadConfigZod, ChainQualifiedRangeConfigZod,
8
+ } from '@xyo-network/xl1-protocol-model'
9
+ import { z } from 'zod'
10
+
11
+ import type { HydratedBlockValidationError } from '../validation/index.ts'
12
+
13
+ /** BlockValidationQualificationZod constant. */
14
+ export const BlockValidationQualificationZod = ChainQualificationZod
15
+ /** BlockValidationQualification type. */
16
+ export type BlockValidationQualification = z.infer<typeof BlockValidationQualificationZod>
17
+ /** Type guard that checks if a value is a valid BlockValidationQualification. */
18
+ export const isBlockValidationQualification = zodIsFactory(BlockValidationQualificationZod)
19
+
20
+ /** BlockValidationConfigFieldsZod constant. */
21
+ export const BlockValidationConfigFieldsZod = z.object({
22
+ value: z.boolean().optional(),
23
+ state: z.boolean().optional(),
24
+ })
25
+
26
+ /** BlockValidationConfigZod constant. */
27
+ export const BlockValidationConfigZod = z.union([
28
+ BlockValidationConfigFieldsZod.extend(ChainQualifiedHeadConfigZod.shape),
29
+ BlockValidationConfigFieldsZod.extend(ChainQualifiedRangeConfigZod.shape),
30
+ BlockValidationConfigFieldsZod,
31
+ z.object({}),
32
+ ])
33
+
34
+ /** BlockValidationConfig type. */
35
+ export type BlockValidationConfig = z.infer<typeof BlockValidationConfigZod>
36
+ /** Type guard that checks if a value is a valid BlockValidationConfig. */
37
+ export const isBlockValidationConfig = zodIsFactory(BlockValidationConfigZod)
38
+
39
+ /** BlockValidationViewerMethods interface. */
40
+ export interface BlockValidationViewerMethods {
41
+ qualifiedValidateBlocks(
42
+ blocks: SignedHydratedBlock[],
43
+ config?: BlockValidationConfig
44
+ ): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockValidationQualification]>
45
+
46
+ qualifiedValidateUncle(
47
+ blocks: SignedHydratedBlock[],
48
+ config?: BlockValidationConfig
49
+ ): Promisable<[(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[], BlockValidationQualification]>
50
+ }
51
+
52
+ /** Moniker identifier for the BlockValidationViewer provider. */
53
+ export const BlockValidationViewerMoniker = 'BlockValidationViewer' as const
54
+ /** Type literal for the BlockValidationViewer provider moniker. */
55
+ export type BlockValidationViewerMoniker = typeof BlockValidationViewerMoniker
56
+
57
+ /**
58
+ * Checks if blocks are valid (currently valid) according to protocol rules. In the case that they are not valid, they may still become valid in the future.
59
+ */
60
+
61
+ export interface BlockValidationViewer extends BlockValidationViewerMethods, Provider<BlockValidationViewerMoniker> {
62
+ qualifiedValidateBlock(
63
+ block: SignedHydratedBlock,
64
+ config?: BlockValidationConfig
65
+ ): Promisable<[HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta, BlockValidationQualification]>
66
+
67
+ validateBlock(
68
+ block: SignedHydratedBlock,
69
+ config?: BlockValidationConfig
70
+ ): Promisable<HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta>
71
+
72
+ validateBlocks(
73
+ blocks: SignedHydratedBlock[],
74
+ config?: BlockValidationConfig
75
+ ): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
76
+
77
+ validateUncle(
78
+ blocks: SignedHydratedBlock[],
79
+ config?: BlockValidationConfig
80
+ ): Promisable<(HydratedBlockValidationError[] | SignedHydratedBlockWithHashMeta)[]>
81
+ }
@@ -0,0 +1,28 @@
1
+ import type {
2
+ Address, Hash, Promisable,
3
+ } from '@xylabs/sdk-js'
4
+ import type {
5
+ ChainId, Provider, XL1BlockNumber,
6
+ } from '@xyo-network/xl1-protocol-model'
7
+
8
+ /** ChainContractViewerMethods interface. */
9
+ export interface ChainContractViewerMethods {
10
+ chainId(): Promisable<ChainId>
11
+ forkedAtBlockNumber(): Promisable<XL1BlockNumber | null>
12
+ forkedAtHash(): Promisable<Hash | null>
13
+ forkedChainId(): Promisable<ChainId | null>
14
+ minWithdrawalBlocks(): Promisable<number>
15
+ rewardsContract(): Promisable<Address>
16
+ stakingTokenAddress(): Promisable<Address>
17
+ }
18
+
19
+ /** Moniker identifier for the ChainContractViewer provider. */
20
+ export const ChainContractViewerMoniker = 'ChainContractViewer' as const
21
+ /** Type literal for the ChainContractViewer provider moniker. */
22
+ export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker
23
+
24
+ /** Viewer interface for reading ChainContract data. */
25
+ export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
26
+ chainIdAtBlockNumber(blockNumber: XL1BlockNumber | 'latest'): Promisable<ChainId>
27
+ forkedChainContractViewer(): Promisable<ChainContractViewer | null>
28
+ }
@@ -0,0 +1,15 @@
1
+ import type { Provider } from '@xyo-network/xl1-protocol-model'
2
+
3
+ import type { ChainContractViewer } from './ChainContract.ts'
4
+ import type { StakeTotalsViewer } from './StakeTotals.ts'
5
+
6
+ /** Moniker identifier for the ChainStakeViewer provider. */
7
+ export const ChainStakeViewerMoniker = 'ChainStakeViewer' as const
8
+ /** Type literal for the ChainStakeViewer provider moniker. */
9
+ export type ChainStakeViewerMoniker = typeof ChainStakeViewerMoniker
10
+
11
+ /** Viewer interface for reading ChainStake data. */
12
+ export interface ChainStakeViewer extends Omit<ChainContractViewer, 'moniker'>, Omit<StakeTotalsViewer, 'moniker'>,
13
+ Provider<ChainStakeViewerMoniker> {
14
+
15
+ }
@@ -0,0 +1,22 @@
1
+ import type { Hash, Promisable } from '@xylabs/sdk-js'
2
+ import type {
3
+ ChainId, Provider, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
4
+ } from '@xyo-network/xl1-protocol-model'
5
+
6
+ /** FinalizationViewerMethods interface. */
7
+ export interface FinalizationViewerMethods {
8
+ head(): Promisable<SignedHydratedBlockWithHashMeta>
9
+ }
10
+
11
+ /** Moniker identifier for the FinalizationViewer provider. */
12
+ export const FinalizationViewerMoniker = 'FinalizationViewer' as const
13
+ /** Type literal for the FinalizationViewer provider moniker. */
14
+ export type FinalizationViewerMoniker = typeof FinalizationViewerMoniker
15
+
16
+ /** Viewer interface for reading Finalization data. */
17
+ export interface FinalizationViewer extends FinalizationViewerMethods, Provider<FinalizationViewerMoniker> {
18
+ chainId(): Promisable<ChainId>
19
+ headBlock(): Promisable<SignedBlockBoundWitnessWithHashMeta>
20
+ headHash(): Promisable<Hash>
21
+ headNumber(): Promisable<XL1BlockNumber>
22
+ }
@@ -0,0 +1,10 @@
1
+ import type { Promisable } from '@xylabs/sdk-js'
2
+ import type { ChainId } from '@xyo-network/xl1-protocol-model'
3
+
4
+ /** ForkHistory type. */
5
+ export type ForkHistory = Record<number, ChainId>
6
+
7
+ /** ForkViewerMethods interface. */
8
+ export interface ForkViewerMethods {
9
+ forkHistory(): Promisable<ForkHistory>
10
+ }
@@ -0,0 +1,40 @@
1
+ import { HashZod } from '@xylabs/sdk-js'
2
+ import type {
3
+ Provider, SignedHydratedBlockWithHashMeta, SignedHydratedTransactionWithHashMeta,
4
+ } from '@xyo-network/xl1-protocol-model'
5
+ import { XL1BlockRangeZod } from '@xyo-network/xl1-protocol-model'
6
+ import { z } from 'zod'
7
+
8
+ /** PendingTransactionsOptionsZod constant. */
9
+ export const PendingTransactionsOptionsZod = z.object({
10
+ cursor: HashZod.optional(),
11
+ limit: z.number().int().positive().optional(),
12
+ window: XL1BlockRangeZod.optional(),
13
+ })
14
+
15
+ /** PendingTransactionsOptions type. */
16
+ export type PendingTransactionsOptions = z.infer<typeof PendingTransactionsOptionsZod>
17
+
18
+ /** PendingBlocksOptionsZod constant. */
19
+ export const PendingBlocksOptionsZod = z.object({
20
+ cursor: HashZod.optional(),
21
+ limit: z.number().int().positive().optional(),
22
+ window: XL1BlockRangeZod.optional(),
23
+ })
24
+
25
+ /** PendingBlocksOptions type. */
26
+ export type PendingBlocksOptions = z.infer<typeof PendingBlocksOptionsZod>
27
+
28
+ /** MempoolViewerMethods interface. */
29
+ export interface MempoolViewerMethods {
30
+ pendingBlocks(options?: PendingBlocksOptions): Promise<SignedHydratedBlockWithHashMeta[]>
31
+ pendingTransactions(options?: PendingTransactionsOptions): Promise<SignedHydratedTransactionWithHashMeta[]>
32
+ }
33
+
34
+ /** Moniker identifier for the MempoolViewer provider. */
35
+ export const MempoolViewerMoniker = 'MempoolViewer' as const
36
+ /** Type literal for the MempoolViewer provider moniker. */
37
+ export type MempoolViewerMoniker = typeof MempoolViewerMoniker
38
+
39
+ /** Viewer interface for reading Mempool data. */
40
+ export interface MempoolViewer extends MempoolViewerMethods, Provider<MempoolViewerMoniker> {}