import { GraphGroup, GraphMembership } from "azure-devops-node-api/interfaces/GraphInterfaces";
import { IAzDevClient } from "../common/iazdevclient";
import { IPermission, PermissionType } from "../readers/iconfigurationreader";
import { IGraphIdentity, IGroupProvider, IIdentityPermission, INamespace, ISecurityHelper, ISecurityIdentity, ISecurityPermission, ISubjectPermission } from "./isecurityhelper";
import { ISecurityMapper } from "../mappers/isecuritymapper";
import { ICommonHelper } from "./icommonhelper";
import { ILogger } from "../loggers/ilogger";
export declare class SecurityHelper implements ISecurityHelper {
    private debugLogger;
    private azdevClient;
    private commonHelper;
    private mapper;
    constructor(azdevClient: IAzDevClient, commonHelper: ICommonHelper, mapper: ISecurityMapper, logger: ILogger);
    findIdentity(name: string): Promise<IGraphIdentity>;
    getNamespace(name: string, actionFilter?: string): Promise<INamespace>;
    getGroupProvider(id: string, projectName: string, group: GraphGroup): Promise<IGroupProvider>;
    getIdentityMembership(group: GraphGroup, identity: IGraphIdentity): Promise<GraphMembership>;
    addIdentityMembership(group: GraphGroup, identity: IGraphIdentity): Promise<GraphMembership>;
    getGroupMemberships(group: GraphGroup): Promise<GraphMembership[]>;
    removeGroupMembership(group: GraphGroup, member: GraphMembership): Promise<void>;
    addGroupMemberships(group: GraphGroup, members: string[]): Promise<GraphMembership[]>;
    removeGroupMemberships(group: GraphGroup, memberships: GraphMembership[]): Promise<void>;
    getObsoleteGroupMemberships(group: GraphGroup, validMemberships: GraphMembership[]): Promise<GraphMembership[]>;
    updateGroupMembers(members: string[], group: GraphGroup): Promise<void>;
    getExplicitIdentities(projectId: string, permissionSetId: string, permissionSetToken: string): Promise<ISecurityIdentity[]>;
    addIdentityToPermission(projectId: string, identity: IGraphIdentity): Promise<ISecurityIdentity>;
    getIdentityPermission(projectId: string, identity: ISecurityIdentity, permissionSetId: string, permissionSetToken: string): Promise<IIdentityPermission>;
    setGroupAccessControl(identity: string, permission: ISubjectPermission, type: PermissionType): Promise<any>;
    setIdentityAccessControl(token: string, identity: IIdentityPermission, permission: ISecurityPermission, type: PermissionType): Promise<any>;
    updateGroupPermissions(projectName: string, group: GraphGroup, permissions: IPermission[]): Promise<void>;
    updateIdentityPermissions(projectId: string, identity: ISecurityIdentity, permissions: IPermission[], permissionSetId: string, permissionSetToken: string): Promise<void>;
    getExistingIdentity(name: string, projectId: string, existingIdentities: ISecurityIdentity[]): Promise<ISecurityIdentity>;
    private isSecurityPermissionEqual;
    private isSubjectPermissionEqual;
    private getPermissionType;
}
