import { NextFunction, Request, Response } from 'express';
import { Database } from './database';
export interface AuthenticatedUser {
    id: number;
    login: string;
    name: string;
    email: string;
    avatarUrl: string;
    installationId?: number;
}
export interface AuthenticatedRequest extends Request {
    user?: AuthenticatedUser;
}
export declare class AuthManager {
    private clientId;
    private clientSecret;
    private database;
    constructor(clientId: string, clientSecret: string, database: Database);
    getAuthorizationUrl(state?: string): string;
    handleCallback(code: string, state?: string): Promise<AuthenticatedUser>;
    authenticateMiddleware(req: AuthenticatedRequest, res: Response, next: NextFunction): Promise<void>;
    requireInstallation(req: AuthenticatedRequest, res: Response, next: NextFunction): Promise<void>;
    logout(userId: number): Promise<void>;
    getInstallationRepositories(installationId: number): Promise<any[]>;
}
export declare class SessionManager {
    private sessions;
    generateSessionToken(): string;
    createSession(user: AuthenticatedUser): string;
    getSession(token: string): AuthenticatedUser | undefined;
    deleteSession(token: string): void;
    cleanup(): void;
}
//# sourceMappingURL=auth.d.ts.map