import { Team } from '../../teams/entities/team.entity';
import { Agency } from '../../teams/entities/agency.entity';
export declare enum Role {
    EMPLOYEE = "employee",
    TEAM_LEAD = "team_lead",
    AGENCY_MANAGER = "agency_manager",
    DIRECTOR = "director",
    ADMIN = "admin"
}
export declare enum WorkSchedule {
    FOUR_DAYS = "4d",
    FIVE_DAYS = "5d",
    SIX_DAYS = "6d"
}
export declare class User {
    id: number;
    matricule: string;
    first_name: string;
    last_name: string;
    email: string;
    password_hash: string;
    role: Role;
    roles: Role[];
    team: Team | null;
    teams: Team[];
    agency: Agency | null;
    work_schedule: WorkSchedule;
    monthly_accrual_rate: number;
    hired_at: Date;
    is_active: boolean;
    avatar_url: string;
    reset_token: string | null;
    reset_token_expires_at: Date | null;
    last_seen: Date | null;
    created_at: Date;
    updated_at: Date;
}
export declare function getEffectiveRoles(user: User): Role[];
export declare function userHasAnyRole(user: User, ...roleNames: Role[]): boolean;
export declare function getEffectiveTeams(user: User): Team[];
export declare function userBelongsToAnyTeam(user: User, ...teamIds: number[]): boolean;
export declare function normalizeUser(user: User): void;
