@xyo-network/xl1-protocol 1.3.8 → 1.3.9

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 (303) hide show
  1. package/README.md +58 -21
  2. package/dist/neutral/index.mjs +216 -101
  3. package/dist/neutral/index.mjs.map +1 -1
  4. package/dist/node/index.mjs +225 -0
  5. package/dist/node/index.mjs.map +1 -0
  6. package/dist/types/Addressable.d.ts +5 -0
  7. package/dist/types/Addressable.d.ts.map +1 -0
  8. package/dist/types/ChainIterator.d.ts +29 -0
  9. package/dist/types/ChainIterator.d.ts.map +1 -0
  10. package/dist/types/ChainIteratorEventData.d.ts +11 -0
  11. package/dist/types/ChainIteratorEventData.d.ts.map +1 -0
  12. package/dist/types/OpenTelemetryProviders.d.ts +6 -0
  13. package/dist/types/OpenTelemetryProviders.d.ts.map +1 -0
  14. package/dist/types/chain/ChainServiceCollection.d.ts +35 -0
  15. package/dist/types/chain/ChainServiceCollection.d.ts.map +1 -0
  16. package/dist/types/chain/Initializable.d.ts +3 -0
  17. package/dist/types/chain/Initializable.d.ts.map +1 -0
  18. package/dist/types/chain/index.d.ts +3 -0
  19. package/dist/types/chain/index.d.ts.map +1 -0
  20. package/dist/types/ethereum.d.ts +11 -0
  21. package/dist/types/ethereum.d.ts.map +1 -0
  22. package/dist/types/index.d.ts +13 -1
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/instances/BoundWitness.d.ts +9 -0
  25. package/dist/types/instances/BoundWitness.d.ts.map +1 -0
  26. package/dist/types/instances/Data.d.ts +4 -0
  27. package/dist/types/instances/Data.d.ts.map +1 -0
  28. package/dist/types/instances/Fees.d.ts +8 -0
  29. package/dist/types/instances/Fees.d.ts.map +1 -0
  30. package/dist/types/instances/HydratedBoundWitness.d.ts +10 -0
  31. package/dist/types/instances/HydratedBoundWitness.d.ts.map +1 -0
  32. package/dist/types/instances/Object.d.ts +5 -0
  33. package/dist/types/instances/Object.d.ts.map +1 -0
  34. package/dist/types/instances/Payload.d.ts +6 -0
  35. package/dist/types/instances/Payload.d.ts.map +1 -0
  36. package/dist/types/instances/Signature.d.ts +8 -0
  37. package/dist/types/instances/Signature.d.ts.map +1 -0
  38. package/dist/types/instances/block/BlockFields.d.ts +9 -0
  39. package/dist/types/instances/block/BlockFields.d.ts.map +1 -0
  40. package/dist/types/instances/block/HydratedBlock.d.ts +8 -0
  41. package/dist/types/instances/block/HydratedBlock.d.ts.map +1 -0
  42. package/dist/types/instances/block/SignedHydratedBlock.d.ts +6 -0
  43. package/dist/types/instances/block/SignedHydratedBlock.d.ts.map +1 -0
  44. package/dist/types/instances/block/index.d.ts +3 -0
  45. package/dist/types/instances/block/index.d.ts.map +1 -0
  46. package/dist/types/instances/index.d.ts +10 -0
  47. package/dist/types/instances/index.d.ts.map +1 -0
  48. package/dist/types/instances/modifiers/Signed.d.ts +7 -0
  49. package/dist/types/instances/modifiers/Signed.d.ts.map +1 -0
  50. package/dist/types/instances/modifiers/Validatable.d.ts +5 -0
  51. package/dist/types/instances/modifiers/Validatable.d.ts.map +1 -0
  52. package/dist/types/instances/modifiers/index.d.ts +3 -0
  53. package/dist/types/instances/modifiers/index.d.ts.map +1 -0
  54. package/dist/types/instances/transaction/HydratedTransaction.d.ts +6 -0
  55. package/dist/types/instances/transaction/HydratedTransaction.d.ts.map +1 -0
  56. package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts +6 -0
  57. package/dist/types/instances/transaction/SignedHydratedTransaction.d.ts.map +1 -0
  58. package/dist/types/instances/transaction/TransactionFields.d.ts +9 -0
  59. package/dist/types/instances/transaction/TransactionFields.d.ts.map +1 -0
  60. package/dist/types/instances/transaction/index.d.ts +3 -0
  61. package/dist/types/instances/transaction/index.d.ts.map +1 -0
  62. package/dist/types/payload/elevatable/ChainStakeIntent.d.ts +17 -0
  63. package/dist/types/payload/elevatable/ChainStakeIntent.d.ts.map +1 -0
  64. package/dist/types/payload/elevatable/Executable.d.ts +14 -0
  65. package/dist/types/payload/elevatable/Executable.d.ts.map +1 -0
  66. package/dist/types/payload/elevatable/Hash.d.ts +19 -0
  67. package/dist/types/payload/elevatable/Hash.d.ts.map +1 -0
  68. package/dist/types/payload/elevatable/TransferPayload.d.ts +17 -0
  69. package/dist/types/payload/elevatable/TransferPayload.d.ts.map +1 -0
  70. package/dist/types/payload/elevatable/index.d.ts +5 -0
  71. package/dist/types/payload/elevatable/index.d.ts.map +1 -0
  72. package/dist/types/payload/index.d.ts +2 -0
  73. package/dist/types/payload/index.d.ts.map +1 -0
  74. package/dist/types/protocol/AllowedBlockPayload.d.ts +11 -0
  75. package/dist/types/protocol/AllowedBlockPayload.d.ts.map +1 -0
  76. package/dist/types/protocol/BlockBoundWitness.d.ts +34 -0
  77. package/dist/types/protocol/BlockBoundWitness.d.ts.map +1 -0
  78. package/dist/types/protocol/BlockDuration.d.ts +23 -0
  79. package/dist/types/protocol/BlockDuration.d.ts.map +1 -0
  80. package/dist/types/protocol/BlockNumber.d.ts +37 -0
  81. package/dist/types/protocol/BlockNumber.d.ts.map +1 -0
  82. package/dist/types/protocol/ChainAnalyzer.d.ts +9 -0
  83. package/dist/types/protocol/ChainAnalyzer.d.ts.map +1 -0
  84. package/dist/types/protocol/ChainReference.d.ts +11 -0
  85. package/dist/types/protocol/ChainReference.d.ts.map +1 -0
  86. package/dist/types/protocol/HydratedBlock.d.ts +6 -0
  87. package/dist/types/protocol/HydratedBlock.d.ts.map +1 -0
  88. package/dist/types/protocol/HydratedTransaction.d.ts +9 -0
  89. package/dist/types/protocol/HydratedTransaction.d.ts.map +1 -0
  90. package/dist/types/protocol/Issuer.d.ts +5 -0
  91. package/dist/types/protocol/Issuer.d.ts.map +1 -0
  92. package/dist/types/protocol/Steps.d.ts +2 -0
  93. package/dist/types/protocol/Steps.d.ts.map +1 -0
  94. package/dist/types/protocol/TransactionBoundWitness.d.ts +26 -0
  95. package/dist/types/protocol/TransactionBoundWitness.d.ts.map +1 -0
  96. package/dist/types/protocol/TransactionFeesFields.d.ts +35 -0
  97. package/dist/types/protocol/TransactionFeesFields.d.ts.map +1 -0
  98. package/dist/types/protocol/index.d.ts +13 -0
  99. package/dist/types/protocol/index.d.ts.map +1 -0
  100. package/dist/types/provider/XyoProvider.d.ts +18 -0
  101. package/dist/types/provider/XyoProvider.d.ts.map +1 -0
  102. package/dist/types/provider/XyoRunner.d.ts +7 -0
  103. package/dist/types/provider/XyoRunner.d.ts.map +1 -0
  104. package/dist/types/provider/XyoSigner.d.ts +10 -0
  105. package/dist/types/provider/XyoSigner.d.ts.map +1 -0
  106. package/dist/types/provider/XyoStorage.d.ts +16 -0
  107. package/dist/types/provider/XyoStorage.d.ts.map +1 -0
  108. package/dist/types/provider/XyoViewer.d.ts +17 -0
  109. package/dist/types/provider/XyoViewer.d.ts.map +1 -0
  110. package/dist/types/provider/XyoWallet.d.ts +13 -0
  111. package/dist/types/provider/XyoWallet.d.ts.map +1 -0
  112. package/dist/types/provider/index.d.ts +7 -0
  113. package/dist/types/provider/index.d.ts.map +1 -0
  114. package/dist/types/repository/Repository.d.ts +10 -0
  115. package/dist/types/repository/Repository.d.ts.map +1 -0
  116. package/dist/types/repository/TransactionReadRepository.d.ts +5 -0
  117. package/dist/types/repository/TransactionReadRepository.d.ts.map +1 -0
  118. package/dist/types/repository/TransactionRepository.d.ts +10 -0
  119. package/dist/types/repository/TransactionRepository.d.ts.map +1 -0
  120. package/dist/types/repository/TransactionRepositoryIterator.d.ts +5 -0
  121. package/dist/types/repository/TransactionRepositoryIterator.d.ts.map +1 -0
  122. package/dist/types/repository/TransactionWriteRepository.d.ts +5 -0
  123. package/dist/types/repository/TransactionWriteRepository.d.ts.map +1 -0
  124. package/dist/types/repository/index.d.ts +6 -0
  125. package/dist/types/repository/index.d.ts.map +1 -0
  126. package/dist/types/services/AccountBalanceService.d.ts +7 -0
  127. package/dist/types/services/AccountBalanceService.d.ts.map +1 -0
  128. package/dist/types/services/BlockProducer.d.ts +7 -0
  129. package/dist/types/services/BlockProducer.d.ts.map +1 -0
  130. package/dist/types/services/BlockReward.d.ts +6 -0
  131. package/dist/types/services/BlockReward.d.ts.map +1 -0
  132. package/dist/types/services/Chain/ChainContractViewer.d.ts +12 -0
  133. package/dist/types/services/Chain/ChainContractViewer.d.ts.map +1 -0
  134. package/dist/types/services/Chain/ChainIdentification.d.ts +14 -0
  135. package/dist/types/services/Chain/ChainIdentification.d.ts.map +1 -0
  136. package/dist/types/services/Chain/ChainInformation.d.ts +12 -0
  137. package/dist/types/services/Chain/ChainInformation.d.ts.map +1 -0
  138. package/dist/types/services/Chain/ChainService.d.ts +8 -0
  139. package/dist/types/services/Chain/ChainService.d.ts.map +1 -0
  140. package/dist/types/services/Chain/ChainStakeViewer.d.ts +10 -0
  141. package/dist/types/services/Chain/ChainStakeViewer.d.ts.map +1 -0
  142. package/dist/types/services/Chain/ChainStaker.d.ts +6 -0
  143. package/dist/types/services/Chain/ChainStaker.d.ts.map +1 -0
  144. package/dist/types/services/Chain/index.d.ts +7 -0
  145. package/dist/types/services/Chain/index.d.ts.map +1 -0
  146. package/dist/types/services/Election.d.ts +11 -0
  147. package/dist/types/services/Election.d.ts.map +1 -0
  148. package/dist/types/services/Params.d.ts +9 -0
  149. package/dist/types/services/Params.d.ts.map +1 -0
  150. package/dist/types/services/PendingTransactionsService.d.ts +7 -0
  151. package/dist/types/services/PendingTransactionsService.d.ts.map +1 -0
  152. package/dist/types/services/Service.d.ts +9 -0
  153. package/dist/types/services/Service.d.ts.map +1 -0
  154. package/dist/types/services/index.d.ts +10 -0
  155. package/dist/types/services/index.d.ts.map +1 -0
  156. package/dist/types/services/stakeIntent/ChainIndexingServiceStateSchema.d.ts +39 -0
  157. package/dist/types/services/stakeIntent/ChainIndexingServiceStateSchema.d.ts.map +1 -0
  158. package/dist/types/services/stakeIntent/StakeIntentService.d.ts +24 -0
  159. package/dist/types/services/stakeIntent/StakeIntentService.d.ts.map +1 -0
  160. package/dist/types/services/stakeIntent/index.d.ts +3 -0
  161. package/dist/types/services/stakeIntent/index.d.ts.map +1 -0
  162. package/dist/types/validation/block/BlockValidationFunction.d.ts +5 -0
  163. package/dist/types/validation/block/BlockValidationFunction.d.ts.map +1 -0
  164. package/dist/types/validation/block/HydratedBlockStateValidationFunction.d.ts +13 -0
  165. package/dist/types/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -0
  166. package/dist/types/validation/block/HydratedBlockValidationFunction.d.ts +11 -0
  167. package/dist/types/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -0
  168. package/dist/types/validation/block/index.d.ts +4 -0
  169. package/dist/types/validation/block/index.d.ts.map +1 -0
  170. package/dist/types/validation/boundwitness/BoundWitnessValidationFunction.d.ts +4 -0
  171. package/dist/types/validation/boundwitness/BoundWitnessValidationFunction.d.ts.map +1 -0
  172. package/dist/types/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts +6 -0
  173. package/dist/types/validation/boundwitness/HydratedBoundWitnessValidationFunction.d.ts.map +1 -0
  174. package/dist/types/validation/boundwitness/index.d.ts +3 -0
  175. package/dist/types/validation/boundwitness/index.d.ts.map +1 -0
  176. package/dist/types/validation/index.d.ts +5 -0
  177. package/dist/types/validation/index.d.ts.map +1 -0
  178. package/dist/types/validation/payload/InBlockPayloadValidationFunction.d.ts +5 -0
  179. package/dist/types/validation/payload/InBlockPayloadValidationFunction.d.ts.map +1 -0
  180. package/dist/types/validation/payload/index.d.ts +2 -0
  181. package/dist/types/validation/payload/index.d.ts.map +1 -0
  182. package/dist/types/validation/transaction/HydratedTransactionStateValidationFunction.d.ts +13 -0
  183. package/dist/types/validation/transaction/HydratedTransactionStateValidationFunction.d.ts.map +1 -0
  184. package/dist/types/validation/transaction/HydratedTransactionValidationFunction.d.ts +12 -0
  185. package/dist/types/validation/transaction/HydratedTransactionValidationFunction.d.ts.map +1 -0
  186. package/dist/types/validation/transaction/index.d.ts +3 -0
  187. package/dist/types/validation/transaction/index.d.ts.map +1 -0
  188. package/documents/proof-of-perfect/proof-of-perfect-draft.log +741 -0
  189. package/documents/proof-of-perfect/proof-of-perfect-draft.pdf +0 -0
  190. package/documents/proof-of-perfect/proof-of-perfect-draft.tex +311 -0
  191. package/documents/xyol1-white-paper/white-paper-draft.log +547 -0
  192. package/documents/xyol1-white-paper/white-paper-draft.pdf +0 -0
  193. package/documents/xyol1-white-paper/white-paper-draft.tex +799 -0
  194. package/eslint.config.mjs +35 -0
  195. package/knip.config.ts +1 -1
  196. package/knip.log +491 -0
  197. package/package.json +31 -18
  198. package/src/Addressable.ts +6 -0
  199. package/src/ChainIterator.ts +29 -0
  200. package/src/ChainIteratorEventData.ts +11 -0
  201. package/src/OpenTelemetryProviders.ts +6 -0
  202. package/src/chain/ChainServiceCollection.ts +41 -0
  203. package/src/chain/Initializable.ts +3 -0
  204. package/src/chain/index.ts +2 -0
  205. package/src/ethereum.ts +26 -0
  206. package/src/index.ts +13 -1
  207. package/src/instances/BoundWitness.ts +13 -0
  208. package/src/instances/Data.ts +3 -0
  209. package/src/instances/Fees.ts +8 -0
  210. package/src/instances/HydratedBoundWitness.ts +15 -0
  211. package/src/instances/Object.ts +5 -0
  212. package/src/instances/Payload.ts +6 -0
  213. package/src/instances/Signature.ts +11 -0
  214. package/src/instances/block/BlockFields.ts +13 -0
  215. package/src/instances/block/HydratedBlock.ts +9 -0
  216. package/src/instances/block/SignedHydratedBlock.ts +5 -0
  217. package/src/instances/block/index.ts +2 -0
  218. package/src/instances/index.ts +9 -0
  219. package/src/instances/modifiers/Signed.ts +8 -0
  220. package/src/instances/modifiers/Validatable.ts +5 -0
  221. package/src/instances/modifiers/index.ts +2 -0
  222. package/src/instances/transaction/HydratedTransaction.ts +8 -0
  223. package/src/instances/transaction/SignedHydratedTransaction.ts +7 -0
  224. package/src/instances/transaction/TransactionFields.ts +12 -0
  225. package/src/instances/transaction/index.ts +2 -0
  226. package/src/payload/elevatable/ChainStakeIntent.ts +32 -0
  227. package/src/payload/elevatable/Executable.ts +29 -0
  228. package/src/payload/elevatable/Hash.ts +19 -0
  229. package/src/payload/elevatable/TransferPayload.ts +26 -0
  230. package/src/payload/elevatable/index.ts +4 -0
  231. package/src/payload/index.ts +1 -0
  232. package/src/protocol/AllowedBlockPayload.ts +29 -0
  233. package/src/protocol/BlockBoundWitness.ts +47 -0
  234. package/src/protocol/BlockDuration.ts +23 -0
  235. package/src/protocol/BlockNumber.ts +39 -0
  236. package/src/protocol/ChainAnalyzer.ts +10 -0
  237. package/src/protocol/ChainReference.ts +11 -0
  238. package/src/protocol/HydratedBlock.ts +8 -0
  239. package/src/protocol/HydratedTransaction.ts +19 -0
  240. package/src/protocol/Issuer.ts +5 -0
  241. package/src/protocol/Steps.ts +1 -0
  242. package/src/protocol/TransactionBoundWitness.ts +51 -0
  243. package/src/protocol/TransactionFeesFields.ts +38 -0
  244. package/src/protocol/index.ts +12 -0
  245. package/src/provider/XyoProvider.ts +29 -0
  246. package/src/provider/XyoRunner.ts +8 -0
  247. package/src/provider/XyoSigner.ts +21 -0
  248. package/src/provider/XyoStorage.ts +17 -0
  249. package/src/provider/XyoViewer.ts +18 -0
  250. package/src/provider/XyoWallet.ts +15 -0
  251. package/src/provider/index.ts +6 -0
  252. package/src/repository/Repository.ts +11 -0
  253. package/src/repository/TransactionReadRepository.ts +4 -0
  254. package/src/repository/TransactionRepository.ts +9 -0
  255. package/src/repository/TransactionRepositoryIterator.ts +4 -0
  256. package/src/repository/TransactionWriteRepository.ts +4 -0
  257. package/src/repository/index.ts +5 -0
  258. package/src/services/AccountBalanceService.ts +9 -0
  259. package/src/services/BlockProducer.ts +7 -0
  260. package/src/services/BlockReward.ts +7 -0
  261. package/src/services/Chain/ChainContractViewer.ts +12 -0
  262. package/src/services/Chain/ChainIdentification.ts +17 -0
  263. package/src/services/Chain/ChainInformation.ts +20 -0
  264. package/src/services/Chain/ChainService.ts +7 -0
  265. package/src/services/Chain/ChainStakeViewer.ts +10 -0
  266. package/src/services/Chain/ChainStaker.ts +5 -0
  267. package/src/services/Chain/index.ts +6 -0
  268. package/src/services/Election.ts +14 -0
  269. package/src/services/Params.ts +11 -0
  270. package/src/services/PendingTransactionsService.ts +8 -0
  271. package/src/services/Service.ts +10 -0
  272. package/src/services/index.ts +9 -0
  273. package/src/services/stakeIntent/ChainIndexingServiceStateSchema.ts +46 -0
  274. package/src/services/stakeIntent/StakeIntentService.ts +28 -0
  275. package/src/services/stakeIntent/index.ts +2 -0
  276. package/src/validation/block/BlockValidationFunction.ts +9 -0
  277. package/src/validation/block/HydratedBlockStateValidationFunction.ts +18 -0
  278. package/src/validation/block/HydratedBlockValidationFunction.ts +15 -0
  279. package/src/validation/block/index.ts +3 -0
  280. package/src/validation/boundwitness/BoundWitnessValidationFunction.ts +6 -0
  281. package/src/validation/boundwitness/HydratedBoundWitnessValidationFunction.ts +10 -0
  282. package/src/validation/boundwitness/index.ts +2 -0
  283. package/src/validation/index.ts +4 -0
  284. package/src/validation/payload/InBlockPayloadValidationFunction.ts +8 -0
  285. package/src/validation/payload/index.ts +1 -0
  286. package/src/validation/transaction/HydratedTransactionStateValidationFunction.ts +18 -0
  287. package/src/validation/transaction/HydratedTransactionValidationFunction.ts +16 -0
  288. package/src/validation/transaction/index.ts +2 -0
  289. package/typedoc.json +5 -0
  290. package/vite.config.ts +30 -0
  291. package/vitest.config.ts +14 -0
  292. package/vitest.teardown.ts +10 -0
  293. package/vitest.workspace.ts +5 -0
  294. package/xy.config.ts +2 -2
  295. package/dist/types/transaction/buildTransaction.d.ts +0 -7
  296. package/dist/types/transaction/buildTransaction.d.ts.map +0 -1
  297. package/dist/types/transaction/hydrateTransaction.d.ts +0 -11
  298. package/dist/types/transaction/hydrateTransaction.d.ts.map +0 -1
  299. package/dist/types/transaction/index.d.ts +0 -3
  300. package/dist/types/transaction/index.d.ts.map +0 -1
  301. package/src/transaction/buildTransaction.ts +0 -61
  302. package/src/transaction/hydrateTransaction.ts +0 -73
  303. package/src/transaction/index.ts +0 -2
