import { OnModuleInit } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
export interface AdUserData {
    mail: string;
    displayName: string;
    givenName?: string;
    sn?: string;
    cn: string;
    department?: string;
    title?: string;
    company?: string;
    physicalDeliveryOfficeName?: string;
    employeeID?: string;
    employeeNumber?: string;
    sAMAccountName: string;
    userPrincipalName: string;
    manager?: string;
    directReports?: string[];
    memberOf?: string[];
    proxyAddresses?: string[];
    distinguishedName: string;
    whenCreated?: string;
    whenChanged?: string;
    userAccountControl?: number;
    accountExpires?: string;
}
export declare class AdDirectService implements OnModuleInit {
    private configService;
    private readonly logger;
    private client;
    private enabled;
    private readonly url;
    private readonly baseDN;
    private readonly bindDN;
    private readonly bindPassword;
    private readonly usersDN;
    private readonly tlsEnabled;
    private readonly tlsRejectUnauthorized;
    private readonly fieldMapping;
    constructor(configService: ConfigService);
    onModuleInit(): Promise<void>;
    private connect;
    private ensureConnection;
    searchUsers(filter?: string, attributes?: string[]): Promise<AdUserData[]>;
    getAllActiveUsers(): Promise<AdUserData[]>;
    getUsersByDepartment(department: string): Promise<AdUserData[]>;
    getUsersByEmailDomain(domain: string): Promise<AdUserData[]>;
    getUsersByCustomFilter(customFilter: string): Promise<AdUserData[]>;
    getUserByUsername(username: string): Promise<AdUserData | null>;
    private normalizeAdEntry;
    private extractPrimaryEmail;
    private escapeLdapFilter;
    extractGroupNames(memberOf: string[]): string[];
    isMemberOf(memberOf: string[], groupName: string): boolean;
    healthCheck(): Promise<boolean>;
    disconnect(): Promise<void>;
    isEnabled(): boolean;
}
