import mongoose, { Document } from 'mongoose';
export interface CompareSessionDocument extends Document {
    _id: string;
    userId: string;
    apiKeyId: string;
    request: {
        modelIds: string[];
        message: string;
        temperature?: number;
        maxTokens?: number;
        enableWebSearch?: boolean;
    };
    modelInteractions: [
        {
            modelId: string;
            provider: string;
            inputTokens: number;
            outputTokens: number;
            thinkingTokens: number;
            totalTokens: number;
            cost: number;
            costBreakdown: {
                inputCost: number;
                outputCost: number;
                thinkingCost: number;
            };
            latency: number;
            success: boolean;
            errorMessage?: string;
            fullResponse: string;
            responsePreview?: string;
            timestamp?: string;
            requestMetadata?: mongoose.Schema.Types.Mixed;
        }
    ];
    aggregatedStats: {
        totalInputTokens: number;
        totalOutputTokens: number;
        totalThinkingTokens: number;
        totalTokens: number;
        averageLatency: number;
        successfulModels: number;
        failedModels: number;
    };
    costBreakdown: {
        totalInputCost: number;
        totalOutputCost: number;
        totalThinkingCost: number;
    };
    totalCost: number;
    duration: number;
    status: 'processing' | 'success' | 'partial' | 'error' | 'timeout';
    balanceUpdate: {
        attempted: boolean;
        success: boolean;
        errorMessage?: string;
        transactionId?: string;
        balanceAfter?: number;
    };
    clientMetadata: {
        ipAddress?: string;
        userAgent?: string;
        requestId?: string;
    };
    createdAt: Date;
    updatedAt: Date;
}
export declare function createCompareSessionModel(connection: mongoose.Connection): mongoose.Model<CompareSessionDocument, {}, {}, {}, mongoose.Document<unknown, {}, CompareSessionDocument, {}> & CompareSessionDocument & Required<{
    _id: string;
}> & {
    __v: number;
}, any>;
//# sourceMappingURL=CompareSession.d.ts.map