/// <reference types="@rbxts/compiler-types" />
/// <reference types="@rbxts/types" />
import { ZirconGroupConfiguration } from "../../Class/ZirconGroupBuilder";
export interface ZirconRobloxGroupBinding {
    GroupId: number;
    GroupRank: number;
}
export declare type ZirconPermissionSet = Set<keyof ZirconPermissions>;
export declare type ReadonlyZirconPermissionSet = ReadonlySet<keyof ZirconPermissions>;
export interface ZirconPermissions {
    /**
     * Whether or not this group can access the console using the shortcut key
     */
    readonly CanAccessConsole: boolean;
    /**
     * Whether or not this group can recieve `Zircon.Log*` messages from the server
     */
    readonly CanRecieveServerLogMessages: boolean;
    /**
     * Whether or not this group is allowed to execute Zirconium scripts
     */
    readonly CanExecuteZirconiumScripts: boolean;
    /**
     * Whether or not this group has full access to the Zircon Editor for Zirconium
     * @deprecated @hidden
     */
    readonly CanAccessFullZirconEditor: boolean;
    /**
     * Whether or not this user can view more information about a log message by clicking on it
     */
    readonly CanViewLogMetadata: boolean;
}
export declare enum ZirconGroupType {
    User = 0,
    Moderator = 1,
    Administrator = 2
}
export default class ZirconUserGroup {
    private id;
    private name;
    private configuration;
    private functions;
    private namespaces;
    private enums;
    private permissions;
    private members;
    constructor(id: number, name: string, configuration: ZirconGroupConfiguration);
    AddMember(player: Player): void;
    GetMembers(): ReadonlySet<Player>;
    HasMember(player: Player): boolean;
    GetConfiguration(): ZirconGroupConfiguration;
    CanJoinGroup(player: Player): boolean;
    GetName(): string;
    GetRank(): number;
    GetPermissions(): ReadonlyZirconPermissionSet;
    GetPermission<K extends keyof ZirconPermissions>(name: K): ZirconPermissions[K];
}
