/**
 * API Input Validation
 *
 * Provides Zod-based validation middleware for Fastify routes.
 * Integrates with the validation utilities from common/validation.ts.
 *
 * @packageDocumentation
 */
import { FastifyRequest, FastifyReply } from 'fastify';
import { z, ZodSchema } from 'zod';
/**
 * Validation options
 */
export interface ValidationOptions {
    /** Maximum payload size in bytes */
    maxPayloadSize?: number;
    /** Check for injection patterns */
    checkInjection?: boolean;
    /** Sanitize input strings */
    sanitize?: boolean;
    /** Strip unknown properties */
    stripUnknown?: boolean;
}
/**
 * Create validation middleware for request body
 */
export declare function validateBody<T extends ZodSchema>(schema: T, options?: ValidationOptions): (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
/**
 * Create validation middleware for query parameters
 */
export declare function validateQuery<T extends ZodSchema>(schema: T): (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
/**
 * Create validation middleware for route parameters
 */
export declare function validateParams<T extends ZodSchema>(schema: T): (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
/**
 * Escalation schemas
 */
export declare const escalationSchemas: {
    create: z.ZodObject<{
        intentId: z.ZodString;
        entityId: z.ZodString;
        reason: z.ZodString;
        priority: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "critical"]>>;
        escalatedTo: z.ZodString;
        context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        requestedAction: z.ZodOptional<z.ZodString>;
        timeoutMinutes: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        entityId?: string;
        priority?: "low" | "medium" | "high" | "critical";
        context?: Record<string, unknown>;
        intentId?: string;
        reason?: string;
        escalatedTo?: string;
        requestedAction?: string;
        timeoutMinutes?: number;
    }, {
        entityId?: string;
        priority?: "low" | "medium" | "high" | "critical";
        context?: Record<string, unknown>;
        intentId?: string;
        reason?: string;
        escalatedTo?: string;
        requestedAction?: string;
        timeoutMinutes?: number;
    }>;
    resolve: z.ZodObject<{
        resolution: z.ZodEnum<["approved", "rejected"]>;
        notes: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        resolution?: "approved" | "rejected";
        notes?: string;
    }, {
        resolution?: "approved" | "rejected";
        notes?: string;
    }>;
    cancel: z.ZodObject<{
        reason: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        reason?: string;
    }, {
        reason?: string;
    }>;
    query: z.ZodObject<{
        status: z.ZodOptional<z.ZodEnum<["pending", "approved", "rejected", "timeout", "cancelled"]>>;
        intentId: z.ZodOptional<z.ZodString>;
        entityId: z.ZodOptional<z.ZodString>;
        escalatedTo: z.ZodOptional<z.ZodString>;
        limit: z.ZodOptional<z.ZodNumber>;
        offset: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        status?: "timeout" | "pending" | "approved" | "cancelled" | "rejected";
        limit?: number;
        offset?: number;
        entityId?: string;
        intentId?: string;
        escalatedTo?: string;
    }, {
        status?: "timeout" | "pending" | "approved" | "cancelled" | "rejected";
        limit?: number;
        offset?: number;
        entityId?: string;
        intentId?: string;
        escalatedTo?: string;
    }>;
    idParam: z.ZodObject<{
        id: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        id?: string;
    }, {
        id?: string;
    }>;
};
/**
 * Intent schemas
 */
export declare const intentSchemas: {
    submit: z.ZodObject<{
        entityId: z.ZodString;
        goal: z.ZodString;
        context: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        priority: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        entityId?: string;
        goal?: string;
        priority?: number;
        context?: Record<string, unknown>;
        metadata?: Record<string, unknown>;
    }, {
        entityId?: string;
        goal?: string;
        priority?: number;
        context?: Record<string, unknown>;
        metadata?: Record<string, unknown>;
    }>;
    query: z.ZodObject<{
        entityId: z.ZodOptional<z.ZodString>;
        status: z.ZodOptional<z.ZodEnum<["pending", "evaluating", "approved", "denied", "escalated", "executing", "completed", "failed"]>>;
        limit: z.ZodOptional<z.ZodNumber>;
        offset: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        status?: "failed" | "pending" | "evaluating" | "approved" | "denied" | "escalated" | "executing" | "completed";
        limit?: number;
        offset?: number;
        entityId?: string;
    }, {
        status?: "failed" | "pending" | "evaluating" | "approved" | "denied" | "escalated" | "executing" | "completed";
        limit?: number;
        offset?: number;
        entityId?: string;
    }>;
    idParam: z.ZodObject<{
        id: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        id?: string;
    }, {
        id?: string;
    }>;
};
/**
 * Trust schemas
 */
export declare const trustSchemas: {
    signal: z.ZodObject<{
        entityId: z.ZodString;
        type: z.ZodString;
        value: z.ZodNumber;
        weight: z.ZodOptional<z.ZodNumber>;
        source: z.ZodOptional<z.ZodString>;
        metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        value?: number;
        type?: string;
        entityId?: string;
        source?: string;
        metadata?: Record<string, unknown>;
        weight?: number;
    }, {
        value?: number;
        type?: string;
        entityId?: string;
        source?: string;
        metadata?: Record<string, unknown>;
        weight?: number;
    }>;
    entityIdParam: z.ZodObject<{
        entityId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        entityId?: string;
    }, {
        entityId?: string;
    }>;
};
/**
 * Proof schemas
 */
export declare const proofSchemas: {
    query: z.ZodObject<{
        entityId: z.ZodOptional<z.ZodString>;
        intentId: z.ZodOptional<z.ZodString>;
        startDate: z.ZodOptional<z.ZodString>;
        endDate: z.ZodOptional<z.ZodString>;
        limit: z.ZodOptional<z.ZodNumber>;
        offset: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        limit?: number;
        offset?: number;
        entityId?: string;
        intentId?: string;
        endDate?: string;
        startDate?: string;
    }, {
        limit?: number;
        offset?: number;
        entityId?: string;
        intentId?: string;
        endDate?: string;
        startDate?: string;
    }>;
    idParam: z.ZodObject<{
        id: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        id?: string;
    }, {
        id?: string;
    }>;
};
/**
 * Common pagination schema
 */
export declare const paginationSchema: z.ZodObject<{
    limit: z.ZodDefault<z.ZodNumber>;
    offset: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    limit?: number;
    offset?: number;
}, {
    limit?: number;
    offset?: number;
}>;
//# sourceMappingURL=validation.d.ts.map