import { EncryptedData } from '../utils/encryption.js';
export interface EnhancedMCPSession {
    userId: string;
    apiKeyId: string;
    keyPrefix: string;
    userName?: string;
    userEmail?: string;
    permissions: string[];
    usageQuota?: {
        maxRequests: number;
        maxCost: number;
        resetPeriod: string;
    };
    metadata: {
        connectionSource: string;
        clientVersion?: string;
        lastActivity: Date;
    };
}
export interface Session {
    sessionId: string;
    userId: string;
    apiKeyId: string;
    createdAt: Date;
    lastActivity: Date;
    requestQueue: RequestQueue;
    status: 'active' | 'idle' | 'expired';
    encryptedUserData?: EncryptedData | null;
    userProvider?: string;
    userContext?: {
        keyPrefix: string;
        userName?: string | undefined;
        userEmail?: string | undefined;
        permissions: string[];
        connectionSource?: string | undefined;
        clientVersion?: string | undefined;
    };
    balanceInfo?: {
        totalCost: number;
        balanceResult?: any;
    };
}
export interface RequestQueue {
    pending: PendingRequest[];
    processing: ProcessingRequest | null;
    completed: CompletedRequest[];
}
export interface PendingRequest {
    id: string;
    method: string;
    params: any;
    timestamp: Date;
    resolve: (value: any) => void;
    reject: (error: Error) => void;
    timeout?: NodeJS.Timeout;
}
export interface ProcessingRequest {
    id: string;
    method: string;
    params: any;
    startTime: Date;
    timeout?: NodeJS.Timeout;
}
export interface CompletedRequest {
    id: string;
    method: string;
    success: boolean;
    result?: any;
    error?: string;
    processingTime: number;
    completedAt: Date;
}
export interface SessionMetrics {
    sessionId: string;
    userId: string;
    totalRequests: number;
    successfulRequests: number;
    failedRequests: number;
    averageProcessingTime: number;
    totalCost: number;
    createdAt: Date;
    lastActivity: Date;
    status: string;
}
export interface QueueStatus {
    pending: number;
    processing: boolean;
    completed: number;
    averageWaitTime: number;
}
//# sourceMappingURL=session.d.ts.map