export interface User {
    id: number;
    username: string;
    password: string;
    role: string;
    permissions: string[];
    created_at: number;
    updated_at: number;
    is_active: boolean;
    email?: string;
}
export interface Session {
    token: string;
    user_id: number;
    created_at: number;
    expires_at: number;
    is_active: boolean;
}
export declare class UserStorage {
    private db;
    private dbPath;
    constructor(dataDir?: string);
    initialize(): Promise<void>;
    private createTables;
    private createDefaultAdmin;
    hashPassword(password: string): string;
    private verifyPassword;
    generateToken(userId: number): string;
    createUser(userData: Omit<User, 'id'>): Promise<number>;
    findUserByUsername(username: string): Promise<User | null>;
    findUserByUsernameIncludeInactive(username: string): Promise<User | null>;
    findUserById(id: number): Promise<User | null>;
    authenticateUser(username: string, password: string): Promise<User | null>;
    createSession(userId: number, tokenLifetime?: number): Promise<string>;
    validateSession(token: string): Promise<User | null>;
    revokeSession(token: string): Promise<boolean>;
    revokeAllUserSessions(userId: number): Promise<boolean>;
    cleanupExpiredSessions(): Promise<number>;
    private rowToUser;
    getUserInfo(user: User): {
        id: number;
        username: string;
        role: string;
        permissions: string[];
        created_at: number;
        updated_at: number;
        is_active: boolean;
        email?: string;
    };
    getAllUsers(): Promise<User[]>;
    updateUser(id: number, userData: Partial<Omit<User, 'id' | 'created_at'>>): Promise<boolean>;
    softDeleteUser(id: number): Promise<boolean>;
    hardDeleteUser(id: number): Promise<boolean>;
    deleteInactiveUsers(): Promise<number>;
    isUsernameExists(username: string, excludeId?: number): Promise<boolean>;
    getUsersWithPermission(permission: string): Promise<User[]>;
    private executeSql;
    private runSql;
    private getSql;
    close(): Promise<void>;
}
//# sourceMappingURL=UserStorage.d.ts.map