@originals/sdk 1.4.2 → 1.4.5

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 (424) hide show
  1. package/dist/adapters/FeeOracleMock.d.ts +6 -0
  2. package/dist/adapters/FeeOracleMock.js +8 -0
  3. package/{src/adapters/index.ts → dist/adapters/index.d.ts} +0 -1
  4. package/dist/adapters/index.js +4 -0
  5. package/dist/adapters/providers/OrdHttpProvider.d.ts +56 -0
  6. package/dist/adapters/providers/OrdHttpProvider.js +110 -0
  7. package/dist/adapters/providers/OrdMockProvider.d.ts +70 -0
  8. package/dist/adapters/providers/OrdMockProvider.js +75 -0
  9. package/dist/adapters/types.d.ts +71 -0
  10. package/dist/adapters/types.js +1 -0
  11. package/dist/bitcoin/BitcoinManager.d.ts +15 -0
  12. package/dist/bitcoin/BitcoinManager.js +262 -0
  13. package/dist/bitcoin/BroadcastClient.d.ts +30 -0
  14. package/dist/bitcoin/BroadcastClient.js +35 -0
  15. package/dist/bitcoin/OrdinalsClient.d.ts +21 -0
  16. package/dist/bitcoin/OrdinalsClient.js +105 -0
  17. package/dist/bitcoin/PSBTBuilder.d.ts +24 -0
  18. package/dist/bitcoin/PSBTBuilder.js +80 -0
  19. package/dist/bitcoin/fee-calculation.d.ts +14 -0
  20. package/{src/bitcoin/fee-calculation.ts → dist/bitcoin/fee-calculation.js} +5 -12
  21. package/dist/bitcoin/providers/OrdNodeProvider.d.ts +38 -0
  22. package/dist/bitcoin/providers/OrdNodeProvider.js +67 -0
  23. package/dist/bitcoin/providers/OrdinalsProvider.d.ts +33 -0
  24. package/dist/bitcoin/providers/OrdinalsProvider.js +50 -0
  25. package/dist/bitcoin/providers/types.d.ts +63 -0
  26. package/dist/bitcoin/providers/types.js +1 -0
  27. package/dist/bitcoin/transactions/commit.d.ts +89 -0
  28. package/dist/bitcoin/transactions/commit.js +311 -0
  29. package/dist/bitcoin/transactions/index.d.ts +7 -0
  30. package/{src/bitcoin/transactions/index.ts → dist/bitcoin/transactions/index.js} +1 -6
  31. package/dist/bitcoin/transfer.d.ts +9 -0
  32. package/dist/bitcoin/transfer.js +26 -0
  33. package/dist/bitcoin/utxo-selection.d.ts +78 -0
  34. package/dist/bitcoin/utxo-selection.js +237 -0
  35. package/dist/bitcoin/utxo.d.ts +26 -0
  36. package/dist/bitcoin/utxo.js +78 -0
  37. package/dist/contexts/credentials-v1.json +195 -0
  38. package/dist/contexts/credentials-v2-examples.json +5 -0
  39. package/dist/contexts/credentials-v2.json +301 -0
  40. package/dist/contexts/credentials.json +195 -0
  41. package/dist/contexts/data-integrity-v2.json +81 -0
  42. package/dist/contexts/dids.json +57 -0
  43. package/dist/contexts/ed255192020.json +93 -0
  44. package/dist/contexts/ordinals-plus.json +23 -0
  45. package/dist/contexts/originals.json +22 -0
  46. package/dist/core/OriginalsSDK.d.ts +158 -0
  47. package/dist/core/OriginalsSDK.js +274 -0
  48. package/dist/crypto/Multikey.d.ts +30 -0
  49. package/dist/crypto/Multikey.js +149 -0
  50. package/dist/crypto/Signer.d.ts +21 -0
  51. package/dist/crypto/Signer.js +196 -0
  52. package/dist/crypto/noble-init.d.ts +18 -0
  53. package/dist/crypto/noble-init.js +106 -0
  54. package/dist/did/BtcoDidResolver.d.ts +57 -0
  55. package/dist/did/BtcoDidResolver.js +166 -0
  56. package/dist/did/DIDManager.d.ts +101 -0
  57. package/dist/did/DIDManager.js +493 -0
  58. package/dist/did/Ed25519Verifier.d.ts +30 -0
  59. package/dist/did/Ed25519Verifier.js +59 -0
  60. package/dist/did/KeyManager.d.ts +17 -0
  61. package/dist/did/KeyManager.js +207 -0
  62. package/dist/did/WebVHManager.d.ts +100 -0
  63. package/dist/did/WebVHManager.js +312 -0
  64. package/dist/did/createBtcoDidDocument.d.ts +10 -0
  65. package/dist/did/createBtcoDidDocument.js +42 -0
  66. package/dist/did/providers/OrdinalsClientProviderAdapter.d.ts +23 -0
  67. package/dist/did/providers/OrdinalsClientProviderAdapter.js +51 -0
  68. package/dist/events/EventEmitter.d.ts +115 -0
  69. package/dist/events/EventEmitter.js +198 -0
  70. package/dist/events/index.d.ts +7 -0
  71. package/dist/events/index.js +6 -0
  72. package/dist/events/types.d.ts +286 -0
  73. package/dist/events/types.js +9 -0
  74. package/dist/examples/basic-usage.d.ts +3 -0
  75. package/dist/examples/basic-usage.js +62 -0
  76. package/dist/examples/create-module-original.d.ts +32 -0
  77. package/dist/examples/create-module-original.js +376 -0
  78. package/dist/examples/full-lifecycle-flow.d.ts +56 -0
  79. package/dist/examples/full-lifecycle-flow.js +419 -0
  80. package/dist/examples/run.d.ts +12 -0
  81. package/dist/examples/run.js +51 -0
  82. package/dist/index.d.ts +43 -0
  83. package/dist/index.js +52 -0
  84. package/dist/kinds/KindRegistry.d.ts +76 -0
  85. package/dist/kinds/KindRegistry.js +216 -0
  86. package/dist/kinds/index.d.ts +33 -0
  87. package/{src/kinds/index.ts → dist/kinds/index.js} +6 -44
  88. package/dist/kinds/types.d.ts +363 -0
  89. package/dist/kinds/types.js +25 -0
  90. package/dist/kinds/validators/AgentValidator.d.ts +14 -0
  91. package/dist/kinds/validators/AgentValidator.js +155 -0
  92. package/dist/kinds/validators/AppValidator.d.ts +14 -0
  93. package/dist/kinds/validators/AppValidator.js +135 -0
  94. package/dist/kinds/validators/DatasetValidator.d.ts +14 -0
  95. package/dist/kinds/validators/DatasetValidator.js +148 -0
  96. package/dist/kinds/validators/DocumentValidator.d.ts +14 -0
  97. package/dist/kinds/validators/DocumentValidator.js +180 -0
  98. package/dist/kinds/validators/MediaValidator.d.ts +14 -0
  99. package/dist/kinds/validators/MediaValidator.js +172 -0
  100. package/dist/kinds/validators/ModuleValidator.d.ts +14 -0
  101. package/dist/kinds/validators/ModuleValidator.js +140 -0
  102. package/dist/kinds/validators/base.d.ts +96 -0
  103. package/dist/kinds/validators/base.js +218 -0
  104. package/{src/kinds/validators/index.ts → dist/kinds/validators/index.d.ts} +0 -2
  105. package/dist/kinds/validators/index.js +10 -0
  106. package/dist/lifecycle/BatchOperations.d.ts +147 -0
  107. package/dist/lifecycle/BatchOperations.js +251 -0
  108. package/dist/lifecycle/LifecycleManager.d.ts +362 -0
  109. package/dist/lifecycle/LifecycleManager.js +1692 -0
  110. package/dist/lifecycle/OriginalsAsset.d.ts +164 -0
  111. package/dist/lifecycle/OriginalsAsset.js +380 -0
  112. package/dist/lifecycle/ProvenanceQuery.d.ts +126 -0
  113. package/dist/lifecycle/ProvenanceQuery.js +220 -0
  114. package/dist/lifecycle/ResourceVersioning.d.ts +73 -0
  115. package/dist/lifecycle/ResourceVersioning.js +127 -0
  116. package/dist/migration/MigrationManager.d.ts +86 -0
  117. package/dist/migration/MigrationManager.js +412 -0
  118. package/dist/migration/audit/AuditLogger.d.ts +51 -0
  119. package/dist/migration/audit/AuditLogger.js +156 -0
  120. package/dist/migration/checkpoint/CheckpointManager.d.ts +31 -0
  121. package/dist/migration/checkpoint/CheckpointManager.js +96 -0
  122. package/dist/migration/checkpoint/CheckpointStorage.d.ts +26 -0
  123. package/dist/migration/checkpoint/CheckpointStorage.js +89 -0
  124. package/dist/migration/index.d.ts +22 -0
  125. package/{src/migration/index.ts → dist/migration/index.js} +0 -6
  126. package/dist/migration/operations/BaseMigration.d.ts +48 -0
  127. package/dist/migration/operations/BaseMigration.js +83 -0
  128. package/dist/migration/operations/PeerToBtcoMigration.d.ts +25 -0
  129. package/dist/migration/operations/PeerToBtcoMigration.js +67 -0
  130. package/dist/migration/operations/PeerToWebvhMigration.d.ts +19 -0
  131. package/dist/migration/operations/PeerToWebvhMigration.js +46 -0
  132. package/dist/migration/operations/WebvhToBtcoMigration.d.ts +25 -0
  133. package/dist/migration/operations/WebvhToBtcoMigration.js +67 -0
  134. package/dist/migration/rollback/RollbackManager.d.ts +29 -0
  135. package/dist/migration/rollback/RollbackManager.js +146 -0
  136. package/dist/migration/state/StateMachine.d.ts +25 -0
  137. package/dist/migration/state/StateMachine.js +76 -0
  138. package/dist/migration/state/StateTracker.d.ts +36 -0
  139. package/dist/migration/state/StateTracker.js +123 -0
  140. package/dist/migration/types.d.ts +306 -0
  141. package/dist/migration/types.js +33 -0
  142. package/dist/migration/validation/BitcoinValidator.d.ts +13 -0
  143. package/dist/migration/validation/BitcoinValidator.js +83 -0
  144. package/dist/migration/validation/CredentialValidator.d.ts +13 -0
  145. package/dist/migration/validation/CredentialValidator.js +46 -0
  146. package/dist/migration/validation/DIDCompatibilityValidator.d.ts +16 -0
  147. package/dist/migration/validation/DIDCompatibilityValidator.js +127 -0
  148. package/dist/migration/validation/LifecycleValidator.d.ts +10 -0
  149. package/dist/migration/validation/LifecycleValidator.js +52 -0
  150. package/dist/migration/validation/StorageValidator.d.ts +10 -0
  151. package/dist/migration/validation/StorageValidator.js +65 -0
  152. package/dist/migration/validation/ValidationPipeline.d.ts +29 -0
  153. package/dist/migration/validation/ValidationPipeline.js +180 -0
  154. package/dist/resources/ResourceManager.d.ts +231 -0
  155. package/dist/resources/ResourceManager.js +573 -0
  156. package/{src/resources/index.ts → dist/resources/index.d.ts} +3 -13
  157. package/dist/resources/index.js +10 -0
  158. package/dist/resources/types.d.ts +93 -0
  159. package/dist/resources/types.js +80 -0
  160. package/dist/storage/LocalStorageAdapter.d.ts +11 -0
  161. package/dist/storage/LocalStorageAdapter.js +53 -0
  162. package/dist/storage/MemoryStorageAdapter.d.ts +6 -0
  163. package/dist/storage/MemoryStorageAdapter.js +21 -0
  164. package/dist/storage/StorageAdapter.d.ts +16 -0
  165. package/dist/storage/StorageAdapter.js +1 -0
  166. package/{src/storage/index.ts → dist/storage/index.d.ts} +0 -1
  167. package/dist/storage/index.js +2 -0
  168. package/dist/types/bitcoin.d.ts +84 -0
  169. package/dist/types/bitcoin.js +1 -0
  170. package/dist/types/common.d.ts +82 -0
  171. package/dist/types/common.js +1 -0
  172. package/dist/types/credentials.d.ts +75 -0
  173. package/dist/types/credentials.js +1 -0
  174. package/dist/types/did.d.ts +26 -0
  175. package/dist/types/did.js +1 -0
  176. package/{src/types/index.ts → dist/types/index.d.ts} +0 -2
  177. package/dist/types/index.js +5 -0
  178. package/dist/types/network.d.ts +78 -0
  179. package/dist/types/network.js +145 -0
  180. package/dist/utils/EventLogger.d.ts +71 -0
  181. package/dist/utils/EventLogger.js +232 -0
  182. package/dist/utils/Logger.d.ts +106 -0
  183. package/dist/utils/Logger.js +257 -0
  184. package/dist/utils/MetricsCollector.d.ts +110 -0
  185. package/dist/utils/MetricsCollector.js +264 -0
  186. package/dist/utils/bitcoin-address.d.ts +38 -0
  187. package/dist/utils/bitcoin-address.js +113 -0
  188. package/dist/utils/cbor.d.ts +2 -0
  189. package/dist/utils/cbor.js +9 -0
  190. package/dist/utils/encoding.d.ts +37 -0
  191. package/dist/utils/encoding.js +120 -0
  192. package/dist/utils/hash.d.ts +1 -0
  193. package/dist/utils/hash.js +5 -0
  194. package/dist/utils/retry.d.ts +10 -0
  195. package/dist/utils/retry.js +35 -0
  196. package/dist/utils/satoshi-validation.d.ts +60 -0
  197. package/dist/utils/satoshi-validation.js +156 -0
  198. package/dist/utils/serialization.d.ts +14 -0
  199. package/dist/utils/serialization.js +76 -0
  200. package/dist/utils/telemetry.d.ts +17 -0
  201. package/dist/utils/telemetry.js +24 -0
  202. package/dist/utils/validation.d.ts +5 -0
  203. package/dist/utils/validation.js +98 -0
  204. package/dist/vc/CredentialManager.d.ts +329 -0
  205. package/dist/vc/CredentialManager.js +615 -0
  206. package/dist/vc/Issuer.d.ts +27 -0
  207. package/dist/vc/Issuer.js +70 -0
  208. package/dist/vc/Verifier.d.ts +16 -0
  209. package/dist/vc/Verifier.js +50 -0
  210. package/dist/vc/cryptosuites/bbs.d.ts +44 -0
  211. package/dist/vc/cryptosuites/bbs.js +213 -0
  212. package/dist/vc/cryptosuites/bbsSimple.d.ts +9 -0
  213. package/dist/vc/cryptosuites/bbsSimple.js +12 -0
  214. package/dist/vc/cryptosuites/eddsa.d.ts +30 -0
  215. package/dist/vc/cryptosuites/eddsa.js +81 -0
  216. package/dist/vc/documentLoader.d.ts +16 -0
  217. package/dist/vc/documentLoader.js +59 -0
  218. package/dist/vc/proofs/data-integrity.d.ts +21 -0
  219. package/dist/vc/proofs/data-integrity.js +15 -0
  220. package/dist/vc/utils/jsonld.d.ts +2 -0
  221. package/dist/vc/utils/jsonld.js +15 -0
  222. package/package.json +5 -1
  223. package/.eslintrc.json +0 -33
  224. package/src/adapters/FeeOracleMock.ts +0 -9
  225. package/src/adapters/providers/OrdHttpProvider.ts +0 -126
  226. package/src/adapters/providers/OrdMockProvider.ts +0 -101
  227. package/src/adapters/types.ts +0 -66
  228. package/src/bitcoin/BitcoinManager.ts +0 -330
  229. package/src/bitcoin/BroadcastClient.ts +0 -54
  230. package/src/bitcoin/OrdinalsClient.ts +0 -119
  231. package/src/bitcoin/PSBTBuilder.ts +0 -106
  232. package/src/bitcoin/providers/OrdNodeProvider.ts +0 -92
  233. package/src/bitcoin/providers/OrdinalsProvider.ts +0 -56
  234. package/src/bitcoin/providers/types.ts +0 -59
  235. package/src/bitcoin/transactions/commit.ts +0 -465
  236. package/src/bitcoin/transfer.ts +0 -43
  237. package/src/bitcoin/utxo-selection.ts +0 -322
  238. package/src/bitcoin/utxo.ts +0 -113
  239. package/src/contexts/credentials-v1.json +0 -237
  240. package/src/contexts/credentials-v2-examples.json +0 -5
  241. package/src/contexts/credentials-v2.json +0 -340
  242. package/src/contexts/credentials.json +0 -237
  243. package/src/contexts/data-integrity-v2.json +0 -81
  244. package/src/contexts/dids.json +0 -58
  245. package/src/contexts/ed255192020.json +0 -93
  246. package/src/contexts/ordinals-plus.json +0 -23
  247. package/src/contexts/originals.json +0 -22
  248. package/src/core/OriginalsSDK.ts +0 -416
  249. package/src/crypto/Multikey.ts +0 -194
  250. package/src/crypto/Signer.ts +0 -254
  251. package/src/crypto/noble-init.ts +0 -121
  252. package/src/did/BtcoDidResolver.ts +0 -227
  253. package/src/did/DIDManager.ts +0 -694
  254. package/src/did/Ed25519Verifier.ts +0 -68
  255. package/src/did/KeyManager.ts +0 -236
  256. package/src/did/WebVHManager.ts +0 -498
  257. package/src/did/createBtcoDidDocument.ts +0 -59
  258. package/src/did/providers/OrdinalsClientProviderAdapter.ts +0 -68
  259. package/src/events/EventEmitter.ts +0 -222
  260. package/src/events/index.ts +0 -19
  261. package/src/events/types.ts +0 -331
  262. package/src/examples/basic-usage.ts +0 -78
  263. package/src/examples/create-module-original.ts +0 -435
  264. package/src/examples/full-lifecycle-flow.ts +0 -514
  265. package/src/examples/run.ts +0 -60
  266. package/src/index.ts +0 -150
  267. package/src/kinds/KindRegistry.ts +0 -290
  268. package/src/kinds/types.ts +0 -470
  269. package/src/kinds/validators/AgentValidator.ts +0 -257
  270. package/src/kinds/validators/AppValidator.ts +0 -211
  271. package/src/kinds/validators/DatasetValidator.ts +0 -242
  272. package/src/kinds/validators/DocumentValidator.ts +0 -311
  273. package/src/kinds/validators/MediaValidator.ts +0 -269
  274. package/src/kinds/validators/ModuleValidator.ts +0 -225
  275. package/src/kinds/validators/base.ts +0 -276
  276. package/src/lifecycle/BatchOperations.ts +0 -373
  277. package/src/lifecycle/LifecycleManager.ts +0 -2126
  278. package/src/lifecycle/OriginalsAsset.ts +0 -524
  279. package/src/lifecycle/ProvenanceQuery.ts +0 -280
  280. package/src/lifecycle/ResourceVersioning.ts +0 -163
  281. package/src/migration/MigrationManager.ts +0 -527
  282. package/src/migration/audit/AuditLogger.ts +0 -176
  283. package/src/migration/checkpoint/CheckpointManager.ts +0 -112
  284. package/src/migration/checkpoint/CheckpointStorage.ts +0 -101
  285. package/src/migration/operations/BaseMigration.ts +0 -126
  286. package/src/migration/operations/PeerToBtcoMigration.ts +0 -105
  287. package/src/migration/operations/PeerToWebvhMigration.ts +0 -62
  288. package/src/migration/operations/WebvhToBtcoMigration.ts +0 -105
  289. package/src/migration/rollback/RollbackManager.ts +0 -170
  290. package/src/migration/state/StateMachine.ts +0 -92
  291. package/src/migration/state/StateTracker.ts +0 -156
  292. package/src/migration/types.ts +0 -344
  293. package/src/migration/validation/BitcoinValidator.ts +0 -107
  294. package/src/migration/validation/CredentialValidator.ts +0 -62
  295. package/src/migration/validation/DIDCompatibilityValidator.ts +0 -151
  296. package/src/migration/validation/LifecycleValidator.ts +0 -64
  297. package/src/migration/validation/StorageValidator.ts +0 -79
  298. package/src/migration/validation/ValidationPipeline.ts +0 -213
  299. package/src/resources/ResourceManager.ts +0 -655
  300. package/src/resources/types.ts +0 -202
  301. package/src/storage/LocalStorageAdapter.ts +0 -61
  302. package/src/storage/MemoryStorageAdapter.ts +0 -29
  303. package/src/storage/StorageAdapter.ts +0 -25
  304. package/src/types/bitcoin.ts +0 -98
  305. package/src/types/common.ts +0 -92
  306. package/src/types/credentials.ts +0 -88
  307. package/src/types/did.ts +0 -31
  308. package/src/types/external-shims.d.ts +0 -53
  309. package/src/types/network.ts +0 -175
  310. package/src/utils/EventLogger.ts +0 -298
  311. package/src/utils/Logger.ts +0 -322
  312. package/src/utils/MetricsCollector.ts +0 -358
  313. package/src/utils/bitcoin-address.ts +0 -130
  314. package/src/utils/cbor.ts +0 -12
  315. package/src/utils/encoding.ts +0 -127
  316. package/src/utils/hash.ts +0 -6
  317. package/src/utils/retry.ts +0 -46
  318. package/src/utils/satoshi-validation.ts +0 -196
  319. package/src/utils/serialization.ts +0 -96
  320. package/src/utils/telemetry.ts +0 -40
  321. package/src/utils/validation.ts +0 -119
  322. package/src/vc/CredentialManager.ts +0 -918
  323. package/src/vc/Issuer.ts +0 -100
  324. package/src/vc/Verifier.ts +0 -47
  325. package/src/vc/cryptosuites/bbs.ts +0 -253
  326. package/src/vc/cryptosuites/bbsSimple.ts +0 -21
  327. package/src/vc/cryptosuites/eddsa.ts +0 -99
  328. package/src/vc/documentLoader.ts +0 -67
  329. package/src/vc/proofs/data-integrity.ts +0 -33
  330. package/src/vc/utils/jsonld.ts +0 -18
  331. package/tests/__mocks__/bbs-signatures.js +0 -17
  332. package/tests/__mocks__/mf-base58.js +0 -24
  333. package/tests/fixtures/did-documents.ts +0 -247
  334. package/tests/index.test.ts +0 -21
  335. package/tests/integration/BatchOperations.test.ts +0 -531
  336. package/tests/integration/CompleteLifecycle.e2e.test.ts +0 -735
  337. package/tests/integration/CredentialManager.test.ts +0 -42
  338. package/tests/integration/DIDManager.test.ts +0 -41
  339. package/tests/integration/DidPeerToWebVhFlow.test.ts +0 -351
  340. package/tests/integration/Events.test.ts +0 -435
  341. package/tests/integration/Lifecycle.transfer.btco.integration.test.ts +0 -25
  342. package/tests/integration/LifecycleManager.test.ts +0 -21
  343. package/tests/integration/MultikeyFlow.test.ts +0 -52
  344. package/tests/integration/TelemetryIntegration.test.ts +0 -395
  345. package/tests/integration/WebVhPublish.test.ts +0 -48
  346. package/tests/integration/createTypedOriginal.test.ts +0 -379
  347. package/tests/integration/migration/peer-to-webvh.test.ts +0 -172
  348. package/tests/manual/test-commit-creation.ts +0 -323
  349. package/tests/mocks/MockKeyStore.ts +0 -38
  350. package/tests/mocks/adapters/MemoryStorageAdapter.ts +0 -24
  351. package/tests/mocks/adapters/MockFeeOracle.ts +0 -11
  352. package/tests/mocks/adapters/MockOrdinalsProvider.ts +0 -76
  353. package/tests/mocks/adapters/OrdMockProvider.test.ts +0 -176
  354. package/tests/mocks/adapters/index.ts +0 -6
  355. package/tests/performance/BatchOperations.perf.test.ts +0 -403
  356. package/tests/performance/logging.perf.test.ts +0 -336
  357. package/tests/sdk.test.ts +0 -43
  358. package/tests/security/bitcoin-penetration-tests.test.ts +0 -622
  359. package/tests/setup.bun.ts +0 -69
  360. package/tests/setup.jest.ts +0 -23
  361. package/tests/stress/batch-operations-stress.test.ts +0 -571
  362. package/tests/unit/adapters/FeeOracleMock.test.ts +0 -40
  363. package/tests/unit/bitcoin/BitcoinManager.test.ts +0 -293
  364. package/tests/unit/bitcoin/BroadcastClient.test.ts +0 -52
  365. package/tests/unit/bitcoin/OrdNodeProvider.test.ts +0 -53
  366. package/tests/unit/bitcoin/OrdinalsClient.test.ts +0 -381
  367. package/tests/unit/bitcoin/OrdinalsClientProvider.test.ts +0 -102
  368. package/tests/unit/bitcoin/PSBTBuilder.test.ts +0 -84
  369. package/tests/unit/bitcoin/fee-calculation.test.ts +0 -261
  370. package/tests/unit/bitcoin/transactions/commit.test.ts +0 -649
  371. package/tests/unit/bitcoin/transfer.test.ts +0 -31
  372. package/tests/unit/bitcoin/utxo-selection-new.test.ts +0 -502
  373. package/tests/unit/bitcoin/utxo.more.test.ts +0 -39
  374. package/tests/unit/bitcoin/utxo.selection.test.ts +0 -38
  375. package/tests/unit/core/OriginalsSDK.test.ts +0 -152
  376. package/tests/unit/crypto/Multikey.test.ts +0 -206
  377. package/tests/unit/crypto/Signer.test.ts +0 -408
  378. package/tests/unit/did/BtcoDidResolver.test.ts +0 -611
  379. package/tests/unit/did/DIDManager.more.test.ts +0 -43
  380. package/tests/unit/did/DIDManager.test.ts +0 -185
  381. package/tests/unit/did/Ed25519Verifier.test.ts +0 -160
  382. package/tests/unit/did/KeyManager.test.ts +0 -452
  383. package/tests/unit/did/OrdinalsClientProviderAdapter.test.ts +0 -45
  384. package/tests/unit/did/WebVHManager.test.ts +0 -435
  385. package/tests/unit/did/createBtcoDidDocument.test.ts +0 -67
  386. package/tests/unit/did/providers/OrdinalsClientProviderAdapter.test.ts +0 -159
  387. package/tests/unit/events/EventEmitter.test.ts +0 -407
  388. package/tests/unit/kinds/KindRegistry.test.ts +0 -329
  389. package/tests/unit/kinds/types.test.ts +0 -409
  390. package/tests/unit/kinds/validators.test.ts +0 -651
  391. package/tests/unit/lifecycle/BatchOperations.test.ts +0 -527
  392. package/tests/unit/lifecycle/LifecycleManager.cleanapi.test.ts +0 -441
  393. package/tests/unit/lifecycle/LifecycleManager.keymanagement.test.ts +0 -312
  394. package/tests/unit/lifecycle/LifecycleManager.prov.test.ts +0 -18
  395. package/tests/unit/lifecycle/LifecycleManager.test.ts +0 -213
  396. package/tests/unit/lifecycle/LifecycleManager.transfer.unit.test.ts +0 -30
  397. package/tests/unit/lifecycle/OriginalsAsset.test.ts +0 -176
  398. package/tests/unit/lifecycle/ProvenanceQuery.test.ts +0 -577
  399. package/tests/unit/lifecycle/ResourceVersioning.test.ts +0 -651
  400. package/tests/unit/resources/ResourceManager.test.ts +0 -740
  401. package/tests/unit/storage/MemoryStorageAdapter.test.ts +0 -93
  402. package/tests/unit/types/network.test.ts +0 -255
  403. package/tests/unit/utils/EventIntegration.test.ts +0 -384
  404. package/tests/unit/utils/Logger.test.ts +0 -473
  405. package/tests/unit/utils/MetricsCollector.test.ts +0 -358
  406. package/tests/unit/utils/bitcoin-address.test.ts +0 -250
  407. package/tests/unit/utils/cbor.test.ts +0 -35
  408. package/tests/unit/utils/encoding.test.ts +0 -318
  409. package/tests/unit/utils/hash.test.ts +0 -12
  410. package/tests/unit/utils/retry.test.ts +0 -100
  411. package/tests/unit/utils/satoshi-validation.test.ts +0 -354
  412. package/tests/unit/utils/serialization.test.ts +0 -124
  413. package/tests/unit/utils/telemetry.test.ts +0 -52
  414. package/tests/unit/utils/validation.test.ts +0 -141
  415. package/tests/unit/vc/CredentialManager.helpers.test.ts +0 -527
  416. package/tests/unit/vc/CredentialManager.test.ts +0 -487
  417. package/tests/unit/vc/Issuer.test.ts +0 -107
  418. package/tests/unit/vc/Verifier.test.ts +0 -525
  419. package/tests/unit/vc/bbs.test.ts +0 -282
  420. package/tests/unit/vc/cryptosuites/eddsa.test.ts +0 -398
  421. package/tests/unit/vc/documentLoader.test.ts +0 -121
  422. package/tests/unit/vc/proofs/data-integrity.test.ts +0 -24
  423. package/tsconfig.json +0 -31
  424. package/tsconfig.test.json +0 -15
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Migration system types and interfaces
3
+ * Defines all types used across the migration infrastructure
4
+ */
5
+ import { DIDDocument, VerifiableCredential } from '../types';
6
+ /**
7
+ * DID layer types
8
+ */
9
+ export type DIDLayer = 'peer' | 'webvh' | 'btco';
10
+ /**
11
+ * Migration state enum
12
+ */
13
+ export declare enum MigrationStateEnum {
14
+ PENDING = "pending",// Migration queued
15
+ VALIDATING = "validating",// Running validation pipeline
16
+ CHECKPOINTED = "checkpointed",// Checkpoint created
17
+ IN_PROGRESS = "in_progress",// Active migration
18
+ ANCHORING = "anchoring",// Bitcoin anchoring (btco only)
19
+ COMPLETED = "completed",// Successfully completed
20
+ FAILED = "failed",// Failed, rollback initiated
21
+ ROLLED_BACK = "rolled_back",// Rolled back successfully
22
+ QUARANTINED = "quarantined"
23
+ }
24
+ /**
25
+ * Migration error types
26
+ */
27
+ export declare enum MigrationErrorType {
28
+ VALIDATION_ERROR = "validation_error",// Pre-migration validation failed
29
+ STORAGE_ERROR = "storage_error",// Storage adapter failure
30
+ BITCOIN_ERROR = "bitcoin_error",// Bitcoin anchoring failed
31
+ CREDENTIAL_ERROR = "credential_error",// Credential re-issuance failed
32
+ NETWORK_ERROR = "network_error",// Network/connectivity failure
33
+ ROLLBACK_ERROR = "rollback_error",// Rollback failed (critical)
34
+ TIMEOUT_ERROR = "timeout_error",// Operation timeout
35
+ UNKNOWN_ERROR = "unknown_error"
36
+ }
37
+ /**
38
+ * Migration options for initiating a migration
39
+ */
40
+ export interface MigrationOptions {
41
+ sourceDid: string;
42
+ targetLayer: DIDLayer;
43
+ credentialIssuance?: boolean;
44
+ batchMode?: boolean;
45
+ partialMode?: {
46
+ chunkSize: number;
47
+ resumable: boolean;
48
+ };
49
+ estimateCostOnly?: boolean;
50
+ metadata?: Record<string, any>;
51
+ domain?: string;
52
+ satoshi?: string;
53
+ feeRate?: number;
54
+ }
55
+ /**
56
+ * Batch migration options
57
+ */
58
+ export interface BatchMigrationOptions extends MigrationOptions {
59
+ maxConcurrent?: number;
60
+ continueOnError?: boolean;
61
+ }
62
+ /**
63
+ * Cost estimate for a migration
64
+ */
65
+ export interface CostEstimate {
66
+ storageCost: number;
67
+ networkFees: number;
68
+ totalCost: number;
69
+ currency: string;
70
+ }
71
+ /**
72
+ * Validation error
73
+ */
74
+ export interface ValidationError {
75
+ code: string;
76
+ message: string;
77
+ field?: string;
78
+ details?: any;
79
+ }
80
+ /**
81
+ * Validation warning
82
+ */
83
+ export interface ValidationWarning {
84
+ code: string;
85
+ message: string;
86
+ field?: string;
87
+ }
88
+ /**
89
+ * Migration validation result
90
+ */
91
+ export interface MigrationValidationResult {
92
+ valid: boolean;
93
+ errors: ValidationError[];
94
+ warnings: ValidationWarning[];
95
+ estimatedCost: CostEstimate;
96
+ estimatedDuration: number;
97
+ }
98
+ /**
99
+ * Migration checkpoint data
100
+ */
101
+ export interface MigrationCheckpoint {
102
+ checkpointId?: string;
103
+ migrationId: string;
104
+ timestamp: number;
105
+ sourceDid: string;
106
+ sourceLayer: DIDLayer;
107
+ didDocument: DIDDocument;
108
+ credentials: VerifiableCredential[];
109
+ storageReferences: Record<string, any>;
110
+ lifecycleState: any;
111
+ ownershipProofs: any[];
112
+ metadata: Record<string, any>;
113
+ }
114
+ /**
115
+ * Rollback result
116
+ */
117
+ export interface RollbackResult {
118
+ success: boolean;
119
+ migrationId: string;
120
+ checkpointId?: string;
121
+ restoredState: MigrationStateEnum;
122
+ duration: number;
123
+ errors?: MigrationError[];
124
+ }
125
+ /**
126
+ * Migration state tracking
127
+ */
128
+ export interface MigrationState {
129
+ migrationId: string;
130
+ state: MigrationStateEnum;
131
+ sourceDid: string;
132
+ sourceLayer: DIDLayer;
133
+ targetDid?: string;
134
+ targetLayer: DIDLayer;
135
+ progress: number;
136
+ currentOperation: string;
137
+ startTime: number;
138
+ endTime?: number;
139
+ error?: MigrationError;
140
+ checkpointId?: string;
141
+ }
142
+ /**
143
+ * Migration error details
144
+ */
145
+ export interface MigrationError {
146
+ type: MigrationErrorType;
147
+ code: string;
148
+ message: string;
149
+ technicalDetails?: string;
150
+ suggestedRecovery?: string;
151
+ migrationId?: string;
152
+ sourceDid?: string;
153
+ targetDid?: string;
154
+ timestamp: number;
155
+ stack?: string;
156
+ }
157
+ /**
158
+ * Migration audit record
159
+ */
160
+ export interface MigrationAuditRecord {
161
+ migrationId: string;
162
+ timestamp: number;
163
+ initiator: string;
164
+ sourceDid: string;
165
+ sourceLayer: DIDLayer;
166
+ targetDid: string | null;
167
+ targetLayer: DIDLayer;
168
+ finalState: MigrationStateEnum;
169
+ validationResults: MigrationValidationResult;
170
+ costActual: CostEstimate;
171
+ duration: number;
172
+ checkpointId?: string;
173
+ errors: MigrationError[];
174
+ metadata: Record<string, any>;
175
+ signature?: string;
176
+ }
177
+ /**
178
+ * Migration result
179
+ */
180
+ export interface MigrationResult {
181
+ migrationId: string;
182
+ success: boolean;
183
+ sourceDid: string;
184
+ targetDid?: string;
185
+ sourceLayer: DIDLayer;
186
+ targetLayer: DIDLayer;
187
+ state: MigrationStateEnum;
188
+ duration: number;
189
+ cost: CostEstimate;
190
+ auditRecord?: MigrationAuditRecord;
191
+ error?: MigrationError;
192
+ }
193
+ /**
194
+ * Batch migration result
195
+ */
196
+ export interface BatchMigrationResult {
197
+ batchId: string;
198
+ total: number;
199
+ completed: number;
200
+ failed: number;
201
+ inProgress: number;
202
+ results: Map<string, MigrationResult>;
203
+ overallProgress: number;
204
+ startTime: number;
205
+ endTime?: number;
206
+ errors: MigrationError[];
207
+ }
208
+ /**
209
+ * Partial migration progress
210
+ */
211
+ export interface PartialMigrationProgress {
212
+ totalChunks: number;
213
+ completedChunks: number;
214
+ currentChunk: number;
215
+ bytesTransferred: number;
216
+ totalBytes: number;
217
+ percentComplete: number;
218
+ estimatedTimeRemaining: number;
219
+ }
220
+ /**
221
+ * Migration event types
222
+ */
223
+ export type MigrationEventType = 'migration:started' | 'migration:validated' | 'migration:checkpointed' | 'migration:in_progress' | 'migration:anchoring' | 'migration:completed' | 'migration:failed' | 'migration:rolledback' | 'migration:quarantine' | 'batch:progress';
224
+ /**
225
+ * Migration event payload
226
+ */
227
+ export interface MigrationEvent {
228
+ type: MigrationEventType;
229
+ migrationId: string;
230
+ timestamp: number;
231
+ state: MigrationStateEnum;
232
+ data?: any;
233
+ }
234
+ /**
235
+ * Storage migration context
236
+ */
237
+ export interface StorageMigrationContext {
238
+ sourceDid: string;
239
+ targetDid: string;
240
+ sourceLayer: DIDLayer;
241
+ targetLayer: DIDLayer;
242
+ resources: Array<{
243
+ id: string;
244
+ hash: string;
245
+ contentType: string;
246
+ size: number;
247
+ url?: string;
248
+ }>;
249
+ }
250
+ /**
251
+ * Bitcoin anchoring context
252
+ */
253
+ export interface BitcoinAnchoringContext {
254
+ didDocument: DIDDocument;
255
+ migrationMetadata: Record<string, any>;
256
+ network: 'mainnet' | 'testnet' | 'signet';
257
+ feeRate?: number;
258
+ satoshi?: string;
259
+ }
260
+ /**
261
+ * Lifecycle migration context
262
+ */
263
+ export interface LifecycleMigrationContext {
264
+ sourceDid: string;
265
+ targetDid: string;
266
+ currentState: any;
267
+ eventHistory: any[];
268
+ migrationId: string;
269
+ }
270
+ /**
271
+ * Validator interface
272
+ */
273
+ export interface IValidator {
274
+ validate(options: MigrationOptions): Promise<MigrationValidationResult>;
275
+ }
276
+ /**
277
+ * Checkpoint manager interface
278
+ */
279
+ export interface ICheckpointManager {
280
+ createCheckpoint(migrationId: string, options: MigrationOptions): Promise<MigrationCheckpoint>;
281
+ getCheckpoint(checkpointId: string): Promise<MigrationCheckpoint | null>;
282
+ deleteCheckpoint(checkpointId: string): Promise<void>;
283
+ }
284
+ /**
285
+ * Rollback manager interface
286
+ */
287
+ export interface IRollbackManager {
288
+ rollback(migrationId: string, checkpointId: string): Promise<RollbackResult>;
289
+ }
290
+ /**
291
+ * State tracker interface
292
+ */
293
+ export interface IStateTracker {
294
+ createMigration(options: MigrationOptions): Promise<MigrationState>;
295
+ updateState(migrationId: string, updates: Partial<MigrationState>): Promise<void>;
296
+ getState(migrationId: string): Promise<MigrationState | null>;
297
+ queryStates(filters: Partial<MigrationState>): Promise<MigrationState[]>;
298
+ }
299
+ /**
300
+ * Audit logger interface
301
+ */
302
+ export interface IAuditLogger {
303
+ logMigration(record: MigrationAuditRecord): Promise<void>;
304
+ getMigrationHistory(did: string): Promise<MigrationAuditRecord[]>;
305
+ getSystemMigrationLogs(filters: any): Promise<MigrationAuditRecord[]>;
306
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Migration system types and interfaces
3
+ * Defines all types used across the migration infrastructure
4
+ */
5
+ /**
6
+ * Migration state enum
7
+ */
8
+ export var MigrationStateEnum;
9
+ (function (MigrationStateEnum) {
10
+ MigrationStateEnum["PENDING"] = "pending";
11
+ MigrationStateEnum["VALIDATING"] = "validating";
12
+ MigrationStateEnum["CHECKPOINTED"] = "checkpointed";
13
+ MigrationStateEnum["IN_PROGRESS"] = "in_progress";
14
+ MigrationStateEnum["ANCHORING"] = "anchoring";
15
+ MigrationStateEnum["COMPLETED"] = "completed";
16
+ MigrationStateEnum["FAILED"] = "failed";
17
+ MigrationStateEnum["ROLLED_BACK"] = "rolled_back";
18
+ MigrationStateEnum["QUARANTINED"] = "quarantined"; // Rollback failed, needs manual intervention
19
+ })(MigrationStateEnum || (MigrationStateEnum = {}));
20
+ /**
21
+ * Migration error types
22
+ */
23
+ export var MigrationErrorType;
24
+ (function (MigrationErrorType) {
25
+ MigrationErrorType["VALIDATION_ERROR"] = "validation_error";
26
+ MigrationErrorType["STORAGE_ERROR"] = "storage_error";
27
+ MigrationErrorType["BITCOIN_ERROR"] = "bitcoin_error";
28
+ MigrationErrorType["CREDENTIAL_ERROR"] = "credential_error";
29
+ MigrationErrorType["NETWORK_ERROR"] = "network_error";
30
+ MigrationErrorType["ROLLBACK_ERROR"] = "rollback_error";
31
+ MigrationErrorType["TIMEOUT_ERROR"] = "timeout_error";
32
+ MigrationErrorType["UNKNOWN_ERROR"] = "unknown_error"; // Unexpected error
33
+ })(MigrationErrorType || (MigrationErrorType = {}));
@@ -0,0 +1,13 @@
1
+ /**
2
+ * BitcoinValidator - Validates Bitcoin network requirements for btco migrations
3
+ */
4
+ import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
5
+ import { OriginalsConfig } from '../../types';
6
+ import { BitcoinManager } from '../../bitcoin/BitcoinManager';
7
+ export declare class BitcoinValidator implements IValidator {
8
+ private config;
9
+ private bitcoinManager;
10
+ constructor(config: OriginalsConfig, bitcoinManager: BitcoinManager);
11
+ validate(options: MigrationOptions): Promise<MigrationValidationResult>;
12
+ private createResult;
13
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * BitcoinValidator - Validates Bitcoin network requirements for btco migrations
3
+ */
4
+ export class BitcoinValidator {
5
+ constructor(config, bitcoinManager) {
6
+ this.config = config;
7
+ this.bitcoinManager = bitcoinManager;
8
+ }
9
+ async validate(options) {
10
+ const errors = [];
11
+ const warnings = [];
12
+ try {
13
+ // Only validate for btco migrations
14
+ if (options.targetLayer !== 'btco') {
15
+ return this.createResult(true, errors, warnings, 0, 0);
16
+ }
17
+ // Check if Bitcoin provider is configured
18
+ const ordinalsProvider = this.config.ordinalsProvider;
19
+ if (!ordinalsProvider) {
20
+ errors.push({
21
+ code: 'BITCOIN_PROVIDER_REQUIRED',
22
+ message: 'Ordinals provider is required for btco migrations',
23
+ details: { targetLayer: options.targetLayer }
24
+ });
25
+ return this.createResult(false, errors, warnings, 0, 0);
26
+ }
27
+ // Estimate Bitcoin network fees
28
+ let networkFees = 0;
29
+ let estimatedDuration = 600000; // 10 minutes default
30
+ try {
31
+ // Estimate fee for a typical inscription (assume 1KB data)
32
+ const estimatedSize = 1024; // bytes
33
+ const feeRate = options.feeRate || 10; // sats/vB
34
+ networkFees = estimatedSize * feeRate;
35
+ // Check if fee is within reasonable limits
36
+ if (feeRate > 1000) {
37
+ warnings.push({
38
+ code: 'HIGH_FEE_RATE',
39
+ message: `Fee rate of ${feeRate} sat/vB is unusually high`,
40
+ field: 'feeRate'
41
+ });
42
+ }
43
+ }
44
+ catch (error) {
45
+ warnings.push({
46
+ code: 'FEE_ESTIMATION_FAILED',
47
+ message: `Could not estimate Bitcoin network fees: ${error instanceof Error ? error.message : String(error)}`
48
+ });
49
+ networkFees = 10240; // Default fallback: ~1KB at 10 sat/vB
50
+ }
51
+ // Validate network (should be signet for testnet)
52
+ if (this.config.network !== 'mainnet' && this.config.network !== 'signet') {
53
+ warnings.push({
54
+ code: 'NETWORK_MISMATCH',
55
+ message: `Network '${this.config.network}' will use signet for Bitcoin anchoring`
56
+ });
57
+ }
58
+ return this.createResult(true, errors, warnings, networkFees, estimatedDuration);
59
+ }
60
+ catch (error) {
61
+ errors.push({
62
+ code: 'BITCOIN_VALIDATION_ERROR',
63
+ message: 'Error validating Bitcoin requirements',
64
+ details: { error: error instanceof Error ? error.message : String(error) }
65
+ });
66
+ return this.createResult(false, errors, warnings, 0, 0);
67
+ }
68
+ }
69
+ createResult(valid, errors, warnings, networkFees, duration) {
70
+ return {
71
+ valid,
72
+ errors,
73
+ warnings,
74
+ estimatedCost: {
75
+ storageCost: 0,
76
+ networkFees,
77
+ totalCost: networkFees,
78
+ currency: 'sats'
79
+ },
80
+ estimatedDuration: duration
81
+ };
82
+ }
83
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CredentialValidator - Validates credential compatibility for migration
3
+ */
4
+ import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
5
+ import { OriginalsConfig } from '../../types';
6
+ import { CredentialManager } from '../../vc/CredentialManager';
7
+ export declare class CredentialValidator implements IValidator {
8
+ private config;
9
+ private credentialManager;
10
+ constructor(config: OriginalsConfig, credentialManager: CredentialManager);
11
+ validate(options: MigrationOptions): Promise<MigrationValidationResult>;
12
+ private createResult;
13
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * CredentialValidator - Validates credential compatibility for migration
3
+ */
4
+ export class CredentialValidator {
5
+ constructor(config, credentialManager) {
6
+ this.config = config;
7
+ this.credentialManager = credentialManager;
8
+ }
9
+ async validate(options) {
10
+ const errors = [];
11
+ const warnings = [];
12
+ try {
13
+ // Credential validation is optional if credentialIssuance is false
14
+ if (options.credentialIssuance === false) {
15
+ return this.createResult(true, errors, warnings);
16
+ }
17
+ // All credential types are compatible with all layers
18
+ // This validator primarily checks that credential issuance is possible
19
+ // For now, credentials are always compatible
20
+ // Future enhancements could include schema validation
21
+ return this.createResult(true, errors, warnings);
22
+ }
23
+ catch (error) {
24
+ errors.push({
25
+ code: 'CREDENTIAL_VALIDATION_ERROR',
26
+ message: 'Error validating credential compatibility',
27
+ details: { error: error instanceof Error ? error.message : String(error) }
28
+ });
29
+ return this.createResult(false, errors, warnings);
30
+ }
31
+ }
32
+ createResult(valid, errors, warnings) {
33
+ return {
34
+ valid,
35
+ errors,
36
+ warnings,
37
+ estimatedCost: {
38
+ storageCost: 0,
39
+ networkFees: 0,
40
+ totalCost: 0,
41
+ currency: 'sats'
42
+ },
43
+ estimatedDuration: 50 // Credential validation typically takes ~50ms
44
+ };
45
+ }
46
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * DIDCompatibilityValidator - Validates DID document compatibility between layers
3
+ */
4
+ import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
5
+ import { OriginalsConfig } from '../../types';
6
+ import { DIDManager } from '../../did/DIDManager';
7
+ export declare class DIDCompatibilityValidator implements IValidator {
8
+ private config;
9
+ private didManager;
10
+ constructor(config: OriginalsConfig, didManager: DIDManager);
11
+ validate(options: MigrationOptions): Promise<MigrationValidationResult>;
12
+ private extractLayer;
13
+ private validateMigrationPath;
14
+ private isVerificationMethodCompatible;
15
+ private createResult;
16
+ }
@@ -0,0 +1,127 @@
1
+ /**
2
+ * DIDCompatibilityValidator - Validates DID document compatibility between layers
3
+ */
4
+ export class DIDCompatibilityValidator {
5
+ constructor(config, didManager) {
6
+ this.config = config;
7
+ this.didManager = didManager;
8
+ }
9
+ async validate(options) {
10
+ const errors = [];
11
+ const warnings = [];
12
+ try {
13
+ // Resolve source DID
14
+ const sourceDid = await this.didManager.resolveDID(options.sourceDid);
15
+ if (!sourceDid) {
16
+ errors.push({
17
+ code: 'SOURCE_DID_NOT_FOUND',
18
+ message: `Could not resolve source DID: ${options.sourceDid}`,
19
+ field: 'sourceDid'
20
+ });
21
+ return this.createResult(false, errors, warnings);
22
+ }
23
+ // Extract source layer from DID
24
+ const sourceLayer = this.extractLayer(options.sourceDid);
25
+ if (!sourceLayer) {
26
+ errors.push({
27
+ code: 'INVALID_SOURCE_DID_FORMAT',
28
+ message: 'Source DID has unsupported format',
29
+ field: 'sourceDid',
30
+ details: { did: options.sourceDid }
31
+ });
32
+ return this.createResult(false, errors, warnings);
33
+ }
34
+ // Validate migration path
35
+ const pathErrors = this.validateMigrationPath(sourceLayer, options.targetLayer);
36
+ errors.push(...pathErrors);
37
+ if (errors.length > 0) {
38
+ return this.createResult(false, errors, warnings);
39
+ }
40
+ // Validate verification methods compatibility
41
+ if (sourceDid.verificationMethod && Array.isArray(sourceDid.verificationMethod)) {
42
+ for (const vm of sourceDid.verificationMethod) {
43
+ if (!this.isVerificationMethodCompatible(vm, options.targetLayer)) {
44
+ warnings.push({
45
+ code: 'VERIFICATION_METHOD_INCOMPATIBLE',
46
+ message: `Verification method ${vm.id} may not be compatible with ${options.targetLayer}`,
47
+ field: 'verificationMethod'
48
+ });
49
+ }
50
+ }
51
+ }
52
+ // Validate service endpoints
53
+ if (sourceDid.service && Array.isArray(sourceDid.service)) {
54
+ if (options.targetLayer === 'peer' && sourceDid.service.length > 0) {
55
+ warnings.push({
56
+ code: 'SERVICE_ENDPOINTS_ON_PEER',
57
+ message: 'Service endpoints on peer DIDs may have limited discoverability'
58
+ });
59
+ }
60
+ }
61
+ return this.createResult(true, errors, warnings);
62
+ }
63
+ catch (error) {
64
+ errors.push({
65
+ code: 'DID_VALIDATION_ERROR',
66
+ message: 'Error validating DID compatibility',
67
+ details: { error: error instanceof Error ? error.message : String(error) }
68
+ });
69
+ return this.createResult(false, errors, warnings);
70
+ }
71
+ }
72
+ extractLayer(did) {
73
+ if (did.startsWith('did:peer:'))
74
+ return 'peer';
75
+ if (did.startsWith('did:webvh:'))
76
+ return 'webvh';
77
+ if (did.startsWith('did:btco:'))
78
+ return 'btco';
79
+ return null;
80
+ }
81
+ validateMigrationPath(sourceLayer, targetLayer) {
82
+ const errors = [];
83
+ // Check for invalid reverse migrations
84
+ const layerOrder = { peer: 0, webvh: 1, btco: 2 };
85
+ const sourceOrder = layerOrder[sourceLayer];
86
+ const targetOrder = layerOrder[targetLayer];
87
+ if (sourceOrder === undefined || targetOrder === undefined) {
88
+ errors.push({
89
+ code: 'INVALID_LAYER',
90
+ message: 'Invalid source or target layer',
91
+ details: { sourceLayer, targetLayer }
92
+ });
93
+ return errors;
94
+ }
95
+ if (sourceOrder >= targetOrder) {
96
+ errors.push({
97
+ code: 'INVALID_MIGRATION_PATH',
98
+ message: `Cannot migrate from ${sourceLayer} to ${targetLayer}. Migrations must move forward through layers (peer → webvh → btco)`,
99
+ details: { sourceLayer, targetLayer }
100
+ });
101
+ }
102
+ return errors;
103
+ }
104
+ isVerificationMethodCompatible(vm, targetLayer) {
105
+ // All verification method types are compatible with all layers
106
+ // This is a placeholder for more sophisticated compatibility checks
107
+ if (!vm.type)
108
+ return false;
109
+ // Common types that are widely supported
110
+ const supportedTypes = ['Multikey', 'Ed25519VerificationKey2020', 'EcdsaSecp256k1VerificationKey2019'];
111
+ return supportedTypes.includes(vm.type);
112
+ }
113
+ createResult(valid, errors, warnings) {
114
+ return {
115
+ valid,
116
+ errors,
117
+ warnings,
118
+ estimatedCost: {
119
+ storageCost: 0,
120
+ networkFees: 0,
121
+ totalCost: 0,
122
+ currency: 'sats'
123
+ },
124
+ estimatedDuration: 100 // DID validation typically takes ~100ms
125
+ };
126
+ }
127
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * LifecycleValidator - Validates lifecycle state transitions
3
+ */
4
+ import { MigrationOptions, MigrationValidationResult, IValidator } from '../types';
5
+ import { OriginalsConfig } from '../../types';
6
+ export declare class LifecycleValidator implements IValidator {
7
+ private config;
8
+ constructor(config: OriginalsConfig);
9
+ validate(options: MigrationOptions): Promise<MigrationValidationResult>;
10
+ }