@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,220 @@
1
+ /**
2
+ * Base query class for provenance inspection
3
+ */
4
+ export class ProvenanceQuery {
5
+ constructor(provenance) {
6
+ this.provenance = provenance;
7
+ }
8
+ /**
9
+ * Query migrations
10
+ */
11
+ migrations() {
12
+ return new MigrationQuery(this.provenance, this.afterDate, this.beforeDate);
13
+ }
14
+ /**
15
+ * Query transfers
16
+ */
17
+ transfers() {
18
+ return new TransferQuery(this.provenance, this.afterDate, this.beforeDate);
19
+ }
20
+ /**
21
+ * Filter by date range - after a specific date
22
+ */
23
+ after(date) {
24
+ this.afterDate = typeof date === 'string' ? new Date(date) : date;
25
+ return this;
26
+ }
27
+ /**
28
+ * Filter by date range - before a specific date
29
+ */
30
+ before(date) {
31
+ this.beforeDate = typeof date === 'string' ? new Date(date) : date;
32
+ return this;
33
+ }
34
+ /**
35
+ * Filter by date range - between two dates
36
+ */
37
+ between(start, end) {
38
+ this.afterDate = typeof start === 'string' ? new Date(start) : start;
39
+ this.beforeDate = typeof end === 'string' ? new Date(end) : end;
40
+ return this;
41
+ }
42
+ /**
43
+ * Get count of results
44
+ */
45
+ count() {
46
+ return this.all().length;
47
+ }
48
+ /**
49
+ * Get first result
50
+ */
51
+ first() {
52
+ const results = this.all();
53
+ return results.length > 0 ? results[0] : null;
54
+ }
55
+ /**
56
+ * Get last result
57
+ */
58
+ last() {
59
+ const results = this.all();
60
+ return results.length > 0 ? results[results.length - 1] : null;
61
+ }
62
+ /**
63
+ * Get all results
64
+ */
65
+ all() {
66
+ const merged = [...this.provenance.migrations, ...this.provenance.transfers];
67
+ const filtered = this.applyDateFilters(merged);
68
+ return filtered.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
69
+ }
70
+ /**
71
+ * Apply date filters to items
72
+ */
73
+ applyDateFilters(items) {
74
+ let filtered = items;
75
+ if (this.afterDate) {
76
+ filtered = filtered.filter(item => new Date(item.timestamp) > this.afterDate);
77
+ }
78
+ if (this.beforeDate) {
79
+ filtered = filtered.filter(item => new Date(item.timestamp) < this.beforeDate);
80
+ }
81
+ return filtered;
82
+ }
83
+ }
84
+ /**
85
+ * Query class for migrations
86
+ */
87
+ export class MigrationQuery extends ProvenanceQuery {
88
+ constructor(provenance, afterDate, beforeDate) {
89
+ super(provenance);
90
+ this.afterDate = afterDate;
91
+ this.beforeDate = beforeDate;
92
+ }
93
+ /**
94
+ * Filter by source layer
95
+ */
96
+ fromLayer(layer) {
97
+ this.fromLayerFilter = layer;
98
+ return this;
99
+ }
100
+ /**
101
+ * Filter by destination layer
102
+ */
103
+ toLayer(layer) {
104
+ this.toLayerFilter = layer;
105
+ return this;
106
+ }
107
+ /**
108
+ * Filter by transaction ID
109
+ */
110
+ withTransaction(txId) {
111
+ this.transactionIdFilter = txId;
112
+ return this;
113
+ }
114
+ /**
115
+ * Filter by inscription ID
116
+ */
117
+ withInscription(inscriptionId) {
118
+ this.inscriptionIdFilter = inscriptionId;
119
+ return this;
120
+ }
121
+ /**
122
+ * Get all filtered migrations
123
+ */
124
+ all() {
125
+ let results = [...this.provenance.migrations];
126
+ // Apply date filters
127
+ results = this.applyDateFilters(results);
128
+ // Apply layer filters
129
+ if (this.fromLayerFilter) {
130
+ results = results.filter(m => m.from === this.fromLayerFilter);
131
+ }
132
+ if (this.toLayerFilter) {
133
+ results = results.filter(m => m.to === this.toLayerFilter);
134
+ }
135
+ // Apply transaction ID filter
136
+ if (this.transactionIdFilter) {
137
+ results = results.filter(m => m.transactionId === this.transactionIdFilter);
138
+ }
139
+ // Apply inscription ID filter
140
+ if (this.inscriptionIdFilter) {
141
+ results = results.filter(m => m.inscriptionId === this.inscriptionIdFilter);
142
+ }
143
+ return results;
144
+ }
145
+ /**
146
+ * Override migrations to return this (method chaining)
147
+ */
148
+ migrations() {
149
+ return this;
150
+ }
151
+ /**
152
+ * Override transfers to create new TransferQuery with date filters
153
+ */
154
+ transfers() {
155
+ return new TransferQuery(this.provenance, this.afterDate, this.beforeDate);
156
+ }
157
+ }
158
+ /**
159
+ * Query class for transfers
160
+ */
161
+ export class TransferQuery extends ProvenanceQuery {
162
+ constructor(provenance, afterDate, beforeDate) {
163
+ super(provenance);
164
+ this.afterDate = afterDate;
165
+ this.beforeDate = beforeDate;
166
+ }
167
+ /**
168
+ * Filter by source address
169
+ */
170
+ from(address) {
171
+ this.fromAddressFilter = address;
172
+ return this;
173
+ }
174
+ /**
175
+ * Filter by destination address
176
+ */
177
+ to(address) {
178
+ this.toAddressFilter = address;
179
+ return this;
180
+ }
181
+ /**
182
+ * Filter by transaction ID
183
+ */
184
+ withTransaction(txId) {
185
+ this.transactionIdFilter = txId;
186
+ return this;
187
+ }
188
+ /**
189
+ * Get all filtered transfers
190
+ */
191
+ all() {
192
+ let results = [...this.provenance.transfers];
193
+ // Apply date filters
194
+ results = this.applyDateFilters(results);
195
+ // Apply address filters
196
+ if (this.fromAddressFilter) {
197
+ results = results.filter(t => t.from === this.fromAddressFilter);
198
+ }
199
+ if (this.toAddressFilter) {
200
+ results = results.filter(t => t.to === this.toAddressFilter);
201
+ }
202
+ // Apply transaction ID filter
203
+ if (this.transactionIdFilter) {
204
+ results = results.filter(t => t.transactionId === this.transactionIdFilter);
205
+ }
206
+ return results;
207
+ }
208
+ /**
209
+ * Override transfers to return this (method chaining)
210
+ */
211
+ transfers() {
212
+ return this;
213
+ }
214
+ /**
215
+ * Override migrations to create new MigrationQuery with date filters
216
+ */
217
+ migrations() {
218
+ return new MigrationQuery(this.provenance, this.afterDate, this.beforeDate);
219
+ }
220
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * ResourceVersioning module for immutable resource versioning with verifiable provenance.
3
+ *
4
+ * Resources in the Originals SDK are immutable and content-addressed. "Versioning" means
5
+ * creating a new immutable resource instance with a new hash and linking it to the prior
6
+ * version via previousVersionHash. Old versions remain accessible.
7
+ */
8
+ export interface ResourceVersion {
9
+ version: number;
10
+ hash: string;
11
+ timestamp: string;
12
+ contentType: string;
13
+ changes?: string;
14
+ previousVersionHash?: string;
15
+ }
16
+ export interface ResourceHistory {
17
+ resourceId: string;
18
+ versions: ResourceVersion[];
19
+ currentVersion: ResourceVersion;
20
+ }
21
+ /**
22
+ * ResourceVersionManager manages the versioning of immutable resources.
23
+ * Each version is a separate resource with a unique content hash, linked to
24
+ * its predecessor via previousVersionHash.
25
+ */
26
+ export declare class ResourceVersionManager {
27
+ private versionMap;
28
+ constructor();
29
+ /**
30
+ * Add a new version for a resource
31
+ * @param resourceId - Logical resource ID (stable across versions)
32
+ * @param hash - Content hash of the new version
33
+ * @param contentType - Content type of the resource
34
+ * @param previousVersionHash - Hash of the previous version (optional for v1)
35
+ * @param changes - Optional description of changes
36
+ */
37
+ addVersion(resourceId: string, hash: string, contentType: string, previousVersionHash?: string, changes?: string): void;
38
+ /**
39
+ * Get the complete version history for a resource
40
+ * @param resourceId - Logical resource ID
41
+ * @returns ResourceHistory or null if resource doesn't exist
42
+ */
43
+ getHistory(resourceId: string): ResourceHistory | null;
44
+ /**
45
+ * Get a specific version of a resource
46
+ * @param resourceId - Logical resource ID
47
+ * @param version - Version number (1-indexed)
48
+ * @returns ResourceVersion or null if not found
49
+ */
50
+ getVersion(resourceId: string, version: number): ResourceVersion | null;
51
+ /**
52
+ * Get the current (latest) version of a resource
53
+ * @param resourceId - Logical resource ID
54
+ * @returns ResourceVersion or null if not found
55
+ */
56
+ getCurrentVersion(resourceId: string): ResourceVersion | null;
57
+ /**
58
+ * Verify the integrity of the version chain for a resource.
59
+ * Ensures that:
60
+ * - Version numbers are sequential starting at 1
61
+ * - Each version (except v1) has a previousVersionHash
62
+ * - Each previousVersionHash matches the actual previous version's hash
63
+ *
64
+ * @param resourceId - Logical resource ID
65
+ * @returns true if the chain is valid, false otherwise
66
+ */
67
+ verifyChain(resourceId: string): boolean;
68
+ /**
69
+ * Serialize the version manager state to JSON
70
+ * @returns Object representation of all version data
71
+ */
72
+ toJSON(): object;
73
+ }
@@ -0,0 +1,127 @@
1
+ /**
2
+ * ResourceVersioning module for immutable resource versioning with verifiable provenance.
3
+ *
4
+ * Resources in the Originals SDK are immutable and content-addressed. "Versioning" means
5
+ * creating a new immutable resource instance with a new hash and linking it to the prior
6
+ * version via previousVersionHash. Old versions remain accessible.
7
+ */
8
+ /**
9
+ * ResourceVersionManager manages the versioning of immutable resources.
10
+ * Each version is a separate resource with a unique content hash, linked to
11
+ * its predecessor via previousVersionHash.
12
+ */
13
+ export class ResourceVersionManager {
14
+ constructor() {
15
+ this.versionMap = new Map();
16
+ }
17
+ /**
18
+ * Add a new version for a resource
19
+ * @param resourceId - Logical resource ID (stable across versions)
20
+ * @param hash - Content hash of the new version
21
+ * @param contentType - Content type of the resource
22
+ * @param previousVersionHash - Hash of the previous version (optional for v1)
23
+ * @param changes - Optional description of changes
24
+ */
25
+ addVersion(resourceId, hash, contentType, previousVersionHash, changes) {
26
+ const versions = this.versionMap.get(resourceId) || [];
27
+ const version = {
28
+ version: versions.length + 1,
29
+ hash,
30
+ timestamp: new Date().toISOString(),
31
+ contentType,
32
+ changes,
33
+ previousVersionHash
34
+ };
35
+ versions.push(version);
36
+ this.versionMap.set(resourceId, versions);
37
+ }
38
+ /**
39
+ * Get the complete version history for a resource
40
+ * @param resourceId - Logical resource ID
41
+ * @returns ResourceHistory or null if resource doesn't exist
42
+ */
43
+ getHistory(resourceId) {
44
+ const versions = this.versionMap.get(resourceId);
45
+ if (!versions || versions.length === 0) {
46
+ return null;
47
+ }
48
+ return {
49
+ resourceId,
50
+ versions: [...versions],
51
+ currentVersion: versions[versions.length - 1]
52
+ };
53
+ }
54
+ /**
55
+ * Get a specific version of a resource
56
+ * @param resourceId - Logical resource ID
57
+ * @param version - Version number (1-indexed)
58
+ * @returns ResourceVersion or null if not found
59
+ */
60
+ getVersion(resourceId, version) {
61
+ const versions = this.versionMap.get(resourceId);
62
+ if (!versions || version < 1 || version > versions.length) {
63
+ return null;
64
+ }
65
+ return versions[version - 1];
66
+ }
67
+ /**
68
+ * Get the current (latest) version of a resource
69
+ * @param resourceId - Logical resource ID
70
+ * @returns ResourceVersion or null if not found
71
+ */
72
+ getCurrentVersion(resourceId) {
73
+ const versions = this.versionMap.get(resourceId);
74
+ if (!versions || versions.length === 0) {
75
+ return null;
76
+ }
77
+ return versions[versions.length - 1];
78
+ }
79
+ /**
80
+ * Verify the integrity of the version chain for a resource.
81
+ * Ensures that:
82
+ * - Version numbers are sequential starting at 1
83
+ * - Each version (except v1) has a previousVersionHash
84
+ * - Each previousVersionHash matches the actual previous version's hash
85
+ *
86
+ * @param resourceId - Logical resource ID
87
+ * @returns true if the chain is valid, false otherwise
88
+ */
89
+ verifyChain(resourceId) {
90
+ const versions = this.versionMap.get(resourceId);
91
+ if (!versions || versions.length === 0) {
92
+ return false;
93
+ }
94
+ for (let i = 0; i < versions.length; i++) {
95
+ const version = versions[i];
96
+ // Check version number is sequential
97
+ if (version.version !== i + 1) {
98
+ return false;
99
+ }
100
+ // First version should not have previousVersionHash
101
+ if (i === 0) {
102
+ if (version.previousVersionHash !== undefined) {
103
+ return false;
104
+ }
105
+ }
106
+ else {
107
+ // Subsequent versions must have previousVersionHash matching the prior version
108
+ const prevVersion = versions[i - 1];
109
+ if (version.previousVersionHash !== prevVersion.hash) {
110
+ return false;
111
+ }
112
+ }
113
+ }
114
+ return true;
115
+ }
116
+ /**
117
+ * Serialize the version manager state to JSON
118
+ * @returns Object representation of all version data
119
+ */
120
+ toJSON() {
121
+ const result = {};
122
+ for (const [resourceId, versions] of this.versionMap.entries()) {
123
+ result[resourceId] = versions;
124
+ }
125
+ return result;
126
+ }
127
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * MigrationManager - Main orchestrator for DID layer migrations
3
+ * Coordinates validation, checkpoints, rollbacks, state tracking, and audit logging
4
+ */
5
+ import { MigrationOptions, MigrationResult, BatchMigrationOptions, BatchMigrationResult, CostEstimate } from './types';
6
+ import { OriginalsConfig } from '../types';
7
+ import { DIDManager } from '../did/DIDManager';
8
+ import { CredentialManager } from '../vc/CredentialManager';
9
+ import { BitcoinManager } from '../bitcoin/BitcoinManager';
10
+ export declare class MigrationManager {
11
+ private config;
12
+ private didManager;
13
+ private credentialManager;
14
+ private bitcoinManager?;
15
+ private static instance;
16
+ private validationPipeline;
17
+ private checkpointManager;
18
+ private rollbackManager;
19
+ private stateTracker;
20
+ private eventEmitter;
21
+ private inMemoryAuditRecords;
22
+ private peerToWebvh;
23
+ private webvhToBtco;
24
+ private peerToBtco;
25
+ private constructor();
26
+ /**
27
+ * Get singleton instance
28
+ */
29
+ static getInstance(config?: OriginalsConfig, didManager?: DIDManager, credentialManager?: CredentialManager, bitcoinManager?: BitcoinManager): MigrationManager;
30
+ /**
31
+ * Reset singleton instance (primarily for testing)
32
+ */
33
+ static resetInstance(): void;
34
+ /**
35
+ * Main migration method
36
+ */
37
+ migrate(options: MigrationOptions): Promise<MigrationResult>;
38
+ /**
39
+ * Estimate migration cost without executing
40
+ */
41
+ estimateMigrationCost(sourceDid: string, targetLayer: string, feeRate?: number): Promise<CostEstimate>;
42
+ /**
43
+ * Get migration status
44
+ */
45
+ getMigrationStatus(migrationId: string): Promise<any>;
46
+ /**
47
+ * Rollback a migration
48
+ */
49
+ rollback(migrationId: string): Promise<any>;
50
+ /**
51
+ * Get migration history for a DID
52
+ * TODO: AuditLogger temporarily disabled for v1.0 release
53
+ * Returns in-memory audit records (unsigned) - will use proper AuditLogger in v1.1
54
+ */
55
+ getMigrationHistory(did: string): Promise<any[]>;
56
+ /**
57
+ * Batch migration
58
+ */
59
+ migrateBatch(dids: string[], targetLayer: string, options?: BatchMigrationOptions): Promise<BatchMigrationResult>;
60
+ /**
61
+ * Handle migration failure with automatic rollback
62
+ */
63
+ private handleMigrationFailure;
64
+ /**
65
+ * Get appropriate migration operation handler
66
+ */
67
+ private getMigrationOperation;
68
+ /**
69
+ * Store audit record in memory for v1.0
70
+ * Stores by both source and target DID for easy lookup
71
+ * TODO: Remove in v1.1 when AuditLogger is re-enabled with signatures
72
+ */
73
+ private storeAuditRecordInMemory;
74
+ /**
75
+ * Extract layer from DID
76
+ */
77
+ private extractLayer;
78
+ /**
79
+ * Create migration error
80
+ */
81
+ private createMigrationError;
82
+ /**
83
+ * Emit event
84
+ */
85
+ private emitEvent;
86
+ }