/**
 * Core foundational types used across multiple domains
 * Dependencies: None (foundation layer)
 */
import type { CompletionUsage } from "openai/resources";
/**
 * Logger interface definition
 * Compatible with OpenAI package Logger interface
 */
export interface Logger {
    error: (...args: unknown[]) => void;
    warn: (...args: unknown[]) => void;
    info: (...args: unknown[]) => void;
    debug: (...args: unknown[]) => void;
}
/**
 * Usage statistics for AI operations
 * Extends OpenAI's Usage format with additional tracking fields
 */
export interface Usage {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
    model?: string;
    operation_type?: "agent" | "compress";
    cache_read_input_tokens?: number;
    cache_creation_input_tokens?: number;
    cache_creation?: {
        ephemeral_5m_input_tokens: number;
        ephemeral_1h_input_tokens: number;
    };
}
/**
 * Enhanced usage metrics including Claude cache information
 * Backward compatible with standard OpenAI CompletionUsage
 */
export interface ClaudeUsage extends CompletionUsage {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
    /**
     * Number of tokens read from existing cache
     * Indicates cost savings from cache hits
     */
    cache_read_input_tokens?: number;
    /**
     * Number of tokens used to create new cache entries
     * Investment in future cache hits
     */
    cache_creation_input_tokens?: number;
    /**
     * Detailed breakdown of cache creation by duration
     */
    cache_creation?: {
        /** Tokens cached for 5 minute duration */
        ephemeral_5m_input_tokens: number;
        /** Tokens cached for 1 hour duration */
        ephemeral_1h_input_tokens: number;
    };
}
/**
 * Represents a diff change for tool parameter-based diff display
 * Contains the old content and new content for comparison
 */
export interface Change {
    /** The original content (empty string for additions) */
    oldContent: string;
    /** The new content (empty string for deletions) */
    newContent: string;
    /** Optional starting line number in the original file */
    startLineNumber?: number;
}
export declare class ConfigurationError extends Error {
    readonly field: string;
    readonly provided?: unknown | undefined;
    constructor(message: string, field: string, provided?: unknown | undefined);
}
export declare const CONFIG_ERRORS: {
    readonly MISSING_BASE_URL: "Gateway configuration requires baseURL. Provide via constructor or WAVE_BASE_URL environment variable.";
    readonly MISSING_MODEL: "Agent configuration requires model. Provide via constructor or WAVE_MODEL environment variable.";
    readonly MISSING_FAST_MODEL: "Agent configuration requires fastModel. Provide via constructor or WAVE_FAST_MODEL environment variable.";
    readonly INVALID_WAVE_MAX_INPUT_TOKENS: "Token limit must be a positive integer.";
    readonly EMPTY_BASE_URL: "Base URL cannot be empty string.";
};
//# sourceMappingURL=core.d.ts.map