@xyo-network/xl1-protocol-sdk 1.17.7 → 1.18.0-rc.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 (255) hide show
  1. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts +103 -1
  2. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts.map +1 -1
  3. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts +25 -8
  4. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts.map +1 -1
  5. package/dist/neutral/CreatableProvider/CreatableProviderRegistry.d.ts.map +1 -1
  6. package/dist/neutral/CreatableProvider/ProviderFactory.d.ts +11 -3
  7. package/dist/neutral/CreatableProvider/ProviderFactory.d.ts.map +1 -1
  8. package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts +19 -13
  9. package/dist/neutral/CreatableProvider/ProviderFactoryLocator.d.ts.map +1 -1
  10. package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts +14 -10
  11. package/dist/neutral/CreatableProvider/ProviderFactoryLocatorInstance.d.ts.map +1 -1
  12. package/dist/neutral/config/Bridge.d.ts +3 -0
  13. package/dist/neutral/config/Bridge.d.ts.map +1 -1
  14. package/dist/neutral/config/Chain.d.ts +1 -1
  15. package/dist/neutral/config/Config.d.ts +6 -3
  16. package/dist/neutral/config/Config.d.ts.map +1 -1
  17. package/dist/neutral/config/Log.d.ts +1 -1
  18. package/dist/neutral/createDeclarationPayload.d.ts +4 -0
  19. package/dist/neutral/createDeclarationPayload.d.ts.map +1 -0
  20. package/dist/neutral/createTransferPayload.d.ts +4 -0
  21. package/dist/neutral/createTransferPayload.d.ts.map +1 -0
  22. package/dist/neutral/driver/cache/LruCacheMap.d.ts +2 -2
  23. package/dist/neutral/driver/cache/LruCacheMap.d.ts.map +1 -1
  24. package/dist/neutral/driver/memory/MemoryMap.d.ts +2 -2
  25. package/dist/neutral/driver/memory/MemoryMap.d.ts.map +1 -1
  26. package/dist/neutral/index.d.ts +3 -0
  27. package/dist/neutral/index.d.ts.map +1 -1
  28. package/dist/neutral/index.mjs +1584 -655
  29. package/dist/neutral/index.mjs.map +1 -1
  30. package/dist/neutral/map/MapType.d.ts +3 -2
  31. package/dist/neutral/map/MapType.d.ts.map +1 -1
  32. package/dist/neutral/model/ChainContext/ChainContext.d.ts +4 -4
  33. package/dist/neutral/model/ChainContext/ChainContext.d.ts.map +1 -1
  34. package/dist/neutral/model/PayloadBundle/bundledPayloadToHydratedTransaction.d.ts +2 -2
  35. package/dist/neutral/model/PayloadBundle/bundledPayloadToHydratedTransaction.d.ts.map +1 -1
  36. package/dist/neutral/primitives/block/index.d.ts +2 -0
  37. package/dist/neutral/primitives/block/index.d.ts.map +1 -0
  38. package/dist/neutral/primitives/block/range/blockRangeSteps.d.ts +3 -0
  39. package/dist/neutral/primitives/block/range/blockRangeSteps.d.ts.map +1 -0
  40. package/dist/neutral/primitives/block/range/index.d.ts +2 -0
  41. package/dist/neutral/primitives/block/range/index.d.ts.map +1 -0
  42. package/dist/neutral/primitives/chain/index.d.ts +3 -0
  43. package/dist/neutral/primitives/chain/index.d.ts.map +1 -0
  44. package/dist/neutral/primitives/chain/step/chainStepRewardAddress.d.ts +5 -0
  45. package/dist/neutral/primitives/chain/step/chainStepRewardAddress.d.ts.map +1 -0
  46. package/dist/neutral/primitives/chain/step/index.d.ts +5 -0
  47. package/dist/neutral/primitives/chain/step/index.d.ts.map +1 -0
  48. package/dist/neutral/primitives/chain/step/stepRewardBlock.d.ts +4 -0
  49. package/dist/neutral/primitives/chain/step/stepRewardBlock.d.ts.map +1 -0
  50. package/dist/neutral/primitives/chain/step/stepRewardTotal.d.ts +4 -0
  51. package/dist/neutral/primitives/chain/step/stepRewardTotal.d.ts.map +1 -0
  52. package/dist/neutral/primitives/chain/step/stepsRewardTotal.d.ts +6 -0
  53. package/dist/neutral/primitives/chain/step/stepsRewardTotal.d.ts.map +1 -0
  54. package/dist/neutral/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.d.ts +5 -0
  55. package/dist/neutral/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.d.ts.map +1 -0
  56. package/dist/neutral/primitives/chain/time/externalBlockRangeFromStep.d.ts +5 -0
  57. package/dist/neutral/primitives/chain/time/externalBlockRangeFromStep.d.ts.map +1 -0
  58. package/dist/neutral/primitives/chain/time/externalBlockRangeFromXL1BlockRange.d.ts +5 -0
  59. package/dist/neutral/primitives/chain/time/externalBlockRangeFromXL1BlockRange.d.ts.map +1 -0
  60. package/dist/neutral/primitives/chain/time/index.d.ts +4 -0
  61. package/dist/neutral/primitives/chain/time/index.d.ts.map +1 -0
  62. package/dist/neutral/primitives/index.d.ts +6 -0
  63. package/dist/neutral/primitives/index.d.ts.map +1 -1
  64. package/dist/neutral/primitives/mapToMapType.d.ts +3 -0
  65. package/dist/neutral/primitives/mapToMapType.d.ts.map +1 -0
  66. package/dist/neutral/primitives/payload/index.d.ts +2 -0
  67. package/dist/neutral/primitives/payload/index.d.ts.map +1 -0
  68. package/dist/neutral/primitives/payload/mergeTransfers.d.ts +4 -0
  69. package/dist/neutral/primitives/payload/mergeTransfers.d.ts.map +1 -0
  70. package/dist/neutral/primitives/readPayloadMapFromStore.d.ts +5 -4
  71. package/dist/neutral/primitives/readPayloadMapFromStore.d.ts.map +1 -1
  72. package/dist/neutral/primitives/rewards/index.d.ts +2 -0
  73. package/dist/neutral/primitives/rewards/index.d.ts.map +1 -0
  74. package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts +5 -0
  75. package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts.map +1 -0
  76. package/dist/neutral/primitives/stake/activeStakeAtTimeByAddress.d.ts +4 -0
  77. package/dist/neutral/primitives/stake/activeStakeAtTimeByAddress.d.ts.map +1 -0
  78. package/dist/neutral/primitives/stake/activeStakeAtTimeByPosition.d.ts +3 -0
  79. package/dist/neutral/primitives/stake/activeStakeAtTimeByPosition.d.ts.map +1 -0
  80. package/dist/neutral/primitives/stake/allStakersForRange.d.ts +4 -0
  81. package/dist/neutral/primitives/stake/allStakersForRange.d.ts.map +1 -0
  82. package/dist/neutral/primitives/stake/allStakersForStep.d.ts +6 -0
  83. package/dist/neutral/primitives/stake/allStakersForStep.d.ts.map +1 -0
  84. package/dist/neutral/primitives/stake/index.d.ts +7 -0
  85. package/dist/neutral/primitives/stake/index.d.ts.map +1 -0
  86. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByPosition.d.ts +3 -0
  87. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByPosition.d.ts.map +1 -0
  88. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByStaker.d.ts +4 -0
  89. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByStaker.d.ts.map +1 -0
  90. package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts +6 -0
  91. package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts.map +1 -0
  92. package/dist/neutral/provider/DataLake.d.ts +10 -9
  93. package/dist/neutral/provider/DataLake.d.ts.map +1 -1
  94. package/dist/neutral/provider/XyoConnection.d.ts +4 -1
  95. package/dist/neutral/provider/XyoConnection.d.ts.map +1 -1
  96. package/dist/neutral/provider/XyoGatewayRunner.d.ts +3 -3
  97. package/dist/neutral/provider/XyoGatewayRunner.d.ts.map +1 -1
  98. package/dist/neutral/provider/XyoRunner.d.ts +5 -2
  99. package/dist/neutral/provider/XyoRunner.d.ts.map +1 -1
  100. package/dist/neutral/provider/viewer/XyoViewer.d.ts +9 -8
  101. package/dist/neutral/provider/viewer/XyoViewer.d.ts.map +1 -1
  102. package/dist/neutral/runners/Block.d.ts +7 -2
  103. package/dist/neutral/runners/Block.d.ts.map +1 -1
  104. package/dist/neutral/runners/Mempool.d.ts +4 -1
  105. package/dist/neutral/runners/Mempool.d.ts.map +1 -1
  106. package/dist/neutral/services/Chain/ChainService.d.ts +2 -2
  107. package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -1
  108. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +5 -12
  109. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
  110. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +9 -6
  111. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
  112. package/dist/neutral/simple/chainStake/{SimpleChainStakeViewer.d.ts → SimpleStakeViewer.d.ts} +3 -5
  113. package/dist/neutral/simple/chainStake/SimpleStakeViewer.d.ts.map +1 -0
  114. package/dist/neutral/simple/chainStake/index.d.ts +1 -1
  115. package/dist/neutral/simple/chainStake/index.d.ts.map +1 -1
  116. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts +5 -2
  117. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts.map +1 -1
  118. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +4 -3
  119. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts.map +1 -1
  120. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts +0 -3
  121. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts.map +1 -1
  122. package/dist/neutral/simple/index.d.ts +1 -0
  123. package/dist/neutral/simple/index.d.ts.map +1 -1
  124. package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts +8 -4
  125. package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts.map +1 -1
  126. package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts.map +1 -1
  127. package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts +24 -6
  128. package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts.map +1 -1
  129. package/dist/neutral/simple/{chainStakeEvents/SimpleChainStakeEventsViewer.d.ts → stakeEvents/SimpleStakeEventsViewer.d.ts} +3 -3
  130. package/dist/neutral/simple/stakeEvents/SimpleStakeEventsViewer.d.ts.map +1 -0
  131. package/dist/neutral/simple/stakeEvents/index.d.ts +2 -0
  132. package/dist/neutral/simple/stakeEvents/index.d.ts.map +1 -0
  133. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts +4 -3
  134. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts.map +1 -1
  135. package/dist/neutral/status/RuntimeStatusMonitor.d.ts +31 -0
  136. package/dist/neutral/status/RuntimeStatusMonitor.d.ts.map +1 -0
  137. package/dist/neutral/status/ServiceStatus.d.ts +8 -0
  138. package/dist/neutral/status/ServiceStatus.d.ts.map +1 -0
  139. package/dist/neutral/status/index.d.ts +3 -0
  140. package/dist/neutral/status/index.d.ts.map +1 -0
  141. package/dist/neutral/summary/model/summary.d.ts +4 -4
  142. package/dist/neutral/summary/model/summary.d.ts.map +1 -1
  143. package/dist/neutral/summary/primitives/balances/balancesStepSummaryFromRange.d.ts +1 -1
  144. package/dist/neutral/summary/primitives/balances/balancesStepSummaryFromRange.d.ts.map +1 -1
  145. package/dist/neutral/transaction/TransactionBuilder.d.ts +82 -0
  146. package/dist/neutral/transaction/TransactionBuilder.d.ts.map +1 -0
  147. package/dist/neutral/transaction/buildRandomTransaction.d.ts +6 -0
  148. package/dist/neutral/transaction/buildRandomTransaction.d.ts.map +1 -0
  149. package/dist/neutral/transaction/index.d.ts +2 -0
  150. package/dist/neutral/transaction/index.d.ts.map +1 -1
  151. package/dist/neutral/viewers/Block.d.ts +4 -1
  152. package/dist/neutral/viewers/Block.d.ts.map +1 -1
  153. package/dist/neutral/viewers/ChainStakeViewer.d.ts +1 -2
  154. package/dist/neutral/viewers/ChainStakeViewer.d.ts.map +1 -1
  155. package/dist/neutral/viewers/Fork.d.ts +0 -1
  156. package/dist/neutral/viewers/Fork.d.ts.map +1 -1
  157. package/dist/neutral/viewers/Stake.d.ts +0 -1
  158. package/dist/neutral/viewers/Stake.d.ts.map +1 -1
  159. package/dist/neutral/viewers/index.d.ts +0 -1
  160. package/dist/neutral/viewers/index.d.ts.map +1 -1
  161. package/package.json +9 -7
  162. package/src/CreatableProvider/AbstractCreatableProvider.ts +44 -3
  163. package/src/CreatableProvider/CreatableProvider.ts +36 -9
  164. package/src/CreatableProvider/CreatableProviderRegistry.ts +9 -5
  165. package/src/CreatableProvider/ProviderFactory.ts +72 -10
  166. package/src/CreatableProvider/ProviderFactoryLocator.ts +78 -19
  167. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +33 -10
  168. package/src/config/Bridge.ts +22 -4
  169. package/src/config/Chain.ts +2 -2
  170. package/src/createDeclarationPayload.ts +14 -0
  171. package/src/createTransferPayload.ts +15 -0
  172. package/src/driver/cache/LruCacheMap.ts +2 -2
  173. package/src/driver/memory/MemoryMap.ts +2 -2
  174. package/src/index.ts +3 -0
  175. package/src/map/MapType.ts +4 -2
  176. package/src/model/ChainContext/ChainContext.ts +4 -4
  177. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +2 -2
  178. package/src/primitives/block/index.ts +1 -0
  179. package/src/primitives/block/range/blockRangeSteps.ts +22 -0
  180. package/src/primitives/block/range/index.ts +1 -0
  181. package/src/primitives/chain/index.ts +2 -0
  182. package/src/primitives/chain/step/chainStepRewardAddress.ts +28 -0
  183. package/src/primitives/chain/step/index.ts +4 -0
  184. package/src/primitives/chain/step/stepRewardBlock.ts +11 -0
  185. package/src/primitives/chain/step/stepRewardTotal.ts +45 -0
  186. package/src/primitives/chain/step/stepsRewardTotal.ts +34 -0
  187. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +31 -0
  188. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +19 -0
  189. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +16 -0
  190. package/src/primitives/chain/time/index.ts +3 -0
  191. package/src/primitives/index.ts +6 -0
  192. package/src/primitives/mapToMapType.ts +35 -0
  193. package/src/primitives/payload/index.ts +1 -0
  194. package/src/primitives/payload/mergeTransfers.ts +15 -0
  195. package/src/primitives/readPayloadMapFromStore.ts +38 -8
  196. package/src/primitives/rewards/index.ts +1 -0
  197. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +21 -0
  198. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +26 -0
  199. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +24 -0
  200. package/src/primitives/stake/allStakersForRange.ts +31 -0
  201. package/src/primitives/stake/allStakersForStep.ts +22 -0
  202. package/src/primitives/stake/index.ts +6 -0
  203. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +14 -0
  204. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +17 -0
  205. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +54 -0
  206. package/src/provider/DataLake.ts +12 -11
  207. package/src/provider/XyoConnection.ts +5 -1
  208. package/src/provider/XyoGatewayRunner.ts +3 -3
  209. package/src/provider/XyoRunner.ts +6 -2
  210. package/src/provider/viewer/XyoViewer.ts +9 -8
  211. package/src/runners/Block.ts +10 -2
  212. package/src/runners/Mempool.ts +6 -1
  213. package/src/services/Chain/ChainService.ts +2 -4
  214. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +21 -14
  215. package/src/simple/block/SimpleBlockViewer.ts +47 -14
  216. package/src/simple/chainStake/{SimpleChainStakeViewer.ts → SimpleStakeViewer.ts} +11 -16
  217. package/src/simple/chainStake/index.ts +1 -1
  218. package/src/simple/datalake/AbstractSimpleDataLake.ts +17 -17
  219. package/src/simple/datalake/SimpleDataLakeRunner.ts +4 -3
  220. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -18
  221. package/src/simple/index.ts +1 -0
  222. package/src/simple/mempool/SimpleMempoolRunner.ts +13 -8
  223. package/src/simple/mempool/SimpleMempoolViewer.ts +6 -1
  224. package/src/simple/runner/SimpleXyoRunner.ts +41 -16
  225. package/src/simple/{chainStakeEvents/SimpleChainStakeEventsViewer.ts → stakeEvents/SimpleStakeEventsViewer.ts} +5 -5
  226. package/src/simple/stakeEvents/index.ts +1 -0
  227. package/src/simple/timesync/SimpleTimeSyncViewer.ts +26 -5
  228. package/src/status/RuntimeStatusMonitor.ts +117 -0
  229. package/src/status/ServiceStatus.ts +20 -0
  230. package/src/status/index.ts +2 -0
  231. package/src/summary/model/summary.ts +6 -4
  232. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +2 -3
  233. package/src/transaction/TransactionBuilder.ts +162 -0
  234. package/src/transaction/buildRandomTransaction.ts +36 -0
  235. package/src/transaction/hydrateTransaction.ts +1 -1
  236. package/src/transaction/index.ts +2 -0
  237. package/src/viewers/Block.ts +6 -1
  238. package/src/viewers/ChainStakeViewer.ts +1 -2
  239. package/src/viewers/Fork.ts +0 -1
  240. package/src/viewers/Stake.ts +0 -1
  241. package/src/viewers/index.ts +0 -1
  242. package/dist/neutral/simple/chain/SimpleChainViewer.d.ts +0 -15
  243. package/dist/neutral/simple/chain/SimpleChainViewer.d.ts.map +0 -1
  244. package/dist/neutral/simple/chain/index.d.ts +0 -2
  245. package/dist/neutral/simple/chain/index.d.ts.map +0 -1
  246. package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts.map +0 -1
  247. package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts.map +0 -1
  248. package/dist/neutral/simple/chainStakeEvents/index.d.ts +0 -2
  249. package/dist/neutral/simple/chainStakeEvents/index.d.ts.map +0 -1
  250. package/dist/neutral/viewers/Chain.d.ts +0 -11
  251. package/dist/neutral/viewers/Chain.d.ts.map +0 -1
  252. package/src/simple/chain/SimpleChainViewer.ts +0 -28
  253. package/src/simple/chain/index.ts +0 -1
  254. package/src/simple/chainStakeEvents/index.ts +0 -1
  255. package/src/viewers/Chain.ts +0 -13
