/** Role registry and permission checks for GSP. */ /** Application-defined permission bits. */ export declare const Permissions: { readonly None: 0; readonly SendText: number; readonly SendAudio: number; readonly SendSignal: number; readonly MuteOthers: number; readonly AssignRoles: number; readonly Invite: number; readonly RemoveMembers: number; readonly CloseGroup: number; }; export type Permissions = number; /** Role definition in {@link RoleRegistry}. */ export interface RoleSpec { id: number; name: string; permissions: Permissions; } /** Error thrown by {@link RoleRegistry}. */ export declare class RoleError extends Error { constructor(message: string); } /** * Mapping of role ids to {@link RoleSpec}s plus per-member assignments. */ export declare class RoleRegistry { private readonly roles; private readonly assignments; /** Register (or replace) a role. */ define(spec: RoleSpec): void; /** Convenience: define a role from primitive components. */ defineRole(id: number, name: string, permissions: Permissions): void; /** Look up a role by id. */ role(id: number): RoleSpec | undefined; /** Iterate every defined role. */ allRoles(): Iterable; /** Assign a role to a member. */ assign(memberId: number, roleId: number): void; /** Role currently assigned to `memberId`, if any. */ roleOf(memberId: number): RoleSpec | undefined; /** Effective permissions of `memberId` (`None` if no role). */ permissionsOf(memberId: number): Permissions; /** Throws {@link RoleError} when the member lacks any bit in `mask`. */ require(memberId: number, mask: Permissions): void; /** `true` when the member carries every bit in `mask`. */ has(memberId: number, mask: Permissions): boolean; } //# sourceMappingURL=roles.d.ts.map