@@ -0,0 +1,2 @@
1
+ export * from './BoundWitnessValidationFunction.ts'
2
+ export * from './HydratedBoundWitnessValidationFunction.ts'
@@ -0,0 +1,4 @@
1
+ export * from './block/index.ts'
2
+ export * from './boundwitness/index.ts'
3
+ export * from './payload/index.ts'
4
+ export * from './transaction/index.ts'
@@ -0,0 +1,8 @@
1
+ import type { Promisable } from '@xylabs/promise'
2
+ import type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'
3
+
4
+ import type { HydratedBlock } from '../../protocol/index.ts'
5
+
6
+ export type InBlockPayloadValidationFunction = (
7
+ payload: WithHashStorageMeta<Payload>, block: HydratedBlock
8
+ ) => Promisable<Error[]>
@@ -0,0 +1 @@
1
+ export * from './InBlockPayloadValidationFunction.ts'
@@ -0,0 +1,18 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
3
+ import type { HydratedBoundWitnessWithStorageMeta, ReadArchivist } from '@xyo-network/archivist-model'
4
+
5
+ import type { TransactionBoundWitness } from '../../protocol/index.ts'
6
+
7
+ /**
8
+ * A function that validates a hydrated transaction against chain state.
9
+ * @param hydratedTransaction The hydrated transaction to validate.
10
+ * @param chainId The chain ID to use for validation.
11
+ * @param archivist The archivist to use for validation.
12
+ * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.
13
+ */
14
+ export type HydratedTransactionStateValidationFunction<T extends TransactionBoundWitness = TransactionBoundWitness> = (
15
+ hydratedTransaction: HydratedBoundWitnessWithStorageMeta<T>,
16
+ chainId: Address,
17
+ archivist: ReadArchivist,
18
+ ) => Promisable<Error[]>
@@ -0,0 +1,16 @@
1
+ import type { Address } from '@xylabs/hex'
2
+ import type { Promisable } from '@xylabs/promise'
3
+
4
+ import type { HydratedTransaction, HydratedTransactionWithHashStorageMeta } from '../../protocol/HydratedTransaction.ts'
5
+ import type { TransactionBoundWitness } from '../../protocol/TransactionBoundWitness.ts'
6
+
7
+ /**
8
+ * A function that validates a hydrated transaction.
9
+ * @param bw The hydrated transaction to validate.
10
+ * @param chainId The chain ID to use for validation.
11
+ * @returns An array of errors if the transaction is invalid, or an empty array if it is valid.
12
+ */
13
+ export type HydratedTransactionValidatorFunction<T extends TransactionBoundWitness = TransactionBoundWitness> = (
14
+ hydratedTransaction: HydratedTransactionWithHashStorageMeta<HydratedTransaction<T>>,
15
+ chainId?: Address,
16
+ ) => Promisable<Error[]>
@@ -0,0 +1,2 @@
1
+ export * from './HydratedTransactionStateValidationFunction.ts'
2
+ export * from './HydratedTransactionValidationFunction.ts'
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
+ }
package/vite.config.ts ADDED
@@ -0,0 +1,30 @@
1
+ import { config } from 'dotenv'
2
+ import { defineConfig } from 'vite'
3
+ import topLevelAwait from 'vite-plugin-top-level-await'
4
+
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ const TopLevelAwaitPlugin = topLevelAwait as any
7
+
8
+ config()
9
+
10
+ const parsedPort = Number.parseInt(process.env.PORT ?? '')
11
+ const port = Number.isNaN(parsedPort) ? 3000 : parsedPort
12
+
13
+ // https://vitejs.dev/config/
14
+ export default defineConfig({
15
+ base: '/',
16
+ build: { target: 'esnext' },
17
+ // @bitauth/libauth does not have top level awaits that SB does not like
18
+ optimizeDeps: { exclude: ['@bitauth/libauth'] },
19
+ plugins: [{
20
+ ...TopLevelAwaitPlugin({
21
+ // The export name of top-level await promise for each chunk module
22
+ promiseExportName: '__tla',
23
+ // The function to generate import names of top-level await promise in each chunk module
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ promiseImportName: (i: any) => `__tla_${i}`,
26
+ }),
27
+ apply: 'serve',
28
+ }],
29
+ server: { port, sourcemapIgnoreList: () => true },
30
+ })
@@ -0,0 +1,14 @@
1
+ import dotenv from 'dotenv'
2
+ import tsconfigPaths from 'vite-tsconfig-paths'
3
+ import { defineConfig } from 'vitest/config'
4
+
5
+ dotenv.config()
6
+
7
+ export default defineConfig({
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ plugins: [(tsconfigPaths as any)()],
10
+ test: {
11
+ globals: false,
12
+ watch: false,
13
+ },
14
+ })
@@ -0,0 +1,10 @@
1
+ export default function globalTeardown() {
2
+ console.log('Stopping Ganache CLI...')
3
+
4
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
+ const ganacheProcess = (globalThis as any).__GANACHE_PROCESS__
6
+ if (ganacheProcess) {
7
+ ganacheProcess.kill('SIGTERM')
8
+ console.log('Ganache CLI stopped.')
9
+ }
10
+ }
@@ -0,0 +1,5 @@
1
+ import { defineWorkspace } from 'vitest/config'
2
+
3
+ export default defineWorkspace([
4
+ './vitest.config.ts',
5
+ ])
package/xy.config.ts CHANGED
@@ -2,8 +2,8 @@ import type { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
2
2
  const config: XyTsupConfig = {
3
3
  compile: {
4
4
  browser: {},
5
- node: {},
6
- neutral: { src: true },
5
+ neutral: { src: { entry: ['src/index.ts', 'src/cli/index.ts'] } },
6
+ node: { src: { entry: ['src/index.ts', 'src/cli/index.ts'] } },
7
7
  },
8
8
  }
9
9
 
@@ -1,7 +0,0 @@
1
- import type { Address } from '@xylabs/hex';
2
- import type { AccountInstance } from '@xyo-network/account-model';
3
- import type { Payload } from '@xyo-network/payload-model';
4
- import type { AllowedBlockPayload, HydratedTransactionWithStorageMeta, TransactionFeesBigInt } from '@xyo-network/xl1-model';
5
- export declare const defaultFees: TransactionFeesBigInt;
6
- export declare function buildTransaction(chain: Address, elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], signer: AccountInstance | AccountInstance[], nbf: number, exp: number, from?: Address, fees?: TransactionFeesBigInt): Promise<HydratedTransactionWithStorageMeta>;
7
- //# sourceMappingURL=buildTransaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/buildTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,kCAAkC,EAA0D,qBAAqB,EAClH,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,WAAW,EAAE,qBAEzB,CAAA;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,MAAM,EAAE,eAAe,GAAG,eAAe,EAAE,EAC3C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,GAAE,qBAAmC,GACxC,OAAO,CAAC,kCAAkC,CAAC,CAmC7C"}
@@ -1,11 +0,0 @@
1
- import type { Hash } from '@xylabs/hex';
2
- import type { ReadArchivist } from '@xyo-network/archivist-model';
3
- import type { Payload } from '@xyo-network/payload-model';
4
- import type { HydratedTransaction, HydratedTransactionWithStorageMeta } from '@xyo-network/xl1-model';
5
- export declare const tryHydrateTransaction: (archivist: ReadArchivist, hash: Hash) => Promise<HydratedTransactionWithStorageMeta | undefined>;
6
- export declare const hydrateTransaction: (archivist: ReadArchivist, hash: Hash) => Promise<HydratedTransactionWithStorageMeta>;
7
- export declare const flattenHydratedTransaction: (hydratedTransaction: HydratedTransaction) => Payload[];
8
- export declare const flattenHydratedTransactions: (hydratedTransactions: HydratedTransaction[]) => Payload[];
9
- export declare const tryHydrateElevatedTransaction: (archivist: ReadArchivist, hash: Hash) => Promise<HydratedTransaction | undefined>;
10
- export declare const hydrateElevatedTransaction: (archivist: ReadArchivist, hash: Hash) => Promise<HydratedTransaction>;
11
- //# sourceMappingURL=hydrateTransaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydrateTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/hydrateTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAEjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAEV,mBAAmB,EAAE,kCAAkC,EACxD,MAAM,wBAAwB,CAAA;AAG/B,eAAO,MAAM,qBAAqB,GAChC,WAAW,aAAa,EACxB,MAAM,IAAI,KACT,OAAO,CAAC,kCAAkC,GAAG,SAAS,CAMxD,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,WAAW,aAAa,EACxB,MAAM,IAAI,KACT,OAAO,CAAC,kCAAkC,CAM5C,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,qBAAqB,mBAAmB,KAAG,OAAO,EAG5F,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAI,sBAAsB,mBAAmB,EAAE,KAAG,OAAO,EAC7B,CAAA;AAEpE,eAAO,MAAM,6BAA6B,GACxC,WAAW,aAAa,EACxB,MAAM,IAAI,KACT,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAqBzC,CAAA;AAED,eAAO,MAAM,0BAA0B,GACrC,WAAW,aAAa,EACxB,MAAM,IAAI,KACT,OAAO,CAAC,mBAAmB,CAE7B,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from './buildTransaction.ts';
2
- export * from './hydrateTransaction.ts';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transaction/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA"}
@@ -1,61 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type { Address } from '@xylabs/hex'
3
- import { toHex } from '@xylabs/hex'
4
- import type { AccountInstance } from '@xyo-network/account-model'
5
- import { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'
6
- import { PayloadBuilder } from '@xyo-network/payload-builder'
7
- import type { Payload } from '@xyo-network/payload-model'
8
- import type {
9
- AllowedBlockPayload,
10
- HydratedTransactionWithStorageMeta, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,
11
- } from '@xyo-network/xl1-model'
12
-
13
- export const defaultFees: TransactionFeesBigInt = {
14
- base: 1000n, gasPrice: 100n, gasLimit: 1_000_000n, priority: 0n,
15
- }
16
-
17
- export async function buildTransaction(
18
- chain: Address,
19
- elevatedPayloads: AllowedBlockPayload[],
20
- additionalPayloads: Payload[],
21
- signer: AccountInstance | AccountInstance[],
22
- nbf: number,
23
- exp: number,
24
- from?: Address,
25
- fees: TransactionFeesBigInt = defaultFees,
26
- ): Promise<HydratedTransactionWithStorageMeta> {
27
- if (from === undefined && Array.isArray(signer)) {
28
- throw new Error('from is required when signer is an array')
29
- }
30
-
31
- const txBoundWitnessFields: TransactionBoundWitnessFields = {
32
- chain,
33
- fees: {
34
- base: toHex(fees.base),
35
- gasLimit: toHex(fees.gasLimit),
36
- gasPrice: toHex(fees.gasPrice),
37
- priority: toHex(fees.priority),
38
- },
39
- nbf,
40
- exp,
41
- }
42
-
43
- const elevatedHashes = await PayloadBuilder.hashes(elevatedPayloads)
44
- const script: string[] = []
45
- for (const elevatedHash of elevatedHashes) {
46
- script.push(`elevate|${elevatedHash}`)
47
- }
48
-
49
- const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()
50
- .fields({
51
- ...txBoundWitnessFields,
52
- script,
53
- from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),
54
- })
55
- .meta({ $signatures: [] })
56
- .payloads([...elevatedPayloads, ...additionalPayloads])
57
- .signers(Array.isArray(signer) ? signer : [signer])
58
- .build()
59
-
60
- return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]
61
- }
@@ -1,73 +0,0 @@
1
- import { assertEx } from '@xylabs/assert'
2
- import type { Hash } from '@xylabs/hex'
3
- import type { ReadArchivist } from '@xyo-network/archivist-model'
4
- import { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'
5
- import type { Payload } from '@xyo-network/payload-model'
6
- import type {
7
- AllowedBlockPayload,
8
- HydratedTransaction, HydratedTransactionWithStorageMeta, TransactionBoundWitness,
9
- } from '@xyo-network/xl1-model'
10
- import { isAllowedBlockPayload, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-model'
11
-
12
- export const tryHydrateTransaction = async (
13
- archivist: ReadArchivist,
14
- hash: Hash,
15
- ): Promise<HydratedTransactionWithStorageMeta | undefined> => {
16
- return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(
17
- archivist,
18
- hash,
19
- isTransactionBoundWitnessWithStorageMeta,
20
- )) as HydratedTransactionWithStorageMeta | undefined
21
- }
22
-
23
- export const hydrateTransaction = async (
24
- archivist: ReadArchivist,
25
- hash: Hash,
26
- ): Promise<HydratedTransactionWithStorageMeta> => {
27
- return await hydrateTypedBoundWitness<TransactionBoundWitness>(
28
- archivist,
29
- hash,
30
- isTransactionBoundWitnessWithStorageMeta,
31
- ) as HydratedTransactionWithStorageMeta
32
- }
33
-
34
- export const flattenHydratedTransaction = (hydratedTransaction: HydratedTransaction): Payload[] => {
35
- const [tx, txPayloads] = hydratedTransaction
36
- return [...txPayloads, tx]
37
- }
38
-
39
- export const flattenHydratedTransactions = (hydratedTransactions: HydratedTransaction[]): Payload[] =>
40
- hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))
41
-
42
- export const tryHydrateElevatedTransaction = async (
43
- archivist: ReadArchivist,
44
- hash: Hash,
45
- ): Promise<HydratedTransaction | undefined> => {
46
- const hydratedTransaction = await tryHydrateTransaction(archivist, hash)
47
- if (!hydratedTransaction) {
48
- return undefined
49
- }
50
- const [transaction, payloads] = hydratedTransaction
51
- const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))
52
- const elevatedPayloads: AllowedBlockPayload[] = []
53
- for (const opCode of opCodes) {
54
- const [code, hash] = opCode.split('|')
55
- if (code === 'elevated') {
56
- const elevatedPayload = payloads.find(payload => payload._hash === hash)
57
- if (isAllowedBlockPayload(elevatedPayload)) {
58
- elevatedPayloads.push(elevatedPayload)
59
- }
60
- }
61
- }
62
- if (opCodes.length === elevatedPayloads.length) {
63
- return [transaction, elevatedPayloads]
64
- }
65
- return undefined
66
- }
67
-
68
- export const hydrateElevatedTransaction = async (
69
- archivist: ReadArchivist,
70
- hash: Hash,
71
- ): Promise<HydratedTransaction> => {
72
- return assertEx(await tryHydrateElevatedTransaction(archivist, hash), () => 'Hydration failed')
73
- }
@@ -1,2 +0,0 @@
1
- export * from './buildTransaction.ts'
2
- export * from './hydrateTransaction.ts'