/**
 * V2 Multi-Session Registry Types
 * Optimized for stateless HTTP architecture with intelligent resource management
 */
export interface V2PortRange {
    debugPort: number;
    inspectorPort: number;
    websocketPort: number;
}
export interface V2ResourceMetrics {
    browserProcesses: number;
    memoryUsageMB: number;
    cpuUsagePercent: number;
    tempDirectorySize: number;
    lastActivity: Date;
    httpRequestCount: number;
    sessionsActive: number;
}
export interface V2ResourceQuotas {
    maxBrowserInstances: number;
    maxMemoryMB: number;
    maxConcurrentSessions: number;
    maxIdleTimeMinutes: number;
    maxTempDirectorySizeMB: number;
    maxHttpRequestsPerMinute: number;
}
export interface V2ProjectSession {
    id: string;
    workingDirectory?: string;
    targetUrl: string;
    assignedPorts: V2PortRange;
    browserInstanceId: string;
    tempDirectory: string;
    resourceUsage: V2ResourceMetrics;
    quotas: V2ResourceQuotas;
    lastActivity: Date;
    createdAt: Date;
    status: V2SessionStatus;
    metadata: V2ProjectMetadata;
    framework?: string;
    httpSessionId?: string;
    clientConnectionId?: string;
}
export type V2SessionStatus = 'initializing' | 'active' | 'idle' | 'cleanup' | 'error' | 'suspended';
export interface V2ProjectMetadata {
    framework?: string;
    packageJson?: any;
    gitBranch?: string;
    lastCommit?: string;
    dependencies?: string[];
    v2Architecture: boolean;
    httpTransport: boolean;
    projectAwareOptimization?: {
        immediateTools: number;
        lazyTools: number;
        estimatedMemorySavingsMB: number;
    };
}
export interface V2ResourceSummary {
    totalSessions: number;
    activeSessions: number;
    idleSessions: number;
    suspendedSessions: number;
    totalMemoryUsage: number;
    totalBrowserProcesses: number;
    totalHttpRequests: number;
    availableResources: V2ResourceMetrics;
    quotaUtilization: number;
    httpTransportHealth: {
        requestsPerSecond: number;
        averageResponseTime: number;
        errorRate: number;
    };
}
export interface V2OptimizationSuggestion {
    type: 'cleanup' | 'consolidate' | 'upgrade_quota' | 'share_resources' | 'framework_optimization';
    priority: 'low' | 'medium' | 'high' | 'critical';
    sessionId?: string;
    description: string;
    estimatedSavings: Partial<V2ResourceMetrics>;
    actionRequired: boolean;
    v2Specific?: {
        projectAwareOptimization?: boolean;
        httpTransportOptimization?: boolean;
        memoryManagerOptimization?: boolean;
    };
}
export interface V2SessionRegistryConfig {
    basePort: number;
    portRangeSize: number;
    defaultQuotas: V2ResourceQuotas;
    cleanupIntervalMs: number;
    monitoringIntervalMs: number;
    tempBaseDirectory: string;
    enableSharedBrowsers: boolean;
    httpTransportConfig: {
        maxRequestsPerSession: number;
        sessionTimeoutMs: number;
        enableKeepAlive: boolean;
        compressionEnabled: boolean;
    };
    projectAwareConfig: {
        enableFrameworkDetection: boolean;
        enableMemoryOptimization: boolean;
        enableLazyLoading: boolean;
    };
}
export interface V2SessionEvent {
    type: 'created' | 'updated' | 'cleanup' | 'error' | 'resource_warning' | 'framework_detected';
    sessionId: string;
    timestamp: Date;
    data: any;
    severity?: 'info' | 'warning' | 'error' | 'critical';
    v2Specific?: {
        httpTransportEvent?: boolean;
        projectAwareEvent?: boolean;
        memoryManagerEvent?: boolean;
    };
}
export declare const V2_DEFAULT_CONFIG: V2SessionRegistryConfig;
export declare enum V2SessionLifecycle {
    CREATING = "creating",
    FRAMEWORK_DETECTING = "framework_detecting",
    ACTIVE = "active",
    IDLE = "idle",
    SUSPENDED = "suspended",
    CLEANUP = "cleanup",
    TERMINATED = "terminated"
}
export interface V2AllocationStrategy {
    name: string;
    description: string;
    memoryAllocation: 'conservative' | 'balanced' | 'aggressive';
    browserSharing: boolean;
    portAllocation: 'minimal' | 'standard' | 'extended';
    cleanupPolicy: 'aggressive' | 'balanced' | 'lenient';
}
//# sourceMappingURL=v2-session-types.d.ts.map