import { GroupEntity, UserEntity } from '@backstage/catalog-model';
import { MicrosoftGraphClient } from './client';
import { GroupTransformer, OrganizationTransformer, UserTransformer } from './types';
import { LoggerService } from '@backstage/backend-plugin-api';
export declare function readMicrosoftGraphUsers(client: MicrosoftGraphClient, options: {
    queryMode?: 'basic' | 'advanced';
    userExpand?: string;
    userFilter?: string;
    userSelect?: string[];
    userPath?: string;
    loadUserPhotos?: boolean;
    transformer?: UserTransformer;
    logger: LoggerService;
}): Promise<{
    users: UserEntity[];
}>;
export declare function readMicrosoftGraphUsersInGroups(client: MicrosoftGraphClient, options: {
    queryMode?: 'basic' | 'advanced';
    userExpand?: string;
    userFilter?: string;
    userSelect?: string[];
    loadUserPhotos?: boolean;
    userGroupMemberSearch?: string;
    userGroupMemberFilter?: string;
    userGroupMemberPath?: string;
    groupExpand?: string;
    transformer?: UserTransformer;
    logger: LoggerService;
}): Promise<{
    users: UserEntity[];
}>;
export declare function readMicrosoftGraphOrganization(client: MicrosoftGraphClient, tenantId: string, options?: {
    transformer?: OrganizationTransformer;
}): Promise<{
    rootGroup?: GroupEntity;
}>;
export declare function readMicrosoftGraphGroups(client: MicrosoftGraphClient, tenantId: string, options?: {
    queryMode?: 'basic' | 'advanced';
    groupExpand?: string;
    groupFilter?: string;
    groupSearch?: string;
    groupSelect?: string[];
    groupPath?: string;
    groupIncludeSubGroups?: boolean;
    groupTransformer?: GroupTransformer;
    organizationTransformer?: OrganizationTransformer;
}): Promise<{
    groups: GroupEntity[];
    rootGroup: GroupEntity | undefined;
    groupMember: Map<string, Set<string>>;
    groupMemberOf: Map<string, Set<string>>;
}>;
export declare function resolveRelations(rootGroup: GroupEntity | undefined, groups: GroupEntity[], users: UserEntity[], groupMember: Map<string, Set<string>>, groupMemberOf: Map<string, Set<string>>): void;
/**
 * Reads an entire org as Group and User entities.
 *
 * @public
 */
export declare function readMicrosoftGraphOrg(client: MicrosoftGraphClient, tenantId: string, options: {
    userExpand?: string;
    userFilter?: string;
    userSelect?: string[];
    userPath?: string;
    loadUserPhotos?: boolean;
    userGroupMemberSearch?: string;
    userGroupMemberFilter?: string;
    userGroupMemberPath?: string;
    groupExpand?: string;
    groupSearch?: string;
    groupFilter?: string;
    groupSelect?: string[];
    groupPath?: string;
    groupIncludeSubGroups?: boolean;
    queryMode?: 'basic' | 'advanced';
    userTransformer?: UserTransformer;
    groupTransformer?: GroupTransformer;
    organizationTransformer?: OrganizationTransformer;
    logger: LoggerService;
}): Promise<{
    users: UserEntity[];
    groups: GroupEntity[];
}>;
