/**
 * Request Validation Utilities
 * Provides Zod schemas and validation helpers for server routes
 */
import { z } from "zod";
import type { ErrorResponse, ServerValidationResult } from "../../types/index.js";
/**
 * Agent execute request schema
 */
export declare const AgentExecuteRequestSchema: z.ZodObject<{
    input: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        text: z.ZodString;
        images: z.ZodOptional<z.ZodArray<z.ZodString>>;
        files: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>]>;
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
    systemPrompt: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxTokens: z.ZodOptional<z.ZodNumber>;
    tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
    stream: z.ZodOptional<z.ZodBoolean>;
    sessionId: z.ZodOptional<z.ZodString>;
    userId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Options a WebSocket `generate`/`stream` message may pass through to
 * `neurolink.generate()`/`.stream()`. Deliberately an allowlist, not the full
 * `GenerateOptions`/`StreamOptions` shape: the raw client JSON is untrusted,
 * and `GenerateOptions.credentials` in particular carries a per-provider
 * `baseURL` (see `NeurolinkCredentials`) that would otherwise let any caller
 * redirect the server's own outbound request to an arbitrary host (SSRF) or
 * swap in their own API key. `z.object` strips unknown keys by default, so
 * `credentials` and anything else outside this list never reaches the SDK
 * call — the same posture `AgentExecuteRequestSchema` already takes for the
 * equivalent HTTP route.
 */
