export type KYCLevel = 0 | 1 | 2 | 3; export type VerificationStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'expired'; /** * ⚠ TWO PROOF TYPES, AND THEY MEAN DIFFERENT THINGS. `Ed25519Signature2020` names a suite with a * defined verification procedure: verify `proofValue` as an Ed25519 signature over the document * against `verificationMethod`. `SolidusChainAnchor2026` does not: its `proofValue` is a BLAKE3 * hash of the credential payload, and verifying it means resolving the chain record, not checking * a signature. * * Chain-anchored credentials used to declare the FIRST while carrying the second. A third-party * W3C verifier handed one of those either fails, or worse trusts a field that proves nothing * without the chain. The anchoring model was never the problem; the label was. */ export type CredentialProofType = 'Ed25519Signature2020' | 'SolidusChainAnchor2026'; export interface CredentialProof { type: CredentialProofType; created: string; verificationMethod: string; proofPurpose: 'assertionMethod'; /** * For `Ed25519Signature2020`, a base64url-encoded Ed25519 signature. * For `SolidusChainAnchor2026`, the hex BLAKE3 hash of the credential payload as anchored. */ proofValue: string; } export interface VerifiableCredential { '@context': string[]; id: string; type: string[]; issuer: string; validFrom: string; validUntil?: string; credentialSubject: { id: string; [key: string]: unknown; }; proof: CredentialProof; } export interface IssueCredentialParams { subjectDid: string; issuerDid: string; issuerPrivateKey: string; type: string[]; claims: Record; expiresInDays?: number; /** * ⚠ `testnet-v2` IS ADDITIVE. Widening this union cannot break a caller: every * value that was valid before is still valid and still means the same thing. * It exists because credential issuance differs by CHAIN — v2 accepts * `CredentialIssueV2`, which keeps the subject DID off the ledger, and the v1 * executor rejects that variant. */ network?: 'stub' | 'testnet' | 'mainnet' | 'testnet-v2'; } export interface VerificationResult { valid: boolean; credentialId?: string; error?: string; checks: { signature: boolean; expiry: boolean; revocation: boolean; }; } //# sourceMappingURL=vc.d.ts.map