/** * validator.ts * Input validation and assertion helpers for MajikSignature. */ import { ISODateString } from "@majikah/majik-key"; import type { ExpectedSigner, MajikSignatureJSON, MajikSignerPublicKeys, MajikTimestamp, MajikTSAPayload, MultiSigEnvelope } from "./types"; export declare class MajikSignatureValidator { static assert(condition: unknown, message: string, field?: string): asserts condition; static assertDefined(value: T | undefined | null, field: string): asserts value is T; static assertNonEmptyString(value: unknown, field: string): asserts value is string; static assertUint8Array(value: unknown, field: string, expectedLen?: number): asserts value is Uint8Array; static validateContent(content: Uint8Array | string, field?: string): void; static validateContentType(contentType: unknown, field?: string): void; static validateSignerPublicKeys(keys: MajikSignerPublicKeys): void; static validateEdSecretKey(key: Uint8Array): void; static validateMlDsaSecretKey(key: Uint8Array): void; static validateJSON(json: unknown): asserts json is MajikSignatureJSON; static validateExpectedSigner(entry: unknown, index?: number): asserts entry is ExpectedSigner; /** * Validate that a seal is structurally complete. * All three seal fields must be present together — partial seals are invalid. * Does NOT verify the seal hash cryptographically — call verifySeal() for that. */ static validateSeal(env: MultiSigEnvelope): void; static validateSealHash(hash: string): void; static validateValidUntil(value: ISODateString | undefined): void; static validateMultiSigEnvelope(env: unknown): asserts env is MultiSigEnvelope; static validateMajikTSAPayload(payload: unknown): asserts payload is MajikTSAPayload; static validateMajikTimestamp(tsa: unknown): asserts tsa is MajikTimestamp; }