@xyo-network/xl1-protocol-sdk 1.17.7 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts +104 -1
  2. package/dist/neutral/CreatableProvider/AbstractCreatableProvider.d.ts.map +1 -1
  3. package/dist/neutral/CreatableProvider/CreatableProvider.d.ts +27 -10
  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 +8 -5
  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/config/Services.d.ts +2 -2
  19. package/dist/neutral/config/Services.d.ts.map +1 -1
  20. package/dist/neutral/createDeclarationPayload.d.ts +4 -0
  21. package/dist/neutral/createDeclarationPayload.d.ts.map +1 -0
  22. package/dist/neutral/createTransferPayload.d.ts +4 -0
  23. package/dist/neutral/createTransferPayload.d.ts.map +1 -0
  24. package/dist/neutral/driver/cache/LruCacheMap.d.ts +2 -2
  25. package/dist/neutral/driver/cache/LruCacheMap.d.ts.map +1 -1
  26. package/dist/neutral/driver/memory/MemoryMap.d.ts +2 -2
  27. package/dist/neutral/driver/memory/MemoryMap.d.ts.map +1 -1
  28. package/dist/neutral/index.d.ts +3 -0
  29. package/dist/neutral/index.d.ts.map +1 -1
  30. package/dist/neutral/index.mjs +1887 -632
  31. package/dist/neutral/index.mjs.map +1 -1
  32. package/dist/neutral/map/MapType.d.ts +3 -2
  33. package/dist/neutral/map/MapType.d.ts.map +1 -1
  34. package/dist/neutral/model/ChainContext/ChainContext.d.ts +4 -4
  35. package/dist/neutral/model/ChainContext/ChainContext.d.ts.map +1 -1
  36. package/dist/neutral/model/ChainQualification.d.ts +42 -0
  37. package/dist/neutral/model/ChainQualification.d.ts.map +1 -0
  38. package/dist/neutral/model/PayloadBundle/bundledPayloadToHydratedTransaction.d.ts +2 -2
  39. package/dist/neutral/model/PayloadBundle/bundledPayloadToHydratedTransaction.d.ts.map +1 -1
  40. package/dist/neutral/model/index.d.ts +1 -1
  41. package/dist/neutral/model/index.d.ts.map +1 -1
  42. package/dist/neutral/primitives/block/index.d.ts +2 -0
  43. package/dist/neutral/primitives/block/index.d.ts.map +1 -0
  44. package/dist/neutral/primitives/block/range/blockRangeSteps.d.ts +3 -0
  45. package/dist/neutral/primitives/block/range/blockRangeSteps.d.ts.map +1 -0
  46. package/dist/neutral/primitives/block/range/index.d.ts +2 -0
  47. package/dist/neutral/primitives/block/range/index.d.ts.map +1 -0
  48. package/dist/neutral/primitives/chain/getWindowedChain.d.ts +26 -0
  49. package/dist/neutral/primitives/chain/getWindowedChain.d.ts.map +1 -0
  50. package/dist/neutral/primitives/chain/index.d.ts +4 -0
  51. package/dist/neutral/primitives/chain/index.d.ts.map +1 -0
  52. package/dist/neutral/primitives/chain/step/chainStepRewardAddress.d.ts +5 -0
  53. package/dist/neutral/primitives/chain/step/chainStepRewardAddress.d.ts.map +1 -0
  54. package/dist/neutral/primitives/chain/step/index.d.ts +5 -0
  55. package/dist/neutral/primitives/chain/step/index.d.ts.map +1 -0
  56. package/dist/neutral/primitives/chain/step/stepRewardBlock.d.ts +4 -0
  57. package/dist/neutral/primitives/chain/step/stepRewardBlock.d.ts.map +1 -0
  58. package/dist/neutral/primitives/chain/step/stepRewardTotal.d.ts +4 -0
  59. package/dist/neutral/primitives/chain/step/stepRewardTotal.d.ts.map +1 -0
  60. package/dist/neutral/primitives/chain/step/stepsRewardTotal.d.ts +6 -0
  61. package/dist/neutral/primitives/chain/step/stepsRewardTotal.d.ts.map +1 -0
  62. package/dist/neutral/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.d.ts +5 -0
  63. package/dist/neutral/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.d.ts.map +1 -0
  64. package/dist/neutral/primitives/chain/time/externalBlockRangeFromStep.d.ts +5 -0
  65. package/dist/neutral/primitives/chain/time/externalBlockRangeFromStep.d.ts.map +1 -0
  66. package/dist/neutral/primitives/chain/time/externalBlockRangeFromXL1BlockRange.d.ts +5 -0
  67. package/dist/neutral/primitives/chain/time/externalBlockRangeFromXL1BlockRange.d.ts.map +1 -0
  68. package/dist/neutral/primitives/chain/time/index.d.ts +4 -0
  69. package/dist/neutral/primitives/chain/time/index.d.ts.map +1 -0
  70. package/dist/neutral/primitives/index.d.ts +7 -0
  71. package/dist/neutral/primitives/index.d.ts.map +1 -1
  72. package/dist/neutral/primitives/mapToMapType.d.ts +3 -0
  73. package/dist/neutral/primitives/mapToMapType.d.ts.map +1 -0
  74. package/dist/neutral/primitives/payload/index.d.ts +2 -0
  75. package/dist/neutral/primitives/payload/index.d.ts.map +1 -0
  76. package/dist/neutral/primitives/payload/mergeTransfers.d.ts +4 -0
  77. package/dist/neutral/primitives/payload/mergeTransfers.d.ts.map +1 -0
  78. package/dist/neutral/primitives/readPayloadMapFromStore.d.ts +5 -4
  79. package/dist/neutral/primitives/readPayloadMapFromStore.d.ts.map +1 -1
  80. package/dist/neutral/primitives/rewards/index.d.ts +2 -0
  81. package/dist/neutral/primitives/rewards/index.d.ts.map +1 -0
  82. package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts +5 -0
  83. package/dist/neutral/primitives/rewards/networkStakeStepRewardPositionWeight.d.ts.map +1 -0
  84. package/dist/neutral/primitives/stake/activeStakeAtTimeByAddress.d.ts +4 -0
  85. package/dist/neutral/primitives/stake/activeStakeAtTimeByAddress.d.ts.map +1 -0
  86. package/dist/neutral/primitives/stake/activeStakeAtTimeByPosition.d.ts +3 -0
  87. package/dist/neutral/primitives/stake/activeStakeAtTimeByPosition.d.ts.map +1 -0
  88. package/dist/neutral/primitives/stake/allStakersForRange.d.ts +4 -0
  89. package/dist/neutral/primitives/stake/allStakersForRange.d.ts.map +1 -0
  90. package/dist/neutral/primitives/stake/allStakersForStep.d.ts +6 -0
  91. package/dist/neutral/primitives/stake/allStakersForStep.d.ts.map +1 -0
  92. package/dist/neutral/primitives/stake/index.d.ts +7 -0
  93. package/dist/neutral/primitives/stake/index.d.ts.map +1 -0
  94. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByPosition.d.ts +3 -0
  95. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByPosition.d.ts.map +1 -0
  96. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByStaker.d.ts +4 -0
  97. package/dist/neutral/primitives/stake/mergedAddRemoveStakeEventsByStaker.d.ts.map +1 -0
  98. package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts +6 -0
  99. package/dist/neutral/primitives/stake/weightedStakeForRangeByPosition.d.ts.map +1 -0
  100. package/dist/neutral/primitives/uncle/findBestUncle.d.ts +24 -0
  101. package/dist/neutral/primitives/uncle/findBestUncle.d.ts.map +1 -0
  102. package/dist/neutral/primitives/uncle/findUncles.d.ts +26 -0
  103. package/dist/neutral/primitives/uncle/findUncles.d.ts.map +1 -0
  104. package/dist/neutral/primitives/uncle/index.d.ts +4 -0
  105. package/dist/neutral/primitives/uncle/index.d.ts.map +1 -0
  106. package/dist/neutral/primitives/uncle/scoreUncle.d.ts +3 -0
  107. package/dist/neutral/primitives/uncle/scoreUncle.d.ts.map +1 -0
  108. package/dist/neutral/provider/DataLake.d.ts +10 -9
  109. package/dist/neutral/provider/DataLake.d.ts.map +1 -1
  110. package/dist/neutral/provider/XyoConnection.d.ts +4 -1
  111. package/dist/neutral/provider/XyoConnection.d.ts.map +1 -1
  112. package/dist/neutral/provider/XyoGatewayRunner.d.ts +3 -3
  113. package/dist/neutral/provider/XyoGatewayRunner.d.ts.map +1 -1
  114. package/dist/neutral/provider/XyoRunner.d.ts +5 -2
  115. package/dist/neutral/provider/XyoRunner.d.ts.map +1 -1
  116. package/dist/neutral/provider/viewer/XyoViewer.d.ts +16 -13
  117. package/dist/neutral/provider/viewer/XyoViewer.d.ts.map +1 -1
  118. package/dist/neutral/runners/Block.d.ts +7 -2
  119. package/dist/neutral/runners/Block.d.ts.map +1 -1
  120. package/dist/neutral/runners/Mempool.d.ts +4 -1
  121. package/dist/neutral/runners/Mempool.d.ts.map +1 -1
  122. package/dist/neutral/services/Chain/ChainService.d.ts +2 -2
  123. package/dist/neutral/services/Chain/ChainService.d.ts.map +1 -1
  124. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts +65 -21
  125. package/dist/neutral/simple/accountBalance/SimpleAccountBalanceViewer.d.ts.map +1 -1
  126. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts +9 -6
  127. package/dist/neutral/simple/block/SimpleBlockViewer.d.ts.map +1 -1
  128. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts +31 -0
  129. package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts.map +1 -0
  130. package/dist/neutral/simple/blockValidation/index.d.ts +2 -0
  131. package/dist/neutral/simple/blockValidation/index.d.ts.map +1 -0
  132. package/dist/neutral/simple/chainStake/{SimpleChainStakeViewer.d.ts → SimpleStakeViewer.d.ts} +3 -5
  133. package/dist/neutral/simple/chainStake/SimpleStakeViewer.d.ts.map +1 -0
  134. package/dist/neutral/simple/chainStake/index.d.ts +1 -1
  135. package/dist/neutral/simple/chainStake/index.d.ts.map +1 -1
  136. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts +6 -3
  137. package/dist/neutral/simple/datalake/AbstractSimpleDataLake.d.ts.map +1 -1
  138. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts +4 -3
  139. package/dist/neutral/simple/datalake/SimpleDataLakeRunner.d.ts.map +1 -1
  140. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts +0 -3
  141. package/dist/neutral/simple/datalake/SimpleDataLakeViewer.d.ts.map +1 -1
  142. package/dist/neutral/simple/index.d.ts +2 -0
  143. package/dist/neutral/simple/index.d.ts.map +1 -1
  144. package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts +8 -4
  145. package/dist/neutral/simple/mempool/SimpleMempoolRunner.d.ts.map +1 -1
  146. package/dist/neutral/simple/mempool/SimpleMempoolViewer.d.ts.map +1 -1
  147. package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts +24 -6
  148. package/dist/neutral/simple/runner/SimpleXyoRunner.d.ts.map +1 -1
  149. package/dist/neutral/simple/{chainStakeEvents/SimpleChainStakeEventsViewer.d.ts → stakeEvents/SimpleStakeEventsViewer.d.ts} +3 -3
  150. package/dist/neutral/simple/stakeEvents/SimpleStakeEventsViewer.d.ts.map +1 -0
  151. package/dist/neutral/simple/stakeEvents/index.d.ts +2 -0
  152. package/dist/neutral/simple/stakeEvents/index.d.ts.map +1 -0
  153. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts +4 -3
  154. package/dist/neutral/simple/timesync/SimpleTimeSyncViewer.d.ts.map +1 -1
  155. package/dist/neutral/status/RuntimeStatusMonitor.d.ts +31 -0
  156. package/dist/neutral/status/RuntimeStatusMonitor.d.ts.map +1 -0
  157. package/dist/neutral/status/ServiceStatus.d.ts +8 -0
  158. package/dist/neutral/status/ServiceStatus.d.ts.map +1 -0
  159. package/dist/neutral/status/index.d.ts +3 -0
  160. package/dist/neutral/status/index.d.ts.map +1 -0
  161. package/dist/neutral/summary/model/summary.d.ts +4 -5
  162. package/dist/neutral/summary/model/summary.d.ts.map +1 -1
  163. package/dist/neutral/summary/primitives/balances/balancesStepSummaryFromRange.d.ts +1 -1
  164. package/dist/neutral/summary/primitives/balances/balancesStepSummaryFromRange.d.ts.map +1 -1
  165. package/dist/neutral/summary/primitives/balances/balancesSummary.d.ts +2 -2
  166. package/dist/neutral/summary/primitives/balances/balancesSummary.d.ts.map +1 -1
  167. package/dist/neutral/summary/primitives/schemas/schemasSummary.d.ts +2 -2
  168. package/dist/neutral/summary/primitives/schemas/schemasSummary.d.ts.map +1 -1
  169. package/dist/neutral/summary/primitives/transfers/transfersSummary.d.ts +2 -2
  170. package/dist/neutral/summary/primitives/transfers/transfersSummary.d.ts.map +1 -1
  171. package/dist/neutral/transaction/TransactionBuilder.d.ts +82 -0
  172. package/dist/neutral/transaction/TransactionBuilder.d.ts.map +1 -0
  173. package/dist/neutral/transaction/buildRandomTransaction.d.ts +6 -0
  174. package/dist/neutral/transaction/buildRandomTransaction.d.ts.map +1 -0
  175. package/dist/neutral/transaction/index.d.ts +2 -0
  176. package/dist/neutral/transaction/index.d.ts.map +1 -1
  177. package/dist/neutral/viewers/AccountBalance.d.ts +35 -15
  178. package/dist/neutral/viewers/AccountBalance.d.ts.map +1 -1
  179. package/dist/neutral/viewers/Block.d.ts +4 -1
  180. package/dist/neutral/viewers/Block.d.ts.map +1 -1
  181. package/dist/neutral/viewers/BlockValidation.d.ts +54 -0
  182. package/dist/neutral/viewers/BlockValidation.d.ts.map +1 -0
  183. package/dist/neutral/viewers/ChainStakeViewer.d.ts +1 -2
  184. package/dist/neutral/viewers/ChainStakeViewer.d.ts.map +1 -1
  185. package/dist/neutral/viewers/Fork.d.ts +0 -1
  186. package/dist/neutral/viewers/Fork.d.ts.map +1 -1
  187. package/dist/neutral/viewers/Stake.d.ts +0 -1
  188. package/dist/neutral/viewers/Stake.d.ts.map +1 -1
  189. package/dist/neutral/viewers/StakeIntent.d.ts +2 -2
  190. package/dist/neutral/viewers/StakeIntent.d.ts.map +1 -1
  191. package/dist/neutral/viewers/TransactionValidation.d.ts +35 -0
  192. package/dist/neutral/viewers/TransactionValidation.d.ts.map +1 -0
  193. package/dist/neutral/viewers/index.d.ts +2 -1
  194. package/dist/neutral/viewers/index.d.ts.map +1 -1
  195. package/package.json +8 -6
  196. package/src/CreatableProvider/AbstractCreatableProvider.ts +60 -3
  197. package/src/CreatableProvider/CreatableProvider.ts +38 -11
  198. package/src/CreatableProvider/CreatableProviderRegistry.ts +10 -5
  199. package/src/CreatableProvider/ProviderFactory.ts +73 -10
  200. package/src/CreatableProvider/ProviderFactoryLocator.ts +79 -19
  201. package/src/CreatableProvider/ProviderFactoryLocatorInstance.ts +33 -10
  202. package/src/config/Bridge.ts +22 -4
  203. package/src/config/Chain.ts +2 -2
  204. package/src/config/Services.ts +4 -2
  205. package/src/createDeclarationPayload.ts +14 -0
  206. package/src/createTransferPayload.ts +15 -0
  207. package/src/driver/cache/LruCacheMap.ts +2 -2
  208. package/src/driver/memory/MemoryMap.ts +2 -2
  209. package/src/index.ts +3 -0
  210. package/src/map/MapType.ts +4 -2
  211. package/src/model/ChainContext/ChainContext.ts +4 -4
  212. package/src/model/ChainQualification.ts +33 -0
  213. package/src/model/PayloadBundle/bundledPayloadToHydratedTransaction.ts +2 -2
  214. package/src/model/index.ts +1 -1
  215. package/src/primitives/block/index.ts +1 -0
  216. package/src/primitives/block/range/blockRangeSteps.ts +22 -0
  217. package/src/primitives/block/range/index.ts +1 -0
  218. package/src/primitives/chain/getWindowedChain.ts +23 -0
  219. package/src/primitives/chain/index.ts +3 -0
  220. package/src/primitives/chain/step/chainStepRewardAddress.ts +28 -0
  221. package/src/primitives/chain/step/index.ts +4 -0
  222. package/src/primitives/chain/step/stepRewardBlock.ts +11 -0
  223. package/src/primitives/chain/step/stepRewardTotal.ts +45 -0
  224. package/src/primitives/chain/step/stepsRewardTotal.ts +34 -0
  225. package/src/primitives/chain/time/externalBlockNumberFromXL1BlockNumber.ts +31 -0
  226. package/src/primitives/chain/time/externalBlockRangeFromStep.ts +19 -0
  227. package/src/primitives/chain/time/externalBlockRangeFromXL1BlockRange.ts +16 -0
  228. package/src/primitives/chain/time/index.ts +3 -0
  229. package/src/primitives/index.ts +7 -0
  230. package/src/primitives/mapToMapType.ts +35 -0
  231. package/src/primitives/payload/index.ts +1 -0
  232. package/src/primitives/payload/mergeTransfers.ts +15 -0
  233. package/src/primitives/readPayloadMapFromStore.ts +38 -8
  234. package/src/primitives/rewards/index.ts +1 -0
  235. package/src/primitives/rewards/networkStakeStepRewardPositionWeight.ts +21 -0
  236. package/src/primitives/stake/activeStakeAtTimeByAddress.ts +26 -0
  237. package/src/primitives/stake/activeStakeAtTimeByPosition.ts +24 -0
  238. package/src/primitives/stake/allStakersForRange.ts +31 -0
  239. package/src/primitives/stake/allStakersForStep.ts +22 -0
  240. package/src/primitives/stake/index.ts +6 -0
  241. package/src/primitives/stake/mergedAddRemoveStakeEventsByPosition.ts +14 -0
  242. package/src/primitives/stake/mergedAddRemoveStakeEventsByStaker.ts +17 -0
  243. package/src/primitives/stake/weightedStakeForRangeByPosition.ts +54 -0
  244. package/src/primitives/uncle/findBestUncle.ts +8 -0
  245. package/src/primitives/uncle/findUncles.ts +75 -0
  246. package/src/primitives/uncle/index.ts +3 -0
  247. package/src/primitives/uncle/scoreUncle.ts +6 -0
  248. package/src/provider/DataLake.ts +12 -11
  249. package/src/provider/XyoConnection.ts +5 -1
  250. package/src/provider/XyoGatewayRunner.ts +3 -3
  251. package/src/provider/XyoRunner.ts +6 -2
  252. package/src/provider/viewer/XyoViewer.ts +16 -15
  253. package/src/runners/Block.ts +10 -2
  254. package/src/runners/Mempool.ts +6 -1
  255. package/src/services/Chain/ChainService.ts +2 -4
  256. package/src/simple/accountBalance/SimpleAccountBalanceViewer.ts +65 -42
  257. package/src/simple/block/SimpleBlockViewer.ts +47 -14
  258. package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +126 -0
  259. package/src/simple/blockValidation/index.ts +1 -0
  260. package/src/simple/chainStake/{SimpleChainStakeViewer.ts → SimpleStakeViewer.ts} +11 -16
  261. package/src/simple/chainStake/index.ts +1 -1
  262. package/src/simple/datalake/AbstractSimpleDataLake.ts +19 -18
  263. package/src/simple/datalake/SimpleDataLakeRunner.ts +4 -3
  264. package/src/simple/datalake/SimpleDataLakeViewer.ts +0 -19
  265. package/src/simple/index.ts +2 -0
  266. package/src/simple/mempool/SimpleMempoolRunner.ts +13 -8
  267. package/src/simple/mempool/SimpleMempoolViewer.ts +6 -1
  268. package/src/simple/runner/SimpleXyoRunner.ts +41 -16
  269. package/src/simple/{chainStakeEvents/SimpleChainStakeEventsViewer.ts → stakeEvents/SimpleStakeEventsViewer.ts} +5 -5
  270. package/src/simple/stakeEvents/index.ts +1 -0
  271. package/src/simple/timesync/SimpleTimeSyncViewer.ts +27 -6
  272. package/src/status/RuntimeStatusMonitor.ts +117 -0
  273. package/src/status/ServiceStatus.ts +20 -0
  274. package/src/status/index.ts +2 -0
  275. package/src/summary/model/summary.ts +6 -5
  276. package/src/summary/primitives/balances/balancesStepSummaryFromRange.ts +2 -3
  277. package/src/summary/primitives/balances/balancesSummary.ts +12 -12
  278. package/src/summary/primitives/schemas/schemasSummary.ts +12 -10
  279. package/src/summary/primitives/transfers/transfersSummary.ts +14 -16
  280. package/src/transaction/TransactionBuilder.ts +162 -0
  281. package/src/transaction/buildRandomTransaction.ts +36 -0
  282. package/src/transaction/hydrateTransaction.ts +1 -1
  283. package/src/transaction/index.ts +2 -0
  284. package/src/viewers/AccountBalance.ts +22 -14
  285. package/src/viewers/Block.ts +6 -1
  286. package/src/viewers/BlockValidation.ts +47 -0
  287. package/src/viewers/ChainStakeViewer.ts +1 -2
  288. package/src/viewers/Fork.ts +0 -1
  289. package/src/viewers/Stake.ts +0 -1
  290. package/src/viewers/StakeIntent.ts +2 -2
  291. package/src/viewers/TransactionValidation.ts +35 -0
  292. package/src/viewers/index.ts +2 -1
  293. package/dist/neutral/model/Qualified.d.ts +0 -6
  294. package/dist/neutral/model/Qualified.d.ts.map +0 -1
  295. package/dist/neutral/simple/chain/SimpleChainViewer.d.ts +0 -15
  296. package/dist/neutral/simple/chain/SimpleChainViewer.d.ts.map +0 -1
  297. package/dist/neutral/simple/chain/index.d.ts +0 -2
  298. package/dist/neutral/simple/chain/index.d.ts.map +0 -1
  299. package/dist/neutral/simple/chainStake/SimpleChainStakeViewer.d.ts.map +0 -1
  300. package/dist/neutral/simple/chainStakeEvents/SimpleChainStakeEventsViewer.d.ts.map +0 -1
  301. package/dist/neutral/simple/chainStakeEvents/index.d.ts +0 -2
  302. package/dist/neutral/simple/chainStakeEvents/index.d.ts.map +0 -1
  303. package/dist/neutral/viewers/Chain.d.ts +0 -11
  304. package/dist/neutral/viewers/Chain.d.ts.map +0 -1
  305. package/src/model/Qualified.ts +0 -9
  306. package/src/simple/chain/SimpleChainViewer.ts +0 -28
  307. package/src/simple/chain/index.ts +0 -1
  308. package/src/simple/chainStakeEvents/index.ts +0 -1
  309. package/src/viewers/Chain.ts +0 -13
