export interface AuthenticationCredentials {
    userId: string;
    apiKey: string;
    sessionToken?: string;
    permissions: string[];
    expiresAt: number;
}
export interface AuthenticationResult {
    authenticated: boolean;
    authorized: boolean;
    userId?: string;
    permissions?: string[];
    reason?: string;
    sessionToken?: string;
}
export interface OperationContext {
    operation: string;
    resourceId?: string;
    requesterId?: string;
    timestamp: number;
    metadata?: Record<string, any>;
}
export declare class AuthenticationLayer {
    private static readonly SESSION_DURATION;
    private static readonly API_KEY_LENGTH;
    private static readonly SESSION_TOKEN_LENGTH;
    private static readonly MAX_SESSIONS_PER_USER;
    private static readonly AUTH_CACHE_DURATION;
    private static activeSessions;
    private static authCache;
    private static readonly CRITICAL_OPERATIONS;
    private static readonly OPERATION_PERMISSIONS;
    static generateApiKey(): string;
    private static generateSessionToken;
    static createUserCredentials(userId: string, permissions: string[]): Promise<{
        apiKey: string;
        userId: string;
        permissions: string[];
    }>;
    static authenticateUser(userId: string, apiKey: string): Promise<AuthenticationResult>;
    static authenticateSession(sessionToken: string): AuthenticationResult;
    static authorizeOperation(operation: string, userPermissions: string[]): {
        authorized: boolean;
        reason?: string;
    };
    static authenticateAndAuthorize(operation: string, credentials: {
        userId?: string;
        apiKey?: string;
        sessionToken?: string;
    }, context?: OperationContext): Promise<AuthenticationResult>;
    private static logOperation;
    private static cleanupUserSessions;
    static revokeSession(sessionToken: string): Promise<boolean>;
    static revokeUserSessions(userId: string): Promise<number>;
    static getSessionStats(): {
        activeSessions: number;
        uniqueUsers: number;
        expiringSoon: number;
    };
    static initialize(): Promise<void>;
    private static performPeriodicCleanup;
}
