/** * Zod schemas for key persistence validation. * * @module @frontmcp/utils/key-persistence */ import type { AnyKeyData, AsymmetricKeyData, SecretKeyData } from './types'; /** * Supported asymmetric algorithms. */ export declare const asymmetricAlgSchema: import("@frontmcp/lazy-zod").ZodEnum<{ RS256: "RS256"; RS384: "RS384"; RS512: "RS512"; ES256: "ES256"; ES384: "ES384"; ES512: "ES512"; }>; /** * Zod schema for SecretKeyData. */ export declare const secretKeyDataSchema: import("@frontmcp/lazy-zod").ZodObject<{ kid: import("@frontmcp/lazy-zod").ZodString; createdAt: import("@frontmcp/lazy-zod").ZodNumber; version: import("@frontmcp/lazy-zod").ZodNumber; type: import("@frontmcp/lazy-zod").ZodLiteral<"secret">; secret: import("@frontmcp/lazy-zod").ZodString; bytes: import("@frontmcp/lazy-zod").ZodNumber; }, import("zod/v4/core").$strip>; /** * Zod schema for AsymmetricKeyData. */ export declare const asymmetricKeyDataSchema: import("@frontmcp/lazy-zod").ZodObject<{ kid: import("@frontmcp/lazy-zod").ZodString; createdAt: import("@frontmcp/lazy-zod").ZodNumber; version: import("@frontmcp/lazy-zod").ZodNumber; type: import("@frontmcp/lazy-zod").ZodLiteral<"asymmetric">; alg: import("@frontmcp/lazy-zod").ZodEnum<{ RS256: "RS256"; RS384: "RS384"; RS512: "RS512"; ES256: "ES256"; ES384: "ES384"; ES512: "ES512"; }>; privateKey: import("@frontmcp/lazy-zod").ZodObject<{ kty: import("@frontmcp/lazy-zod").ZodOptional; use: import("@frontmcp/lazy-zod").ZodOptional; alg: import("@frontmcp/lazy-zod").ZodOptional; kid: import("@frontmcp/lazy-zod").ZodOptional; n: import("@frontmcp/lazy-zod").ZodOptional; e: import("@frontmcp/lazy-zod").ZodOptional; d: import("@frontmcp/lazy-zod").ZodOptional; p: import("@frontmcp/lazy-zod").ZodOptional; q: import("@frontmcp/lazy-zod").ZodOptional; dp: import("@frontmcp/lazy-zod").ZodOptional; dq: import("@frontmcp/lazy-zod").ZodOptional; qi: import("@frontmcp/lazy-zod").ZodOptional; x: import("@frontmcp/lazy-zod").ZodOptional; y: import("@frontmcp/lazy-zod").ZodOptional; crv: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$loose>; publicJwk: import("@frontmcp/lazy-zod").ZodObject<{ keys: import("@frontmcp/lazy-zod").ZodArray; use: import("@frontmcp/lazy-zod").ZodOptional; alg: import("@frontmcp/lazy-zod").ZodOptional; kid: import("@frontmcp/lazy-zod").ZodOptional; n: import("@frontmcp/lazy-zod").ZodOptional; e: import("@frontmcp/lazy-zod").ZodOptional; d: import("@frontmcp/lazy-zod").ZodOptional; p: import("@frontmcp/lazy-zod").ZodOptional; q: import("@frontmcp/lazy-zod").ZodOptional; dp: import("@frontmcp/lazy-zod").ZodOptional; dq: import("@frontmcp/lazy-zod").ZodOptional; qi: import("@frontmcp/lazy-zod").ZodOptional; x: import("@frontmcp/lazy-zod").ZodOptional; y: import("@frontmcp/lazy-zod").ZodOptional; crv: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$loose>>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>; /** * Zod schema for AnyKeyData (discriminated union). */ export declare const anyKeyDataSchema: import("@frontmcp/lazy-zod").ZodDiscriminatedUnion<[import("@frontmcp/lazy-zod").ZodObject<{ kid: import("@frontmcp/lazy-zod").ZodString; createdAt: import("@frontmcp/lazy-zod").ZodNumber; version: import("@frontmcp/lazy-zod").ZodNumber; type: import("@frontmcp/lazy-zod").ZodLiteral<"secret">; secret: import("@frontmcp/lazy-zod").ZodString; bytes: import("@frontmcp/lazy-zod").ZodNumber; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ kid: import("@frontmcp/lazy-zod").ZodString; createdAt: import("@frontmcp/lazy-zod").ZodNumber; version: import("@frontmcp/lazy-zod").ZodNumber; type: import("@frontmcp/lazy-zod").ZodLiteral<"asymmetric">; alg: import("@frontmcp/lazy-zod").ZodEnum<{ RS256: "RS256"; RS384: "RS384"; RS512: "RS512"; ES256: "ES256"; ES384: "ES384"; ES512: "ES512"; }>; privateKey: import("@frontmcp/lazy-zod").ZodObject<{ kty: import("@frontmcp/lazy-zod").ZodOptional; use: import("@frontmcp/lazy-zod").ZodOptional; alg: import("@frontmcp/lazy-zod").ZodOptional; kid: import("@frontmcp/lazy-zod").ZodOptional; n: import("@frontmcp/lazy-zod").ZodOptional; e: import("@frontmcp/lazy-zod").ZodOptional; d: import("@frontmcp/lazy-zod").ZodOptional; p: import("@frontmcp/lazy-zod").ZodOptional; q: import("@frontmcp/lazy-zod").ZodOptional; dp: import("@frontmcp/lazy-zod").ZodOptional; dq: import("@frontmcp/lazy-zod").ZodOptional; qi: import("@frontmcp/lazy-zod").ZodOptional; x: import("@frontmcp/lazy-zod").ZodOptional; y: import("@frontmcp/lazy-zod").ZodOptional; crv: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$loose>; publicJwk: import("@frontmcp/lazy-zod").ZodObject<{ keys: import("@frontmcp/lazy-zod").ZodArray; use: import("@frontmcp/lazy-zod").ZodOptional; alg: import("@frontmcp/lazy-zod").ZodOptional; kid: import("@frontmcp/lazy-zod").ZodOptional; n: import("@frontmcp/lazy-zod").ZodOptional; e: import("@frontmcp/lazy-zod").ZodOptional; d: import("@frontmcp/lazy-zod").ZodOptional; p: import("@frontmcp/lazy-zod").ZodOptional; q: import("@frontmcp/lazy-zod").ZodOptional; dp: import("@frontmcp/lazy-zod").ZodOptional; dq: import("@frontmcp/lazy-zod").ZodOptional; qi: import("@frontmcp/lazy-zod").ZodOptional; x: import("@frontmcp/lazy-zod").ZodOptional; y: import("@frontmcp/lazy-zod").ZodOptional; crv: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$loose>>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>], "type">; /** * Result of validating key data. */ export interface KeyValidationResult { /** Whether the key data is valid */ valid: boolean; /** Parsed key data if valid */ data?: AnyKeyData; /** Error message if invalid */ error?: string; } /** * Validate key data structure and timestamps. * * Checks: * - Schema validation * - createdAt is not in the future (with 1 minute drift allowance) * - createdAt is not too old (100 years) * * @param data - Data to validate * @returns Validation result */ export declare function validateKeyData(data: unknown): KeyValidationResult; /** * Parse and validate key data. * * @param data - Raw data to parse * @returns Parsed key data or null if invalid */ export declare function parseKeyData(data: unknown): AnyKeyData | null; /** * Check if key data is a secret key. */ export declare function isSecretKeyData(data: AnyKeyData): data is SecretKeyData; /** * Check if key data is an asymmetric key. */ export declare function isAsymmetricKeyData(data: AnyKeyData): data is AsymmetricKeyData;