import { OpenRouterClient } from './openrouter-client';
import { SupportedModel, OpenRouterMessage } from './types';
/**
 * Configuration for completion requests
 */
export interface CompletionConfig {
    model?: SupportedModel;
    maxTokens?: number;
    temperature?: number;
    topP?: number;
    stop?: string[];
    stream?: boolean;
}
/**
 * Result of a completion request
 */
export interface CompletionResult {
    text: string;
    model: string;
    usage: {
        promptTokens: number;
        completionTokens: number;
        totalTokens: number;
    };
    finishReason: string;
}
/**
 * Streaming completion chunk
 */
export interface StreamingChunk {
    content: string;
    isComplete: boolean;
    model?: string;
}
/**
 * Callback for streaming responses
 */
export type StreamingCallback = (chunk: StreamingChunk) => void;
/**
 * OpenRouter completion service for generating text responses
 */
export declare class OpenRouterCompletion {
    private client;
    constructor(client: OpenRouterClient);
    /**
     * Generate a completion for a single prompt
     */
    complete(prompt: string, config?: CompletionConfig): Promise<CompletionResult>;
    /**
     * Generate a streaming completion for a single prompt
     */
    completeStream(prompt: string, callback: StreamingCallback, config?: CompletionConfig): Promise<void>;
    /**
     * Generate a completion for a chat conversation
     */
    chat(messages: OpenRouterMessage[], config?: CompletionConfig): Promise<CompletionResult>;
    /**
     * Generate a streaming completion for a chat conversation
     */
    chatStream(messages: OpenRouterMessage[], callback: StreamingCallback, config?: CompletionConfig): Promise<void>;
    /**
     * Generate a completion with system message
     */
    completeWithSystem(systemMessage: string, userPrompt: string, config?: CompletionConfig): Promise<CompletionResult>;
    /**
     * Collect streaming response into a complete result
     */
    completeStreamCollected(prompt: string, config?: CompletionConfig): Promise<{
        text: string;
        chunks: string[];
    }>;
    /**
     * Test a prompt against a model and return the response
     */
    testPrompt(prompt: string, model: SupportedModel, options?: {
        maxTokens?: number;
        temperature?: number;
    }): Promise<CompletionResult>;
    /**
     * Validate that a prompt works with a specific model
     */
    validatePrompt(prompt: string, model: SupportedModel): Promise<{
        isValid: boolean;
        error?: string;
        result?: CompletionResult;
    }>;
    /**
     * Create a completion service from API key
     */
    static fromApiKey(apiKey: string): OpenRouterCompletion;
    /**
     * Create a completion service from environment variables
     */
    static fromEnv(): OpenRouterCompletion;
}
//# sourceMappingURL=openrouter-completion.d.ts.map