import type { Directory, IGroups, Group, IRequestHandler, DirectorySyncRequest, EventCallback, IDirectoryProvider } from '../../typings';
interface SyncGroupsParams {
    groupController: IGroups;
    provider: IDirectoryProvider;
    requestHandler: IRequestHandler;
    callback: EventCallback;
    directory: Directory;
}
type HandleRequestParams = Pick<DirectorySyncRequest, 'method' | 'body' | 'resourceId'>;
export declare class SyncGroups {
    private groupController;
    private provider;
    private requestHandler;
    private callback;
    private directory;
    constructor({ directory, groupController, callback, requestHandler, provider }: SyncGroupsParams);
    sync(): Promise<void>;
    getAllExistingGroups(): Promise<Group[]>;
    createGroup(group: Group): Promise<void>;
    updateGroup(group: Group): Promise<void>;
    deleteGroups(groups: Group[]): Promise<void>;
    handleRequest(payload: HandleRequestParams): Promise<void>;
}
export {};
