import { z } from 'zod';
import { RequestContext } from '../utils/requestContext.js';
export declare const PerplexityChatCompletionRequestSchema: z.ZodObject<{
    model: z.ZodString;
    messages: z.ZodArray<z.ZodObject<{
        role: z.ZodEnum<["system", "user", "assistant"]>;
        content: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        role: "user" | "assistant" | "system";
        content: string;
    }, {
        role: "user" | "assistant" | "system";
        content: string;
    }>, "many">;
    max_tokens: z.ZodOptional<z.ZodNumber>;
    temperature: z.ZodOptional<z.ZodNumber>;
    top_p: z.ZodOptional<z.ZodNumber>;
    search_domain_filter: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    return_images: z.ZodOptional<z.ZodBoolean>;
    return_related_questions: z.ZodOptional<z.ZodBoolean>;
    search_recency_filter: z.ZodOptional<z.ZodString>;
    top_k: z.ZodOptional<z.ZodNumber>;
    stream: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    presence_penalty: z.ZodOptional<z.ZodNumber>;
    frequency_penalty: z.ZodOptional<z.ZodNumber>;
    response_format: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
    web_search_options: z.ZodOptional<z.ZodObject<{
        search_context_size: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
    }, "strip", z.ZodTypeAny, {
        search_context_size?: "high" | "low" | "medium" | undefined;
    }, {
        search_context_size?: "high" | "low" | "medium" | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    model: string;
    messages: {
        role: "user" | "assistant" | "system";
        content: string;
    }[];
    stream: boolean;
    max_tokens?: number | undefined;
    temperature?: number | undefined;
    top_p?: number | undefined;
    search_domain_filter?: string[] | undefined;
    return_images?: boolean | undefined;
    return_related_questions?: boolean | undefined;
    search_recency_filter?: string | undefined;
    top_k?: number | undefined;
    presence_penalty?: number | undefined;
    frequency_penalty?: number | undefined;
    response_format?: {} | undefined;
    web_search_options?: {
        search_context_size?: "high" | "low" | "medium" | undefined;
    } | undefined;
}, {
    model: string;
    messages: {
        role: "user" | "assistant" | "system";
        content: string;
    }[];
    max_tokens?: number | undefined;
    temperature?: number | undefined;
    top_p?: number | undefined;
    search_domain_filter?: string[] | undefined;
    return_images?: boolean | undefined;
    return_related_questions?: boolean | undefined;
    search_recency_filter?: string | undefined;
    top_k?: number | undefined;
    stream?: boolean | undefined;
    presence_penalty?: number | undefined;
    frequency_penalty?: number | undefined;
    response_format?: {} | undefined;
    web_search_options?: {
        search_context_size?: "high" | "low" | "medium" | undefined;
    } | undefined;
}>;
export type PerplexityChatCompletionRequest = z.infer<typeof PerplexityChatCompletionRequestSchema>;
export interface PerplexityChatCompletionResponse {
    id: string;
    model: string;
    created: number;
    usage: {
        prompt_tokens: number;
        completion_tokens: number;
        total_tokens: number;
    };
    choices: Array<{
        index: number;
        finish_reason: string;
        message: {
            role: 'assistant';
            content: string;
        };
        delta?: {
            role?: 'assistant';
            content?: string;
        };
    }>;
}
declare class PerplexityApiService {
    private axiosInstance;
    private apiKey;
    private readonly apiBaseUrl;
    constructor();
    /**
     * Calls the Perplexity Chat Completions API.
     * @param requestData - The validated request data conforming to PerplexityChatCompletionRequest.
     * @param context - The request context for logging and error tracking.
     * @returns The Perplexity API response.
     * @throws {McpError} If the API call fails or returns an error.
     */
    chatCompletion(requestData: PerplexityChatCompletionRequest, context: RequestContext): Promise<PerplexityChatCompletionResponse>;
}
export declare const perplexityApiService: PerplexityApiService;
export {};
