/** * Base Validator * * Abstract base class for domain validators. * Handles validation AND sanitization using Zod schemas from @plyaz/types. * * Supports all HTTP operations: * - create (POST) * - update (PUT - full replacement) * - patch (PATCH - partial update) * - delete (DELETE with options) * - query (GET params) * * @example * ```typescript * import { CreateExampleSchema, PatchExampleSchema } from '@plyaz/types/examples'; * * class ExampleValidator extends BaseValidator< * CreateExampleDTO, // create * UpdateExampleDTO, // update (full) * PatchExampleDTO, // patch (partial) * DeleteExampleDTO, // delete options * QueryExampleDTO // query params * > { * constructor() { * super({ * createSchema: CreateExampleSchema, * patchSchema: PatchExampleSchema, * // ... other schemas * }); * } * } * ``` */ import { ValidationError } from '@plyaz/errors'; import type { ValidationIssue, BaseErrorContext, InternalValidationSchema } from '@plyaz/types/errors'; import type { CoreValidationResult, CoreValidatorConfig, CoreBaseValidatorInstance } from '@plyaz/types/core'; /** * Abstract base validator with default implementations */ export declare abstract class BaseValidator, TDelete = unknown, TQuery = unknown> implements CoreBaseValidatorInstance { protected readonly config: CoreValidatorConfig; constructor(config?: CoreValidatorConfig); /** * Validate data for create operation (POST) */ validateCreate(data: unknown): CoreValidationResult; /** * Validate data for full update operation (PUT) */ validateUpdate(data: unknown): CoreValidationResult; /** * Validate data for partial update operation (PATCH) */ validatePatch(data: unknown): CoreValidationResult; /** * Validate data for delete operation (DELETE with options) */ validateDelete(data: unknown): CoreValidationResult; /** * Validate query parameters (GET list) */ validateQuery(data: unknown): CoreValidationResult; /** * Validate and throw if invalid (for create) * @throws ValidationError[] (array) if validation fails */ validateCreateOrThrow(data: unknown): TCreate; /** * Validate and throw if invalid (for update) * @throws ValidationError[] (array) if validation fails */ validateUpdateOrThrow(data: unknown): TUpdate; /** * Validate and throw if invalid (for patch) * @throws ValidationError[] (array) if validation fails */ validatePatchOrThrow(data: unknown): TPatch; /** * Validate and throw if invalid (for delete) * @throws ValidationError[] (array) if validation fails */ validateDeleteOrThrow(data: unknown): TDelete; /** * Validate and throw if invalid (for query) * @throws ValidationError[] (array) if validation fails */ validateQueryOrThrow(data: unknown): TQuery; /** * Internal validation using ValidateAndFormatErrors from @plyaz/errors * This handles both validation AND sanitization (via Zod transforms) */ protected validate(data: unknown, schema: InternalValidationSchema): CoreValidationResult; /** * Convert ValidationIssue[] to array of ValidationError objects * Each validation issue becomes a separate ValidationError */ protected toValidationErrorArray(issues?: ValidationIssue[]): ValidationError[]; /** * Convert ValidationIssue[] to BaseErrorContext (legacy) * @deprecated Use toValidationErrorArray instead */ protected toErrorContext(issues?: ValidationIssue[]): BaseErrorContext; } //# sourceMappingURL=BaseValidator.d.ts.map