/** * Repository data validators. * * This module provides validation utilities for repository operations, * primarily for validating external data before processing (e.g., snapshot imports). * * These validators return Result types (ValidationResult) instead of throwing errors. * For parameter validation at repository API boundaries, use ValidationError with Zod schemas. */ import type { Logger } from '../../logger/logger.types.js'; import type { ValidationResult } from '../../utils/validation/types.js'; import type { SerializableSnapshot } from '../types/index.js'; /** * Serializable snapshot validation error code. */ type SerializableSnapshotValidationErrorCode = 'SERIALIZABLE_SNAPSHOT_VALIDATION_ERROR'; /** * Validate a SerializableSnapshot object. * * Validates the structure of snapshot data for import operations, * ensuring version compatibility and data integrity. * * Validation steps: * 1. Check data is a plain object * 2. Validate version field (semver format: x.y.z) * 3. Validate serializedAt field (ISO-8601 UTC timestamp) * 4. Validate prototypes array using {@link validateNormalizedPrototypeArray} * * @param data - Data to validate * @param logger - Optional logger for validation events * @returns Validation result with typed data or error details * * @example * ```ts * const result = validateSerializableSnapshot(data, logger); * if (result.ok) { * // data is SerializableSnapshot * console.log(`Version: ${result.data.version}`); * console.log(`Prototypes: ${result.data.prototypes.length}`); * } else { * console.error(`Invalid snapshot: ${result.message}`); * } * ``` */ export declare function validateSerializableSnapshot(data: unknown, logger?: Logger): ValidationResult; export {}; //# sourceMappingURL=serializable-snapshot.d.ts.map