import type { AccountTypes } from '../events/index.js';
type AccountType = (typeof AccountTypes)[number];
export declare const SeatTypes: readonly ["Regular", "ReadOnly"];
type SeatType = (typeof SeatTypes)[number];
export interface UserData {
    id: number;
    name?: string;
    username?: string;
    email?: string;
    imageUrl?: string;
    seenAt?: Date;
    loginAttempts?: number;
    createdAt?: Date;
    isService?: boolean;
    scimId?: string;
    seatType?: SeatType;
    companyRole?: string;
    productUpdatesEmailConsent?: boolean;
}
export interface IUser {
    id: number;
    name?: string;
    username?: string;
    email?: string;
    inviteLink?: string;
    seenAt?: Date;
    createdAt?: Date;
    permissions: string[];
    loginAttempts?: number;
    isAPI: boolean;
    imageUrl?: string;
    accountType?: AccountType;
    scimId?: string;
    seatType?: SeatType;
    companyRole?: string;
    productUpdatesEmailConsent?: boolean;
    shouldSetPassword?: boolean;
    deletedSessions?: number;
    activeSessions?: number;
}
export type MinimalUser = Pick<IUser, 'id' | 'name' | 'username' | 'email' | 'imageUrl'>;
export interface IProjectUser extends IUser {
    addedAt: Date;
}
export interface IAuditUser {
    id: number;
    username: string;
    ip: string;
}
export declare class User implements IUser {
    isAPI: boolean;
    id: number;
    name: string;
    username: string;
    email: string;
    permissions: string[];
    imageUrl: string;
    seenAt?: Date;
    loginAttempts?: number;
    createdAt?: Date;
    accountType?: AccountType;
    scimId?: string;
    seatType?: SeatType;
    companyRole?: string;
    productUpdatesEmailConsent?: boolean;
    constructor({ id, name, email, username, imageUrl, seenAt, loginAttempts, createdAt, isService, scimId, seatType, companyRole, productUpdatesEmailConsent, }: UserData);
    generateImageUrl(): string;
}
export interface IUserWithRootRole extends IUser {
    rootRole: number;
}
export default User;
//# sourceMappingURL=user.d.ts.map