@@ -0,0 +1,20 @@
1
+ import type {
2
+ CreatableName, CreatableStatus, CreatableStatusReporter, Logger,
3
+ } from '@xylabs/sdk-js'
4
+
5
+ export class LoggerStatusReporter implements CreatableStatusReporter {
6
+ protected logger: Logger
7
+
8
+ protected statusMap: Record<CreatableName, CreatableStatus> = {}
9
+
10
+ constructor(logger: Logger) {
11
+ this.logger = logger
12
+ }
13
+
14
+ report(name: CreatableName, status: CreatableStatus, progress?: number | Error): void {
15
+ this.statusMap[name] = status
16
+ const starting = (Object.entries(this.statusMap).map(([, value]): number => value === 'starting' ? 1 : 0)).reduce((a, b) => a + b, 0)
17
+ const started = (Object.entries(this.statusMap).map(([, value]): number => value === 'started' ? 1 : 0)).reduce((a, b) => a + b, 0)
18
+ this.logger.info(`${started}/${starting + started} ${name} status: ${status}`, { progress })
19
+ }
20
+ }
@@ -0,0 +1,2 @@
1
+ export * from './RuntimeStatusMonitor.ts'
2
+ export * from './ServiceStatus.ts'
@@ -1,14 +1,16 @@
1
1
  import type { Payload } from '@xyo-network/payload-model'
