@xyo-network/chain-orchestration 1.20.17 → 1.20.19

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 (277) hide show
  1. package/dist/browser/index.mjs +374 -86
  2. package/dist/browser/index.mjs.map +1 -1
  3. package/dist/browser/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
  4. package/dist/browser/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  5. package/dist/browser/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  6. package/dist/browser/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
  7. package/dist/browser/node/config/tryParseConfig.d.ts +160 -2
  8. package/dist/browser/node/config/tryParseConfig.d.ts.map +1 -1
  9. package/dist/browser/node/index.d.ts +3 -4
  10. package/dist/browser/node/index.d.ts.map +1 -1
  11. package/dist/browser/node/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
  12. package/dist/browser/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  13. package/dist/browser/node/init/initServerNode.d.ts +2 -0
  14. package/dist/browser/node/init/initServerNode.d.ts.map +1 -1
  15. package/dist/browser/node/manifest/public/index.d.ts +0 -3
  16. package/dist/browser/node/manifest/public/index.d.ts.map +1 -1
  17. package/dist/browser/shared/actor/ValidatorActor.d.ts +4 -2
  18. package/dist/browser/shared/actor/ValidatorActor.d.ts.map +1 -1
  19. package/dist/browser/shared/config/actors/Api.d.ts +23 -5
  20. package/dist/browser/shared/config/actors/Api.d.ts.map +1 -1
  21. package/dist/browser/shared/config/actors/Bridge.d.ts +23 -5
  22. package/dist/browser/shared/config/actors/Bridge.d.ts.map +1 -1
  23. package/dist/browser/shared/config/actors/Mempool.d.ts +23 -5
  24. package/dist/browser/shared/config/actors/Mempool.d.ts.map +1 -1
  25. package/dist/browser/shared/config/actors/Producer.d.ts +30 -5
  26. package/dist/browser/shared/config/actors/Producer.d.ts.map +1 -1
  27. package/dist/browser/shared/config/actors/RewardRedemption.d.ts +23 -5
  28. package/dist/browser/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  29. package/dist/browser/shared/config/actors/Validator.d.ts +29 -5
  30. package/dist/browser/shared/config/actors/Validator.d.ts.map +1 -1
  31. package/dist/browser/shared/config/actors/accountIndex.d.ts +3 -0
  32. package/dist/browser/shared/config/actors/accountIndex.d.ts.map +1 -0
  33. package/dist/browser/shared/config/actors/index.d.ts +0 -1
  34. package/dist/browser/shared/config/actors/index.d.ts.map +1 -1
  35. package/dist/browser/shared/config/mergeConfig.d.ts +3 -1
  36. package/dist/browser/shared/config/mergeConfig.d.ts.map +1 -1
  37. package/dist/browser/shared/init/index.d.ts +1 -0
  38. package/dist/browser/shared/init/index.d.ts.map +1 -1
  39. package/dist/browser/shared/init/initActorAccount.d.ts.map +1 -1
  40. package/dist/browser/shared/init/initActorSeedPhrase.d.ts.map +1 -1
  41. package/dist/browser/shared/init/initWallet.d.ts +1 -1
  42. package/dist/browser/shared/init/initWallet.d.ts.map +1 -1
  43. package/dist/browser/shared/init/walletResolution.d.ts +56 -0
  44. package/dist/browser/shared/init/walletResolution.d.ts.map +1 -0
  45. package/dist/browser/shared/orchestrator/Orchestrator.d.ts +1 -1
  46. package/dist/browser/shared/orchestrator/Orchestrator.d.ts.map +1 -1
  47. package/dist/neutral/index.mjs +374 -86
  48. package/dist/neutral/index.mjs.map +1 -1
  49. package/dist/neutral/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
  50. package/dist/neutral/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  51. package/dist/neutral/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  52. package/dist/neutral/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
  53. package/dist/neutral/node/config/tryParseConfig.d.ts +160 -2
  54. package/dist/neutral/node/config/tryParseConfig.d.ts.map +1 -1
  55. package/dist/neutral/node/index.d.ts +3 -4
  56. package/dist/neutral/node/index.d.ts.map +1 -1
  57. package/dist/neutral/node/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
  58. package/dist/neutral/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  59. package/dist/neutral/node/init/initServerNode.d.ts +2 -0
  60. package/dist/neutral/node/init/initServerNode.d.ts.map +1 -1
  61. package/dist/neutral/node/manifest/public/index.d.ts +0 -3
  62. package/dist/neutral/node/manifest/public/index.d.ts.map +1 -1
  63. package/dist/neutral/shared/actor/ValidatorActor.d.ts +4 -2
  64. package/dist/neutral/shared/actor/ValidatorActor.d.ts.map +1 -1
  65. package/dist/neutral/shared/config/actors/Api.d.ts +23 -5
  66. package/dist/neutral/shared/config/actors/Api.d.ts.map +1 -1
  67. package/dist/neutral/shared/config/actors/Bridge.d.ts +23 -5
  68. package/dist/neutral/shared/config/actors/Bridge.d.ts.map +1 -1
  69. package/dist/neutral/shared/config/actors/Mempool.d.ts +23 -5
  70. package/dist/neutral/shared/config/actors/Mempool.d.ts.map +1 -1
  71. package/dist/neutral/shared/config/actors/Producer.d.ts +30 -5
  72. package/dist/neutral/shared/config/actors/Producer.d.ts.map +1 -1
  73. package/dist/neutral/shared/config/actors/RewardRedemption.d.ts +23 -5
  74. package/dist/neutral/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  75. package/dist/neutral/shared/config/actors/Validator.d.ts +29 -5
  76. package/dist/neutral/shared/config/actors/Validator.d.ts.map +1 -1
  77. package/dist/neutral/shared/config/actors/accountIndex.d.ts +3 -0
  78. package/dist/neutral/shared/config/actors/accountIndex.d.ts.map +1 -0
  79. package/dist/neutral/shared/config/actors/index.d.ts +0 -1
  80. package/dist/neutral/shared/config/actors/index.d.ts.map +1 -1
  81. package/dist/neutral/shared/config/mergeConfig.d.ts +3 -1
  82. package/dist/neutral/shared/config/mergeConfig.d.ts.map +1 -1
  83. package/dist/neutral/shared/init/index.d.ts +1 -0
  84. package/dist/neutral/shared/init/index.d.ts.map +1 -1
  85. package/dist/neutral/shared/init/initActorAccount.d.ts.map +1 -1
  86. package/dist/neutral/shared/init/initActorSeedPhrase.d.ts.map +1 -1
  87. package/dist/neutral/shared/init/initWallet.d.ts +1 -1
  88. package/dist/neutral/shared/init/initWallet.d.ts.map +1 -1
  89. package/dist/neutral/shared/init/walletResolution.d.ts +56 -0
  90. package/dist/neutral/shared/init/walletResolution.d.ts.map +1 -0
  91. package/dist/neutral/shared/orchestrator/Orchestrator.d.ts +1 -1
  92. package/dist/neutral/shared/orchestrator/Orchestrator.d.ts.map +1 -1
  93. package/dist/node/index.mjs +510 -477
  94. package/dist/node/index.mjs.map +1 -1
  95. package/dist/node/node/config/locators/actors/bridgeLocatorFromConfig.d.ts +1 -1
  96. package/dist/node/node/config/locators/actors/bridgeLocatorFromConfig.d.ts.map +1 -1
  97. package/dist/node/node/config/locators/localLocatorFromConfig.d.ts.map +1 -1
  98. package/dist/node/node/config/locators/locatorsFromConfig.d.ts.map +1 -1
  99. package/dist/node/node/config/tryParseConfig.d.ts +160 -2
  100. package/dist/node/node/config/tryParseConfig.d.ts.map +1 -1
  101. package/dist/node/node/index.d.ts +3 -4
  102. package/dist/node/node/index.d.ts.map +1 -1
  103. package/dist/node/node/init/initEvmProvidersIfAvailable.d.ts.map +1 -1
  104. package/dist/node/node/init/initFinalizationArchivistIfNeeded.d.ts.map +1 -1
  105. package/dist/node/node/init/initServerNode.d.ts +2 -0
  106. package/dist/node/node/init/initServerNode.d.ts.map +1 -1
  107. package/dist/node/node/manifest/public/index.d.ts +0 -3
  108. package/dist/node/node/manifest/public/index.d.ts.map +1 -1
  109. package/dist/node/shared/actor/ValidatorActor.d.ts +4 -2
  110. package/dist/node/shared/actor/ValidatorActor.d.ts.map +1 -1
  111. package/dist/node/shared/config/actors/Api.d.ts +23 -5
  112. package/dist/node/shared/config/actors/Api.d.ts.map +1 -1
  113. package/dist/node/shared/config/actors/Bridge.d.ts +23 -5
  114. package/dist/node/shared/config/actors/Bridge.d.ts.map +1 -1
  115. package/dist/node/shared/config/actors/Mempool.d.ts +23 -5
  116. package/dist/node/shared/config/actors/Mempool.d.ts.map +1 -1
  117. package/dist/node/shared/config/actors/Producer.d.ts +30 -5
  118. package/dist/node/shared/config/actors/Producer.d.ts.map +1 -1
  119. package/dist/node/shared/config/actors/RewardRedemption.d.ts +23 -5
  120. package/dist/node/shared/config/actors/RewardRedemption.d.ts.map +1 -1
  121. package/dist/node/shared/config/actors/Validator.d.ts +29 -5
  122. package/dist/node/shared/config/actors/Validator.d.ts.map +1 -1
  123. package/dist/node/shared/config/actors/accountIndex.d.ts +3 -0
  124. package/dist/node/shared/config/actors/accountIndex.d.ts.map +1 -0
  125. package/dist/node/shared/config/actors/index.d.ts +0 -1
  126. package/dist/node/shared/config/actors/index.d.ts.map +1 -1
  127. package/dist/node/shared/config/mergeConfig.d.ts +3 -1
  128. package/dist/node/shared/config/mergeConfig.d.ts.map +1 -1
  129. package/dist/node/shared/init/index.d.ts +1 -0
  130. package/dist/node/shared/init/index.d.ts.map +1 -1
  131. package/dist/node/shared/init/initActorAccount.d.ts.map +1 -1
  132. package/dist/node/shared/init/initActorSeedPhrase.d.ts.map +1 -1
  133. package/dist/node/shared/init/initWallet.d.ts +1 -1
  134. package/dist/node/shared/init/initWallet.d.ts.map +1 -1
  135. package/dist/node/shared/init/walletResolution.d.ts +56 -0
  136. package/dist/node/shared/init/walletResolution.d.ts.map +1 -0
  137. package/dist/node/shared/orchestrator/Orchestrator.d.ts +1 -1
  138. package/dist/node/shared/orchestrator/Orchestrator.d.ts.map +1 -1
  139. package/package.json +18 -25
  140. package/dist/browser/node/archivists/ChainFinalized/archivist.d.ts +0 -4
  141. package/dist/browser/node/archivists/ChainFinalized/archivist.d.ts.map +0 -1
  142. package/dist/browser/node/archivists/ChainFinalized/index.d.ts +0 -2
  143. package/dist/browser/node/archivists/ChainFinalized/index.d.ts.map +0 -1
  144. package/dist/browser/node/archivists/ChainFinalized/local.d.ts +0 -4
  145. package/dist/browser/node/archivists/ChainFinalized/local.d.ts.map +0 -1
  146. package/dist/browser/node/archivists/PendingBlocks/archivist.d.ts +0 -4
  147. package/dist/browser/node/archivists/PendingBlocks/archivist.d.ts.map +0 -1
  148. package/dist/browser/node/archivists/PendingBlocks/index.d.ts +0 -2
  149. package/dist/browser/node/archivists/PendingBlocks/index.d.ts.map +0 -1
  150. package/dist/browser/node/archivists/PendingBlocks/local.d.ts +0 -4
  151. package/dist/browser/node/archivists/PendingBlocks/local.d.ts.map +0 -1
  152. package/dist/browser/node/archivists/RejectedTransactions/archivist.d.ts +0 -4
  153. package/dist/browser/node/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
  154. package/dist/browser/node/archivists/RejectedTransactions/index.d.ts +0 -2
  155. package/dist/browser/node/archivists/RejectedTransactions/index.d.ts.map +0 -1
  156. package/dist/browser/node/archivists/RejectedTransactions/local.d.ts +0 -3
  157. package/dist/browser/node/archivists/RejectedTransactions/local.d.ts.map +0 -1
  158. package/dist/browser/node/archivists/StakeIntentState/archivist.d.ts +0 -4
  159. package/dist/browser/node/archivists/StakeIntentState/archivist.d.ts.map +0 -1
  160. package/dist/browser/node/archivists/StakeIntentState/index.d.ts +0 -2
  161. package/dist/browser/node/archivists/StakeIntentState/index.d.ts.map +0 -1
  162. package/dist/browser/node/archivists/StakeIntentState/local.d.ts +0 -4
  163. package/dist/browser/node/archivists/StakeIntentState/local.d.ts.map +0 -1
  164. package/dist/browser/node/archivists/index.d.ts +0 -5
  165. package/dist/browser/node/archivists/index.d.ts.map +0 -1
  166. package/dist/browser/node/archivists/lib/index.d.ts +0 -2
  167. package/dist/browser/node/archivists/lib/index.d.ts.map +0 -1
  168. package/dist/browser/node/archivists/lib/localPersistentArchivist.d.ts +0 -21
  169. package/dist/browser/node/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
  170. package/dist/browser/node/evm/index.d.ts +0 -5
  171. package/dist/browser/node/evm/index.d.ts.map +0 -1
  172. package/dist/browser/node/evm/initChainId.d.ts +0 -4
  173. package/dist/browser/node/evm/initChainId.d.ts.map +0 -1
  174. package/dist/browser/node/evm/initEvmProvider.d.ts +0 -5
  175. package/dist/browser/node/evm/initEvmProvider.d.ts.map +0 -1
  176. package/dist/browser/node/evm/initInfuraProvider.d.ts +0 -6
  177. package/dist/browser/node/evm/initInfuraProvider.d.ts.map +0 -1
  178. package/dist/browser/node/evm/initJsonRpcProvider.d.ts +0 -6
  179. package/dist/browser/node/evm/initJsonRpcProvider.d.ts.map +0 -1
  180. package/dist/browser/node/health/index.d.ts +0 -2
  181. package/dist/browser/node/health/index.d.ts.map +0 -1
  182. package/dist/browser/node/health/initHealthEndpoints.d.ts +0 -5
  183. package/dist/browser/node/health/initHealthEndpoints.d.ts.map +0 -1
  184. package/dist/browser/node/sharedMiddleware.d.ts +0 -3
  185. package/dist/browser/node/sharedMiddleware.d.ts.map +0 -1
  186. package/dist/neutral/node/archivists/ChainFinalized/archivist.d.ts +0 -4
  187. package/dist/neutral/node/archivists/ChainFinalized/archivist.d.ts.map +0 -1
  188. package/dist/neutral/node/archivists/ChainFinalized/index.d.ts +0 -2
  189. package/dist/neutral/node/archivists/ChainFinalized/index.d.ts.map +0 -1
  190. package/dist/neutral/node/archivists/ChainFinalized/local.d.ts +0 -4
  191. package/dist/neutral/node/archivists/ChainFinalized/local.d.ts.map +0 -1
  192. package/dist/neutral/node/archivists/PendingBlocks/archivist.d.ts +0 -4
  193. package/dist/neutral/node/archivists/PendingBlocks/archivist.d.ts.map +0 -1
  194. package/dist/neutral/node/archivists/PendingBlocks/index.d.ts +0 -2
  195. package/dist/neutral/node/archivists/PendingBlocks/index.d.ts.map +0 -1
  196. package/dist/neutral/node/archivists/PendingBlocks/local.d.ts +0 -4
  197. package/dist/neutral/node/archivists/PendingBlocks/local.d.ts.map +0 -1
  198. package/dist/neutral/node/archivists/RejectedTransactions/archivist.d.ts +0 -4
  199. package/dist/neutral/node/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
  200. package/dist/neutral/node/archivists/RejectedTransactions/index.d.ts +0 -2
  201. package/dist/neutral/node/archivists/RejectedTransactions/index.d.ts.map +0 -1
  202. package/dist/neutral/node/archivists/RejectedTransactions/local.d.ts +0 -3
  203. package/dist/neutral/node/archivists/RejectedTransactions/local.d.ts.map +0 -1
  204. package/dist/neutral/node/archivists/StakeIntentState/archivist.d.ts +0 -4
  205. package/dist/neutral/node/archivists/StakeIntentState/archivist.d.ts.map +0 -1
  206. package/dist/neutral/node/archivists/StakeIntentState/index.d.ts +0 -2
  207. package/dist/neutral/node/archivists/StakeIntentState/index.d.ts.map +0 -1
  208. package/dist/neutral/node/archivists/StakeIntentState/local.d.ts +0 -4
  209. package/dist/neutral/node/archivists/StakeIntentState/local.d.ts.map +0 -1
  210. package/dist/neutral/node/archivists/index.d.ts +0 -5
  211. package/dist/neutral/node/archivists/index.d.ts.map +0 -1
  212. package/dist/neutral/node/archivists/lib/index.d.ts +0 -2
  213. package/dist/neutral/node/archivists/lib/index.d.ts.map +0 -1
  214. package/dist/neutral/node/archivists/lib/localPersistentArchivist.d.ts +0 -21
  215. package/dist/neutral/node/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
  216. package/dist/neutral/node/evm/index.d.ts +0 -5
  217. package/dist/neutral/node/evm/index.d.ts.map +0 -1
  218. package/dist/neutral/node/evm/initChainId.d.ts +0 -4
  219. package/dist/neutral/node/evm/initChainId.d.ts.map +0 -1
  220. package/dist/neutral/node/evm/initEvmProvider.d.ts +0 -5
  221. package/dist/neutral/node/evm/initEvmProvider.d.ts.map +0 -1
  222. package/dist/neutral/node/evm/initInfuraProvider.d.ts +0 -6
  223. package/dist/neutral/node/evm/initInfuraProvider.d.ts.map +0 -1
  224. package/dist/neutral/node/evm/initJsonRpcProvider.d.ts +0 -6
  225. package/dist/neutral/node/evm/initJsonRpcProvider.d.ts.map +0 -1
  226. package/dist/neutral/node/health/index.d.ts +0 -2
  227. package/dist/neutral/node/health/index.d.ts.map +0 -1
  228. package/dist/neutral/node/health/initHealthEndpoints.d.ts +0 -5
  229. package/dist/neutral/node/health/initHealthEndpoints.d.ts.map +0 -1
  230. package/dist/neutral/node/sharedMiddleware.d.ts +0 -3
  231. package/dist/neutral/node/sharedMiddleware.d.ts.map +0 -1
  232. package/dist/node/node/archivists/ChainFinalized/archivist.d.ts +0 -4
  233. package/dist/node/node/archivists/ChainFinalized/archivist.d.ts.map +0 -1
  234. package/dist/node/node/archivists/ChainFinalized/index.d.ts +0 -2
  235. package/dist/node/node/archivists/ChainFinalized/index.d.ts.map +0 -1
  236. package/dist/node/node/archivists/ChainFinalized/local.d.ts +0 -4
  237. package/dist/node/node/archivists/ChainFinalized/local.d.ts.map +0 -1
  238. package/dist/node/node/archivists/PendingBlocks/archivist.d.ts +0 -4
  239. package/dist/node/node/archivists/PendingBlocks/archivist.d.ts.map +0 -1
  240. package/dist/node/node/archivists/PendingBlocks/index.d.ts +0 -2
  241. package/dist/node/node/archivists/PendingBlocks/index.d.ts.map +0 -1
  242. package/dist/node/node/archivists/PendingBlocks/local.d.ts +0 -4
  243. package/dist/node/node/archivists/PendingBlocks/local.d.ts.map +0 -1
  244. package/dist/node/node/archivists/RejectedTransactions/archivist.d.ts +0 -4
  245. package/dist/node/node/archivists/RejectedTransactions/archivist.d.ts.map +0 -1
  246. package/dist/node/node/archivists/RejectedTransactions/index.d.ts +0 -2
  247. package/dist/node/node/archivists/RejectedTransactions/index.d.ts.map +0 -1
  248. package/dist/node/node/archivists/RejectedTransactions/local.d.ts +0 -3
  249. package/dist/node/node/archivists/RejectedTransactions/local.d.ts.map +0 -1
  250. package/dist/node/node/archivists/StakeIntentState/archivist.d.ts +0 -4
  251. package/dist/node/node/archivists/StakeIntentState/archivist.d.ts.map +0 -1
  252. package/dist/node/node/archivists/StakeIntentState/index.d.ts +0 -2
  253. package/dist/node/node/archivists/StakeIntentState/index.d.ts.map +0 -1
  254. package/dist/node/node/archivists/StakeIntentState/local.d.ts +0 -4
  255. package/dist/node/node/archivists/StakeIntentState/local.d.ts.map +0 -1
  256. package/dist/node/node/archivists/index.d.ts +0 -5
  257. package/dist/node/node/archivists/index.d.ts.map +0 -1
  258. package/dist/node/node/archivists/lib/index.d.ts +0 -2
  259. package/dist/node/node/archivists/lib/index.d.ts.map +0 -1
  260. package/dist/node/node/archivists/lib/localPersistentArchivist.d.ts +0 -21
  261. package/dist/node/node/archivists/lib/localPersistentArchivist.d.ts.map +0 -1
  262. package/dist/node/node/evm/index.d.ts +0 -5
  263. package/dist/node/node/evm/index.d.ts.map +0 -1
  264. package/dist/node/node/evm/initChainId.d.ts +0 -4
  265. package/dist/node/node/evm/initChainId.d.ts.map +0 -1
  266. package/dist/node/node/evm/initEvmProvider.d.ts +0 -5
  267. package/dist/node/node/evm/initEvmProvider.d.ts.map +0 -1
  268. package/dist/node/node/evm/initInfuraProvider.d.ts +0 -6
  269. package/dist/node/node/evm/initInfuraProvider.d.ts.map +0 -1
  270. package/dist/node/node/evm/initJsonRpcProvider.d.ts +0 -6
  271. package/dist/node/node/evm/initJsonRpcProvider.d.ts.map +0 -1
  272. package/dist/node/node/health/index.d.ts +0 -2
  273. package/dist/node/node/health/index.d.ts.map +0 -1
  274. package/dist/node/node/health/initHealthEndpoints.d.ts +0 -5
  275. package/dist/node/node/health/initHealthEndpoints.d.ts.map +0 -1
  276. package/dist/node/node/sharedMiddleware.d.ts +0 -3
  277. package/dist/node/node/sharedMiddleware.d.ts.map +0 -1