@@ -0,0 +1,54 @@
1
+ import { type Promisable } from '@xylabs/sdk-js';
2
+ import type { HydratedBlock, SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol';
3
+ import z from 'zod';
4
+ import { type Provider } from '../model/index.ts';
5
+ import type { HydratedBlockValidationError } from '../validation/index.ts';
6
+ export declare const BlockValidationQualificationZod: z.ZodObject<{
7
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hash, string>>;
8
+ range: 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>;
9
+ }, z.z.core.$strip>;
10
+ export type BlockValidationQualification = z.infer<typeof BlockValidationQualificationZod>;
11
+ export declare const isBlockValidationQualification: <T>(value: T) => value is T & {
12
+ head: import("@xylabs/sdk-js").Hash;
13
+ range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
14
+ };
15
+ export declare const BlockValidationConfigFieldsZod: z.ZodObject<{
16
+ value: z.ZodOptional<z.ZodBoolean>;
17
+ state: z.ZodOptional<z.ZodBoolean>;
18
+ }, z.z.core.$strip>;
19
+ export declare const BlockValidationConfigZod: z.ZodUnion<readonly [z.ZodObject<{
20
+ value: z.ZodOptional<z.ZodBoolean>;
21
+ state: z.ZodOptional<z.ZodBoolean>;
22
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hash, string>>;
23
+ }, z.z.core.$strip>, z.ZodObject<{
24
+ value: z.ZodOptional<z.ZodBoolean>;
25
+ state: z.ZodOptional<z.ZodBoolean>;
26
+ range: 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>;
27
+ }, z.z.core.$strip>, z.ZodObject<{
28
+ value: z.ZodOptional<z.ZodBoolean>;
29
+ state: z.ZodOptional<z.ZodBoolean>;
30
+ }, z.z.core.$strip>, z.ZodObject<{}, z.z.core.$strip>]>;
31
+ export type BlockValidationConfig = z.infer<typeof BlockValidationConfigZod>;
32
+ export declare const isBlockValidationConfig: <T>(value: T) => value is T & (Record<string, never> | {
33
+ value?: boolean | undefined;
34
+ state?: boolean | undefined;
35
+ } | {
36
+ head: import("@xylabs/sdk-js").Hash;
37
+ value?: boolean | undefined;
38
+ state?: boolean | undefined;
39
+ } | {
40
+ range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
41
+ value?: boolean | undefined;
42
+ state?: boolean | undefined;
43
+ });
44
+ export interface BlockValidationViewerMethods {
45
+ qualifiedValidateBlocks(blocks: HydratedBlock[], config?: BlockValidationConfig): Promisable<[HydratedBlockValidationError[], BlockValidationQualification]>;
46
+ }
47
+ export declare const BlockValidationViewerMoniker: "BlockValidationViewer";
48
+ export type BlockValidationViewerMoniker = typeof BlockValidationViewerMoniker;
49
+ export interface BlockValidationViewer extends BlockValidationViewerMethods, Provider<BlockValidationViewerMoniker> {
50
+ qualifiedValidateBlock(block: SignedHydratedBlockWithHashMeta, config?: BlockValidationConfig): Promisable<[HydratedBlockValidationError[], BlockValidationQualification]>;
51
+ validateBlock(block: SignedHydratedBlockWithHashMeta, config?: BlockValidationConfig): Promisable<HydratedBlockValidationError[]>;
52
+ validateBlocks(blocks: SignedHydratedBlockWithHashMeta[], config?: BlockValidationConfig): Promisable<HydratedBlockValidationError[]>;
53
+ }
54
+ //# sourceMappingURL=BlockValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockValidation.d.ts","sourceRoot":"","sources":["../../../src/viewers/BlockValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAC/F,OAAO,CAAC,MAAM,KAAK,CAAA;AAEnB,OAAO,EAC6E,KAAK,QAAQ,EAChG,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAE1E,eAAO,MAAM,+BAA+B;;;mBAAwB,CAAA;AACpE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAC1F,eAAO,MAAM,8BAA8B;;;CAAgD,CAAA;AAE3F,eAAO,MAAM,8BAA8B;;;mBAGzC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;uDAKnC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC5E,eAAO,MAAM,uBAAuB;;;;;;;;;;;EAAyC,CAAA;AAE7E,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB,CACrB,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,CAAC,EAAE,qBAAqB,GAC7B,UAAU,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAA;CAC9E;AAED,eAAO,MAAM,4BAA4B,EAAG,uBAAgC,CAAA;AAC5E,MAAM,MAAM,4BAA4B,GAAG,OAAO,4BAA4B,CAAA;AAE9E,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B,EAAE,QAAQ,CAAC,4BAA4B,CAAC;IACjH,sBAAsB,CACpB,KAAK,EAAE,+BAA+B,EACtC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,UAAU,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAA;IAC7E,aAAa,CAAC,KAAK,EAAE,+BAA+B,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAA;IACjI,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAA;CACtI"}
@@ -1,9 +1,8 @@
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
  export declare const ChainStakeViewerMoniker: "ChainStakeViewer";
6
5
  export type ChainStakeViewerMoniker = typeof ChainStakeViewerMoniker;
7
- export interface ChainStakeViewer extends Omit<ChainContractViewer, 'moniker'>, Omit<StakeTotalsViewer, 'moniker'>, Omit<ChainViewer, 'moniker'>, Provider<ChainStakeViewerMoniker> {
6
+ export interface ChainStakeViewer extends Omit<ChainContractViewer, 'moniker'>, Omit<StakeTotalsViewer, 'moniker'>, Provider<ChainStakeViewerMoniker> {
8
7
  }
9
8
  //# sourceMappingURL=ChainStakeViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChainStakeViewer.d.ts","sourceRoot":"","sources":["../../../src/viewers/ChainStakeViewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,eAAO,MAAM,uBAAuB,EAAG,kBAA2B,CAAA;AAClE,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAChH,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC;CAEhE"}
1
+ {"version":3,"file":"ChainStakeViewer.d.ts","sourceRoot":"","sources":["../../../src/viewers/ChainStakeViewer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,eAAO,MAAM,uBAAuB,EAAG,kBAA2B,CAAA;AAClE,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAA;AAEpE,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAChH,QAAQ,CAAC,uBAAuB,CAAC;CAElC"}
@@ -2,7 +2,6 @@ import type { Promisable } from '@xylabs/sdk-js';
2
2
  import type { ChainId } from '@xyo-network/xl1-protocol';
3
3
  export type ForkHistory = Record<number, ChainId>;
4
4
  export interface ForkViewerMethods {
5
- chainIdAtBlock(blockNumber: number): Promisable<ChainId | undefined>;
6
5
  forkHistory(): Promisable<ForkHistory>;
7
6
  }
8
7
  //# sourceMappingURL=Fork.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fork.d.ts","sourceRoot":"","sources":["../../../src/viewers/Fork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IACpE,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;CACvC"}
1
+ {"version":3,"file":"Fork.d.ts","sourceRoot":"","sources":["../../../src/viewers/Fork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAEjD,MAAM,WAAW,iBAAiB;IAChC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;CACvC"}
@@ -2,7 +2,6 @@ import type { Address, Promisable } from '@xylabs/sdk-js';
2
2
  import type { Position, Provider } from '../model/index.ts';
3
3
  import type { StakeEventsViewer } from './StakeEvents.ts';
4
4
  export interface StakeViewerProperties {
5
- chainId: Address;
6
5
  minWithdrawalBlocks: number;
7
6
  rewardsContract: Address;
8
7
  stakeEvents: StakeEventsViewer;
@@ -1 +1 @@
1
- {"version":3,"file":"Stake.d.ts","sourceRoot":"","sources":["../../../src/viewers/Stake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClE,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvD,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;CACxD;AAED,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAC1G,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1C,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;CACrE;AAED,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,QAAQ,CAAC,kBAAkB,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9C"}
1
+ {"version":3,"file":"Stake.d.ts","sourceRoot":"","sources":["../../../src/viewers/Stake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,iBAAiB,CAAA;IAC9B,mBAAmB,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAClE,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;IACvD,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;CACxD;AAED,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,kBAAkB,EAAE,qBAAqB,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAC1G,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IACzE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC1C,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAClE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;CACrE;AAED,eAAO,MAAM,kBAAkB,EAAG,aAAsB,CAAA;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAA;AAE1D,MAAM,WAAW,WAAY,SAAQ,QAAQ,CAAC,kBAAkB,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9C"}
@@ -1,8 +1,8 @@
1
1
  import type { Address, Hash, Promisable } from '@xylabs/sdk-js';
2
2
  import type { ChainStakeIntent, XL1BlockRange } from '@xyo-network/xl1-protocol';
3
- import type { Provider, Qualified } from '../model/index.ts';
3
+ import type { ChainQualified, Provider } from '../model/index.ts';
4
4
  export interface StakeIntentViewerMethods {
5
- qualifiedIntentByAddress(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<Qualified<ChainStakeIntent | null>>;
5
+ qualifiedIntentByAddress(address: Address, headOrRange?: Hash | XL1BlockRange): Promisable<ChainQualified<ChainStakeIntent | null>>;
6
6
  }
7
7
  export declare const StakeIntentViewerMoniker: "StakeIntentViewer";
8
8
  export type StakeIntentViewerMoniker = typeof StakeIntentViewerMoniker;
@@ -1 +1 @@
1
- {"version":3,"file":"StakeIntent.d.ts","sourceRoot":"","sources":["../../../src/viewers/StakeIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,UAAU,EAC1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE5D,MAAM,WAAW,wBAAwB;IACvC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CAC/H;AAED,eAAO,MAAM,wBAAwB,EAAG,mBAA4B,CAAA;AACpE,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IACrG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;CAC3G"}
1
+ {"version":3,"file":"StakeIntent.d.ts","sourceRoot":"","sources":["../../../src/viewers/StakeIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,UAAU,EAC1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjE,MAAM,WAAW,wBAAwB;IACvC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAA;CACpI;AAED,eAAO,MAAM,wBAAwB,EAAG,mBAA4B,CAAA;AACpE,MAAM,MAAM,wBAAwB,GAAG,OAAO,wBAAwB,CAAA;AAEtE,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IACrG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAA;CAC3G"}
@@ -0,0 +1,35 @@
1
+ import { type Promisable } from '@xylabs/sdk-js';
2
+ import { type HydratedTransaction, type ValidationError } from '@xyo-network/xl1-protocol';
3
+ import type z from 'zod';
4
+ import { type Provider } from '../model/index.ts';
5
+ export declare const TransactionValidationQualificationZod: z.ZodObject<{
6
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hash, string>>;
7
+ range: 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>;
8
+ }, z.z.core.$strip>;
9
+ export type TransactionValidationQualification = z.infer<typeof TransactionValidationQualificationZod>;
10
+ export declare const isTransactionValidationQualification: <T>(value: T) => value is T & {
11
+ head: import("@xylabs/sdk-js").Hash;
12
+ range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
13
+ };
14
+ export declare const TransactionValidationConfigZod: z.ZodUnion<readonly [z.ZodObject<{
15
+ range: 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>;
16
+ }, z.z.core.$strip>, z.ZodObject<{
17
+ head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").Hash, string>>;
18
+ }, z.z.core.$strip>, z.ZodObject<{}, z.z.core.$strip>]>;
19
+ export type TransactionValidationConfig = z.infer<typeof TransactionValidationConfigZod>;
20
+ export declare const isTransactionValidationConfig: <T>(value: T) => value is T & ({
21
+ range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
22
+ } | {
23
+ head: import("@xylabs/sdk-js").Hash;
24
+ } | Record<string, never>);
25
+ export interface TransactionValidationViewerMethods {
26
+ qualifiedValidateTransactions(transactions: HydratedTransaction[], config?: TransactionValidationConfig): Promisable<[ValidationError[][], TransactionValidationQualification]>;
27
+ }
28
+ export declare const TransactionValidationViewerMoniker: "TransactionValidationViewer";
29
+ export type TransactionValidationViewerMoniker = typeof TransactionValidationViewerMoniker;
30
+ export interface TransactionValidationViewer extends TransactionValidationViewerMethods, Provider<TransactionValidationViewerMoniker> {
31
+ qualifiedValidateTransaction(transaction: HydratedTransaction, config?: TransactionValidationConfig): Promisable<[ValidationError[], TransactionValidationQualification]>;
32
+ validateTransaction(transaction: HydratedTransaction[], config?: TransactionValidationConfig): Promisable<ValidationError[]>;
33
+ validateTransactions(transactions: HydratedTransaction[], config?: TransactionValidationConfig): Promisable<ValidationError[][]>;
34
+ }
35
+ //# sourceMappingURL=TransactionValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionValidation.d.ts","sourceRoot":"","sources":["../../../src/viewers/TransactionValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AAExB,OAAO,EAC2C,KAAK,QAAQ,EAC9D,MAAM,mBAAmB,CAAA;AAE1B,eAAO,MAAM,qCAAqC;;;mBAAwB,CAAA;AAC1E,MAAM,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAA;AACtG,eAAO,MAAM,oCAAoC;;;CAAsD,CAAA;AAEvG,eAAO,MAAM,8BAA8B;;;;uDAA0B,CAAA;AACrE,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;AACxF,eAAO,MAAM,6BAA6B;;;;0BAA+C,CAAA;AAEzF,MAAM,WAAW,kCAAkC;IACjD,6BAA6B,CAC3B,YAAY,EAAE,mBAAmB,EAAE,EACnC,MAAM,CAAC,EAAE,2BAA2B,GACnC,UAAU,CAAC,CAAC,eAAe,EAAE,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAA;CACzE;AAED,eAAO,MAAM,kCAAkC,EAAG,6BAAsC,CAAA;AACxF,MAAM,MAAM,kCAAkC,GAAG,OAAO,kCAAkC,CAAA;AAE1F,MAAM,WAAW,2BAA4B,SAAQ,kCAAkC,EAAE,QAAQ,CAAC,kCAAkC,CAAC;IACnI,4BAA4B,CAC1B,WAAW,EAAE,mBAAmB,EAChC,MAAM,CAAC,EAAE,2BAA2B,GACnC,UAAU,CAAC,CAAC,eAAe,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAA;IACtE,mBAAmB,CAAC,WAAW,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,2BAA2B,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAA;IAC5H,oBAAoB,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,EAAE,2BAA2B,GAAG,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAA;CACjI"}
@@ -1,7 +1,7 @@
1
1
  export * from './AccountBalance.ts';
2
2
  export * from './Block.ts';
3
3
  export * from './BlockReward.ts';
4
- export * from './Chain.ts';
4
+ export * from './BlockValidation.ts';
5
5
  export * from './ChainContract.ts';
6
6
  export * from './ChainStakeViewer.ts';
7
7
  export * from './Fork.ts';
@@ -14,5 +14,6 @@ export * from './StepStake.ts';
14
14
  export * from './StepViewer.ts';
15
15
  export * from './TimeSync.ts';
16
16
  export * from './Transaction.ts';
17
+ export * from './TransactionValidation.ts';
17
18
  export * from './TransferBalance.ts';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viewers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-protocol-sdk",
4
- "version": "1.17.7",
4
+ "version": "1.18.0",
5
5
  "description": "XYO Layer One SDK Protocol",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -39,11 +39,12 @@
39
39
  "!**/*.test.*"
40
40
  ],
41
41
  "dependencies": {
42
+ "@opentelemetry/api": "^1.9.0",
42
43
  "@xylabs/hex": "~5.0.51",
43
44
  "@xylabs/sdk-js": "~5.0.51",
45
+ "@xylabs/zod": "~5.0.51",
44
46
  "@xyo-network/account": "~5.2.17",
45
47
  "@xyo-network/account-model": "~5.2.17",
46
- "@xyo-network/archivist-memory": "~5.2.17",
47
48
  "@xyo-network/archivist-model": "~5.2.17",
48
49
  "@xyo-network/boundwitness-builder": "~5.2.17",
49
50
  "@xyo-network/boundwitness-model": "~5.2.17",
@@ -58,15 +59,16 @@
58
59
  "zod": "~4.1.13"
59
60
  },
60
61
  "devDependencies": {
61
- "@types/node": "~25.0.1",
62
+ "@types/node": "~25.0.2",
62
63
  "@xylabs/events": "~5.0.51",
63
- "@xylabs/ts-scripts-yarn3": "~7.2.30",
64
- "@xylabs/tsconfig": "~7.2.30",
64
+ "@xylabs/ts-scripts-yarn3": "~7.2.32",
65
+ "@xylabs/tsconfig": "~7.2.32",
65
66
  "@xylabs/vitest-extended": "~5.0.51",
66
67
  "@xyo-network/account": "~5.2.17",
68
+ "@xyo-network/archivist-mongodb": "~5.2.17",
67
69
  "@xyo-network/boundwitness-validator": "~5.2.17",
68
70
  "axios": "^1.13.2",
69
- "eslint": "^9.39.1",
71
+ "eslint": "^9.39.2",
70
72
  "typescript": "~5.9.3",
71
73
  "vitest": "~4.0.15"
72
74
  },
@@ -1,5 +1,6 @@
1
- import { AbstractCreatable } from '@xylabs/sdk-js'
1
+ import { AbstractCreatable, assertEx } from '@xylabs/sdk-js'
2
2
 
3
+ import type { Provider, ProviderMoniker } from '../model/index.ts'
3
4
  import type {
4
5
  CreatableProvider,
5
6
  CreatableProviderEventData, CreatableProviderFactory, CreatableProviderInstance, CreatableProviderParams,
@@ -7,11 +8,67 @@ import type {
7
8
  import { ProviderFactory } from './ProviderFactory.ts'
8
9
 
9
10
  export abstract class AbstractCreatableProvider<TParams extends CreatableProviderParams = CreatableProviderParams,
10
- TEventData extends CreatableProviderEventData = CreatableProviderEventData> extends AbstractCreatable<TParams, TEventData> {
11
+ TEventData extends CreatableProviderEventData = CreatableProviderEventData> extends AbstractCreatable<TParams, TEventData>
12
+ implements Omit<CreatableProviderInstance, 'moniker'> {
13
+ protected _contextCache: TParams['context'] | undefined
14
+
15
+ protected get config() {
16
+ return this.context.config!
17
+ }
18
+
19
+ protected get context() {
20
+ return this.params.context!
21
+ }
22
+
23
+ protected get locator() {
24
+ return this.context.locator!
25
+ }
26
+
11
27
  static factory<TModule extends CreatableProviderInstance>(
12
28
  this: CreatableProvider<TModule>,
13
29
  params?: Partial<TModule['params']>,
14
30
  ): CreatableProviderFactory<TModule> {
15
- return ProviderFactory.withParams<TModule>(this, params)
31
+ const factory = ProviderFactory.withParams<TModule>(this, params)
32
+ return factory
33
+ }
34
+
35
+ static async getInstance<T extends CreatableProviderInstance>(
36
+ this: CreatableProvider<T>,
37
+ inParams: T['params'],
38
+ ): Promise<T> {
39
+ const instance = await this.create<T>(inParams)
40
+ return instance
41
+ }
42
+
43
+ static override async paramsHandler<T extends CreatableProviderInstance>(
44
+ params: Partial<T['params']> = {},
45
+ ) {
46
+ const context = assertEx(params.context, () => new Error('Context is required'))
47
+ const config = assertEx(context.config, () => new Error('Context config is required'))
48
+ const locator = assertEx(context.locator, () => new Error('Context locator is required'))
49
+ return await super.paramsHandler<T>({
50
+ ...params,
51
+ statusReporter: params.statusReporter ?? context.statusReporter,
52
+ context: {
53
+ ...context, config, locator,
54
+ },
55
+ name: params.name ?? (this as unknown as CreatableProvider<T>).defaultMoniker,
56
+ })
57
+ }
58
+
59
+ static async tryGetInstance<T extends CreatableProviderInstance>(
60
+ this: CreatableProvider<T>,
61
+ inParams: T['params'],
62
+ ): Promise<T | undefined> {
63
+ try {
64
+ return await this.create<T>(inParams)
65
+ } catch {
66
+ return
67
+ }
68
+ }
69
+
70
+ async locateAndCreate<TProvider extends Provider<ProviderMoniker>,
71
+ TParams extends CreatableProviderInstance<TProvider>['params'] = CreatableProviderInstance<TProvider>['params']>(moniker: TProvider['moniker']) {
72
+ return await this.locator?.getInstance<TProvider, TParams>(moniker)
16
73
  }
17
74
  }
@@ -1,22 +1,38 @@
1
+ import type { MeterProvider, TracerProvider } from '@opentelemetry/api'
1
2
  import type { EventData } from '@xylabs/events'
2
3
  import type {
3
- Creatable, CreatableInstance, CreatableParams, EmptyObject,
4
- Labels, WithOptionalLabels,
4
+ Creatable, CreatableInstance, CreatableParams,
5
+ Labels, Logger, WithOptionalLabels,
5
6
  } from '@xylabs/sdk-js'
6
7
 
7
- import type { ProviderMoniker } from '../model/index.ts'
8
+ import type { Config } from '../config/index.ts'
9
+ import type { Provider, ProviderMoniker } from '../model/index.ts'
10
+ import type { RuntimeStatusMonitor } from '../status/index.ts'
8
11
  import type { LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.ts'
9
12
  import type { ProviderFactoryLocatorInstance } from './ProviderFactoryLocatorInstance.ts'
10
13
 
11
- export interface CreatableProviderParams<TConfig extends EmptyObject = EmptyObject> extends CreatableParams {
12
- config?: TConfig
13
- locator?: ProviderFactoryLocatorInstance
14
+ export interface CreatableProviderContext {
15
+ _id?: string
16
+ config: Config
17
+ locator: ProviderFactoryLocatorInstance
18
+ logger?: Logger
19
+ meterProvider?: MeterProvider
20
+ singletons: Record<string, unknown>
21
+ statusReporter?: RuntimeStatusMonitor
22
+ traceProvider?: TracerProvider
23
+ }
24
+
25
+ export interface CreatableProviderParams<TContext extends CreatableProviderContext = CreatableProviderContext> extends CreatableParams {
26
+ context: TContext
14
27
  }
15
28
  export interface CreatableProviderEventData extends EventData {}
16
29
 
17
- export interface CreatableProviderInstance<TParams extends CreatableProviderParams = CreatableProviderParams,
30
+ export type CreatableProviderInstance<TProvider extends Provider<ProviderMoniker> = Provider<ProviderMoniker>,
31
+ TParams extends CreatableProviderParams = CreatableProviderParams,
18
32
  TEventData extends CreatableProviderEventData = CreatableProviderEventData>
19
- extends CreatableInstance<TParams, TEventData> {}
33
+ = CreatableInstance<TParams, TEventData> & TProvider
34
+
35
+ export type ProviderFactoryScope = 'global' | 'context' | 'local'
20
36
 
21
37
  export interface CreatableProviderFactory<T extends CreatableProviderInstance = CreatableProviderInstance>
22
38
  extends Omit<CreatableProvider<T>, 'create' | 'createHandler' | 'paramsHandler'> {
@@ -24,21 +40,32 @@ export interface CreatableProviderFactory<T extends CreatableProviderInstance =
24
40
  defaultParams?: Partial<T['params']>
25
41
 
26
42
  labels?: Labels
43
+ resolvedMoniker: string
44
+ scope: ProviderFactoryScope
27
45
 
46
+ /** @deprecated use getInstance instead */
28
47
  create(
29
48
  this: CreatableProviderFactory<T>,
30
- params?: Partial<T['params']>): Promise<T>
49
+ params?: Partial<T['params'] & CreatableProviderParams>, start?: boolean): Promise<T>
50
+
51
+ getInstance(
52
+ this: CreatableProviderFactory<T>,
53
+ params: T['params'] & CreatableProviderParams, start?: boolean): Promise<T>
54
+
55
+ tryGetInstance(
56
+ this: CreatableProviderFactory<T>,
57
+ params: T['params'] & CreatableProviderParams, start?: boolean): Promise<T | undefined>
31
58
 
32
59
  }
33
60
 
34
61
  export interface LabeledCreatableProvider<T extends CreatableProviderInstance = CreatableProviderInstance> extends CreatableProvider<T>, WithOptionalLabels {
35
- factory(params?: Partial<T['params']>): LabeledCreatableProviderFactory<T>
62
+ factory(params?: Partial<T['params'] & CreatableProviderParams>): LabeledCreatableProviderFactory<T>
36
63
  }
37
64
 
38
65
  export interface CreatableProvider<T extends CreatableProviderInstance = CreatableProviderInstance> extends Creatable<T> {
39
66
  defaultMoniker: ProviderMoniker
40
67
  monikers: ProviderMoniker[]
41
- factory(params?: Partial<T['params']>): CreatableProviderFactory<T>
68
+ factory(params?: Partial<T['params'] & CreatableProviderParams>): CreatableProviderFactory<T>
42
69
  }
43
70
 
44
71
  /**
@@ -13,17 +13,22 @@ const buildProviderFactory = <TProvider extends CreatableProviderInstance>(
13
13
  provider: CreatableProviderFactory<TProvider>,
14
14
  labels?: Labels,
15
15
  ): LabeledCreatableProviderFactory<TProvider> => {
16
- const factory: LabeledCreatableProviderFactory<TProvider> = {
17
- // Destructure instance properties
18
- ...provider,
19
-
16
+ const factory = {
20
17
  monikers: provider.monikers,
21
18
  // Copy static methods
19
+ // eslint-disable-next-line sonarjs/deprecation
22
20
  create: provider.create.bind(provider) as LabeledCreatableProviderFactory<TProvider>['create'],
23
21
 
24
22
  // Merge module & supplied labels
25
23
  labels: { ...(provider as LabeledCreatableProviderFactory).labels, ...labels },
26
- }
24
+ creatableProvider: provider.creatableProvider,
25
+ resolvedMoniker: provider.resolvedMoniker,
26
+ scope: provider.scope,
27
+ getInstance: provider.getInstance.bind(provider) as LabeledCreatableProviderFactory<TProvider>['getInstance'],
28
+ tryGetInstance: provider.tryGetInstance?.bind(provider) as LabeledCreatableProviderFactory<TProvider>['tryGetInstance'],
29
+ defaultMoniker: provider.defaultMoniker,
30
+ factory: provider.factory.bind(provider) as LabeledCreatableProviderFactory<TProvider>['factory'],
31
+ } satisfies LabeledCreatableProviderFactory<TProvider>
27
32
  return factory
28
33
  }
29
34
 
@@ -3,8 +3,13 @@ import { assertEx } from '@xylabs/sdk-js'
3
3
 
4
4
  import type {
5
5
  CreatableProvider, CreatableProviderFactory, CreatableProviderInstance,
6
+ ProviderFactoryScope,
6
7
  } from './CreatableProvider.ts'
7
8
 
9
+ declare global {
10
+ var xyoServiceSingletons: Record<string, unknown>
11
+ }
12
+
8
13
  export class ProviderFactory<TProvider extends CreatableProviderInstance> implements CreatableProviderFactory<TProvider> {
9
14
  creatableProvider: CreatableProvider<TProvider>
10
15
 
@@ -16,19 +21,29 @@ export class ProviderFactory<TProvider extends CreatableProviderInstance> implem
16
21
 
17
22
  monikers: CreatableProvider<TProvider>['monikers']
18
23
 
24
+ scope: ProviderFactoryScope
25
+
19
26
  constructor(
20
27
  creatableProvider: CreatableProvider<TProvider>,
21
28
  params?: Partial<TProvider['params']>,
22
29
  labels: Labels = {},
30
+ scope: ProviderFactoryScope = 'context',
23
31
  ) {
24
32
  this.creatableProvider = creatableProvider
25
33
  this.defaultParams = params
26
34
  this.defaultMoniker = creatableProvider.defaultMoniker
27
35
  this.monikers = creatableProvider.monikers
36
+ this.scope = scope
28
37
  assertEx(this.monikers.includes(this.defaultMoniker), () => 'defaultMoniker must be in monikers')
29
38
  this.labels = Object.assign({}, (creatableProvider as WithOptionalLabels).labels ?? {}, labels ?? {})
30
39
  }
31
40
 
41
+ get resolvedMoniker() {
42
+ const labels: Labels = this.labels ?? {}
43
+ const labelString = Object.entries(labels).map(([key, value]) => `${key}=${value}`).join(',')
44
+ return labelString.length === 0 ? `${this.defaultMoniker}` : `${this.defaultMoniker}|${labelString}`
45
+ }
46
+
32
47
  static withParams<T extends CreatableProviderInstance>(
33
48
  creatableProvider: CreatableProvider<T>,
34
49
  params?: Partial<T['params']>,
@@ -37,16 +52,9 @@ export class ProviderFactory<TProvider extends CreatableProviderInstance> implem
37
52
  return new ProviderFactory<T>(creatableProvider, params, labels)
38
53
  }
39
54
 
40
- create(this: CreatableProviderFactory<TProvider>, params?: Partial<TProvider['params']>): Promise<TProvider> {
41
- const mergedParams: TProvider['params'] = {
42
- ...this.defaultParams,
43
- ...params,
44
- config: {
45
- ...this.defaultParams?.config,
46
- ...params?.config,
47
- },
48
- } as TProvider['params']
49
- return this.creatableProvider.create<TProvider>(mergedParams)
55
+ /** @deprecated use getInstance instead */
56
+ async create(this: CreatableProviderFactory<TProvider>, params?: Partial<TProvider['params']>, start = true): Promise<TProvider> {
57
+ return await this.getInstance(params as TProvider['params'], start)
50
58
  }
51
59
 
52
60
  factory<T extends CreatableProviderInstance>(
@@ -56,4 +64,59 @@ export class ProviderFactory<TProvider extends CreatableProviderInstance> implem
56
64
  ): CreatableProviderFactory<T> {
57
65
  return new ProviderFactory<T>(this.creatableProvider, params, labels)
58
66
  }
67
+
68
+ async getInstance(this: CreatableProviderFactory<TProvider>, params: TProvider['params'], start = true): Promise<TProvider> {
69
+ let scopeObject: Record<string, unknown> = {}
70
+ switch (this.scope) {
71
+ case 'global': {
72
+ if (globalThis.xyoServiceSingletons === undefined) {
73
+ globalThis.xyoServiceSingletons = {}
74
+ }
75
+ scopeObject = globalThis.xyoServiceSingletons
76
+ break
77
+ }
78
+ case 'context': {
79
+ const context = assertEx(
80
+ params?.context,
81
+ () => 'Context is required for context-scoped providers',
82
+ )
83
+ if (context.singletons === undefined) {
84
+ context.singletons = {}
85
+ }
86
+ scopeObject = context.singletons
87
+ break
88
+ }
89
+ default: {
90
+ scopeObject = {}
91
+ break
92
+ }
93
+ }
94
+ const mergedParams: TProvider['params'] = {
95
+ ...this.defaultParams,
96
+ ...params,
97
+ context: {
98
+ ...this.defaultParams?.context,
99
+ ...params?.context,
100
+ config: {
101
+ ...this.defaultParams?.context?.config,
102
+ ...params?.context?.config,
103
+ },
104
+ },
105
+ } as TProvider['params']
106
+ const resultPromise = scopeObject[this.resolvedMoniker] as Promise<TProvider> ?? this.creatableProvider.create<TProvider>(mergedParams)
107
+ scopeObject[this.resolvedMoniker] = resultPromise
108
+ const result = await resultPromise
109
+ if (start) {
110
+ assertEx(await result.start(), () => 'Failed to start provider instance')
111
+ }
112
+ return result
113
+ }
114
+
115
+ async tryGetInstance(this: CreatableProviderFactory<TProvider>, params: TProvider['params'], start = true): Promise<TProvider | undefined> {
116
+ try {
117
+ return await this.getInstance(params, start)
118
+ } catch {
119
+ return
120
+ }
121
+ }
59
122
  }