2
2
  import type { Semaphore } from 'async-mutex'
3
3
 
4
- import type { MapTypeRead, MapTypeWrite } from '../../map/index.ts'
5
- import type { BaseContext, ChainContextRead } from '../../model/index.ts'
4
+ import type { MapType, MapTypeRead } from '../../map/index.ts'
5
+ import type {
6
+ BaseContext, ChainContext, ChainContextRead,
7
+ } from '../../model/index.ts'
6
8
  import type {
7
9
  BalancesStepSummary, SchemasStepSummary, TransfersStepSummary,
8
10
  } from './index.ts'
9
11
 
10
12
  export interface ChainSummaryContextBase<TPayload extends Payload,
11
- T extends (MapTypeRead<string, TPayload> | MapTypeWrite<string, TPayload>)> extends BaseContext {
13
+ T extends (MapTypeRead<string, TPayload>)> extends BaseContext {
12
14
  stepSemaphores: Semaphore[]
13
15
  summaryMap: T
14
16
  windowSize?: number
@@ -16,7 +18,7 @@ export interface ChainSummaryContextBase<TPayload extends Payload,
16
18
 
17
19
  export interface ChainSummaryContextRead<T extends Payload> extends ChainSummaryContextBase<T, MapTypeRead<string, T>>, ChainContextRead {}
18
20
 
19
- export interface ChainSummaryContextWrite<T extends Payload> extends ChainSummaryContextBase<T, MapTypeWrite<string, T>>, ChainContextRead {}
21
+ export interface ChainSummaryContextWrite<T extends Payload> extends ChainSummaryContextBase<T, MapType<string, T>>, ChainContext {}
20
22
 
21
23
  export type ChainSummaryContext<T extends Payload> = ChainSummaryContextRead<T> & ChainSummaryContextWrite<T>
22
24
 
@@ -15,9 +15,8 @@ import { netBalancesForPayloads } from '../../../payloads/index.ts'
15
15
  import {
16
16
  parseSignedBigInt, type SignedBigInt, toSignedBigInt,
17
17
  } from '../../../SignedBigInt.ts'
18
- import {
19
- type BalancesStepSummary, BalancesStepSummarySchema, type BalanceStepSummaryContext,
20
- } from '../../model/index.ts'
18
+ import type { BalancesStepSummary, BalanceStepSummaryContext } from '../../model/index.ts'
19
+ import { BalancesStepSummarySchema } from '../../model/index.ts'
21
20
 
22
21
  export async function balancesStepSummaryFromRange(
23
22
  context: BalanceStepSummaryContext,
@@ -0,0 +1,162 @@
1
+ import type { Hex } from '@xylabs/sdk-js'
2
+ import { assertEx, Base } from '@xylabs/sdk-js'
3
+ import type { AccountInstance } from '@xyo-network/account-model'
4
+ import { PayloadBuilder, type PayloadBuilderOptions } from '@xyo-network/payload-builder'
5
+ import type { Payload } from '@xyo-network/payload-model'
6
+ import type {
7
+ AllowedBlockPayload,
8
+ ChainId,
9
+ TransactionFeesBigInt,
10
+ } from '@xyo-network/xl1-protocol'
11
+ import {
12
+ asXL1BlockNumber,
13
+ defaultTransactionFees, isAllowedBlockPayload, minTransactionFees, XYO_ZERO_ADDRESS,
14
+ } from '@xyo-network/xl1-protocol'
15
+
16
+ import { buildTransaction } from './buildTransaction.ts'
17
+ import { transactionRequiredGas } from './primitives/index.ts'
18
+
19
+ export class TransactionBuilder<TPayload extends Payload> extends Base<Omit<PayloadBuilderOptions, 'schema'>> {
20
+ private _blockRange?: [number, number]
21
+ private _chain?: Hex
22
+ private _elevatedPayloads: AllowedBlockPayload[] = []
23
+ private _fees: TransactionFeesBigInt | undefined
24
+ private _payloads: TPayload[] = []
25
+ private _signers: AccountInstance[] = []
26
+
27
+ constructor(options: Omit<PayloadBuilderOptions, 'schema'> = {}) {
28
+ super(options)
29
+ }
30
+
31
+ async build() {
32
+ const chain = assertEx(this._chain, () => 'Chain must be set before building the transaction')
33
+ const fees = assertEx(this._fees, () => 'Fees must be set before building the transaction')
34
+ const blockRange = assertEx(this._blockRange, () => 'Block range must be set before building the transaction')
35
+ return await buildTransaction(
36
+ chain,
37
+ this._elevatedPayloads,
38
+ this._payloads,
39
+ this._signers,
40
+ asXL1BlockNumber(blockRange[0], true),
41
+ asXL1BlockNumber(blockRange[1], true),
42
+ this._signers[0]?.address,
43
+ fees,
44
+ )
45
+ }
46
+
47
+ chain(chain: ChainId) {
48
+ this._chain = chain
49
+ return this
50
+ }
51
+
52
+ async dryRun() {
53
+ return await buildTransaction(
54
+ XYO_ZERO_ADDRESS,
55
+ this._elevatedPayloads,
56
+ this._payloads,
57
+ this._signers,
58
+ asXL1BlockNumber(0, true),
59
+ asXL1BlockNumber(1000, true),
60
+ this._signers[0]?.address,
61
+ defaultTransactionFees,
62
+ )
63
+ }
64
+
65
+ elevatedPayload(payload?: AllowedBlockPayload) {
66
+ const allowedPayload = isAllowedBlockPayload(payload) ? payload : undefined
67
+ const allowPayloadExists = assertEx(allowedPayload, () => 'Payload must be an AllowedBlockPayload')
68
+ this._elevatedPayloads.push(allowPayloadExists)
69
+ return this
70
+ }
71
+
72
+ elevatedPayloads(payloads?: AllowedBlockPayload[]) {
73
+ if (payloads)
74
+ for (const payload of payloads) {
75
+ this.elevatedPayload(payload)
76
+ }
77
+ return this
78
+ }
79
+
80
+ async estimatedMinimumFees(): Promise<TransactionFeesBigInt> {
81
+ const tx = await this.dryRun()
82
+ const requiredGas = transactionRequiredGas(tx)
83
+ return {
84
+ base: minTransactionFees.base,
85
+ // eslint-disable-next-line unicorn/prefer-math-min-max
86
+ gasLimit: requiredGas > minTransactionFees.gasLimit ? requiredGas : minTransactionFees.gasLimit,
87
+ gasPrice: minTransactionFees.gasPrice,
88
+ priority: minTransactionFees.priority,
89
+ }
90
+ }
91
+
92
+ fees(fees: TransactionFeesBigInt) {
93
+ this._fees = fees
94
+ return this
95
+ }
96
+
97
+ payload(payload?: TPayload) {
98
+ this._payloads.push(payload as TPayload)
99
+ return this
100
+ }
101
+
102
+ payloads(payloads?: TPayload[]) {
103
+ if (payloads)
104
+ for (const payload of payloads) {
105
+ if (payload !== null) {
106
+ this.payload(payload)
107
+ }
108
+ }
109
+ return this
110
+ }
111
+
112
+ range(blockRange: [number, number]) {
113
+ if (blockRange.length !== 2) {
114
+ throw new Error('Block range must be an array of two numbers')
115
+ }
116
+ this._blockRange = blockRange
117
+ return this
118
+ }
119
+
120
+ async removeElevatedPayload(payload: AllowedBlockPayload) {
121
+ const hash = await PayloadBuilder.hash(payload)
122
+ const existingHashes = await PayloadBuilder.hashes(this._elevatedPayloads)
123
+
124
+ // no async after this point to prevent changing _elevatedPayloads from other promise
125
+ const existingPayloadIndex = existingHashes.indexOf(hash)
126
+ if (existingPayloadIndex === -1) {
127
+ throw new Error('Payload not found in the transaction')
128
+ }
129
+ this._elevatedPayloads = this._elevatedPayloads.filter((_, index) => index !== existingPayloadIndex)
130
+ return this
131
+ }
132
+
133
+ async removePayload(payload: TPayload) {
134
+ const hash = await PayloadBuilder.hash(payload)
135
+ const existingHashes = await PayloadBuilder.hashes(this._payloads)
136
+
137
+ // no async after this point to prevent changing _payloads from other promise
138
+ const existingPayloadIndex = existingHashes.indexOf(hash)
139
+ if (existingPayloadIndex === -1) {
140
+ throw new Error('Payload not found in the transaction')
141
+ }
142
+ this._payloads = this._payloads.filter((_, index) => index !== existingPayloadIndex)
143
+ return this
144
+ }
145
+
146
+ signer(signer?: AccountInstance) {
147
+ if (signer) {
148
+ this._signers.push(signer)
149
+ }
150
+ return this
151
+ }
152
+
153
+ signers(signers?: (AccountInstance | null)[]) {
154
+ if (signers)
155
+ for (const signer of signers) {
156
+ if (signer !== null) {
157
+ this.signer(signer)
158
+ }
159
+ }
160
+ return this
161
+ }
162
+ }
@@ -0,0 +1,36 @@
1
+ import type { Address } from '@xylabs/sdk-js'
2
+ import { Account } from '@xyo-network/account'
3
+ import type { AccountInstance } from '@xyo-network/account-model'
4
+ import type { Payload, Schema } from '@xyo-network/payload-model'
5
+ import type {
6
+ AllowedBlockPayload, ChainId,
7
+ SignedHydratedTransactionWithHashMeta,
8
+ Transfer,
9
+ XL1BlockNumber,
10
+ } from '@xyo-network/xl1-protocol'
11
+ import { asXL1BlockNumber, isAllowedBlockPayload } from '@xyo-network/xl1-protocol'
12
+
13
+ import { createTransferPayload } from '../createTransferPayload.ts'
14
+ import { buildTransaction } from './buildTransaction.ts'
15
+
16
+ export const buildRandomTransaction = async (
17
+ chain: ChainId,
18
+ payloads?: Payload[],
19
+ account?: AccountInstance,
20
+ nbf: XL1BlockNumber = asXL1BlockNumber(0, true),
21
+ exp: XL1BlockNumber = asXL1BlockNumber(nbf + 1000, true),
22
+ privatePayloadSchemas: Schema[] = [],
23
+ receiverAddress?: Address,
24
+ ): Promise<SignedHydratedTransactionWithHashMeta> => {
25
+ const elevatedPayloads: AllowedBlockPayload[] = (payloads ?? []).filter(isAllowedBlockPayload)
26
+ const additionalPayloads: Payload[] = (payloads ?? []).filter(payload => !isAllowedBlockPayload(payload))
27
+ const sender = account ?? await Account.random()
28
+ if (elevatedPayloads?.length === 0) {
29
+ const receiver = receiverAddress ?? (await Account.random()).address
30
+ const transferPayload: Transfer = createTransferPayload(sender.address, { [receiver]: 1n })
31
+ elevatedPayloads.push(transferPayload)
32
+ }
33
+ const hydratedTransaction = await buildTransaction(chain, elevatedPayloads, additionalPayloads, sender, nbf, exp)
34
+ // remove private payloads from hydrated
35
+ return [hydratedTransaction[0], hydratedTransaction[1].filter(p => !privatePayloadSchemas.includes(p.schema))]
36
+ }
@@ -7,7 +7,7 @@ import type {
7
7
  SignedHydratedTransactionWithStorageMeta, TransactionBoundWitness,
8
8
  } from '@xyo-network/xl1-protocol'
9
9
  import {
10
- asSignedHydratedBlock, asSignedHydratedTransaction, isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta,
10
+ asSignedHydratedTransaction, isAllowedBlockPayload, isSignedTransactionBoundWitnessWithStorageMeta,
11
11
  } from '@xyo-network/xl1-protocol'
12
12
 
13
13
  import type { ChainStoreRead } from '../model/index.ts'
@@ -1,3 +1,4 @@
1
+ export * from './buildRandomTransaction.ts'
1
2
  export * from './buildTransaction.ts'
2
3
  export * from './buildUnsignedTransaction.ts'
3
4
  export * from './confirmSubmittedTransaction.ts'
@@ -5,3 +6,4 @@ export * from './hydrateTransaction.ts'
5
6
  export * from './primitives/index.ts'
6
7
  export * from './script.ts'
7
8
  export * from './signTransaction.ts'
9
+ export * from './TransactionBuilder.ts'
@@ -1,6 +1,8 @@
1
1
  import type { Hash, Promisable } from '@xylabs/sdk-js'
2
2
  import type { Payload, WithHashMeta } from '@xyo-network/payload-model'
3
- import type { SignedHydratedBlockWithHashMeta, XL1BlockNumber } from '@xyo-network/xl1-protocol'
3
+ import type {
4
+ ChainId, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
5
+ } from '@xyo-network/xl1-protocol'
4
6
 
5
7
  import type { Provider } from '../model/index.ts'
6
8
 
@@ -17,6 +19,9 @@ export type BlockViewerMoniker = typeof BlockViewerMoniker
17
19
  export interface BlockViewer extends BlockViewerMethods, Provider<BlockViewerMoniker> {
18
20
  blockByHash(hash: Hash): Promisable<SignedHydratedBlockWithHashMeta | null>
19
21
  blockByNumber(block: XL1BlockNumber): Promisable<SignedHydratedBlockWithHashMeta | null>
22
+ chainId(): Promisable<ChainId>
23
+ chainId(blockNumber: XL1BlockNumber): Promisable<ChainId>
24
+ chainId(blockNumber: 'latest'): Promisable<ChainId>
20
25
  currentBlockHash(): Promisable<Hash>
21
26
  currentBlockNumber(): Promisable<XL1BlockNumber>
22
27
  payloadByHash(hash: Hash): Promisable<WithHashMeta<Payload> | null>
@@ -1,5 +1,4 @@
1
1
  import type { Provider } from '../model/index.ts'
2
- import type { ChainViewer } from './Chain.ts'
3
2
  import type { ChainContractViewer } from './ChainContract.ts'
4
3
  import type { StakeTotalsViewer } from './StakeTotals.ts'
5
4
 
@@ -7,6 +6,6 @@ export const ChainStakeViewerMoniker = 'ChainStakeViewer' as const
7
6
  export type ChainStakeViewerMoniker = typeof ChainStakeViewerMoniker
8
7
 
9
8
  export interface ChainStakeViewer extends Omit<ChainContractViewer, 'moniker'>, Omit<StakeTotalsViewer, 'moniker'>,
10
- Omit<ChainViewer, 'moniker'>, Provider<ChainStakeViewerMoniker> {
9
+ Provider<ChainStakeViewerMoniker> {
11
10
 
12
11
  }
@@ -4,6 +4,5 @@ import type { ChainId } from '@xyo-network/xl1-protocol'
4
4
  export type ForkHistory = Record<number, ChainId>
5
5
 
6
6
  export interface ForkViewerMethods {
7
- chainIdAtBlock(blockNumber: number): Promisable<ChainId | undefined>
8
7
  forkHistory(): Promisable<ForkHistory>
9
8
  }
@@ -4,7 +4,6 @@ import type { Position, Provider } from '../model/index.ts'
4
4
  import type { StakeEventsViewer } from './StakeEvents.ts'
5
5
 
6
6
  export interface StakeViewerProperties {
7
- chainId: Address
8
7
  minWithdrawalBlocks: number
9
8
  rewardsContract: Address
10
9
  stakeEvents: StakeEventsViewer
@@ -1,7 +1,6 @@
1
1
  export * from './AccountBalance.ts'
2
2
  export * from './Block.ts'
3
3
  export * from './BlockReward.ts'
4
- export * from './Chain.ts'
5
4
  export * from './ChainContract.ts'
6
5
  export * from './ChainStakeViewer.ts'
7
6
  export * from './Fork.ts'
@@ -1,15 +0,0 @@
1
- import { type Address, Promisable } from '@xylabs/sdk-js';
2
- import { ChainId } from '@xyo-network/xl1-protocol';
3
- import { AbstractCreatableProvider, CreatableProviderParams } from '../../CreatableProvider/index.ts';
4
- import { ChainViewer } from '../../viewers/index.ts';
5
- export interface SimpleChainParams extends CreatableProviderParams {
6
- chainId: Address;
7
- }
8
- export declare class SimpleChainViewer extends AbstractCreatableProvider<SimpleChainParams> implements ChainViewer {
9
- static readonly defaultMoniker: "ChainViewer";
10
- static readonly monikers: "ChainViewer"[];
11
- moniker: "ChainViewer";
12
- static paramsHandler(params?: Partial<SimpleChainParams>): Promise<SimpleChainParams>;
13
- chainId(): Promisable<ChainId>;
14
- }
15
- //# sourceMappingURL=SimpleChainViewer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SimpleChainViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/chain/SimpleChainViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAAS,UAAU,EAChC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,OAAO,EACL,yBAAyB,EAAqB,uBAAuB,EACtE,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAA;AAExE,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,qBACa,iBAAkB,SAAQ,yBAAyB,CAAC,iBAAiB,CAAE,YAAW,WAAW;IACxG,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAqB;IACnD,MAAM,CAAC,QAAQ,CAAC,QAAQ,kBAAuB;IAC/C,OAAO,gBAAmC;WAEpB,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAIvE,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;CAG/B"}
@@ -1,2 +0,0 @@
1
- export * from './SimpleChainViewer.ts';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/simple/chain/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SimpleChainStakeViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStake/SimpleChainStakeViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACb,MAAM,gBAAgB,CAAA;AAIvB,OAAO,EACL,yBAAyB,EAAqB,uBAAuB,EACtE,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EACL,iBAAiB,EAAE,WAAW,EAC/B,MAAM,wBAAwB,CAAA;AAG/B,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,UAAU,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB;AAED,qBACa,sBAAuB,SAAQ,yBAAyB,CAAC,sBAAsB,CAAE,YAAW,WAAW;IAClH,MAAM,CAAC,QAAQ,CAAC,cAAc,gBAAqB;IACnD,MAAM,CAAC,QAAQ,CAAC,QAAQ,kBAAuB;IAC/C,OAAO,gBAAwC;IAE/C,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,uBAAuB,CAA+B;IAE9D,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,QAAQ,eAEX;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,WAAW,sBAEd;IAED,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,SAAS,KAAK,SAAS,eAEtB;IAED,MAAM,IAAI,MAAM;IAUhB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAU9C,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAUvC,OAAO,IAAI,MAAM;IAUjB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAUxC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAI/B,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAItD,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAkB,GAAG,QAAQ,EAAE;IAKjG,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAkB,GAAG,QAAQ,EAAE;IAKjG,SAAS,IAAI,MAAM;IAUnB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;cAUjB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAKvD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SimpleChainStakeEventsViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStakeEvents/SimpleChainStakeEventsViewer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EAAqB,uBAAuB,EACtE,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EACL,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAEhE,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IAC3E,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB;AAED,qBACa,4BAA6B,SAAQ,yBAAyB,CAAC,4BAA4B,CAAE,YAAW,iBAAiB;IACpI,MAAM,CAAC,QAAQ,CAAC,cAAc,sBAA2B;IACzD,MAAM,CAAC,QAAQ,CAAC,QAAQ,wBAA6B;IACrD,OAAO,sBAA8C;IAErD,SAAS,KAAK,SAAS,eAEtB;IAED,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,MAAM;IAIzD,WAAW,CAAC,KAAK,SAAS,cAAc,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,GAAE,gBAAgB,CAAC,KAAK,CAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE;cASjH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAItD,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,kBAAkB;CAQ3B"}
@@ -1,2 +0,0 @@
1
- export * from './SimpleChainStakeEventsViewer.ts';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/simple/chainStakeEvents/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAA"}
@@ -1,11 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js';
2
- import type { ChainId } from '@xyo-network/xl1-protocol';
3
- import type { Provider } from '../model/index.ts';
4
- export interface ChainViewerMethods {
5
- chainId(): Promisable<ChainId>;
6
- }
7
- export declare const ChainViewerMoniker: "ChainViewer";
8
- export type ChainViewerMoniker = typeof ChainViewerMoniker;
9
- export interface ChainViewer extends ChainViewerMethods, Provider<ChainViewerMoniker> {
10
- }
11
- //# sourceMappingURL=Chain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Chain.d.ts","sourceRoot":"","sources":["../../../src/viewers/Chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;CAAG"}
@@ -1,28 +0,0 @@
1
- import {
2
- type Address, asHex, Promisable,
3
- } from '@xylabs/sdk-js'
4
- import { ChainId } from '@xyo-network/xl1-protocol'
5
-
6
- import {
7
- AbstractCreatableProvider, creatableProvider, CreatableProviderParams,
8
- } from '../../CreatableProvider/index.ts'
9
- import { ChainViewer, ChainViewerMoniker } from '../../viewers/index.ts'
10
-
11
- export interface SimpleChainParams extends CreatableProviderParams {
12
- chainId: Address
13
- }
14
-
15
- @creatableProvider()
16
- export class SimpleChainViewer extends AbstractCreatableProvider<SimpleChainParams> implements ChainViewer {
17
- static readonly defaultMoniker = ChainViewerMoniker
18
- static readonly monikers = [ChainViewerMoniker]
19
- moniker = SimpleChainViewer.defaultMoniker
20
-
21
- static override async paramsHandler(params?: Partial<SimpleChainParams>) {
22
- return ({ ...await super.paramsHandler(params), chainId: asHex(params?.chainId, () => 'chainId not set') }) as SimpleChainParams
23
- }
24
-
25
- chainId(): Promisable<ChainId> {
26
- return this.params.chainId
27
- }
28
- }
@@ -1 +0,0 @@
1
- export * from './SimpleChainViewer.ts'
@@ -1 +0,0 @@
1
- export * from './SimpleChainStakeEventsViewer.ts'
@@ -1,13 +0,0 @@
1
- import type { Promisable } from '@xylabs/sdk-js'
2
- import type { ChainId } from '@xyo-network/xl1-protocol'
3
-
4
- import type { Provider } from '../model/index.ts'
5
-
6
- export interface ChainViewerMethods {
7
- chainId(): Promisable<ChainId>
8
- }
9
-
10
- export const ChainViewerMoniker = 'ChainViewer' as const
11
- export type ChainViewerMoniker = typeof ChainViewerMoniker
12
-
13
- export interface ChainViewer extends ChainViewerMethods, Provider<ChainViewerMoniker> {}