import type { LogProvider } from '../../logger.js';
import User from '../../types/user.js';
import type { ICreateUser, IUserLookup, IUserStore, IUserUpdateFields } from '../../types/stores/user-store.js';
import type { Db } from '../../db/db.js';
import type { Knex } from 'knex';
export declare const USERS_TABLE = "users";
export declare const USER_COLUMNS_PUBLIC: string[];
export declare class UserStore implements IUserStore {
    private db;
    constructor(db: Db, _getLogger: LogProvider);
    getPasswordsPreviouslyUsed(userId: number): Promise<string[]>;
    deletePasswordsUsedMoreThanNTimesAgo(userId: number, keepLastN: number): Promise<void>;
    update(id: number, fields: IUserUpdateFields): Promise<User>;
    insert(user: ICreateUser): Promise<User>;
    upsert(user: ICreateUser): Promise<User>;
    buildSelectUser(q: IUserLookup): Knex.QueryBuilder<User>;
    activeAll(): Knex.QueryBuilder<User>;
    activeUsers(): Knex.QueryBuilder<User>;
    hasUser(idQuery: IUserLookup): Promise<number | undefined>;
    getAll(params?: {
        limit: number;
        offset: number;
        sortBy?: string;
        sortOrder?: 'asc' | 'desc';
    }): Promise<User[]>;
    search(query: string): Promise<User[]>;
    getAllWithId(userIdList: number[]): Promise<User[]>;
    getByQuery(idQuery: IUserLookup): Promise<User>;
    delete(id: number): Promise<void>;
    getPasswordHash(userId: number): Promise<string>;
    setPasswordHash(userId: number, passwordHash: string, disallowNPreviousPasswords: number): Promise<void>;
    incLoginAttempts(user: User): Promise<void>;
    successfullyLogin(user: User): Promise<number>;
    deleteAll(): Promise<void>;
    deleteScimUsers(): Promise<User[]>;
    count(): Promise<number>;
    countServiceAccounts(): Promise<number>;
    countRecentlyDeleted(): Promise<number>;
    destroy(): void;
    exists(id: number): Promise<boolean>;
    get(id: number): Promise<User>;
    getFirstUserDate(): Promise<Date | null>;
}
//# sourceMappingURL=user-store.d.ts.map