import { IChannel, IDiscussionsUser, IUpdateChannelV2 } from "../types";
import { Role } from "../enums/role";
/**
 * A map of update operations & ACL roles where the key is the update operation
 * and the value is an array of roles that are permitted to perform the update operation.
 * See confluence for privs documentation: https://confluencewikidev.esri.com/pages/viewpage.action?pageId=153747776#Roles&Privileges-ApplicationtoChannels
 * @internal
 * @hidden
 */
export declare const CHANNEL_ACTION_PRIVS: Record<string, Role[]>;
/**
 * @internal
 * @hidden
 */
export declare class ChannelPermission {
    private readonly ALLOWED_GROUP_MEMBER_TYPES;
    private isChannelAclEmpty;
    private existingChannel;
    private permissionsByCategory;
    constructor(channel: IChannel);
    deriveUserRole(user: IDiscussionsUser): Role;
    canPostToChannel(user: IDiscussionsUser): boolean;
    canCreateChannel(user: IDiscussionsUser): boolean;
    canModerateChannel(user: IDiscussionsUser): boolean;
    canReadChannel(user: IDiscussionsUser): boolean;
    canDeleteChannel(user: IDiscussionsUser): boolean;
    /**
     * Ensure the user has rights to update the channel before calling this method
     * Ex: canModerateChannel
     */
    canUpdateProperties(user: IDiscussionsUser, updateData?: IUpdateChannelV2): boolean;
    private isChanged;
    private isStringArrayChanged;
    private isRoleChanged;
    private isCategoryChanged;
    private canAnyUser;
    private canAnyAuthenticatedUser;
    private canSomeUser;
    private canSomeUserGroup;
    private canSomeUserOrg;
    private userCanAddAnonymousToAcl;
    private userCanAddUnauthenticatedToAcl;
    private userCanAddAllGroupsToAcl;
    private userCanAddAllOrgsToAcl;
    private isEveryPermissionForUserOrg;
    private userCanAddUsersToAcl;
    private isUserUnAuthenticated;
    private mapUserGroupsById;
    private isMemberTypeAuthorized;
    private determineUserRole;
    private isOwner;
    private isManager;
    private isModerator;
}
