@originals/sdk 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/.eslintrc.json +33 -0
  2. package/.turbo/turbo-build.log +1 -0
  3. package/.turbo/turbo-test.log +68353 -0
  4. package/dist/adapters/FeeOracleMock.d.ts +6 -0
  5. package/dist/adapters/FeeOracleMock.js +8 -0
  6. package/dist/adapters/index.d.ts +4 -0
  7. package/dist/adapters/index.js +4 -0
  8. package/dist/adapters/providers/OrdHttpProvider.d.ts +56 -0
  9. package/dist/adapters/providers/OrdHttpProvider.js +110 -0
  10. package/dist/adapters/providers/OrdMockProvider.d.ts +70 -0
  11. package/dist/adapters/providers/OrdMockProvider.js +75 -0
  12. package/dist/adapters/types.d.ts +71 -0
  13. package/dist/adapters/types.js +1 -0
  14. package/dist/bitcoin/BitcoinManager.d.ts +15 -0
  15. package/dist/bitcoin/BitcoinManager.js +262 -0
  16. package/dist/bitcoin/BroadcastClient.d.ts +30 -0
  17. package/dist/bitcoin/BroadcastClient.js +35 -0
  18. package/dist/bitcoin/OrdinalsClient.d.ts +21 -0
  19. package/dist/bitcoin/OrdinalsClient.js +105 -0
  20. package/dist/bitcoin/PSBTBuilder.d.ts +24 -0
  21. package/dist/bitcoin/PSBTBuilder.js +80 -0
  22. package/dist/bitcoin/fee-calculation.d.ts +14 -0
  23. package/dist/bitcoin/fee-calculation.js +31 -0
  24. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +38 -0
  25. package/dist/bitcoin/providers/OrdNodeProvider.js +67 -0
  26. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +33 -0
  27. package/dist/bitcoin/providers/OrdinalsProvider.js +50 -0
  28. package/dist/bitcoin/providers/types.d.ts +63 -0
  29. package/dist/bitcoin/providers/types.js +1 -0
  30. package/dist/bitcoin/transactions/commit.d.ts +89 -0
  31. package/dist/bitcoin/transactions/commit.js +311 -0
  32. package/dist/bitcoin/transactions/index.d.ts +7 -0
  33. package/dist/bitcoin/transactions/index.js +8 -0
  34. package/dist/bitcoin/transfer.d.ts +9 -0
  35. package/dist/bitcoin/transfer.js +26 -0
  36. package/dist/bitcoin/utxo-selection.d.ts +78 -0
  37. package/dist/bitcoin/utxo-selection.js +237 -0
  38. package/dist/bitcoin/utxo.d.ts +26 -0
  39. package/dist/bitcoin/utxo.js +78 -0
  40. package/dist/contexts/credentials-v1.json +195 -0
  41. package/dist/contexts/credentials-v2-examples.json +5 -0
  42. package/dist/contexts/credentials-v2.json +301 -0
  43. package/dist/contexts/credentials.json +195 -0
  44. package/dist/contexts/data-integrity-v2.json +81 -0
  45. package/dist/contexts/dids.json +57 -0
  46. package/dist/contexts/ed255192020.json +93 -0
  47. package/dist/contexts/ordinals-plus.json +23 -0
  48. package/dist/contexts/originals.json +22 -0
  49. package/dist/core/OriginalsSDK.d.ts +158 -0
  50. package/dist/core/OriginalsSDK.js +274 -0
  51. package/dist/crypto/Multikey.d.ts +30 -0
  52. package/dist/crypto/Multikey.js +149 -0
  53. package/dist/crypto/Signer.d.ts +21 -0
  54. package/dist/crypto/Signer.js +196 -0
  55. package/dist/crypto/noble-init.d.ts +18 -0
  56. package/dist/crypto/noble-init.js +106 -0
  57. package/dist/did/BtcoDidResolver.d.ts +57 -0
  58. package/dist/did/BtcoDidResolver.js +166 -0
  59. package/dist/did/DIDManager.d.ts +101 -0
  60. package/dist/did/DIDManager.js +493 -0
  61. package/dist/did/Ed25519Verifier.d.ts +30 -0
  62. package/dist/did/Ed25519Verifier.js +59 -0
  63. package/dist/did/KeyManager.d.ts +17 -0
  64. package/dist/did/KeyManager.js +207 -0
  65. package/dist/did/WebVHManager.d.ts +100 -0
  66. package/dist/did/WebVHManager.js +304 -0
  67. package/dist/did/createBtcoDidDocument.d.ts +10 -0
  68. package/dist/did/createBtcoDidDocument.js +42 -0
  69. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +23 -0
  70. package/dist/did/providers/OrdinalsClientProviderAdapter.js +51 -0
  71. package/dist/events/EventEmitter.d.ts +115 -0
  72. package/dist/events/EventEmitter.js +198 -0
  73. package/dist/events/index.d.ts +7 -0
  74. package/dist/events/index.js +6 -0
  75. package/dist/events/types.d.ts +286 -0
  76. package/dist/events/types.js +9 -0
  77. package/dist/examples/basic-usage.d.ts +3 -0
  78. package/dist/examples/basic-usage.js +62 -0
  79. package/dist/examples/run.d.ts +1 -0
  80. package/dist/examples/run.js +4 -0
  81. package/dist/index.d.ts +39 -0
  82. package/dist/index.js +47 -0
  83. package/dist/lifecycle/BatchOperations.d.ts +147 -0
  84. package/dist/lifecycle/BatchOperations.js +251 -0
  85. package/dist/lifecycle/LifecycleManager.d.ts +116 -0
  86. package/dist/lifecycle/LifecycleManager.js +971 -0
  87. package/dist/lifecycle/OriginalsAsset.d.ts +164 -0
  88. package/dist/lifecycle/OriginalsAsset.js +380 -0
  89. package/dist/lifecycle/ProvenanceQuery.d.ts +126 -0
  90. package/dist/lifecycle/ProvenanceQuery.js +220 -0
  91. package/dist/lifecycle/ResourceVersioning.d.ts +73 -0
  92. package/dist/lifecycle/ResourceVersioning.js +127 -0
  93. package/dist/migration/MigrationManager.d.ts +86 -0
  94. package/dist/migration/MigrationManager.js +412 -0
  95. package/dist/migration/audit/AuditLogger.d.ts +51 -0
  96. package/dist/migration/audit/AuditLogger.js +156 -0
  97. package/dist/migration/checkpoint/CheckpointManager.d.ts +31 -0
  98. package/dist/migration/checkpoint/CheckpointManager.js +96 -0
  99. package/dist/migration/checkpoint/CheckpointStorage.d.ts +26 -0
  100. package/dist/migration/checkpoint/CheckpointStorage.js +89 -0
  101. package/dist/migration/index.d.ts +22 -0
  102. package/dist/migration/index.js +27 -0
  103. package/dist/migration/operations/BaseMigration.d.ts +48 -0
  104. package/dist/migration/operations/BaseMigration.js +83 -0
  105. package/dist/migration/operations/PeerToBtcoMigration.d.ts +25 -0
  106. package/dist/migration/operations/PeerToBtcoMigration.js +67 -0
  107. package/dist/migration/operations/PeerToWebvhMigration.d.ts +19 -0
  108. package/dist/migration/operations/PeerToWebvhMigration.js +46 -0
  109. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +25 -0
  110. package/dist/migration/operations/WebvhToBtcoMigration.js +67 -0
  111. package/dist/migration/rollback/RollbackManager.d.ts +29 -0
  112. package/dist/migration/rollback/RollbackManager.js +146 -0
  113. package/dist/migration/state/StateMachine.d.ts +25 -0
  114. package/dist/migration/state/StateMachine.js +76 -0
  115. package/dist/migration/state/StateTracker.d.ts +36 -0
  116. package/dist/migration/state/StateTracker.js +123 -0
  117. package/dist/migration/types.d.ts +306 -0
  118. package/dist/migration/types.js +33 -0
  119. package/dist/migration/validation/BitcoinValidator.d.ts +13 -0
  120. package/dist/migration/validation/BitcoinValidator.js +83 -0
  121. package/dist/migration/validation/CredentialValidator.d.ts +13 -0
  122. package/dist/migration/validation/CredentialValidator.js +46 -0
  123. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +16 -0
  124. package/dist/migration/validation/DIDCompatibilityValidator.js +127 -0
  125. package/dist/migration/validation/LifecycleValidator.d.ts +10 -0
  126. package/dist/migration/validation/LifecycleValidator.js +52 -0
  127. package/dist/migration/validation/StorageValidator.d.ts +10 -0
  128. package/dist/migration/validation/StorageValidator.js +65 -0
  129. package/dist/migration/validation/ValidationPipeline.d.ts +29 -0
  130. package/dist/migration/validation/ValidationPipeline.js +180 -0
  131. package/dist/storage/LocalStorageAdapter.d.ts +11 -0
  132. package/dist/storage/LocalStorageAdapter.js +53 -0
  133. package/dist/storage/MemoryStorageAdapter.d.ts +6 -0
  134. package/dist/storage/MemoryStorageAdapter.js +21 -0
  135. package/dist/storage/StorageAdapter.d.ts +16 -0
  136. package/dist/storage/StorageAdapter.js +1 -0
  137. package/dist/storage/index.d.ts +2 -0
  138. package/dist/storage/index.js +2 -0
  139. package/dist/types/bitcoin.d.ts +84 -0
  140. package/dist/types/bitcoin.js +1 -0
  141. package/dist/types/common.d.ts +82 -0
  142. package/dist/types/common.js +1 -0
  143. package/dist/types/credentials.d.ts +75 -0
  144. package/dist/types/credentials.js +1 -0
  145. package/dist/types/did.d.ts +26 -0
  146. package/dist/types/did.js +1 -0
  147. package/dist/types/index.d.ts +5 -0
  148. package/dist/types/index.js +5 -0
  149. package/dist/types/network.d.ts +78 -0
  150. package/dist/types/network.js +145 -0
  151. package/dist/utils/EventLogger.d.ts +71 -0
  152. package/dist/utils/EventLogger.js +232 -0
  153. package/dist/utils/Logger.d.ts +106 -0
  154. package/dist/utils/Logger.js +257 -0
  155. package/dist/utils/MetricsCollector.d.ts +110 -0
  156. package/dist/utils/MetricsCollector.js +264 -0
  157. package/dist/utils/bitcoin-address.d.ts +38 -0
  158. package/dist/utils/bitcoin-address.js +113 -0
  159. package/dist/utils/cbor.d.ts +2 -0
  160. package/dist/utils/cbor.js +9 -0
  161. package/dist/utils/encoding.d.ts +37 -0
  162. package/dist/utils/encoding.js +120 -0
  163. package/dist/utils/hash.d.ts +1 -0
  164. package/dist/utils/hash.js +5 -0
  165. package/dist/utils/retry.d.ts +10 -0
  166. package/dist/utils/retry.js +35 -0
  167. package/dist/utils/satoshi-validation.d.ts +60 -0
  168. package/dist/utils/satoshi-validation.js +156 -0
  169. package/dist/utils/serialization.d.ts +14 -0
  170. package/dist/utils/serialization.js +76 -0
  171. package/dist/utils/telemetry.d.ts +17 -0
  172. package/dist/utils/telemetry.js +24 -0
  173. package/dist/utils/validation.d.ts +5 -0
  174. package/dist/utils/validation.js +98 -0
  175. package/dist/vc/CredentialManager.d.ts +22 -0
  176. package/dist/vc/CredentialManager.js +227 -0
  177. package/dist/vc/Issuer.d.ts +27 -0
  178. package/dist/vc/Issuer.js +70 -0
  179. package/dist/vc/Verifier.d.ts +16 -0
  180. package/dist/vc/Verifier.js +50 -0
  181. package/dist/vc/cryptosuites/bbs.d.ts +44 -0
  182. package/dist/vc/cryptosuites/bbs.js +213 -0
  183. package/dist/vc/cryptosuites/bbsSimple.d.ts +9 -0
  184. package/dist/vc/cryptosuites/bbsSimple.js +12 -0
  185. package/dist/vc/cryptosuites/eddsa.d.ts +30 -0
  186. package/dist/vc/cryptosuites/eddsa.js +81 -0
  187. package/dist/vc/documentLoader.d.ts +16 -0
  188. package/dist/vc/documentLoader.js +59 -0
  189. package/dist/vc/proofs/data-integrity.d.ts +21 -0
  190. package/dist/vc/proofs/data-integrity.js +15 -0
  191. package/dist/vc/utils/jsonld.d.ts +2 -0
  192. package/dist/vc/utils/jsonld.js +15 -0
  193. package/package.json +79 -0
  194. package/src/adapters/FeeOracleMock.ts +9 -0
  195. package/src/adapters/index.ts +5 -0
  196. package/src/adapters/providers/OrdHttpProvider.ts +126 -0
  197. package/src/adapters/providers/OrdMockProvider.ts +101 -0
  198. package/src/adapters/types.ts +66 -0
  199. package/src/bitcoin/BitcoinManager.ts +330 -0
  200. package/src/bitcoin/BroadcastClient.ts +54 -0
  201. package/src/bitcoin/OrdinalsClient.ts +119 -0
  202. package/src/bitcoin/PSBTBuilder.ts +106 -0
  203. package/src/bitcoin/fee-calculation.ts +38 -0
  204. package/src/bitcoin/providers/OrdNodeProvider.ts +92 -0
  205. package/src/bitcoin/providers/OrdinalsProvider.ts +56 -0
  206. package/src/bitcoin/providers/types.ts +59 -0
  207. package/src/bitcoin/transactions/commit.ts +465 -0
  208. package/src/bitcoin/transactions/index.ts +13 -0
  209. package/src/bitcoin/transfer.ts +43 -0
  210. package/src/bitcoin/utxo-selection.ts +322 -0
  211. package/src/bitcoin/utxo.ts +113 -0
  212. package/src/contexts/credentials-v1.json +237 -0
  213. package/src/contexts/credentials-v2-examples.json +5 -0
  214. package/src/contexts/credentials-v2.json +340 -0
  215. package/src/contexts/credentials.json +237 -0
  216. package/src/contexts/data-integrity-v2.json +81 -0
  217. package/src/contexts/dids.json +58 -0
  218. package/src/contexts/ed255192020.json +93 -0
  219. package/src/contexts/ordinals-plus.json +23 -0
  220. package/src/contexts/originals.json +22 -0
  221. package/src/core/OriginalsSDK.ts +416 -0
  222. package/src/crypto/Multikey.ts +194 -0
  223. package/src/crypto/Signer.ts +254 -0
  224. package/src/crypto/noble-init.ts +121 -0
  225. package/src/did/BtcoDidResolver.ts +227 -0
  226. package/src/did/DIDManager.ts +694 -0
  227. package/src/did/Ed25519Verifier.ts +68 -0
  228. package/src/did/KeyManager.ts +236 -0
  229. package/src/did/WebVHManager.ts +489 -0
  230. package/src/did/createBtcoDidDocument.ts +59 -0
  231. package/src/did/providers/OrdinalsClientProviderAdapter.ts +68 -0
  232. package/src/events/EventEmitter.ts +222 -0
  233. package/src/events/index.ts +19 -0
  234. package/src/events/types.ts +331 -0
  235. package/src/examples/basic-usage.ts +78 -0
  236. package/src/examples/run.ts +5 -0
  237. package/src/index.ts +84 -0
  238. package/src/lifecycle/BatchOperations.ts +373 -0
  239. package/src/lifecycle/LifecycleManager.ts +1218 -0
  240. package/src/lifecycle/OriginalsAsset.ts +524 -0
  241. package/src/lifecycle/ProvenanceQuery.ts +280 -0
  242. package/src/lifecycle/ResourceVersioning.ts +163 -0
  243. package/src/migration/MigrationManager.ts +527 -0
  244. package/src/migration/audit/AuditLogger.ts +176 -0
  245. package/src/migration/checkpoint/CheckpointManager.ts +112 -0
  246. package/src/migration/checkpoint/CheckpointStorage.ts +101 -0
  247. package/src/migration/index.ts +33 -0
  248. package/src/migration/operations/BaseMigration.ts +126 -0
  249. package/src/migration/operations/PeerToBtcoMigration.ts +105 -0
  250. package/src/migration/operations/PeerToWebvhMigration.ts +62 -0
  251. package/src/migration/operations/WebvhToBtcoMigration.ts +105 -0
  252. package/src/migration/rollback/RollbackManager.ts +170 -0
  253. package/src/migration/state/StateMachine.ts +92 -0
  254. package/src/migration/state/StateTracker.ts +156 -0
  255. package/src/migration/types.ts +344 -0
  256. package/src/migration/validation/BitcoinValidator.ts +107 -0
  257. package/src/migration/validation/CredentialValidator.ts +62 -0
  258. package/src/migration/validation/DIDCompatibilityValidator.ts +151 -0
  259. package/src/migration/validation/LifecycleValidator.ts +64 -0
  260. package/src/migration/validation/StorageValidator.ts +79 -0
  261. package/src/migration/validation/ValidationPipeline.ts +213 -0
  262. package/src/storage/LocalStorageAdapter.ts +61 -0
  263. package/src/storage/MemoryStorageAdapter.ts +29 -0
  264. package/src/storage/StorageAdapter.ts +25 -0
  265. package/src/storage/index.ts +3 -0
  266. package/src/types/bitcoin.ts +98 -0
  267. package/src/types/common.ts +92 -0
  268. package/src/types/credentials.ts +88 -0
  269. package/src/types/did.ts +31 -0
  270. package/src/types/external-shims.d.ts +53 -0
  271. package/src/types/index.ts +7 -0
  272. package/src/types/network.ts +175 -0
  273. package/src/utils/EventLogger.ts +298 -0
  274. package/src/utils/Logger.ts +322 -0
  275. package/src/utils/MetricsCollector.ts +358 -0
  276. package/src/utils/bitcoin-address.ts +130 -0
  277. package/src/utils/cbor.ts +12 -0
  278. package/src/utils/encoding.ts +127 -0
  279. package/src/utils/hash.ts +6 -0
  280. package/src/utils/retry.ts +46 -0
  281. package/src/utils/satoshi-validation.ts +196 -0
  282. package/src/utils/serialization.ts +96 -0
  283. package/src/utils/telemetry.ts +40 -0
  284. package/src/utils/validation.ts +119 -0
  285. package/src/vc/CredentialManager.ts +273 -0
  286. package/src/vc/Issuer.ts +100 -0
  287. package/src/vc/Verifier.ts +47 -0
  288. package/src/vc/cryptosuites/bbs.ts +253 -0
  289. package/src/vc/cryptosuites/bbsSimple.ts +21 -0
  290. package/src/vc/cryptosuites/eddsa.ts +99 -0
  291. package/src/vc/documentLoader.ts +67 -0
  292. package/src/vc/proofs/data-integrity.ts +33 -0
  293. package/src/vc/utils/jsonld.ts +18 -0
  294. package/test/logs/did_webvh_QmQsRNhXxPSCSeLjpbKYcNMZj8b1kBQAoC6cZmkFAgmpHt_example_com.jsonl +1 -0
  295. package/test/logs/did_webvh_QmSQkpD58qxcqMWHYcEmDUn3wk7hHvJwzYTrZmhh6zjPQ8_example_com_users_alice123_profile.jsonl +1 -0
  296. package/test/logs/did_webvh_QmTMda6VW3cUPdKk5Yc3onnv1vdgEumvWWdP2noAYFSjeG_example_com.jsonl +1 -0
  297. package/test/logs/did_webvh_QmTkb8KnCYcsnKKDCY4eUQuKQdKJLrCinvhw13v3zETxpE_example_com_users_etc_passwd.jsonl +1 -0
  298. package/test/logs/did_webvh_QmTn9FdCfpXFDrxHH52pwB4iNrDFVvNDjJ5FQTcDbmM3Fg_example_com.jsonl +1 -0
  299. package/test/logs/did_webvh_QmUCQUi1xjtJjnSQ1XJZgKqcWgErx1v7E2dz4DAPraAyJP_example_com_etc_passwd.jsonl +1 -0
  300. package/test/logs/did_webvh_QmUENQJCDKBJVRS5BkL6zjaUvcRjkb9xHmy7foCgRjmv3W_example_com.jsonl +1 -0
  301. package/test/logs/did_webvh_QmUPdGyjYBEnQ3aQUkmqyyBKTyjvCP5RZQGiaEDeTtf6dc_example_com.jsonl +1 -0
  302. package/test/logs/did_webvh_QmUoHTuHMWzQM29ZFrE9VLtMxkZ5u869yqee8LwcCLN39M_example_com.jsonl +1 -0
  303. package/test/logs/did_webvh_QmUrnms8G65ggVKsr9oQeWrLUBuGChwQPPb2LCFvaoNxaw_example_com_users_alice.jsonl +1 -0
  304. package/test/logs/did_webvh_QmUwiw3eSXdHG1hPvoAGu3cuK5jF4aXRYDLBAjPXfv1qzb_example_com_level1_level2.jsonl +1 -0
  305. package/test/logs/did_webvh_QmW7bzKh6yFEKNAtmVsrPGvvsMHTUQdzJSNsTZkbuGFpbj_example_com_secret.jsonl +1 -0
  306. package/test/logs/did_webvh_QmXbFTFBBJ8zpjdz9WE1DNN44A2wprFmdvAubjSffeyoAG_example_com.jsonl +1 -0
  307. package/test/logs/did_webvh_QmXyVXFPCTffGb2mTUFDeMCsScjnpLWkyUkVkB6q6QoeBf_example_com_C_Windows_System32.jsonl +1 -0
  308. package/test/logs/did_webvh_QmZK9B81gxZtvo5fYHYKDtKt8zZfZZPhmCMhbujBJuRRzE_example_com_etc_passwd.jsonl +1 -0
  309. package/test/logs/did_webvh_QmbNLCVSdXSVLrwFBvCBQPAabjtRb1SGHjkGVyw3QUbfBL_example_com_users_etc_passwd.jsonl +1 -0
  310. package/test/logs/did_webvh_QmbeaicmGW3Q7Yzbqmftc8a9jLBngokveb5A2KVKfVGZRb_example_com_my_org_user_name_test_123.jsonl +1 -0
  311. package/test/logs/did_webvh_Qmdv7c7AjUreUfoKyvkN2UpAWTozxKsv99srQetPJMJEnp_example_com_users_etc_passwd.jsonl +1 -0
  312. package/test/logs/did_webvh_QmeioWY3uypYLkYpCXe9eCYnn4xBVruP9C1d79azMrTEHG_example_com.jsonl +1 -0
  313. package/test/logs/did_webvh_Qmf4QH5dsA6Ecr5HJ6KaJL9uJRyY8RxrQdqoRCM25DzvPi_example_com_users_alice.jsonl +1 -0
  314. package/tests/__mocks__/bbs-signatures.js +17 -0
  315. package/tests/__mocks__/mf-base58.js +24 -0
  316. package/tests/e2e/README.md +97 -0
  317. package/tests/e2e/example.spec.ts +78 -0
  318. package/tests/fixtures/did-documents.ts +247 -0
  319. package/tests/index.test.ts +21 -0
  320. package/tests/integration/BatchOperations.test.ts +531 -0
  321. package/tests/integration/CompleteLifecycle.e2e.test.ts +735 -0
  322. package/tests/integration/CredentialManager.test.ts +42 -0
  323. package/tests/integration/DIDManager.test.ts +41 -0
  324. package/tests/integration/DidPeerToWebVhFlow.test.ts +351 -0
  325. package/tests/integration/Events.test.ts +435 -0
  326. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +25 -0
  327. package/tests/integration/LifecycleManager.test.ts +21 -0
  328. package/tests/integration/MultikeyFlow.test.ts +52 -0
  329. package/tests/integration/TelemetryIntegration.test.ts +395 -0
  330. package/tests/integration/WebVhPublish.test.ts +48 -0
  331. package/tests/integration/migration/peer-to-webvh.test.ts +172 -0
  332. package/tests/manual/test-commit-creation.ts +323 -0
  333. package/tests/mocks/MockKeyStore.ts +38 -0
  334. package/tests/mocks/adapters/MemoryStorageAdapter.ts +24 -0
  335. package/tests/mocks/adapters/MockFeeOracle.ts +11 -0
  336. package/tests/mocks/adapters/MockOrdinalsProvider.ts +76 -0
  337. package/tests/mocks/adapters/OrdMockProvider.test.ts +176 -0
  338. package/tests/mocks/adapters/index.ts +6 -0
  339. package/tests/performance/BatchOperations.perf.test.ts +403 -0
  340. package/tests/performance/logging.perf.test.ts +336 -0
  341. package/tests/sdk.test.ts +43 -0
  342. package/tests/security/bitcoin-penetration-tests.test.ts +622 -0
  343. package/tests/setup.bun.ts +69 -0
  344. package/tests/setup.jest.ts +23 -0
  345. package/tests/stress/batch-operations-stress.test.ts +571 -0
  346. package/tests/unit/adapters/FeeOracleMock.test.ts +40 -0
  347. package/tests/unit/bitcoin/BitcoinManager.test.ts +293 -0
  348. package/tests/unit/bitcoin/BroadcastClient.test.ts +52 -0
  349. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +53 -0
  350. package/tests/unit/bitcoin/OrdinalsClient.test.ts +381 -0
  351. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +102 -0
  352. package/tests/unit/bitcoin/PSBTBuilder.test.ts +84 -0
  353. package/tests/unit/bitcoin/fee-calculation.test.ts +261 -0
  354. package/tests/unit/bitcoin/transactions/commit.test.ts +649 -0
  355. package/tests/unit/bitcoin/transfer.test.ts +31 -0
  356. package/tests/unit/bitcoin/utxo-selection-new.test.ts +502 -0
  357. package/tests/unit/bitcoin/utxo.more.test.ts +39 -0
  358. package/tests/unit/bitcoin/utxo.selection.test.ts +38 -0
  359. package/tests/unit/core/OriginalsSDK.test.ts +152 -0
  360. package/tests/unit/crypto/Multikey.test.ts +206 -0
  361. package/tests/unit/crypto/Signer.test.ts +408 -0
  362. package/tests/unit/did/BtcoDidResolver.test.ts +611 -0
  363. package/tests/unit/did/DIDManager.more.test.ts +43 -0
  364. package/tests/unit/did/DIDManager.test.ts +185 -0
  365. package/tests/unit/did/Ed25519Verifier.test.ts +160 -0
  366. package/tests/unit/did/KeyManager.test.ts +452 -0
  367. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +45 -0
  368. package/tests/unit/did/WebVHManager.test.ts +435 -0
  369. package/tests/unit/did/createBtcoDidDocument.test.ts +67 -0
  370. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +159 -0
  371. package/tests/unit/events/EventEmitter.test.ts +407 -0
  372. package/tests/unit/lifecycle/BatchOperations.test.ts +527 -0
  373. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +312 -0
  374. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +18 -0
  375. package/tests/unit/lifecycle/LifecycleManager.test.ts +213 -0
  376. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +30 -0
  377. package/tests/unit/lifecycle/OriginalsAsset.test.ts +176 -0
  378. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +577 -0
  379. package/tests/unit/lifecycle/ResourceVersioning.test.ts +651 -0
  380. package/tests/unit/storage/MemoryStorageAdapter.test.ts +93 -0
  381. package/tests/unit/types/network.test.ts +255 -0
  382. package/tests/unit/utils/EventIntegration.test.ts +384 -0
  383. package/tests/unit/utils/Logger.test.ts +473 -0
  384. package/tests/unit/utils/MetricsCollector.test.ts +358 -0
  385. package/tests/unit/utils/bitcoin-address.test.ts +250 -0
  386. package/tests/unit/utils/cbor.test.ts +35 -0
  387. package/tests/unit/utils/encoding.test.ts +318 -0
  388. package/tests/unit/utils/hash.test.ts +12 -0
  389. package/tests/unit/utils/retry.test.ts +100 -0
  390. package/tests/unit/utils/satoshi-validation.test.ts +354 -0
  391. package/tests/unit/utils/serialization.test.ts +124 -0
  392. package/tests/unit/utils/telemetry.test.ts +52 -0
  393. package/tests/unit/utils/validation.test.ts +141 -0
  394. package/tests/unit/vc/CredentialManager.test.ts +487 -0
  395. package/tests/unit/vc/Issuer.test.ts +107 -0
  396. package/tests/unit/vc/Verifier.test.ts +525 -0
  397. package/tests/unit/vc/bbs.test.ts +282 -0
  398. package/tests/unit/vc/cryptosuites/eddsa.test.ts +398 -0
  399. package/tests/unit/vc/documentLoader.test.ts +121 -0
  400. package/tests/unit/vc/proofs/data-integrity.test.ts +24 -0
  401. package/tsconfig.json +32 -0
  402. package/tsconfig.test.json +15 -0
  403. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,88 @@
