import type { ValidationError, ValidationResult } from "@wp-typia/api-client"; export type GeneratedSchemaDocument = Record; export interface GeneratedSchemaValidatorOptions { /** Human-readable contract name used in assertion failures. */ schemaName?: string; } export type GeneratedSchemaRegistry = Readonly>; export interface NamedGeneratedSchemaOptions extends GeneratedSchemaValidatorOptions { /** Registry keyed by TypeScript source type or another stable schema name. */ schemas?: GeneratedSchemaRegistry; } /** * Error thrown by `assertResponseMatchesSchema()` when a payload does not match * a generated JSON Schema artifact. * * @category Validation */ export declare class SchemaResponseValidationError extends Error { readonly errors: ValidationError[]; readonly schemaName: string; constructor(schemaName: string, errors: ValidationError[]); } /** * Create a reusable validator for one generated JSON Schema document. * * @param schema Generated `*.schema.json` document. * @returns A shared `ValidationResult`-shaped validator suitable for smoke tests. * @category Validation */ export declare function createGeneratedSchemaValidator(schema: GeneratedSchemaDocument, _options?: GeneratedSchemaValidatorOptions): (payload: unknown) => ValidationResult; /** * Create a reusable response validator for one generated JSON Schema document. * * @param schema Generated response `*.schema.json` document. * @returns A shared `ValidationResult`-shaped validator suitable for smoke tests. * @category Validation */ export declare function createResponseSchemaValidator(schema: GeneratedSchemaDocument, options?: GeneratedSchemaValidatorOptions): (payload: unknown) => ValidationResult; /** * Validate a response payload against a generated schema document or named * schema registry entry. * * @param schemaOrName Generated schema document, or a schema name present in `options.schemas`. * @param payload Untrusted response payload to validate. * @param options Optional schema registry and display name. * @returns Shared validation result with field-level paths such as `$.count`. * @category Validation */ export declare function validateResponseMatchesSchema(schemaOrName: GeneratedSchemaDocument | string, payload: unknown, options?: NamedGeneratedSchemaOptions): ValidationResult; /** * Assert that a response payload matches a generated schema document or named * schema registry entry. * * @param schemaOrName Generated schema document, or a schema name present in `options.schemas`. * @param payload Untrusted response payload to validate. * @param options Optional schema registry and display name. * @returns The validated payload typed as `T`. * @throws {SchemaResponseValidationError} When validation fails. * @category Validation */ export declare function assertResponseMatchesSchema(schemaOrName: GeneratedSchemaDocument | string, payload: unknown, options?: NamedGeneratedSchemaOptions): T;