export declare const WebSocketAgentOptionsSchema: z.ZodObject<{
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
    systemPrompt: z.ZodOptional<z.ZodString>;
    temperature: z.ZodOptional<z.ZodNumber>;
    maxTokens: z.ZodOptional<z.ZodNumber>;
    maxSteps: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
/**
 * WebSocket `generate`/`stream` message payload schema.
 */
export declare const WebSocketAgentRequestSchema: z.ZodObject<{
    prompt: z.ZodString;
    options: z.ZodOptional<z.ZodObject<{
        provider: z.ZodOptional<z.ZodString>;
        model: z.ZodOptional<z.ZodString>;
        systemPrompt: z.ZodOptional<z.ZodString>;
        temperature: z.ZodOptional<z.ZodNumber>;
        maxTokens: z.ZodOptional<z.ZodNumber>;
        maxSteps: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Tool execute request schema
 */
export declare const ToolExecuteRequestSchema: z.ZodObject<{
    name: z.ZodString;
    arguments: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    sessionId: z.ZodOptional<z.ZodString>;
    userId: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Tool arguments schema (for direct tool execution)
 */
export declare const ToolArgumentsSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
/**
 * Memory session ID parameter schema
 */
export declare const SessionIdParamSchema: z.ZodObject<{
    sessionId: z.ZodString;
}, z.core.$strip>;
/**
 * MCP server name parameter schema
 */
export declare const ServerNameParamSchema: z.ZodObject<{
    name: z.ZodString;
}, z.core.$strip>;
/**
 * Tool name parameter schema
 */
export declare const ToolNameParamSchema: z.ZodObject<{
    name: z.ZodString;
}, z.core.$strip>;
/**
 * Tool search query schema
 */
export declare const ToolSearchQuerySchema: z.ZodObject<{
    q: z.ZodOptional<z.ZodString>;
    source: z.ZodOptional<z.ZodString>;
    limit: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>, z.ZodNumber>>;
}, z.core.$strip>;
/**
 * Generic ID parameter schema (for session endpoints using :id)
 */
export declare const IdParamSchema: z.ZodObject<{
    id: z.ZodString;
}, z.core.$strip>;
/**
 * Sessions list query schema (with optional pagination and filtering)
 */
export declare const SessionsListQuerySchema: z.ZodObject<{
    userId: z.ZodOptional<z.ZodString>;
    limit: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>, z.ZodNumber>>;
    offset: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>, z.ZodNumber>>;
}, z.core.$strip>;
/**
 * Session messages query schema (for pagination)
 */
export declare const SessionMessagesQuerySchema: z.ZodObject<{
    limit: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>, z.ZodNumber>>;
    offset: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>, z.ZodNumber>>;
}, z.core.$strip>;
/**
 * Embed request schema (single text)
 */
export declare const EmbedRequestSchema: z.ZodObject<{
    text: z.ZodString;
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Embed many request schema (batch texts)
 */
export declare const EmbedManyRequestSchema: z.ZodObject<{
    texts: z.ZodArray<z.ZodString>;
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Skill create request schema
 */
export declare const SkillCreateRequestSchema: z.ZodObject<{
    name: z.ZodString;
    displayName: z.ZodOptional<z.ZodString>;
    description: z.ZodString;
    instructions: z.ZodString;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    scope: z.ZodOptional<z.ZodEnum<{
        global: "global";
        scoped: "scoped";
    }>>;
    scopeIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
    requestedBy: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Skill update request schema — all fields optional (patch semantics)
 */
export declare const SkillUpdateRequestSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    displayName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    description: z.ZodOptional<z.ZodString>;
    instructions: z.ZodOptional<z.ZodString>;
    tags: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
    scope: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
        global: "global";
        scoped: "scoped";
    }>>>;
    scopeIds: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
    requestedBy: z.ZodOptional<z.ZodOptional<z.ZodString>>;
}, z.core.$strip>;
/**
 * One dictionary entry for transcription: correct spelling, mis-hearings, meaning.
 */
export declare const TranscribeDictionaryEntrySchema: z.ZodObject<{
    term: z.ZodString;
    heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
    meaning: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * Engine and correction settings shared by `POST /agent/transcribe`, the
 * OpenAI-compatible route's extension fields and the transcribe WebSocket's
 * config frame. Unknown keys (including `credentials`) are stripped: a caller
 * cannot swap in its own key or point an engine at another host.
 */
export declare const TranscribeConfigSchema: z.ZodObject<{
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
    language: z.ZodOptional<z.ZodString>;
    prompt: z.ZodOptional<z.ZodString>;
    dictionary: z.ZodOptional<z.ZodArray<z.ZodObject<{
        term: z.ZodString;
        heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
        meaning: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    correction: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        guard: z.ZodOptional<z.ZodEnum<{
            decide: "decide";
            none: "none";
        }>>;
        decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
        rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
            provider: z.ZodOptional<z.ZodString>;
            model: z.ZodOptional<z.ZodString>;
            timeoutMs: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>]>>;
        transliterate: z.ZodOptional<z.ZodEnum<{
            native: "native";
            latin: "latin";
        }>>;
        punctuate: z.ZodOptional<z.ZodBoolean>;
        secondOpinion: z.ZodOptional<z.ZodObject<{
            provider: z.ZodString;
            model: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        context: z.ZodOptional<z.ZodString>;
        maxDropRatio: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
    fallback: z.ZodOptional<z.ZodObject<{
        provider: z.ZodString;
        model: z.ZodOptional<z.ZodString>;
        when: z.ZodOptional<z.ZodArray<z.ZodEnum<{
            error: "error";
            empty: "empty";
            unsure: "unsure";
        }>>>;
    }, z.core.$strip>>;
    diarization: z.ZodOptional<z.ZodBoolean>;
    wordTimestamps: z.ZodOptional<z.ZodBoolean>;
    timeoutMs: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
/**
 * `POST /agent/transcribe` body: the config plus exactly one audio source.
 */
export declare const TranscribeRequestSchema: z.ZodObject<{
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
    language: z.ZodOptional<z.ZodString>;
    prompt: z.ZodOptional<z.ZodString>;
    dictionary: z.ZodOptional<z.ZodArray<z.ZodObject<{
        term: z.ZodString;
        heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
        meaning: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    correction: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        guard: z.ZodOptional<z.ZodEnum<{
            decide: "decide";
            none: "none";
        }>>;
        decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
        rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
            provider: z.ZodOptional<z.ZodString>;
            model: z.ZodOptional<z.ZodString>;
            timeoutMs: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>]>>;
        transliterate: z.ZodOptional<z.ZodEnum<{
            native: "native";
            latin: "latin";
        }>>;
        punctuate: z.ZodOptional<z.ZodBoolean>;
        secondOpinion: z.ZodOptional<z.ZodObject<{
            provider: z.ZodString;
            model: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        context: z.ZodOptional<z.ZodString>;
        maxDropRatio: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
    fallback: z.ZodOptional<z.ZodObject<{
        provider: z.ZodString;
        model: z.ZodOptional<z.ZodString>;
        when: z.ZodOptional<z.ZodArray<z.ZodEnum<{
            error: "error";
            empty: "empty";
            unsure: "unsure";
        }>>>;
    }, z.core.$strip>>;
    diarization: z.ZodOptional<z.ZodBoolean>;
    wordTimestamps: z.ZodOptional<z.ZodBoolean>;
    timeoutMs: z.ZodOptional<z.ZodNumber>;
    audio: z.ZodOptional<z.ZodString>;
    audioUrl: z.ZodOptional<z.ZodString>;
    audioPath: z.ZodOptional<z.ZodString>;
    format: z.ZodOptional<z.ZodEnum<{
        mp3: "mp3";
        wav: "wav";
        ogg: "ogg";
        opus: "opus";
        m4a: "m4a";
        flac: "flac";
        webm: "webm";
        mp4: "mp4";
        mpeg: "mpeg";
        mpga: "mpga";
        pcm16: "pcm16";
    }>>;
}, z.core.$strip>;
/**
 * The transcribe WebSocket's first text frame: the config plus streaming tuning.
 */
export declare const TranscribeStreamConfigSchema: z.ZodObject<{
    provider: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
    language: z.ZodOptional<z.ZodString>;
    prompt: z.ZodOptional<z.ZodString>;
    dictionary: z.ZodOptional<z.ZodArray<z.ZodObject<{
        term: z.ZodString;
        heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
        meaning: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    correction: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        guard: z.ZodOptional<z.ZodEnum<{
            decide: "decide";
            none: "none";
        }>>;
        decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
        rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
            provider: z.ZodOptional<z.ZodString>;
            model: z.ZodOptional<z.ZodString>;
            timeoutMs: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>]>>;
        transliterate: z.ZodOptional<z.ZodEnum<{
            native: "native";
            latin: "latin";
        }>>;
        punctuate: z.ZodOptional<z.ZodBoolean>;
        secondOpinion: z.ZodOptional<z.ZodObject<{
            provider: z.ZodString;
            model: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        context: z.ZodOptional<z.ZodString>;
        maxDropRatio: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
    fallback: z.ZodOptional<z.ZodObject<{
        provider: z.ZodString;
        model: z.ZodOptional<z.ZodString>;
        when: z.ZodOptional<z.ZodArray<z.ZodEnum<{
            error: "error";
            empty: "empty";
            unsure: "unsure";
        }>>>;
    }, z.core.$strip>>;
    diarization: z.ZodOptional<z.ZodBoolean>;
    wordTimestamps: z.ZodOptional<z.ZodBoolean>;
    timeoutMs: z.ZodOptional<z.ZodNumber>;
    streaming: z.ZodOptional<z.ZodObject<{
        mode: z.ZodOptional<z.ZodEnum<{
            auto: "auto";
            native: "native";
            chunked: "chunked";
        }>>;
        sampleRate: z.ZodOptional<z.ZodNumber>;
        endSilenceMs: z.ZodOptional<z.ZodNumber>;
        intervalMs: z.ZodOptional<z.ZodNumber>;
        softCutSeconds: z.ZodOptional<z.ZodNumber>;
        maxUtteranceSeconds: z.ZodOptional<z.ZodNumber>;
        onsetRms: z.ZodOptional<z.ZodNumber>;
        prerollMs: z.ZodOptional<z.ZodNumber>;
        minSpeechMs: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Type guard to check if a value is an ErrorResponse
 */
export declare function isErrorResponse(value: unknown): value is ErrorResponse;
/**
 * Create a standardized error response
 */
export declare function createErrorResponse(code: string, message: string, details?: unknown, requestId?: string, httpStatus?: number): ErrorResponse;
/**
 * Validate request body against a Zod schema
 */
export declare function validateRequest<T>(schema: z.ZodSchema<T>, data: unknown, requestId?: string): ServerValidationResult<T>;
/**
 * Validate query parameters against a Zod schema
 */
export declare function validateQuery<T>(schema: z.ZodSchema<T>, query: Record<string, string>, requestId?: string): ServerValidationResult<T>;
/**
 * Validate path parameters against a Zod schema
 */
export declare function validateParams<T>(schema: z.ZodSchema<T>, params: Record<string, string>, requestId?: string): ServerValidationResult<T>;