1
+ import { LayerType } from './common';
2
+
3
+ // Verifiable Credentials types
4
+ export interface VerifiableCredential {
5
+ '@context': string[];
6
+ type: string[];
7
+ id?: string;
8
+ issuer: string | Issuer;
9
+ issuanceDate: string;
10
+ expirationDate?: string;
11
+ credentialSubject: CredentialSubject;
12
+ credentialStatus?: CredentialStatus;
13
+ proof?: Proof | Proof[];
14
+ }
15
+
16
+ export interface Issuer {
17
+ id: string;
18
+ name?: string;
19
+ }
20
+
21
+ export interface CredentialSubject {
22
+ id?: string;
23
+ [key: string]: any;
24
+ }
25
+
26
+ export interface CredentialStatus {
27
+ id: string;
28
+ type: string;
29
+ }
30
+
31
+ export interface Proof {
32
+ type: string;
33
+ created: string;
34
+ verificationMethod: string;
35
+ proofPurpose: string;
36
+ proofValue: string;
37
+ }
38
+
39
+ export interface VerifiablePresentation {
40
+ '@context': string[];
41
+ type: string[];
42
+ id?: string;
43
+ holder: string;
44
+ verifiableCredential: VerifiableCredential[];
45
+ proof?: Proof | Proof[];
46
+ }
47
+
48
+ export interface ResourceCreatedCredential extends VerifiableCredential {
49
+ credentialSubject: {
50
+ id: string;
51
+ resourceId: string;
52
+ resourceType: string;
53
+ createdAt: string;
54
+ creator: string;
55
+ };
56
+ }
57
+
58
+ export interface ResourceUpdatedCredential extends VerifiableCredential {
59
+ credentialSubject: {
60
+ id: string;
61
+ resourceId: string;
62
+ updatedAt: string;
63
+ updateReason?: string;
64
+ };
65
+ }
66
+
67
+ export interface ResourceMigratedCredential extends VerifiableCredential {
68
+ credentialSubject: {
69
+ id: string;
70
+ resourceId: string;
71
+ fromLayer: LayerType;
72
+ toLayer: LayerType;
73
+ migratedAt: string;
74
+ migrationReason?: string;
75
+ };
76
+ }
77
+
78
+ export interface KeyRecoveryCredential extends VerifiableCredential {
79
+ credentialSubject: {
80
+ id: string; // DID that was recovered
81
+ recoveredAt: string; // ISO 8601 timestamp
82
+ recoveryReason: string; // "key_compromise" or other reason
83
+ previousVerificationMethods: string[]; // IDs of compromised keys
84
+ newVerificationMethod: string; // ID of new key
85
+ };
86
+ }
87
+
88
+
@@ -0,0 +1,31 @@
1
+ // W3C DID Document types
2
+ export interface DIDDocument {
3
+ '@context': string[];
4
+ id: string;
5
+ verificationMethod?: VerificationMethod[];
6
+ authentication?: (string | VerificationMethod)[];
7
+ assertionMethod?: (string | VerificationMethod)[];
8
+ keyAgreement?: (string | VerificationMethod)[];
9
+ capabilityInvocation?: (string | VerificationMethod)[];
10
+ capabilityDelegation?: (string | VerificationMethod)[];
11
+ service?: ServiceEndpoint[];
12
+ controller?: string[];
13
+ alsoKnownAs?: string[];
14
+ }
15
+
16
+ export interface VerificationMethod {
17
+ id: string;
18
+ type: string;
19
+ controller: string;
20
+ publicKeyMultibase: string;
21
+ revoked?: string; // ISO 8601 timestamp when the key was revoked
22
+ compromised?: string; // ISO 8601 timestamp when the key was marked as compromised
23
+ }
24
+
25
+ export interface ServiceEndpoint {
26
+ id: string;
27
+ type: string;
28
+ serviceEndpoint: string | object;
29
+ }
30
+
31
+
@@ -0,0 +1,53 @@
1
+ declare module 'cbor-js' {
2
+ export function encode(value: unknown): ArrayBuffer | Uint8Array;
3
+ export function decode(buffer: ArrayBufferLike): unknown;
4
+ const _default: {
5
+ encode: typeof encode;
6
+ decode: typeof decode;
7
+ };
8
+ export default _default;
9
+ }
10
+
11
+ declare module 'multiformats/bases/base64' {
12
+ export const base64url: {
13
+ encode: (bytes: Uint8Array) => string;
14
+ decode: (s: string) => Uint8Array;
15
+ };
16
+ }
17
+
18
+ declare module 'jsonld';
19
+ declare module 'b58';
20
+ declare module '@aviarytech/did-peer' {
21
+ export interface ServiceEndpoint {
22
+ id: string;
23
+ type: string;
24
+ serviceEndpoint: string | Record<string, unknown>;
25
+ [key: string]: unknown;
26
+ }
27
+
28
+ export interface IDIDDocument {
29
+ '@context'?: string | string[];
30
+ id: string;
31
+ controller?: string | string[];
32
+ verificationMethod?: IDIDDocumentVerificationMethod[];
33
+ authentication?: Array<string | IDIDDocumentVerificationMethod>;
34
+ assertionMethod?: Array<string | IDIDDocumentVerificationMethod>;
35
+ keyAgreement?: Array<string | IDIDDocumentVerificationMethod>;
36
+ capabilityInvocation?: Array<string | IDIDDocumentVerificationMethod>;
37
+ capabilityDelegation?: Array<string | IDIDDocumentVerificationMethod>;
38
+ service?: ServiceEndpoint[];
39
+ [key: string]: unknown;
40
+ }
41
+
42
+ export type IDIDDocumentVerificationMethod = { id?: string; type: string; controller?: string; publicKeyMultibase?: string };
43
+ export function create(numalgo: number, authenticationKeys: IDIDDocumentVerificationMethod[], encryptionKeys?: IDIDDocumentVerificationMethod[], service?: ServiceEndpoint): Promise<string>;
44
+ export function createNumAlgo0(authenticationKey: IDIDDocumentVerificationMethod): Promise<string>;
45
+ export function createNumAlgo2(authenticationKeys: IDIDDocumentVerificationMethod[], encryptionKeys?: IDIDDocumentVerificationMethod[], service?: ServiceEndpoint[]): Promise<string>;
46
+ export function createNumAlgo4(authenticationKeys: IDIDDocumentVerificationMethod[], encryptionKeys?: IDIDDocumentVerificationMethod[], service?: ServiceEndpoint[]): Promise<string>;
47
+ export function resolve(did: string, repository?: Record<string, unknown>): Promise<IDIDDocument>;
48
+ }
49
+
50
+ // Global shims for non-DOM/node test environments
51
+ declare const global: Record<string, unknown> & typeof globalThis;
52
+ declare function setTimeout(handler: (...args: unknown[]) => void, timeout?: number, ...args: unknown[]): number;
53
+
@@ -0,0 +1,7 @@
1
+ export * from './common';
2
+ export * from './did';
3
+ export * from './credentials';
4
+ export * from './bitcoin';
5
+ export * from './network';
6
+
7
+
@@ -0,0 +1,175 @@
1
+ /**
2
+ * WebVH Network Configuration
3
+ *
4
+ * Defines the three deployment networks for the Originals Protocol:
5
+ * - magby: Development network (patch versions) → Bitcoin regtest
6
+ * - cleffa: Staging network (minor versions) → Bitcoin signet
7
+ * - pichu: Production network (major versions) → Bitcoin mainnet
8
+ */
9
+
10
+ export type WebVHNetworkName = 'magby' | 'cleffa' | 'pichu';
11
+
12
+ export type BitcoinNetworkName = 'mainnet' | 'regtest' | 'signet';
13
+
14
+ export type VersionStability = 'patch' | 'minor' | 'major';
15
+
16
+ export interface WebVHNetworkConfig {
17
+ name: WebVHNetworkName;
18
+ domain: string;
19
+ stability: VersionStability;
20
+ description: string;
21
+ contextUrl: string;
22
+ bitcoinNetwork: BitcoinNetworkName; // Corresponding Bitcoin network for did:btco migrations
23
+ }
24
+
25
+ /**
26
+ * Network configurations for the Originals Protocol WebVH deployments
27
+ */
28
+ export const WEBVH_NETWORKS: Record<WebVHNetworkName, WebVHNetworkConfig> = {
29
+ magby: {
30
+ name: 'magby',
31
+ domain: 'magby.originals.build',
32
+ stability: 'patch',
33
+ description: 'Development network - accepts all patch versions (most unstable)',
34
+ contextUrl: 'https://magby.originals.build/context',
35
+ bitcoinNetwork: 'regtest', // Development → regtest
36
+ },
37
+ cleffa: {
38
+ name: 'cleffa',
39
+ domain: 'cleffa.originals.build',
40
+ stability: 'minor',
41
+ description: 'Staging network - accepts minor releases',
42
+ contextUrl: 'https://cleffa.originals.build/context',
43
+ bitcoinNetwork: 'signet', // Staging → signet
44
+ },
45
+ pichu: {
46
+ name: 'pichu',
47
+ domain: 'pichu.originals.build',
48
+ stability: 'major',
49
+ description: 'Production network - accepts major releases only (most stable)',
50
+ contextUrl: 'https://pichu.originals.build/context',
51
+ bitcoinNetwork: 'mainnet', // Production → mainnet
52
+ },
53
+ };
54
+
55
+ /**
56
+ * Default network for backward compatibility
57
+ */
58
+ export const DEFAULT_WEBVH_NETWORK: WebVHNetworkName = 'pichu';
59
+
60
+ /**
61
+ * Get network configuration by name
62
+ * @param network - Network name
63
+ * @returns Network configuration
64
+ */
65
+ export function getNetworkConfig(network: WebVHNetworkName): WebVHNetworkConfig {
66
+ const config = WEBVH_NETWORKS[network];
67
+ if (!config) {
68
+ throw new Error(`Invalid WebVH network: ${network}. Valid networks: magby, cleffa, pichu`);
69
+ }
70
+ return config;
71
+ }
72
+
73
+ /**
74
+ * Get network domain
75
+ * @param network - Network name
76
+ * @returns Network domain
77
+ */
78
+ export function getNetworkDomain(network: WebVHNetworkName): string {
79
+ return getNetworkConfig(network).domain;
80
+ }
81
+
82
+ /**
83
+ * Get network context URL
84
+ * @param network - Network name
85
+ * @returns Context URL for the network
86
+ */
87
+ export function getNetworkContextUrl(network: WebVHNetworkName): string {
88
+ return getNetworkConfig(network).contextUrl;
89
+ }
90
+
91
+ /**
92
+ * Validate that a version string matches the network's stability requirements
93
+ * @param version - Semver version string (e.g., "1.2.3")
94
+ * @param network - Network name
95
+ * @returns True if the version is allowed on this network
96
+ */
97
+ export function validateVersionForNetwork(version: string, network: WebVHNetworkName): boolean {
98
+ const config = getNetworkConfig(network);
99
+
100
+ // Parse semver (basic parsing, assumes format X.Y.Z)
101
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-.*)?$/);
102
+ if (!match) {
103
+ throw new Error(`Invalid version format: ${version}. Expected semver format (e.g., 1.2.3)`);
104
+ }
105
+
106
+ const [, major, minor, patch] = match;
107
+
108
+ switch (config.stability) {
109
+ case 'major':
110
+ // Pichu: Only allow major releases (X.0.0)
111
+ return minor === '0' && patch === '0';
112
+
113
+ case 'minor':
114
+ // Cleffa: Allow minor releases (X.Y.0)
115
+ return patch === '0';
116
+
117
+ case 'patch':
118
+ // Magby: Allow all versions including patches
119
+ return true;
120
+
121
+ default:
122
+ throw new Error(`Unknown stability level: ${config.stability}`);
123
+ }
124
+ }
125
+
126
+ /**
127
+ * Get the appropriate network for a given version
128
+ * Returns the most restrictive network that accepts this version
129
+ * @param version - Semver version string
130
+ * @returns Recommended network name
131
+ */
132
+ export function getRecommendedNetworkForVersion(version: string): WebVHNetworkName {
133
+ // Try networks from most restrictive to least restrictive
134
+ if (validateVersionForNetwork(version, 'pichu')) {
135
+ return 'pichu';
136
+ }
137
+ if (validateVersionForNetwork(version, 'cleffa')) {
138
+ return 'cleffa';
139
+ }
140
+ return 'magby';
141
+ }
142
+
143
+ /**
144
+ * Get the corresponding Bitcoin network for a WebVH network
145
+ * This ensures consistent environment mapping across the stack:
146
+ * - magby (dev) → regtest (dev)
147
+ * - cleffa (staging) → signet (staging)
148
+ * - pichu (production) → mainnet (production)
149
+ *
150
+ * @param webvhNetwork - WebVH network name
151
+ * @returns Corresponding Bitcoin network name
152
+ */
153
+ export function getBitcoinNetworkForWebVH(webvhNetwork: WebVHNetworkName): BitcoinNetworkName {
154
+ return getNetworkConfig(webvhNetwork).bitcoinNetwork;
155
+ }
156
+
157
+ /**
158
+ * Get the WebVH network that corresponds to a Bitcoin network
159
+ * This is the reverse mapping of getBitcoinNetworkForWebVH
160
+ *
161
+ * @param bitcoinNetwork - Bitcoin network name
162
+ * @returns Corresponding WebVH network name, or undefined if no mapping exists
163
+ */
164
+ export function getWebVHNetworkForBitcoin(bitcoinNetwork: BitcoinNetworkName): WebVHNetworkName | undefined {
165
+ switch (bitcoinNetwork) {
166
+ case 'mainnet':
167
+ return 'pichu';
168
+ case 'signet':
169
+ return 'cleffa';
170
+ case 'regtest':
171
+ return 'magby';
172
+ default:
173
+ return undefined;
174
+ }
175
+ }
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Event Logger - Integration between Event System and Logger
3
+ *
4
+ * Features:
5
+ * - Auto-subscribe to EventEmitter events
6
+ * - Configurable logging levels per event type
7
+ * - Automatic metrics extraction from events
8
+ * - Performance tracking
9
+ */
10
+
11
+ import type { EventEmitter } from '../events/EventEmitter';
12
+ import type { OriginalsEvent, EventTypeMap } from '../events/types';
13
+ import type { Logger, LogLevel } from './Logger';
14
+ import type { MetricsCollector } from './MetricsCollector';
15
+
16
+ /**
17
+ * Event logging configuration
18
+ */
19
+ export interface EventLoggingConfig {
20
+ 'asset:created'?: LogLevel | false;
21
+ 'asset:migrated'?: LogLevel | false;
22
+ 'asset:transferred'?: LogLevel | false;
23
+ 'resource:published'?: LogLevel | false;
24
+ 'credential:issued'?: LogLevel | false;
25
+ 'resource:version:created'?: LogLevel | false;
26
+ 'verification:completed'?: LogLevel | false;
27
+ 'batch:started'?: LogLevel | false;
28
+ 'batch:completed'?: LogLevel | false;
29
+ 'batch:failed'?: LogLevel | false;
30
+ 'migration:started'?: LogLevel | false;
31
+ 'migration:validated'?: LogLevel | false;
32
+ 'migration:checkpointed'?: LogLevel | false;
33
+ 'migration:in_progress'?: LogLevel | false;
34
+ 'migration:anchoring'?: LogLevel | false;
35
+ 'migration:completed'?: LogLevel | false;
36
+ 'migration:failed'?: LogLevel | false;
37
+ 'migration:rolledback'?: LogLevel | false;
38
+ 'migration:quarantine'?: LogLevel | false;
39
+ 'batch:progress'?: LogLevel | false;
40
+ }
41
+
42
+ /**
43
+ * Default event logging configuration
44
+ */
45
+ const DEFAULT_EVENT_CONFIG: EventLoggingConfig = {
46
+ 'asset:created': 'info',
47
+ 'asset:migrated': 'info',
48
+ 'asset:transferred': 'info',
49
+ 'resource:published': 'info',
50
+ 'credential:issued': 'info',
51
+ 'resource:version:created': 'info',
52
+ 'verification:completed': 'info',
53
+ 'batch:started': 'info',
54
+ 'batch:completed': 'info',
55
+ 'batch:failed': 'warn',
56
+ 'migration:started': 'info',
57
+ 'migration:validated': 'info',
58
+ 'migration:checkpointed': 'info',
59
+ 'migration:in_progress': 'info',
60
+ 'migration:anchoring': 'info',
61
+ 'migration:completed': 'info',
62
+ 'migration:failed': 'warn',
63
+ 'migration:rolledback': 'warn',
64
+ 'migration:quarantine': 'error',
65
+ 'batch:progress': 'debug'
66
+ };
67
+
68
+ /**
69
+ * EventLogger class for integrating events with logging and metrics
70
+ */
71
+ export class EventLogger {
72
+ private config: EventLoggingConfig;
73
+ private unsubscribeFns: Array<() => void> = [];
74
+
75
+ constructor(
76
+ private logger: Logger,
77
+ private metricsCollector: MetricsCollector
78
+ ) {
79
+ this.config = { ...DEFAULT_EVENT_CONFIG };
80
+ }
81
+
82
+ /**
83
+ * Subscribe to all events from an EventEmitter
84
+ */
85
+ subscribeToEvents(eventEmitter: EventEmitter): void {
86
+ // Subscribe to each event type
87
+ const eventTypes: Array<keyof EventTypeMap> = [
88
+ 'asset:created',
89
+ 'asset:migrated',
90
+ 'asset:transferred',
91
+ 'resource:published',
92
+ 'credential:issued',
93
+ 'resource:version:created',
94
+ 'verification:completed',
95
+ 'batch:started',
96
+ 'batch:completed',
97
+ 'batch:failed'
98
+ ];
99
+
100
+ for (const eventType of eventTypes) {
101
+ const unsubscribe = eventEmitter.on(eventType, (event) => {
102
+ this.handleEvent(event);
103
+ });
104
+
105
+ this.unsubscribeFns.push(unsubscribe);
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Configure which events to log at which levels
111
+ */
112
+ configureEventLogging(config: EventLoggingConfig): void {
113
+ this.config = { ...this.config, ...config };
114
+ }
115
+
116
+ /**
117
+ * Unsubscribe from all events
118
+ */
119
+ unsubscribe(): void {
120
+ for (const unsubscribe of this.unsubscribeFns) {
121
+ unsubscribe();
122
+ }
123
+ this.unsubscribeFns = [];
124
+ }
125
+
126
+ /**
127
+ * Handle an event - log and extract metrics
128
+ */
129
+ private handleEvent(event: OriginalsEvent): void {
130
+ const eventType = event.type;
131
+ const logLevel = this.config[eventType];
132
+
133
+ // Always extract metrics from the event (even if logging is disabled)
134
+ this.extractMetrics(event);
135
+
136
+ // Skip logging if disabled for this event type
137
+ if (logLevel === false) {
138
+ return;
139
+ }
140
+
141
+ // Log the event
142
+ if (logLevel) {
143
+ this.logEvent(event, logLevel);
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Log an event at the specified level
149
+ */
150
+ private logEvent(event: OriginalsEvent, level: LogLevel): void {
151
+ let message: string;
152
+ let data: Record<string, any>;
153
+
154
+ switch (event.type) {
155
+ case 'asset:created':
156
+ message = 'Asset created';
157
+ data = {
158
+ assetId: event.asset.id,
159
+ layer: event.asset.layer,
160
+ resourceCount: event.asset.resourceCount
161
+ };
162
+ break;
163
+
164
+ case 'asset:migrated':
165
+ message = 'Asset migrated';
166
+ data = {
167
+ assetId: event.asset.id,
168
+ fromLayer: event.asset.fromLayer,
169
+ toLayer: event.asset.toLayer,
170
+ details: event.details
171
+ };
172
+ break;
173
+
174
+ case 'asset:transferred':
175
+ message = 'Asset transferred';
176
+ data = {
177
+ assetId: event.asset.id,
178
+ layer: event.asset.layer,
179
+ from: event.from,
180
+ to: event.to,
181
+ transactionId: event.transactionId
182
+ };
183
+ break;
184
+
185
+ case 'resource:published':
186
+ message = 'Resource published';
187
+ data = {
188
+ assetId: event.asset.id,
189
+ resourceId: event.resource.id,
190
+ url: event.resource.url,
191
+ publisherDid: event.publisherDid
192
+ };
193
+ break;
194
+
195
+ case 'credential:issued':
196
+ message = 'Credential issued';
197
+ data = {
198
+ assetId: event.asset.id,
199
+ credentialType: event.credential.type,
200
+ issuer: event.credential.issuer
201
+ };
202
+ break;
203
+
204
+ case 'resource:version:created':
205
+ message = 'Resource version created';
206
+ data = {
207
+ assetId: event.asset.id,
208
+ resourceId: event.resource.id,
209
+ fromVersion: event.resource.fromVersion,
210
+ toVersion: event.resource.toVersion,
211
+ changes: event.changes
212
+ };
213
+ break;
214
+
215
+ case 'verification:completed':
216
+ message = 'Verification completed';
217
+ data = {
218
+ assetId: event.asset.id,
219
+ result: event.result,
220
+ checks: event.checks
221
+ };
222
+ break;
223
+
224
+ case 'batch:started':
225
+ message = 'Batch operation started';
226
+ data = {
227
+ batchId: event.batchId,
228
+ operation: event.operation,
229
+ itemCount: event.itemCount
230
+ };
231
+ break;
232
+
233
+ case 'batch:completed':
234
+ message = 'Batch operation completed';
235
+ data = {
236
+ batchId: event.batchId,
237
+ operation: event.operation,
238
+ results: event.results
239
+ };
240
+ break;
241
+
242
+ case 'batch:failed':
243
+ message = 'Batch operation failed';
244
+ data = {
245
+ batchId: event.batchId,
246
+ operation: event.operation,
247
+ error: event.error,
248
+ partialResults: event.partialResults
249
+ };
250
+ break;
251
+
252
+ default:
253
+ return; // Unknown event type
254
+ }
255
+
256
+ // Call the appropriate log method based on level
257
+ switch (level) {
258
+ case 'debug':
259
+ this.logger.debug(message, data);
260
+ break;
261
+ case 'info':
262
+ this.logger.info(message, data);
263
+ break;
264
+ case 'warn':
265
+ this.logger.warn(message, data);
266
+ break;
267
+ case 'error':
268
+ this.logger.error(message, undefined, data);
269
+ break;
270
+ }
271
+ }
272
+
273
+ /**
274
+ * Extract metrics from an event
275
+ */
276
+ private extractMetrics(event: OriginalsEvent): void {
277
+ switch (event.type) {
278
+ case 'asset:created':
279
+ this.metricsCollector.recordAssetCreated();
280
+ break;
281
+
282
+ case 'asset:migrated':
283
+ this.metricsCollector.recordMigration(
284
+ event.asset.fromLayer,
285
+ event.asset.toLayer
286
+ );
287
+ break;
288
+
289
+ case 'asset:transferred':
290
+ this.metricsCollector.recordTransfer();
291
+ break;
292
+
293
+ // Other events don't need explicit metric recording
294
+ // as they're tracked elsewhere
295
+ }
296
+ }
297
+ }
298
+