@@ -4,7 +4,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
4
4
  // src/shared/actor/ValidatorActor.ts
5
5
  import { creatable } from "@xylabs/sdk-js";
6
6
  import { processPendingBlocks } from "@xyo-network/chain-sdk";
7
- import { ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker, FinalizationRunnerMoniker, MempoolViewerMoniker } from "@xyo-network/xl1-sdk";
7
+ import { ActorV3, BlockValidationViewerMoniker, BlockViewerMoniker, DeadLetterQueueRunnerMoniker, FinalizationRunnerMoniker, MempoolViewerMoniker } from "@xyo-network/xl1-sdk";
8
8
  function _ts_decorate(decorators, target, key, desc) {
9
9
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
10
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -18,6 +18,7 @@ var ValidatorActor = class extends ActorV3 {
18
18
  }
19
19
  _blockValidationViewer;
20
20
  _blockViewer;
21
+ _deadLetterQueueRunner;
21
22
  _finalizationRunner;
22
23
  _lastValidatedBlock;
23
24
  _lastValidatedBlockHash;
@@ -37,18 +38,22 @@ var ValidatorActor = class extends ActorV3 {
37
38
  get mempoolViewer() {
38
39
  return this._mempoolViewer;
39
40
  }
41
+ get minCandidates() {
42
+ return this.params.config.minCandidates;
43
+ }
40
44
  async createHandler() {
41
45
  await super.startHandler();
42
46
  this._blockValidationViewer = await this.locator.getInstance(BlockValidationViewerMoniker);
43
47
  this._blockViewer = await this.locator.getInstance(BlockViewerMoniker);
44
48
  this._finalizationRunner = await this.locator.getInstance(FinalizationRunnerMoniker);
45
49
  this._mempoolViewer = await this.locator.getInstance(MempoolViewerMoniker);
50
+ this._deadLetterQueueRunner = await this.locator.tryGetInstance(DeadLetterQueueRunnerMoniker);
46
51
  }
47
52
  async startHandler() {
48
53
  await super.startHandler();
49
54
  this.registerTimer("ValidatorActor", async () => {
50
55
  await this.spanAsync("processPendingBlocks", async () => {
51
- console.log("ValidatorActor: Processing pending blocks...");
56
+ this.logger?.debug("ValidatorActor: Processing pending blocks...");
52
57
  await processPendingBlocks({
53
58
  blockValidationViewer: this.blockValidationViewer,
54
59
  context: this.context,
@@ -56,7 +61,9 @@ var ValidatorActor = class extends ActorV3 {
56
61
  mempoolViewer: this.mempoolViewer,
57
62
  blockViewer: this.blockViewer,
58
63
  finalizationRunner: this.finalizationRunner,
59
- allowedProducers: this.allowedProducers
64
+ allowedProducers: this.allowedProducers,
65
+ minCandidates: this.minCandidates,
66
+ deadLetterQueueRunner: this._deadLetterQueueRunner
60
67
  });
61
68
  }, {
62
69
  ...this.context,
@@ -91,13 +98,24 @@ __name(buildTelemetryConfig, "buildTelemetryConfig");
91
98
  // src/shared/config/actors/Api.ts
92
99
  import { zodAsFactory, zodIsFactory, zodToFactory } from "@xylabs/sdk-js";
93
100
  import { BaseConfigContextZod, HostActorConfigZod } from "@xyo-network/xl1-sdk";
101
+ import { globalRegistry as globalRegistry2, z as z2 } from "zod";
102
+
103
+ // src/shared/config/actors/accountIndex.ts
94
104
  import { globalRegistry, z } from "zod";
95
- var ApiConfigZod = HostActorConfigZod.extend(z.object({
96
- initRewardsCache: z.union([
97
- z.number(),
98
- z.string(),
99
- z.boolean()
100
- ]).transform((v) => v !== "0" && v !== "false" && v !== false && v != 0).default(true).register(globalRegistry, {
105
+ var ActorAccountIndexZod = /* @__PURE__ */ __name((title) => z.coerce.number().int().min(0).optional().register(globalRegistry, {
106
+ description: "Account index derived from the actor wallet phrase. Defaults to 0 for actor mnemonics and to the actor-specific shared index for the root mnemonic.",
107
+ title,
108
+ type: "number"
109
+ }), "ActorAccountIndexZod");
110
+
111
+ // src/shared/config/actors/Api.ts
112
+ var ApiConfigZod = HostActorConfigZod.extend(z2.object({
113
+ accountIndex: ActorAccountIndexZod("api.accountIndex"),
114
+ initRewardsCache: z2.union([
115
+ z2.number(),
116
+ z2.string(),
117
+ z2.boolean()
118
+ ]).transform((v) => v !== "0" && v !== "false" && v !== false && v != 0).default(true).register(globalRegistry2, {
101
119
  description: "Whether to initialize the rewards cache on startup",
102
120
  title: "api.initRewardsCache",
103
121
  type: "boolean"
@@ -116,7 +134,7 @@ var toApiConfigContext = zodToFactory(ApiConfigContext, "toApiConfigContext");
116
134
  // src/shared/config/actors/Bridge.ts
117
135
  import { AddressZod, HexZod, toAddress, toHex, zodAsFactory as zodAsFactory2, zodIsFactory as zodIsFactory2, zodToFactory as zodToFactory2 } from "@xylabs/sdk-js";
118
136
  import { AttoXL1ConvertFactor, BaseConfigContextZod as BaseConfigContextZod2, HostActorConfigZod as HostActorConfigZod2, XL1 } from "@xyo-network/xl1-sdk";
119
- import { globalRegistry as globalRegistry2, z as z2 } from "zod";
137
+ import { globalRegistry as globalRegistry3, z as z3 } from "zod";
120
138
  var DEFAULT_FIXED_FEE = toHex(XL1(1000n) * AttoXL1ConvertFactor.xl1);
121
139
  var DEFAULT_VARIABLE_FEE_BASIS_POINTS = 300;
122
140
  var DEFAULT_HARDHAT_BRIDGE_CONTRACT = toAddress("2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6");
@@ -125,83 +143,84 @@ var DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY = toHex("0xac0974bec39a17e36
125
143
  var DEFAULT_HARDHAT_TOKEN_CONTRACT = toAddress("5FbDB2315678afecb367f032d93F642f64180aa3");
126
144
  var DEFAULT_MAX_BRIDGE_AMOUNT = toHex(XL1(1000000n) * AttoXL1ConvertFactor.xl1);
127
145
  var DEFAULT_MIN_BRIDGE_AMOUNT = toHex(XL1(1500n) * AttoXL1ConvertFactor.xl1);
128
- var BasisPointsZod = z2.coerce.number().int().nonnegative().max(1e4);
146
+ var BasisPointsZod = z3.coerce.number().int().nonnegative().max(1e4);
129
147
  var BridgeConfigZod = HostActorConfigZod2.extend({
130
- escrowAddress: AddressZod.optional().register(globalRegistry2, {
148
+ accountIndex: ActorAccountIndexZod("bridge.accountIndex"),
149
+ escrowAddress: AddressZod.optional().register(globalRegistry3, {
131
150
  description: "Address to which bridge escrow will be sent",
132
151
  title: "bridge.escrowAddress",
133
152
  type: "string"
134
153
  }),
135
- feesAddress: AddressZod.optional().register(globalRegistry2, {
154
+ feesAddress: AddressZod.optional().register(globalRegistry3, {
136
155
  description: "Address to which bridge fees will be sent",
137
156
  title: "bridge.feesAddress",
138
157
  type: "string"
139
158
  }),
140
- feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry2, {
159
+ feeFixed: HexZod.default(DEFAULT_FIXED_FEE).register(globalRegistry3, {
141
160
  default: DEFAULT_FIXED_FEE,
142
161
  description: "Fixed fee (in AttoXL1) applied to bridge transfers",
143
162
  title: "bridge.feeFixed",
144
163
  type: "bigint"
145
164
  }),
146
- feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry2, {
165
+ feeRateBasisPoints: BasisPointsZod.default(DEFAULT_VARIABLE_FEE_BASIS_POINTS).register(globalRegistry3, {
147
166
  default: DEFAULT_VARIABLE_FEE_BASIS_POINTS,
148
167
  description: "Variable rate fee (in basis points where 1 bps = 0.01%) applied to bridge transfers",
149
168
  title: "bridge.feeRateBasisPoints",
150
169
  type: "number"
151
170
  }),
152
- maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry2, {
171
+ maxBridgeAmount: HexZod.default(DEFAULT_MAX_BRIDGE_AMOUNT).register(globalRegistry3, {
153
172
  default: DEFAULT_MAX_BRIDGE_AMOUNT,
154
173
  description: "Maximum amount allowed for a bridge transfer",
155
174
  title: "bridge.maxBridgeAmount",
156
175
  type: "string"
157
176
  }),
158
- minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry2, {
177
+ minBridgeAmount: HexZod.default(DEFAULT_MIN_BRIDGE_AMOUNT).register(globalRegistry3, {
159
178
  default: DEFAULT_MIN_BRIDGE_AMOUNT,
160
179
  description: "Minimum amount required for a bridge transfer",
161
180
  title: "bridge.minBridgeAmount",
162
181
  type: "string"
163
182
  }),
164
- redisHost: z2.string().default("localhost").register(globalRegistry2, {
183
+ redisHost: z3.string().default("localhost").register(globalRegistry3, {
165
184
  default: "localhost",
166
185
  description: "Host for the Bridge Redis instance",
167
186
  title: "bridge.redisHost",
168
187
  type: "string"
169
188
  }),
170
- redisPort: z2.coerce.number().int().positive().default(6379).register(globalRegistry2, {
189
+ redisPort: z3.coerce.number().int().positive().default(6379).register(globalRegistry3, {
171
190
  default: 6379,
172
191
  description: "Port for the Bridge Redis instance",
173
192
  title: "bridge.redisPort",
174
193
  type: "number"
175
194
  }),
176
- remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry2, {
195
+ remoteBridgeContractAddress: AddressZod.default(DEFAULT_HARDHAT_BRIDGE_CONTRACT).register(globalRegistry3, {
177
196
  default: DEFAULT_HARDHAT_BRIDGE_CONTRACT,
178
197
  description: "Hex representation of remote token address used for bridging",
179
198
  title: "bridge.remoteBridgeContractAddress",
180
199
  type: "string"
181
200
  }),
182
- remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry2, {
201
+ remoteChainId: HexZod.default(DEFAULT_HARDHAT_CHAIN_ID).register(globalRegistry3, {
183
202
  default: DEFAULT_HARDHAT_CHAIN_ID,
184
203
  description: "Remote chain ID",
185
204
  title: "bridge.remoteChainId",
186
205
  type: "string"
187
206
  }),
188
- remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry2, {
207
+ remoteTokenAddress: HexZod.default(DEFAULT_HARDHAT_TOKEN_CONTRACT).register(globalRegistry3, {
189
208
  default: DEFAULT_HARDHAT_TOKEN_CONTRACT,
190
209
  description: "Hex representation of remote token address used for bridging",
191
210
  title: "bridge.remoteTokenAddress",
192
211
  type: "string"
193
212
  }),
194
- remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry2, {
213
+ remoteChainWalletPrivateKey: HexZod.default(DEFAULT_HARDHAT_REMOTE_CHAIN_WALLET_PRIVATE_KEY).register(globalRegistry3, {
195
214
  description: "Private key for the wallet to use for the remote chain wallet",
196
215
  title: "bridge.remoteChainWalletPrivateKey",
197
216
  type: "string"
198
217
  }),
199
- xl1ChainId: HexZod.optional().register(globalRegistry2, {
218
+ xl1ChainId: HexZod.optional().register(globalRegistry3, {
200
219
  description: "XL1 chain id used for bridging",
201
220
  title: "bridge.xl1ChainId",
202
221
  type: "string"
203
222
  }),
204
- xl1TokenAddress: HexZod.optional().register(globalRegistry2, {
223
+ xl1TokenAddress: HexZod.optional().register(globalRegistry3, {
205
224
  description: "XL1 token address used for bridging",
206
225
  title: "bridge.xl1TokenAddress",
207
226
  type: "string"
@@ -232,11 +251,12 @@ var toBridgeConfigContext = zodToFactory2(BridgeConfigContext, "toBridgeConfigCo
232
251
  // src/shared/config/actors/Mempool.ts
233
252
  import { zodAsFactory as zodAsFactory3, zodIsFactory as zodIsFactory3, zodToFactory as zodToFactory3 } from "@xylabs/sdk-js";
234
253
  import { BaseConfigContextZod as BaseConfigContextZod3, HostActorConfigZod as HostActorConfigZod3 } from "@xyo-network/xl1-sdk";
235
- import { globalRegistry as globalRegistry3, z as z3 } from "zod";
254
+ import { globalRegistry as globalRegistry4, z as z4 } from "zod";
236
255
  var MempoolConfigZod = HostActorConfigZod3.extend({
237
- enabled: z3.union([
238
- z3.string(),
239
- z3.boolean()
256
+ accountIndex: ActorAccountIndexZod("mempool.accountIndex"),
257
+ enabled: z4.union([
258
+ z4.string(),
259
+ z4.boolean()
240
260
  ]).default("false").transform((val, ctx) => {
241
261
  if (typeof val === "boolean") return val;
242
262
  const normalized = val.toLowerCase().trim();
@@ -257,8 +277,8 @@ var MempoolConfigZod = HostActorConfigZod3.extend({
257
277
  expected: "boolean",
258
278
  message: `Invalid boolean value: "${val}". Use true/false, 1/0, yes/no.`
259
279
  });
260
- return z3.NEVER;
261
- }).register(globalRegistry3, {
280
+ return z4.NEVER;
281
+ }).register(globalRegistry4, {
262
282
  default: "false",
263
283
  description: "Enable the Mempool",
264
284
  title: "mempool.enabled",
@@ -278,36 +298,43 @@ var toMempoolConfigContext = zodToFactory3(MempoolConfigContext, "toMempoolConfi
278
298
  // src/shared/config/actors/Producer.ts
279
299
  import { AddressZod as AddressZod2, asAddress, zodAsFactory as zodAsFactory4, zodIsFactory as zodIsFactory4, zodToFactory as zodToFactory4 } from "@xylabs/sdk-js";
280
300
  import { ActorConfigZod, BaseConfigContextZod as BaseConfigContextZod4 } from "@xyo-network/xl1-sdk";
281
- import { globalRegistry as globalRegistry4, z as z4 } from "zod";
282
- var ProducerConfigZod = ActorConfigZod.extend(z4.object({
283
- allowlist: z4.preprocess((val) => {
301
+ import { globalRegistry as globalRegistry5, z as z5 } from "zod";
302
+ var DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL = 1e4;
303
+ var ProducerConfigZod = ActorConfigZod.extend(z5.object({
304
+ accountIndex: ActorAccountIndexZod("producer.accountIndex"),
305
+ allowlist: z5.preprocess((val) => {
284
306
  if (typeof val === "string") {
285
307
  return val.split(",").map((s) => asAddress(s.trim()));
286
308
  }
287
309
  return val;
288
- }, z4.array(AddressZod2).optional().register(globalRegistry4, {
310
+ }, z5.array(AddressZod2).optional().register(globalRegistry5, {
289
311
  description: "List of allowed producer addresses, if undefined anyone can participate",
290
312
  title: "allowlist",
291
313
  type: "array"
292
314
  })),
293
- disableIntentRedeclaration: z4.boolean().optional().register(globalRegistry4, {
315
+ blockProductionCheckInterval: z5.coerce.number().default(DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL).register(globalRegistry5, {
316
+ description: "The interval time (in milliseconds) between block production attempts",
317
+ title: "producer.blockProductionCheckInterval",
318
+ type: "number"
319
+ }),
320
+ disableIntentRedeclaration: z5.boolean().optional().register(globalRegistry5, {
294
321
  description: "Should the producer skip redeclaring their intent to continue producing blocks",
295
322
  title: "producer.disableIntentRedeclaration",
296
323
  type: "boolean"
297
324
  }),
298
- heartbeatInterval: z4.coerce.number().default(36e5).register(globalRegistry4, {
325
+ heartbeatInterval: z5.coerce.number().default(36e5).register(globalRegistry5, {
299
326
  description: "The number of milliseconds between heartbeats if no blocks are produced",
300
327
  title: "producer.heartbeatInterval",
301
328
  type: "number"
302
329
  }),
303
330
  // TODO: BigInt schema
304
- minStake: z4.coerce.number().default(1).register(globalRegistry4, {
331
+ minStake: z5.coerce.number().default(1).register(globalRegistry5, {
305
332
  description: "Minimum stake required to be a Producer",
306
333
  title: "producer.minStake",
307
334
  type: "number"
308
335
  }),
309
336
  // TODO: Address schema
310
- rewardAddress: z4.string().optional().register(globalRegistry4, {
337
+ rewardAddress: z5.string().optional().register(globalRegistry5, {
311
338
  description: "Address to receive block rewards",
312
339
  title: "producer.rewardAddress",
313
340
  type: "string"
@@ -326,7 +353,9 @@ var toProducerConfigContext = zodToFactory4(ProducerConfigContext, "toProducerCo
326
353
  // src/shared/config/actors/RewardRedemption.ts
327
354
  import { zodAsFactory as zodAsFactory5, zodIsFactory as zodIsFactory5, zodToFactory as zodToFactory5 } from "@xylabs/sdk-js";
328
355
  import { BaseConfigContextZod as BaseConfigContextZod5, HostActorConfigZod as HostActorConfigZod4 } from "@xyo-network/xl1-sdk";
329
- var RewardRedemptionConfigZod = HostActorConfigZod4.extend({});
356
+ var RewardRedemptionConfigZod = HostActorConfigZod4.extend({
357
+ accountIndex: ActorAccountIndexZod("rewardRedemption.accountIndex")
358
+ });
330
359
  var isRewardRedemptionConfig = zodIsFactory5(RewardRedemptionConfigZod);
331
360
  var asRewardRedemptionConfig = zodAsFactory5(RewardRedemptionConfigZod, "asRewardRedemptionConfig");
332
361
  var toRewardRedemptionConfig = zodToFactory5(RewardRedemptionConfigZod, "toRewardRedemptionConfig");
@@ -340,9 +369,11 @@ var toRewardRedemptionConfigContext = zodToFactory5(RewardRedemptionConfigContex
340
369
  // src/shared/config/actors/Validator.ts
341
370
  import { AddressZod as AddressZod3, zodAsFactory as zodAsFactory6, zodIsFactory as zodIsFactory6, zodToFactory as zodToFactory6 } from "@xylabs/sdk-js";
342
371
  import { BaseConfigContextZod as BaseConfigContextZod6, HostActorConfigZod as HostActorConfigZod5 } from "@xyo-network/xl1-sdk";
343
- import { z as z5 } from "zod";
372
+ import { z as z6 } from "zod";
344
373
  var ValidatorConfigZod = HostActorConfigZod5.extend({
345
- allowedProducers: z5.array(AddressZod3).optional()
374
+ accountIndex: ActorAccountIndexZod("validator.accountIndex"),
375
+ allowedProducers: z6.array(AddressZod3).optional(),
376
+ minCandidates: z6.number().int().min(0).optional()
346
377
  });
347
378
  var isValidatorConfig = zodIsFactory6(ValidatorConfigZod);
348
379
  var asValidatorConfig = zodAsFactory6(ValidatorConfigZod, "asValidatorConfig");
@@ -419,26 +450,279 @@ var ServiceLifetime = {
419
450
  };
420
451
 
421
452
  // src/shared/init/initActorAccount.ts
422
- import { isDefined, isUndefined } from "@xylabs/sdk-js";
423
- import { HDWallet } from "@xyo-network/sdk-js";
424
- import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-sdk";
453
+ import { isDefined } from "@xylabs/sdk-js";
454
+
455
+ // src/shared/init/walletResolution.ts
456
+ import { DEFAULT_WALLET_PATH, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-sdk";
457
+ var BUILT_IN_DEV_MNEMONIC = "crane ribbon cook cousin tobacco vital moral protect merit knock veteran hint knee ocean nurse";
458
+ var INSECURE_GENESIS_REWARD_MNEMONIC = "test test test test test test test test test test test junk";
459
+ var GENESIS_REWARD_AMOUNT = 20000000000000000000000n;
460
+ var ATTO_XL1_PER_XL1 = 1000000000000000000n;
461
+ var ROOT_WALLET_RUNTIME_ID = "_root";
462
+ var SHARED_ACCOUNT_REPORT_COUNT = 10;
463
+ var RESERVED_ACTOR_INDEX = {
464
+ [ROOT_WALLET_RUNTIME_ID]: 0,
465
+ api: 4,
466
+ bridge: 2,
467
+ mempool: 5,
468
+ producer: 1,
469
+ rewardRedemption: 3,
470
+ validator: 6
471
+ };
472
+ var ACTOR_LABELS = {
473
+ [ROOT_WALLET_RUNTIME_ID]: "root/local-node",
474
+ api: "api",
475
+ bridge: "bridge",
476
+ mempool: "mempool",
477
+ producer: "producer",
478
+ rewardRedemption: "rewardRedemption",
479
+ validator: "validator"
480
+ };
481
+ var activeWalletReport;
482
+ function getAccountLabel(actorName) {
483
+ return ACTOR_LABELS[actorName] ?? actorName;
484
+ }
485
+ __name(getAccountLabel, "getAccountLabel");
486
+ function clearResolvedWalletReport() {
487
+ activeWalletReport = void 0;
488
+ }
489
+ __name(clearResolvedWalletReport, "clearResolvedWalletReport");
490
+ function getReservedActorIndex(actorName) {
491
+ return RESERVED_ACTOR_INDEX[actorName] ?? 0;
492
+ }
493
+ __name(getReservedActorIndex, "getReservedActorIndex");
494
+ function getBuiltInDevMnemonic() {
495
+ return BUILT_IN_DEV_MNEMONIC;
496
+ }
497
+ __name(getBuiltInDevMnemonic, "getBuiltInDevMnemonic");
498
+ function getInsecureGenesisRewardMnemonic() {
499
+ return INSECURE_GENESIS_REWARD_MNEMONIC;
500
+ }
501
+ __name(getInsecureGenesisRewardMnemonic, "getInsecureGenesisRewardMnemonic");
502
+ function resolveRootWallet(configuration) {
503
+ const mnemonic = configuration.mnemonic ?? BUILT_IN_DEV_MNEMONIC;
504
+ const isBuiltInDevMnemonic = mnemonic === BUILT_IN_DEV_MNEMONIC;
505
+ return {
506
+ basePath: DEFAULT_WALLET_PATH,
507
+ isBuiltInDevMnemonic,
508
+ mnemonic,
509
+ mnemonicKind: isBuiltInDevMnemonic ? "built-in-dev" : "configured-root"
510
+ };
511
+ }
512
+ __name(resolveRootWallet, "resolveRootWallet");
513
+ async function resolveWalletMetadata({ accountIndex, actorName, mnemonic, mnemonicKind, source }) {
514
+ const wallet = await generateXyoBaseWalletFromPhrase(mnemonic);
515
+ const derivationPath = `${DEFAULT_WALLET_PATH}/${accountIndex}`;
516
+ const account = await wallet.derivePath(`${accountIndex}`);
517
+ return {
518
+ accountIndex,
519
+ actorName,
520
+ address: account.address,
521
+ derivationPath,
522
+ label: getAccountLabel(actorName),
523
+ mnemonic,
524
+ mnemonicKind,
525
+ privateKey: account.privateKey,
526
+ source,
527
+ usesBuiltInDevMnemonic: mnemonic === BUILT_IN_DEV_MNEMONIC
528
+ };
529
+ }
530
+ __name(resolveWalletMetadata, "resolveWalletMetadata");
531
+ async function resolveActorWallet(actorName, actorConfig, root) {
532
+ const actorMnemonic = actorConfig?.mnemonic;
533
+ const accountIndex = actorConfig?.accountIndex;
534
+ return await resolveWalletMetadata(actorMnemonic ? {
535
+ accountIndex: accountIndex ?? 0,
536
+ actorName,
537
+ mnemonic: actorMnemonic,
538
+ mnemonicKind: "configured-actor",
539
+ source: "actor"
540
+ } : {
541
+ accountIndex: accountIndex ?? getReservedActorIndex(actorName),
542
+ actorName,
543
+ mnemonic: root.mnemonic,
544
+ mnemonicKind: root.mnemonicKind,
545
+ source: "root"
546
+ });
547
+ }
548
+ __name(resolveActorWallet, "resolveActorWallet");
549
+ async function resolveWalletReport(requestedActors, configuration) {
550
+ const root = resolveRootWallet(configuration);
551
+ const actorConfigMap = new Map(configuration.actors.map((actor) => [
552
+ actor.name,
553
+ actor
554
+ ]));
555
+ const resolvedActors = await Promise.all(requestedActors.map(async (actorName) => await resolveActorWallet(actorName, actorConfigMap.get(actorName), root)));
556
+ const labelMap = /* @__PURE__ */ new Map([
557
+ [
558
+ 0,
559
+ [
560
+ getAccountLabel(ROOT_WALLET_RUNTIME_ID)
561
+ ]
562
+ ]
563
+ ]);
564
+ for (const actor of resolvedActors) {
565
+ if (actor.source !== "root") continue;
566
+ const labels = labelMap.get(actor.accountIndex) ?? [];
567
+ labels.push(actor.label);
568
+ labelMap.set(actor.accountIndex, labels);
569
+ }
570
+ const sharedAccounts = await Promise.all(Array.from({
571
+ length: SHARED_ACCOUNT_REPORT_COUNT
572
+ }, (_, index) => index).map(async (accountIndex) => {
573
+ const account = await resolveWalletMetadata({
574
+ accountIndex,
575
+ actorName: ROOT_WALLET_RUNTIME_ID,
576
+ mnemonic: root.mnemonic,
577
+ mnemonicKind: root.mnemonicKind,
578
+ source: "root"
579
+ });
580
+ const labels = labelMap.get(accountIndex);
581
+ return {
582
+ ...account,
583
+ label: labels?.join(", ") ?? `shared[${accountIndex}]`
584
+ };
585
+ }));
586
+ const insecureGenesisRewardAccounts = configuration.chain.genesisRewardAddress ? void 0 : await Promise.all(Array.from({
587
+ length: SHARED_ACCOUNT_REPORT_COUNT
588
+ }, (_, index) => index).map(async (accountIndex) => {
589
+ const account = await resolveWalletMetadata({
590
+ accountIndex,
591
+ actorName: "genesisReward",
592
+ mnemonic: INSECURE_GENESIS_REWARD_MNEMONIC,
593
+ mnemonicKind: "configured-actor",
594
+ source: "actor"
595
+ });
596
+ return {
597
+ ...account,
598
+ label: accountIndex === 0 ? "genesisRewardAddress" : `genesisReward[${accountIndex}]`
599
+ };
600
+ }));
601
+ return {
602
+ actorSpecificAccounts: resolvedActors.filter((actor) => actor.source === "actor"),
603
+ insecureGenesisRewardAccounts,
604
+ requestedActors: [
605
+ ...requestedActors
606
+ ],
607
+ root,
608
+ sharedAccounts
609
+ };
610
+ }
611
+ __name(resolveWalletReport, "resolveWalletReport");
612
+ async function initializeResolvedWalletReport(requestedActors, configuration) {
613
+ activeWalletReport = await resolveWalletReport(requestedActors, configuration);
614
+ return activeWalletReport;
615
+ }
616
+ __name(initializeResolvedWalletReport, "initializeResolvedWalletReport");
617
+ function getResolvedWalletReport() {
618
+ return activeWalletReport;
619
+ }
620
+ __name(getResolvedWalletReport, "getResolvedWalletReport");
621
+ function formatSharedAccount(account, showPrivateKey) {
622
+ const lines = [
623
+ `[${account.accountIndex}] ${account.label}`,
624
+ `source: ${account.mnemonicKind === "built-in-dev" ? "built-in dev mnemonic" : "configured root mnemonic"}`,
625
+ `path: ${account.derivationPath}`,
626
+ `address: ${account.address}`
627
+ ];
628
+ if (showPrivateKey) lines.push(`privateKey: ${account.privateKey ?? "unavailable"}`);
629
+ return lines.join("\n");
630
+ }
631
+ __name(formatSharedAccount, "formatSharedAccount");
632
+ function formatActorSpecificAccount(account) {
633
+ return [
634
+ account.label,
635
+ "source: actor mnemonic",
636
+ `path: ${account.derivationPath}`,
637
+ `address: ${account.address}`
638
+ ].join("\n");
639
+ }
640
+ __name(formatActorSpecificAccount, "formatActorSpecificAccount");
641
+ function formatGenesisRewardAccount(account) {
642
+ const balance = account.accountIndex === 0 ? GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1 : 0n;
643
+ return [
644
+ `[${account.accountIndex}] ${account.label}`,
645
+ `path: ${account.derivationPath}`,
646
+ `address: ${account.address}`,
647
+ `privateKey: ${account.privateKey ?? "unavailable"}`,
648
+ `balance: ${balance.toString()} XL1`
649
+ ].join("\n");
650
+ }
651
+ __name(formatGenesisRewardAccount, "formatGenesisRewardAccount");
652
+ function formatWalletReport(report) {
653
+ const sections = [];
654
+ const showSecrets = report.root.isBuiltInDevMnemonic;
655
+ sections.push(showSecrets ? "Development wallet detected." : "Wallet summary");
656
+ if (showSecrets) {
657
+ sections.push([
658
+ "DEVELOPMENT WALLET WARNING",
659
+ "",
660
+ "XL1 is using the built-in development mnemonic.",
661
+ "This mnemonic is fixed, public, and does not change between runs.",
662
+ "The addresses and private keys below are unsafe and must never be used for real funds, production systems, or shared environments.",
663
+ "Anyone with this information can fully control these accounts.",
664
+ "",
665
+ "Mnemonic:",
666
+ report.root.mnemonic
667
+ ].join("\n"));
668
+ }
669
+ sections.push([
670
+ `Shared wallet accounts from ${report.root.basePath}:`,
671
+ "",
672
+ report.sharedAccounts.map((account) => formatSharedAccount(account, showSecrets)).join("\n\n")
673
+ ].join("\n"));
674
+ if (report.actorSpecificAccounts.length > 0) {
675
+ sections.push([
676
+ "Actor-specific wallet accounts:",
677
+ "",
678
+ report.actorSpecificAccounts.map((account) => formatActorSpecificAccount(account)).join("\n\n")
679
+ ].join("\n"));
680
+ }
681
+ if (report.insecureGenesisRewardAccounts) {
682
+ sections.push([
683
+ "INSECURE GENESIS REWARD WALLET WARNING",
684
+ "",
685
+ "XL1 is using a public, insecure fallback wallet for the genesis reward address.",
686
+ "This phrase is intentionally unsafe and must never be used for real funds, production systems, or shared environments.",
687
+ "Anyone with this information can fully control the genesis reward wallet.",
688
+ "",
689
+ "Genesis reward phrase:",
690
+ INSECURE_GENESIS_REWARD_MNEMONIC,
691
+ "",
692
+ `The genesis reward is sent to index 0 and starts with ${(GENESIS_REWARD_AMOUNT / ATTO_XL1_PER_XL1).toString()} XL1.`,
693
+ "",
694
+ `Genesis reward wallet accounts from ${DEFAULT_WALLET_PATH}:`,
695
+ "",
696
+ report.insecureGenesisRewardAccounts.map((account) => formatGenesisRewardAccount(account)).join("\n\n")
697
+ ].join("\n"));
698
+ }
699
+ return sections.join("\n\n");
700
+ }
701
+ __name(formatWalletReport, "formatWalletReport");
702
+ async function resolveGenesisRewardAddress(config) {
703
+ if (config.chain.genesisRewardAddress) return config.chain.genesisRewardAddress;
704
+ const wallet = await generateXyoBaseWalletFromPhrase(INSECURE_GENESIS_REWARD_MNEMONIC);
705
+ const account = await wallet.derivePath("0");
706
+ return account.address;
707
+ }
708
+ __name(resolveGenesisRewardAddress, "resolveGenesisRewardAddress");
709
+ async function resolveWalletForActor(actorName, mnemonic, accountIndex) {
710
+ const fromReport = activeWalletReport ? actorName === ROOT_WALLET_RUNTIME_ID ? activeWalletReport.sharedAccounts.find((account) => account.accountIndex === 0) : activeWalletReport.actorSpecificAccounts.find((account) => account.actorName === actorName) ?? activeWalletReport.sharedAccounts.find((account) => account.actorName === actorName || account.label.split(", ").includes(getAccountLabel(actorName))) : void 0;
711
+ const resolvedMnemonic = fromReport?.mnemonic ?? mnemonic ?? BUILT_IN_DEV_MNEMONIC;
712
+ const resolvedAccountIndex = fromReport?.accountIndex ?? accountIndex ?? 0;
713
+ const wallet = await generateXyoBaseWalletFromPhrase(resolvedMnemonic);
714
+ return await wallet.derivePath(`${resolvedAccountIndex}`);
715
+ }
716
+ __name(resolveWalletForActor, "resolveWalletForActor");
717
+
718
+ // src/shared/init/initActorAccount.ts
425
719
  var actorAccountSingletons = {};
426
720
  async function initActorAccount({ config, logger }) {
427
721
  const actorName = config.name;
428
722
  if (isDefined(actorAccountSingletons[actorName])) return actorAccountSingletons[actorName];
429
- let walletPhrase = config.mnemonic;
430
- if (isUndefined(walletPhrase)) {
431
- logger?.warn(`[${actorName}}] No wallet mnemonic specified!`);
432
- const randomMnemonic = HDWallet.generateMnemonic();
433
- logger?.warn(`[${actorName}}] Using randomly generated mnemonic:
434
-
435
- ${randomMnemonic}
436
-
437
- `);
438
- walletPhrase = randomMnemonic;
439
- }
440
- const wallet = await generateXyoBaseWalletFromPhrase(walletPhrase);
441
- const account = await wallet.derivePath(ADDRESS_INDEX.XYO);
723
+ const accountIndex = "accountIndex" in config && typeof config.accountIndex === "number" ? config.accountIndex : void 0;
724
+ const account = await resolveWalletForActor(actorName, config.mnemonic, accountIndex);
725
+ logger?.debug(`[${actorName}] Using wallet address ${account.address}`);
442
726
  actorAccountSingletons[actorName] = account;
443
727
  return actorAccountSingletons[actorName];
444
728
  }
@@ -446,28 +730,18 @@ __name(initActorAccount, "initActorAccount");
446
730
 
447
731
  // src/shared/init/initActorSeedPhrase.ts
448
732
  import { assertEx, isString } from "@xylabs/sdk-js";
449
- import { HDWallet as HDWallet2 } from "@xyo-network/sdk-js";
450
733
  async function initActorSeedPhrase(context, bios) {
451
734
  const { logger, config } = context;
452
735
  const walletKind = config.name;
453
- const storedSeedPhrase = await bios.seedPhraseStore.get(walletKind);
454
- logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`);
455
- const { mnemonic } = config;
456
- if (isString(storedSeedPhrase) && isString(mnemonic)) {
457
- logger?.warn("[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.");
458
- await bios.seedPhraseStore.set(walletKind, mnemonic);
459
- } else {
460
- let seedPhrase;
461
- if (isString(mnemonic)) {
462
- seedPhrase = mnemonic;
463
- } else {
464
- seedPhrase = HDWallet2.generateMnemonic();
465
- logger?.log("[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.");
466
- logger?.log(`[API] Mnemonic: ${seedPhrase}`);
467
- }
468
- await bios.seedPhraseStore.set(walletKind, seedPhrase);
469
- }
470
- return assertEx(await bios.seedPhraseStore.get(walletKind), () => "Unable to acquire mnemonic from bios");
736
+ void bios;
737
+ const report = getResolvedWalletReport();
738
+ const account = config.name === ROOT_WALLET_RUNTIME_ID ? report?.sharedAccounts.find((entry) => entry.accountIndex === 0) : report?.actorSpecificAccounts.find((entry) => entry.actorName === config.name);
739
+ if (isString(account?.mnemonic)) return account.mnemonic;
740
+ if (isString(report?.root.mnemonic)) return report.root.mnemonic;
741
+ if (isString(config.mnemonic)) return config.mnemonic;
742
+ const fallback = getBuiltInDevMnemonic();
743
+ logger?.debug(`[${walletKind}] Falling back to built-in development mnemonic`);
744
+ return assertEx(fallback, () => "Unable to resolve mnemonic");
471
745
  }
472
746
  __name(initActorSeedPhrase, "initActorSeedPhrase");
473
747
 
@@ -521,13 +795,10 @@ function initStatusReporter({ logger }) {
521
795
  __name(initStatusReporter, "initStatusReporter");
522
796
 
523
797
  // src/shared/init/initWallet.ts
524
- import { isDefined as isDefined2 } from "@xylabs/sdk-js";
525
- import { boot } from "@xyo-network/bios";
526
- import { HDWallet as HDWallet3 } from "@xyo-network/sdk-js";
527
798
  async function initActorWallet(context, mnemonic) {
528
- const bios = await boot();
529
- const seedPhrase = isDefined2(mnemonic) ? mnemonic : await initActorSeedPhrase(context, bios);
530
- return await HDWallet3.fromPhrase(seedPhrase);
799
+ const actorName = context.config.name === ROOT_WALLET_RUNTIME_ID ? ROOT_WALLET_RUNTIME_ID : context.config.name;
800
+ const accountIndex = "accountIndex" in context.config && typeof context.config.accountIndex === "number" ? context.config.accountIndex : void 0;
801
+ return await resolveWalletForActor(actorName, mnemonic ?? context.config.mnemonic, accountIndex);
531
802
  }
532
803
  __name(initActorWallet, "initActorWallet");
533
804
 
@@ -596,177 +867,6 @@ Orchestrator = _ts_decorate2([
596
867
  creatable2()
597
868
  ], Orchestrator);
598
869
 
599
- // src/node/archivists/ChainFinalized/archivist.ts
600
- import { timeBudget } from "@xylabs/sdk-js";
601
- import { startupSpanAsync } from "@xyo-network/chain-utils";
602
- import { Mutex as Mutex3 } from "async-mutex";
603
-
604
- // src/node/archivists/ChainFinalized/local.ts
605
- import { Mutex as Mutex2 } from "async-mutex";
606
-
607
- // src/node/archivists/lib/localPersistentArchivist.ts
608
- import { rm } from "fs/promises";
609
- import Path from "path";
610
- import { LmdbArchivist, LmdbArchivistConfigSchema } from "@xyo-network/archivist-lmdb";
611
- import { getStoreDirectory } from "@xyo-network/chain-protocol";
612
- var DEFAULT_STORAGE_ROOT = Path.join(process.cwd(), ".store");
613
- var getLocalPersistentArchivist = /* @__PURE__ */ __name((name, dbName, storeName, storageRoot, kind = "lmdb") => {
614
- switch (kind) {
615
- case "lmdb": {
616
- const root = storageRoot ?? DEFAULT_STORAGE_ROOT;
617
- return LmdbArchivist.create({
618
- account: "random",
619
- config: {
620
- name,
621
- clearStoreOnStart: false,
622
- dbName,
623
- location: getStoreDirectory(dbName, root, "lmdb"),
624
- schema: LmdbArchivistConfigSchema,
625
- storeName
626
- }
627
- });
628
- }
629
- }
630
- }, "getLocalPersistentArchivist");
631
-
632
- // src/node/archivists/ChainFinalized/local.ts
633
- var mutex = new Mutex2();
634
- var singleton;
635
- async function initLocalChainFinalizedArchivist({ config }) {
636
- return await mutex.runExclusive(async () => {
637
- if (singleton) return singleton;
638
- const { root } = config.storage;
639
- singleton = await getLocalPersistentArchivist("local-finalized-chain", "chain", "finalized", root);
640
- return singleton;
641
- });
642
- }
643
- __name(initLocalChainFinalizedArchivist, "initLocalChainFinalizedArchivist");
644
-
645
- // src/node/archivists/ChainFinalized/archivist.ts
646
- var mutex2 = new Mutex3();
647
- var singleton2;
648
- async function initChainFinalizedArchivist(context) {
649
- return await mutex2.runExclusive(async () => {
650
- if (singleton2) return singleton2;
651
- return await timeBudget("initChainFinalizedArchivist", context.logger, async () => {
652
- const local = await startupSpanAsync("ChainFinalizedArchivist:initLocal", () => initLocalChainFinalizedArchivist(context));
653
- singleton2 = local;
654
- return singleton2;
655
- }, 2e3, true);
656
- });
657
- }
658
- __name(initChainFinalizedArchivist, "initChainFinalizedArchivist");
659
-
660
- // src/node/archivists/PendingBlocks/archivist.ts
661
- import { timeBudget as timeBudget2 } from "@xylabs/sdk-js";
662
- import { startupSpanAsync as startupSpanAsync2 } from "@xyo-network/chain-utils";
663
- import { Mutex as Mutex5 } from "async-mutex";
664
-
665
- // src/node/archivists/PendingBlocks/local.ts
666
- import { Mutex as Mutex4 } from "async-mutex";
667
- var mutex3 = new Mutex4();
668
- var singleton3;
669
- async function initLocalPendingBlocksArchivist({ config }) {
670
- return await mutex3.runExclusive(async () => {
671
- if (singleton3) return singleton3;
672
- const { root } = config.storage;
673
- singleton3 = await getLocalPersistentArchivist("local-pending-blocks", "chain", "pending_block_bundles", root);
674
- return singleton3;
675
- });
676
- }
677
- __name(initLocalPendingBlocksArchivist, "initLocalPendingBlocksArchivist");
678
-
679
- // src/node/archivists/PendingBlocks/archivist.ts
680
- var mutex4 = new Mutex5();
681
- var singleton4;
682
- async function initPendingBlocksArchivist(context) {
683
- return await mutex4.runExclusive(async () => {
684
- if (singleton4) return singleton4;
685
- return await timeBudget2("initPendingBlocksArchivist", context.logger, async () => {
686
- const local = await startupSpanAsync2("PendingBlocksArchivist:initLocal", () => initLocalPendingBlocksArchivist(context));
687
- singleton4 = local;
688
- return singleton4;
689
- }, 2e3, true);
690
- });
691
- }
692
- __name(initPendingBlocksArchivist, "initPendingBlocksArchivist");
693
-
694
- // src/node/archivists/RejectedTransactions/archivist.ts
695
- import { timeBudget as timeBudget3 } from "@xylabs/sdk-js";
696
- import { startupSpanAsync as startupSpanAsync3 } from "@xyo-network/chain-utils";
697
- import { Mutex as Mutex7 } from "async-mutex";
698
-
699
- // src/node/archivists/RejectedTransactions/local.ts
700
- import { MemoryArchivist, MemoryArchivistConfigSchema } from "@xyo-network/sdk-js";
701
- import { Mutex as Mutex6 } from "async-mutex";
702
- var mutex5 = new Mutex6();
703
- var singleton5;
704
- async function initLocalRejectedTransactionsArchivist() {
705
- return await mutex5.runExclusive(async () => {
706
- if (singleton5) return singleton5;
707
- singleton5 = await MemoryArchivist.create({
708
- account: "random",
709
- config: {
710
- schema: MemoryArchivistConfigSchema,
711
- max: 1e3,
712
- name: "localRejectedTransactions"
713
- }
714
- });
715
- return singleton5;
716
- });
717
- }
718
- __name(initLocalRejectedTransactionsArchivist, "initLocalRejectedTransactionsArchivist");
719
-
720
- // src/node/archivists/RejectedTransactions/archivist.ts
721
- var mutex6 = new Mutex7();
722
- var singleton6;
723
- async function initRejectedTransactionsArchivist({ logger }) {
724
- return await mutex6.runExclusive(async () => {
725
- if (singleton6) return singleton6;
726
- return await timeBudget3("initRejectedTransactionsArchivist", logger, async () => {
727
- const local = await startupSpanAsync3("RejectedTransactionsArchivist:initLocal", () => initLocalRejectedTransactionsArchivist());
728
- singleton6 = local;
729
- return singleton6;
730
- }, 2e3, true);
731
- });
732
- }
733
- __name(initRejectedTransactionsArchivist, "initRejectedTransactionsArchivist");
734
-
735
- // src/node/archivists/StakeIntentState/archivist.ts
736
- import { assertEx as assertEx4, timeBudget as timeBudget4 } from "@xylabs/sdk-js";
737
- import { startupSpanAsync as startupSpanAsync4 } from "@xyo-network/chain-utils";
738
- import { Mutex as Mutex9 } from "async-mutex";
739
-
740
- // src/node/archivists/StakeIntentState/local.ts
741
- import { assertEx as assertEx3 } from "@xylabs/sdk-js";
742
- import { Mutex as Mutex8 } from "async-mutex";
743
- var mutex7 = new Mutex8();
744
- var singleton7;
745
- async function initLocalStakeIntentStateArchivist({ config }) {
746
- return await mutex7.runExclusive(async () => {
747
- if (singleton7) return singleton7;
748
- const { root } = config.storage;
749
- singleton7 = await getLocalPersistentArchivist("local-stake-intent-state", "stakeIntent", "state", root);
750
- return assertEx3(singleton7, () => new Error("Failed to initialize stake intent state archivist"));
751
- });
752
- }
753
- __name(initLocalStakeIntentStateArchivist, "initLocalStakeIntentStateArchivist");
754
-
755
- // src/node/archivists/StakeIntentState/archivist.ts
756
- var mutex8 = new Mutex9();
757
- var singleton8;
758
- async function initStakeIntentStateArchivist(context) {
759
- return await mutex8.runExclusive(async () => {
760
- if (singleton8) return singleton8;
761
- return await timeBudget4("initStakeIntentStateArchivist", context.logger, async () => {
762
- const local = await startupSpanAsync4("StakeIntentStateArchivist:initLocal", () => initLocalStakeIntentStateArchivist(context));
763
- singleton8 = local;
764
- return assertEx4(singleton8, () => "StakeIntentStateArchivist is undefined");
765
- }, 2e3, true);
766
- });
767
- }
768
- __name(initStakeIntentStateArchivist, "initStakeIntentStateArchivist");
769
-
770
870
  // src/node/config/locators/basicRemoteRunnerLocator.ts
771
871
  import { isAccountInstance } from "@xyo-network/sdk-js";
772
872
  import { basicRemoteRunnerLocator as sdkBasicRemoteRunnerLocator, JsonRpcAccountBalanceViewer, JsonRpcXyoSigner, SimpleXyoSigner } from "@xyo-network/xl1-sdk";
@@ -845,14 +945,14 @@ async function contextFromConfigWithoutLocator(config, logger, serviceName, serv
845
945
  __name(contextFromConfigWithoutLocator, "contextFromConfigWithoutLocator");
846
946
 
847
947
  // src/node/config/locators/localLocatorFromConfig.ts
848
- import { assertEx as assertEx14 } from "@xylabs/sdk-js";
948
+ import { assertEx as assertEx7 } from "@xylabs/sdk-js";
849
949
  import { validateHydratedBlock, validateHydratedBlockState } from "@xyo-network/chain-validation";
850
- import { BlockCumulativeBalanceValidatorFactory, ProviderFactoryLocator, SimpleAccountBalanceViewer, SimpleBlockValidationViewer, SimpleBlockViewer, SimpleFinalizationRunner, SimpleFinalizationViewer, SimpleMempoolRunner, SimpleMempoolViewer, SimpleTransactionViewer, SimpleWindowedBlockViewer, SimpleXyoConnectionViewer, SimpleXyoViewer } from "@xyo-network/xl1-sdk";
950
+ import { BlockCumulativeBalanceValidatorFactory, ProviderFactoryLocator, SimpleAccountBalanceViewer, SimpleBlockValidationViewer, SimpleBlockViewer, SimpleDeadLetterQueueRunner, SimpleDeadLetterQueueViewer, SimpleFinalizationRunner, SimpleFinalizationViewer, SimpleMempoolRunner, SimpleMempoolViewer, SimpleTransactionValidationViewer, SimpleTransactionViewer, SimpleWindowedBlockViewer, SimpleXyoConnectionViewer, SimpleXyoViewer, validateTransaction } from "@xyo-network/xl1-sdk";
851
951
 
852
952
  // src/node/init/initBalanceSummaryMap.ts
853
953
  import { BaseMongoSdk } from "@xylabs/mongo";
854
- import { assertEx as assertEx5 } from "@xylabs/sdk-js";
855
- import { MongoMap } from "@xyo-network/chain-protocol";
954
+ import { assertEx as assertEx3 } from "@xylabs/sdk-js";
955
+ import { MongoMap } from "@xyo-network/chain-protocol-driver-mongodb";
856
956
  import { hasMongoConfig, MemoryMap } from "@xyo-network/xl1-sdk";
857
957
  async function initBalanceSummaryMap({ logger, config }) {
858
958
  const mongoConfig = config.storage?.mongo;
@@ -876,7 +976,7 @@ async function initBalanceSummaryMap({ logger, config }) {
876
976
  maxEntries: 5e3
877
977
  }
878
978
  });
879
- assertEx5(await result.start(), () => "Failed to start transfer summary map");
979
+ assertEx3(await result.start(), () => "Failed to start transfer summary map");
880
980
  return result;
881
981
  } else {
882
982
  logger?.warn("[API] Mongo configuration not found. Using MemoryMap for BalanceSummaryMap.");
@@ -886,118 +986,35 @@ async function initBalanceSummaryMap({ logger, config }) {
886
986
  __name(initBalanceSummaryMap, "initBalanceSummaryMap");
887
987
 
888
988
  // src/node/init/initEvmProvidersIfAvailable.ts
889
- import { asEthAddress, assertEx as assertEx10 } from "@xylabs/sdk-js";
989
+ import { asEthAddress } from "@xylabs/sdk-js";
890
990
  import { EvmChainContractViewer, EvmStakeEventsViewer, EvmStakeTotalsViewer, EvmStakeViewer } from "@xyo-network/chain-ethereum";
991
+ import { canUseEvmProvider, initEvmProvider } from "@xyo-network/chain-orchestration-evm";
891
992
  import { SimpleChainContractViewer, SimpleStakeEventsViewer, SimpleStakeTotalsViewer, SimpleStakeViewer, SimpleTimeSyncViewer, XYO_ZERO_ADDRESS } from "@xyo-network/xl1-sdk";
892
-
893
- // src/node/evm/initChainId.ts
894
- import { assertEx as assertEx6, hexFrom, isDefined as isDefined3, isHex } from "@xylabs/sdk-js";
895
- var canUseChainId = /* @__PURE__ */ __name(({ config }) => {
896
- return isDefined3(config.evm.chainId);
897
- }, "canUseChainId");
898
- var getChainId = /* @__PURE__ */ __name(({ config }) => {
899
- const chainId = assertEx6(config.evm.chainId, () => "Missing config.evm.chainId");
900
- if (isHex(chainId, {
901
- prefix: true
902
- })) {
903
- const hex = hexFrom(chainId);
904
- const parsed = Number.parseInt(hex, 16);
905
- return parsed;
906
- } else {
907
- const parsed = Number.parseInt(chainId, 10);
908
- return parsed;
909
- }
910
- }, "getChainId");
911
-
912
- // src/node/evm/initEvmProvider.ts
913
- import { assertEx as assertEx9 } from "@xylabs/sdk-js";
914
-
915
- // src/node/evm/initInfuraProvider.ts
916
- import { assertEx as assertEx7, isDefined as isDefined4 } from "@xylabs/sdk-js";
917
- import { InfuraProvider } from "ethers/providers";
918
- var instance;
919
- var initInfuraProvider = /* @__PURE__ */ __name((context) => {
920
- if (instance) return instance;
921
- const providerConfig = getInfuraProviderConfig(context);
922
- instance = Promise.resolve(new InfuraProvider(providerConfig[0], providerConfig[1]));
923
- return instance;
924
- }, "initInfuraProvider");
925
- var canUseInfuraProvider = /* @__PURE__ */ __name((context) => {
926
- const { config } = context;
927
- return canUseChainId(context) && isDefined4(config.evm?.infura?.projectId) && isDefined4(config.evm?.infura?.projectSecret);
928
- }, "canUseInfuraProvider");
929
- var getInfuraProviderConfig = /* @__PURE__ */ __name((context) => {
930
- const { config } = context;
931
- const projectId = assertEx7(config.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
932
- const projectSecret = assertEx7(config.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
933
- return [
934
- getChainId(context),
935
- projectId,
936
- projectSecret
937
- ];
938
- }, "getInfuraProviderConfig");
939
-
940
- // src/node/evm/initJsonRpcProvider.ts
941
- import { assertEx as assertEx8, isDefined as isDefined5 } from "@xylabs/sdk-js";
942
- import { JsonRpcProvider } from "ethers/providers";
943
- var initJsonRpcProvider = /* @__PURE__ */ __name((context) => {
944
- const providerConfig = getJsonRpcProviderConfig(context);
945
- return Promise.resolve(new JsonRpcProvider(...providerConfig));
946
- }, "initJsonRpcProvider");
947
- var canUseJsonRpcProvider = /* @__PURE__ */ __name((context) => {
948
- const { config } = context;
949
- return canUseChainId(context) && isDefined5(config.evm.jsonRpc?.url);
950
- }, "canUseJsonRpcProvider");
951
- var getJsonRpcProviderConfig = /* @__PURE__ */ __name((context) => {
952
- const { config } = context;
953
- const jsonRpcUrl = assertEx8(config.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
954
- return [
955
- jsonRpcUrl,
956
- getChainId(context)
957
- ];
958
- }, "getJsonRpcProviderConfig");
959
-
960
- // src/node/evm/initEvmProvider.ts
961
- var provider;
962
- var initEvmProvider = /* @__PURE__ */ __name(async (context) => {
963
- if (provider) return provider;
964
- if (canUseInfuraProvider(context)) {
965
- provider = initInfuraProvider(context);
966
- } else if (canUseJsonRpcProvider(context)) {
967
- provider = initJsonRpcProvider(context);
968
- }
969
- return assertEx9(await provider, () => "No provider available");
970
- }, "initEvmProvider");
971
- var canUseEvmProvider = /* @__PURE__ */ __name((context) => {
972
- return canUseInfuraProvider(context) || canUseJsonRpcProvider(context);
973
- }, "canUseEvmProvider");
974
-
975
- // src/node/init/initEvmProvidersIfAvailable.ts
976
993
  async function initEvmProvidersIfAvailable(locator) {
977
994
  const context = locator.context;
978
995
  const { logger } = context;
979
- if (canUseEvmProvider(context)) {
980
- const chainId = assertEx10(context.config.chain.id, () => "Missing config.chain.id (required for EVM providers)");
981
- const provider2 = await initEvmProvider(context);
996
+ if (canUseEvmProvider(context) && context.config.chain.id) {
997
+ const chainId = context.config.chain.id;
998
+ const provider = await initEvmProvider(context);
982
999
  const address = asEthAddress(chainId, true);
983
1000
  locator.register(EvmStakeEventsViewer.factory(EvmStakeEventsViewer.dependencies, {
984
1001
  address,
985
- provider: provider2
1002
+ provider
986
1003
  }));
987
1004
  locator.register(EvmStakeViewer.factory(EvmStakeViewer.dependencies, {
988
1005
  address,
989
- provider: provider2
1006
+ provider
990
1007
  }));
991
1008
  locator.register(EvmStakeTotalsViewer.factory(EvmStakeTotalsViewer.dependencies, {
992
1009
  address,
993
- provider: provider2
1010
+ provider
994
1011
  }));
995
1012
  locator.register(EvmChainContractViewer.factory(EvmChainContractViewer.dependencies, {
996
1013
  address,
997
- provider: provider2
1014
+ provider
998
1015
  }));
999
1016
  locator.register(SimpleTimeSyncViewer.factory(SimpleTimeSyncViewer.dependencies, {
1000
- ethProvider: provider2
1017
+ ethProvider: provider
1001
1018
  }));
1002
1019
  } else {
1003
1020
  logger?.warn("EVM provider not available - running with memory based contract/stake viewers");
@@ -1021,7 +1038,7 @@ async function initEvmProvidersIfAvailable(locator) {
1021
1038
  __name(initEvmProvidersIfAvailable, "initEvmProvidersIfAvailable");
1022
1039
 
1023
1040
  // src/node/init/initFinalizationArchivistIfNeeded.ts
1024
- import { assertEx as assertEx11 } from "@xylabs/sdk-js";
1041
+ import { assertEx as assertEx4 } from "@xylabs/sdk-js";
1025
1042
  import { createBootstrapHead } from "@xyo-network/chain-sdk";
1026
1043
  import { Account } from "@xyo-network/sdk-js";
1027
1044
  import { asAttoXL1, findMostRecentBlock, flattenHydratedBlock } from "@xyo-network/xl1-sdk";
@@ -1034,12 +1051,13 @@ async function initFinalizationArchivistIfNeeded(archivist, config, account) {
1034
1051
  let possibleChainId = configuredChainId;
1035
1052
  if (!possibleHead) {
1036
1053
  possibleChainId = possibleChainId ?? (await Account.random()).address;
1037
- const chain = await createBootstrapHead(account, possibleChainId, asAttoXL1(20000000000000000000000n), config.chain.genesisRewardAddress ?? account.address);
1054
+ const genesisRewardAddress = await resolveGenesisRewardAddress(config);
1055
+ const chain = await createBootstrapHead(account, possibleChainId, asAttoXL1(GENESIS_REWARD_AMOUNT), genesisRewardAddress);
1038
1056
  const payloads = chain.flatMap((block) => flattenHydratedBlock(block));
1039
1057
  await archivist.insert(payloads);
1040
1058
  }
1041
- const head = possibleHead ?? assertEx11(await findMostRecentBlock(archivist), () => "No blocks found in chain archivist");
1042
- const chainId = assertEx11(possibleChainId, () => "Chain ID could not be determined");
1059
+ const head = possibleHead ?? assertEx4(await findMostRecentBlock(archivist), () => "No blocks found in chain archivist");
1060
+ const chainId = assertEx4(possibleChainId, () => "Chain ID could not be determined");
1043
1061
  return [
1044
1062
  head,
1045
1063
  chainId
@@ -1066,15 +1084,15 @@ async function initFinalizedArchivist(config) {
1066
1084
  __name(initFinalizedArchivist, "initFinalizedArchivist");
1067
1085
 
1068
1086
  // src/node/init/initServerNode.ts
1069
- import { assertEx as assertEx12 } from "@xylabs/sdk-js";
1087
+ import { assertEx as assertEx5 } from "@xylabs/sdk-js";
1070
1088
  import { asArchivistInstance } from "@xyo-network/sdk-js";
1071
1089
 
1072
1090
  // src/node/manifest/getLocator.ts
1073
- import { isDefined as isDefined6 } from "@xylabs/sdk-js";
1091
+ import { isDefined as isDefined2 } from "@xylabs/sdk-js";
1074
1092
  import { MongoDBArchivistV2 as MongoDBArchivistV22, MongoDBArchivistV2Deletable } from "@xyo-network/archivist-mongodb";
1075
1093
  import { ViewArchivist } from "@xyo-network/archivist-view";
1076
1094
  import { initTelemetry as initTelemetry2 } from "@xyo-network/chain-telemetry";
1077
- import { AbstractModule, LoggerModuleStatusReporter, MemoryArchivist as MemoryArchivist2, MemorySentinel, ModuleFactoryLocator } from "@xyo-network/sdk-js";
1095
+ import { AbstractModule, LoggerModuleStatusReporter, MemoryArchivist, MemorySentinel, ModuleFactoryLocator } from "@xyo-network/sdk-js";
1078
1096
  import { hasMongoConfig as hasMongoConfig2 } from "@xyo-network/xl1-sdk";
1079
1097
  var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
1080
1098
  const { otlpEndpoint } = config.telemetry?.otel ?? {};
@@ -1090,7 +1108,7 @@ var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
1090
1108
  port
1091
1109
  }
1092
1110
  });
1093
- if (isDefined6(logger)) AbstractModule.defaultLogger = logger;
1111
+ if (isDefined2(logger)) AbstractModule.defaultLogger = logger;
1094
1112
  const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
1095
1113
  const locator = new ModuleFactoryLocator();
1096
1114
  const mongoConfig = config.storage?.mongo;
@@ -1114,7 +1132,7 @@ var getLocator = /* @__PURE__ */ __name(async ({ logger, config }) => {
1114
1132
  "network.xyo.storage.capabilities.delete": "enabled"
1115
1133
  }, false);
1116
1134
  }
1117
- locator.register(MemoryArchivist2.factory({
1135
+ locator.register(MemoryArchivist.factory({
1118
1136
  traceProvider,
1119
1137
  meterProvider,
1120
1138
  statusReporter
@@ -1211,6 +1229,62 @@ var Chain_default = {
1211
1229
  schema: "network.xyo.manifest"
1212
1230
  };
1213
1231
 
1232
+ // src/node/manifest/public/DeadLetterQueue.json
1233
+ var DeadLetterQueue_default = {
1234
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
1235
+ nodes: [
1236
+ {
1237
+ config: {
1238
+ accountPath: "3",
1239
+ name: "DeadLetterQueue",
1240
+ schema: "network.xyo.node.config"
1241
+ },
1242
+ modules: {
1243
+ private: [],
1244
+ public: [
1245
+ {
1246
+ config: {
1247
+ accountPath: "3/1/1",
1248
+ name: "RejectedBlocks",
1249
+ getCache: {
1250
+ enabled: true,
1251
+ maxEntries: 5e3
1252
+ },
1253
+ labels: {
1254
+ "network.xyo.storage.capabilities.delete": "enabled",
1255
+ "network.xyo.storage.class": "mongodb"
1256
+ },
1257
+ payloadSdkConfig: {
1258
+ collection: "rejected_blocks"
1259
+ },
1260
+ schema: "network.xyo.archivist.config"
1261
+ }
1262
+ },
1263
+ {
1264
+ config: {
1265
+ accountPath: "3/1/2",
1266
+ name: "RejectedTransactions",
1267
+ getCache: {
1268
+ enabled: true,
1269
+ maxEntries: 5e3
1270
+ },
1271
+ labels: {
1272
+ "network.xyo.storage.capabilities.delete": "enabled",
1273
+ "network.xyo.storage.class": "mongodb"
1274
+ },
1275
+ payloadSdkConfig: {
1276
+ collection: "rejected_transactions"
1277
+ },
1278
+ schema: "network.xyo.archivist.config"
1279
+ }
1280
+ }
1281
+ ]
1282
+ }
1283
+ }
1284
+ ],
1285
+ schema: "network.xyo.manifest"
1286
+ };
1287
+
1214
1288
  // src/node/manifest/public/Pending.json
1215
1289
  var Pending_default = {
1216
1290
  $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
@@ -1269,9 +1343,11 @@ var Pending_default = {
1269
1343
 
1270
1344
  // src/node/manifest/public/index.ts
1271
1345
  var ChainNodeManifest = Chain_default;
1346
+ var DeadLetterQueueNodeManifest = DeadLetterQueue_default;
1272
1347
  var PendingNodeManifest = Pending_default;
1273
1348
  var PublicChildManifests = [
1274
1349
  ...ChainNodeManifest.nodes,
1350
+ ...DeadLetterQueueNodeManifest.nodes,
1275
1351
  ...PendingNodeManifest.nodes
1276
1352
  ];
1277
1353
 
@@ -1295,7 +1371,7 @@ async function writableChainArchivistFromNode(node) {
1295
1371
  }
1296
1372
  __name(writableChainArchivistFromNode, "writableChainArchivistFromNode");
1297
1373
  async function readonlyChainArchivistFromNode(node) {
1298
- return assertEx12(asArchivistInstance(await node.resolve("Chain:Validated"), {
1374
+ return assertEx5(asArchivistInstance(await node.resolve("Chain:Validated"), {
1299
1375
  required: true
1300
1376
  }));
1301
1377
  }
@@ -1312,27 +1388,43 @@ async function pendingBlocksArchivistFromNode(node) {
1312
1388
  });
1313
1389
  }
1314
1390
  __name(pendingBlocksArchivistFromNode, "pendingBlocksArchivistFromNode");
1391
+ async function rejectedBlocksArchivistFromNode(node) {
1392
+ return asArchivistInstance(await node.resolve("XYOChain:DeadLetterQueue:RejectedBlocks"), {
1393
+ required: true
1394
+ });
1395
+ }
1396
+ __name(rejectedBlocksArchivistFromNode, "rejectedBlocksArchivistFromNode");
1397
+ async function rejectedTransactionsArchivistFromNode(node) {
1398
+ return asArchivistInstance(await node.resolve("XYOChain:DeadLetterQueue:RejectedTransactions"), {
1399
+ required: true
1400
+ });
1401
+ }
1402
+ __name(rejectedTransactionsArchivistFromNode, "rejectedTransactionsArchivistFromNode");
1315
1403
  async function initServerNode(context, wallet, providedNode) {
1316
1404
  const node = providedNode ?? await loadNode(context, wallet);
1317
- assertEx12(await node.start(), () => "Failed to start node");
1405
+ assertEx5(await node.start(), () => "Failed to start node");
1318
1406
  const writableChainArchivist = await writableChainArchivistFromNode(node);
1319
1407
  const readonlyChainArchivist = await readonlyChainArchivistFromNode(node);
1320
1408
  const pendingTransactionsArchivist = await pendingTransactionsArchivistFromNode(node);
1321
1409
  const pendingBlocksArchivist = await pendingBlocksArchivistFromNode(node);
1410
+ const rejectedBlocksArchivist = await rejectedBlocksArchivistFromNode(node);
1411
+ const rejectedTransactionsArchivist = await rejectedTransactionsArchivistFromNode(node);
1322
1412
  return {
1323
1413
  node,
1324
1414
  writableChainArchivist,
1325
1415
  readonlyChainArchivist,
1326
1416
  pendingTransactionsArchivist,
1327
- pendingBlocksArchivist
1417
+ pendingBlocksArchivist,
1418
+ rejectedBlocksArchivist,
1419
+ rejectedTransactionsArchivist
1328
1420
  };
1329
1421
  }
1330
1422
  __name(initServerNode, "initServerNode");
1331
1423
 
1332
1424
  // src/node/init/initTransferSummaryMap.ts
1333
1425
  import { BaseMongoSdk as BaseMongoSdk2 } from "@xylabs/mongo";
1334
- import { assertEx as assertEx13 } from "@xylabs/sdk-js";
1335
- import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol";
1426
+ import { assertEx as assertEx6 } from "@xylabs/sdk-js";
1427
+ import { MongoMap as MongoMap2 } from "@xyo-network/chain-protocol-driver-mongodb";
1336
1428
  import { hasMongoConfig as hasMongoConfig3, MemoryMap as MemoryMap2 } from "@xyo-network/xl1-sdk";
1337
1429
  async function initTransferSummaryMap({ logger, config }) {
1338
1430
  const mongoConfig = config.storage?.mongo;
@@ -1356,7 +1448,7 @@ async function initTransferSummaryMap({ logger, config }) {
1356
1448
  maxEntries: 5e3
1357
1449
  }
1358
1450
  });
1359
- assertEx13(await result.start(), () => "Failed to start transfer summary map");
1451
+ assertEx6(await result.start(), () => "Failed to start transfer summary map");
1360
1452
  return result;
1361
1453
  } else {
1362
1454
  logger?.warn("[API] Mongo configuration not found. Using MemoryMap for TransferSummaryMap.");
@@ -1378,10 +1470,10 @@ var validateHydratedBlockStateWithCumulativeBalance = /* @__PURE__ */ __name(asy
1378
1470
  ];
1379
1471
  }, "validateHydratedBlockStateWithCumulativeBalance");
1380
1472
  async function localLocatorFromConfig(context, validateDepsOnRegister = false) {
1381
- const balancesSummaryMap = assertEx14(await initBalanceSummaryMap(context), () => "Balance Summary Map not initialized");
1382
- const transfersSummaryMap = assertEx14(await initTransferSummaryMap(context), () => "Transfer Summary Map not initialized");
1473
+ const balancesSummaryMap = assertEx7(await initBalanceSummaryMap(context), () => "Balance Summary Map not initialized");
1474
+ const transfersSummaryMap = assertEx7(await initTransferSummaryMap(context), () => "Transfer Summary Map not initialized");
1383
1475
  const wallet = await initActorWallet(context);
1384
- const { writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist } = await initServerNode(context, wallet);
1476
+ const { writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist, rejectedBlocksArchivist, rejectedTransactionsArchivist } = await initServerNode(context, wallet);
1385
1477
  await initFinalizationArchivistIfNeeded(writableChainArchivist, context.config, wallet);
1386
1478
  const locator = new ProviderFactoryLocator(context, {}, validateDepsOnRegister);
1387
1479
  locator.registerMany([
@@ -1419,6 +1511,17 @@ async function localLocatorFromConfig(context, validateDepsOnRegister = false) {
1419
1511
  SimpleBlockValidationViewer.factory(SimpleBlockValidationViewer.dependencies, {
1420
1512
  state: validateHydratedBlockStateWithCumulativeBalance,
1421
1513
  protocol: validateHydratedBlock
1514
+ }),
1515
+ SimpleTransactionValidationViewer.factory(SimpleTransactionValidationViewer.dependencies, {
1516
+ protocol: validateTransaction
1517
+ }),
1518
+ SimpleDeadLetterQueueRunner.factory(SimpleDeadLetterQueueRunner.dependencies, {
1519
+ rejectedBlocksArchivist,
1520
+ rejectedTransactionsArchivist
1521
+ }),
1522
+ SimpleDeadLetterQueueViewer.factory(SimpleDeadLetterQueueViewer.dependencies, {
1523
+ rejectedBlocksArchivist,
1524
+ rejectedTransactionsArchivist
1422
1525
  })
1423
1526
  ]);
1424
1527
  return locator;
@@ -1427,7 +1530,6 @@ __name(localLocatorFromConfig, "localLocatorFromConfig");
1427
1530
 
1428
1531
  // src/node/config/locators/locatorsFromConfig.ts
1429
1532
  import { deepMerge as deepMerge2 } from "@xylabs/sdk-js";
1430
- import { ActorConfigZod as ActorConfigZod2 } from "@xyo-network/xl1-sdk";
1431
1533
 
1432
1534
  // src/node/config/locators/actors/apiLocatorFromConfig.ts
1433
1535
  import { ProviderFactoryLocator as ProviderFactoryLocator2, SimpleXyoConnectionRunner, SimpleXyoGateway, SimpleXyoRunner } from "@xyo-network/xl1-sdk";
@@ -1447,19 +1549,16 @@ function apiLocatorFromConfig(context, parent) {
1447
1549
  __name(apiLocatorFromConfig, "apiLocatorFromConfig");
1448
1550
 
1449
1551
  // src/node/config/locators/actors/bridgeLocatorFromConfig.ts
1450
- import { isDefined as isDefined7 } from "@xylabs/sdk-js";
1451
- import { HDWallet as HDWallet4 } from "@xyo-network/sdk-js";
1452
- import { ADDRESS_INDEX as ADDRESS_INDEX2, generateXyoBaseWalletFromPhrase as generateXyoBaseWalletFromPhrase2, JsonRpcAccountBalanceViewer as JsonRpcAccountBalanceViewer3, JsonRpcBlockViewer, JsonRpcFinalizationViewer, JsonRpcMempoolRunner, JsonRpcMempoolViewer, JsonRpcXyoRunner, JsonRpcXyoViewer, ProviderFactoryLocator as ProviderFactoryLocator3, RestDataLakeRunner, RestDataLakeViewer, SimpleStakeEventsViewer as SimpleStakeEventsViewer2, SimpleXyoConnectionRunner as SimpleXyoConnectionRunner2, SimpleXyoGatewayRunner, SimpleXyoRunner as SimpleXyoRunner2, SimpleXyoSigner as SimpleXyoSigner2 } from "@xyo-network/xl1-sdk";
1552
+ import { isDefined as isDefined3 } from "@xylabs/sdk-js";
1553
+ import { JsonRpcAccountBalanceViewer as JsonRpcAccountBalanceViewer3, JsonRpcBlockViewer, JsonRpcFinalizationViewer, JsonRpcMempoolRunner, JsonRpcMempoolViewer, JsonRpcXyoRunner, JsonRpcXyoViewer, ProviderFactoryLocator as ProviderFactoryLocator3, RestDataLakeRunner, RestDataLakeViewer, SimpleStakeEventsViewer as SimpleStakeEventsViewer2, SimpleXyoConnectionRunner as SimpleXyoConnectionRunner2, SimpleXyoGatewayRunner, SimpleXyoRunner as SimpleXyoRunner2, SimpleXyoSigner as SimpleXyoSigner2 } from "@xyo-network/xl1-sdk";
1453
1554
  async function bridgeLocatorFromConfig(context, parent) {
1454
1555
  const locator = new ProviderFactoryLocator3({
1455
1556
  ...context,
1456
1557
  locator: parent
1457
1558
  });
1458
1559
  const { config } = context;
1459
- const { dataLake, mnemonic } = config;
1460
- const walletPhrase = isDefined7(mnemonic) ? mnemonic : HDWallet4.generateMnemonic();
1461
- const wallet = await generateXyoBaseWalletFromPhrase2(walletPhrase);
1462
- const signerAccount = await wallet.derivePath(ADDRESS_INDEX2.XYO);
1560
+ const { dataLake } = config;
1561
+ const signerAccount = await initActorAccount(context);
1463
1562
  if (config.remote.rpc) {
1464
1563
  locator.registerMany([
1465
1564
  JsonRpcMempoolViewer.factory(JsonRpcMempoolViewer.dependencies, {}),
@@ -1471,7 +1570,7 @@ async function bridgeLocatorFromConfig(context, parent) {
1471
1570
  JsonRpcXyoViewer.factory(JsonRpcXyoViewer.dependencies, {})
1472
1571
  ]);
1473
1572
  }
1474
- if (isDefined7(dataLake)) {
1573
+ if (isDefined3(dataLake)) {
1475
1574
  const { driver } = dataLake;
1476
1575
  switch (driver) {
1477
1576
  case "rest": {
@@ -1649,7 +1748,7 @@ async function locatorsFromConfig(context, { actors, ...config }) {
1649
1748
  case "validator": {
1650
1749
  result[actorConfig.name] = await validatorLocatorFromConfig({
1651
1750
  ...context,
1652
- config: ActorConfigZod2.parse(deepMerge2(config, actorConfig))
1751
+ config: ValidatorConfigZod.parse(deepMerge2(config, actorConfig))
1653
1752
  }, result._root);
1654
1753
  break;
1655
1754
  }
@@ -1674,7 +1773,7 @@ async function locatorsFromConfig(context, { actors, ...config }) {
1674
1773
  __name(locatorsFromConfig, "locatorsFromConfig");
1675
1774
 
1676
1775
  // src/node/config/tryParseConfig.ts
1677
- import { isDefined as isDefined8, isNull } from "@xylabs/sdk-js";
1776
+ import { isDefined as isDefined4, isNull } from "@xylabs/sdk-js";
1678
1777
  import { ConfigZod } from "@xyo-network/xl1-sdk";
1679
1778
  import { cosmiconfig } from "cosmiconfig";
1680
1779
  var configName = "xyo";
@@ -1686,102 +1785,38 @@ async function tryParseConfig(options) {
1686
1785
  // loaders: { '.ts': TypeScriptLoader() },
1687
1786
  searchPlaces
1688
1787
  });
1689
- const result = isDefined8(configPath) ? (await explorer.load(configPath))?.config : (await explorer.search())?.config;
1690
- if (isDefined8(result) && !isNull(result)) {
1788
+ const result = isDefined4(configPath) ? (await explorer.load(configPath))?.config : (await explorer.search())?.config;
1789
+ if (isDefined4(result) && !isNull(result)) {
1691
1790
  const section = result[configSection];
1692
- if (isDefined8(section) && typeof section === "object") {
1693
- return ConfigZod.loose().parse(section);
1791
+ if (isDefined4(section) && typeof section === "object") {
1792
+ const parsed = ConfigZod.loose().parse(section);
1793
+ return typeof section.mnemonic === "string" ? {
1794
+ ...parsed,
1795
+ mnemonic: section.mnemonic
1796
+ } : parsed;
1694
1797
  }
1695
1798
  }
1696
1799
  return ConfigZod.parse({});
1697
1800
  }
1698
1801
  __name(tryParseConfig, "tryParseConfig");
1699
1802
 
1700
- // src/node/health/initHealthEndpoints.ts
1701
- import http from "http";
1702
- import { isDefined as isDefined9 } from "@xylabs/sdk-js";
1703
- var sendStatus = /* @__PURE__ */ __name((res, status, errorCode) => {
1704
- const statusCode = status === "started" ? 200 : errorCode;
1705
- res.writeHead(statusCode, {
1706
- "Content-Type": "application/json"
1707
- });
1708
- res.end(JSON.stringify({
1709
- status
1710
- }));
1711
- }, "sendStatus");
1712
- var notFound = /* @__PURE__ */ __name((res) => {
1713
- res.writeHead(404, {
1714
- "Content-Type": "application/json"
1715
- });
1716
- res.end(JSON.stringify({
1717
- status: "not found"
1718
- }));
1719
- }, "notFound");
1720
- var createHealthServer = /* @__PURE__ */ __name((context, port, statusMonitor) => {
1721
- const { logger } = context;
1722
- const server = http.createServer((req, res) => {
1723
- const url = req.url ?? "";
1724
- const status = statusMonitor.getGlobalStatus();
1725
- switch (url) {
1726
- case "/healthz": {
1727
- sendStatus(res, status, 500);
1728
- break;
1729
- }
1730
- case "/livez": {
1731
- sendStatus(res, status, 503);
1732
- break;
1733
- }
1734
- case "/readyz": {
1735
- sendStatus(res, status, 503);
1736
- break;
1737
- }
1738
- default: {
1739
- notFound(res);
1740
- }
1741
- }
1742
- });
1743
- server.listen(port, () => {
1744
- logger?.log(`Health server running on http://localhost:${port}`);
1745
- logger?.log(" - /healthz");
1746
- logger?.log(" - /livez");
1747
- logger?.log(" - /readyz");
1748
- });
1749
- return server;
1750
- }, "createHealthServer");
1751
- function initHealthEndpoints(context, statusMonitor) {
1752
- const { config } = context;
1753
- const { healthCheckPort } = config;
1754
- return isDefined9(healthCheckPort) ? createHealthServer(context, healthCheckPort, statusMonitor) : void 0;
1755
- }
1756
- __name(initHealthEndpoints, "initHealthEndpoints");
1757
-
1758
- // src/node/sharedMiddleware.ts
1759
- import { customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler, standardResponses } from "@xylabs/express";
1760
- import compression from "compression";
1761
- import cors from "cors";
1762
- function sharedMiddleware(app) {
1763
- app.set("etag", false);
1764
- app.use(cors());
1765
- app.use(compression());
1766
- app.use(responseProfiler);
1767
- app.use(getJsonBodyParser(getJsonBodyParserOptions({
1768
- limit: "1mb"
1769
- })));
1770
- app.use(standardResponses);
1771
- disableExpressDefaultPoweredByHeader(app);
1772
- app.use(customPoweredByHeader);
1773
- disableCaseSensitiveRouting(app);
1774
- }
1775
- __name(sharedMiddleware, "sharedMiddleware");
1803
+ // src/node/index.ts
1804
+ export * from "@xyo-network/chain-orchestration-evm";
1805
+ export * from "@xyo-network/chain-orchestration-express";
1806
+ export * from "@xyo-network/chain-orchestration-storage";
1776
1807
  export {
1777
1808
  ApiConfigContext,
1778
1809
  ApiConfigZod,
1810
+ BUILT_IN_DEV_MNEMONIC,
1779
1811
  BasisPointsZod,
1780
1812
  BridgeConfigContext,
1781
1813
  BridgeConfigZod,
1782
1814
  BridgeSettingsZod,
1815
+ DEFAULT_BLOCK_PRODUCTION_CHECK_INTERVAL,
1783
1816
  DefaultServiceProvider,
1817
+ GENESIS_REWARD_AMOUNT,
1784
1818
  GenericHost,
1819
+ INSECURE_GENESIS_REWARD_MNEMONIC,
1785
1820
  MempoolConfigContext,
1786
1821
  MempoolConfigZod,
1787
1822
  NodeManifest,
@@ -1790,8 +1825,10 @@ export {
1790
1825
  ProducerConfigContext,
1791
1826
  ProducerConfigZod,
1792
1827
  PublicChildManifests,
1828
+ ROOT_WALLET_RUNTIME_ID,
1793
1829
  RewardRedemptionConfigContext,
1794
1830
  RewardRedemptionConfigZod,
1831
+ SHARED_ACCOUNT_REPORT_COUNT,
1795
1832
  ServiceLifetime,
1796
1833
  ValidatorActor,
1797
1834
  ValidatorConfigContext,
@@ -1811,36 +1848,28 @@ export {
1811
1848
  basicRemoteRunnerLocator,
1812
1849
  basicRemoteViewerLocator,
1813
1850
  buildTelemetryConfig,
1814
- canUseChainId,
1815
- canUseEvmProvider,
1816
- canUseInfuraProvider,
1817
- canUseJsonRpcProvider,
1851
+ clearResolvedWalletReport,
1818
1852
  contextFromConfigWithoutLocator,
1819
1853
  createProducerChainStakeIntentBlock,
1820
- getChainId,
1821
- getInfuraProviderConfig,
1822
- getJsonRpcProviderConfig,
1854
+ formatWalletReport,
1855
+ getBuiltInDevMnemonic,
1856
+ getInsecureGenesisRewardMnemonic,
1823
1857
  getLocator,
1858
+ getReservedActorIndex,
1859
+ getResolvedWalletReport,
1824
1860
  initActorAccount,
1825
1861
  initActorSeedPhrase,
1826
1862
  initActorWallet,
1827
1863
  initBalanceSummaryMap,
1828
1864
  initBridgedArchivistModule,
1829
1865
  initBridgedModule,
1830
- initChainFinalizedArchivist,
1831
- initEvmProvider,
1832
1866
  initEvmProvidersIfAvailable,
1833
1867
  initFinalizationArchivistIfNeeded,
1834
1868
  initFinalizedArchivist,
1835
- initHealthEndpoints,
1836
- initInfuraProvider,
1837
- initJsonRpcProvider,
1838
- initPendingBlocksArchivist,
1839
- initRejectedTransactionsArchivist,
1840
1869
  initServerNode,
1841
- initStakeIntentStateArchivist,
1842
1870
  initStatusReporter,
1843
1871
  initTransferSummaryMap,
1872
+ initializeResolvedWalletReport,
1844
1873
  isApiConfig,
1845
1874
  isApiConfigContext,
1846
1875
  isBridgeConfig,
@@ -1857,8 +1886,12 @@ export {
1857
1886
  localLocatorFromConfig,
1858
1887
  locatorsFromConfig,
1859
1888
  mergeConfig,
1889
+ resolveActorWallet,
1890
+ resolveGenesisRewardAddress,
1891
+ resolveRootWallet,
1892
+ resolveWalletForActor,
1893
+ resolveWalletReport,
1860
1894
  rootLocatorFromConfig,
1861
- sharedMiddleware,
1862
1895
  telemetryContextFromConfig,
1863
1896
  toApiConfig,
1864
1897
  toApiConfigContext,