@xyo-network/xl1-protocol 1.3.8 → 1.3.10

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 +32 -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 +32 -20
  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 +43 -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 @@
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'