import IGroup from '../Group'; import { GroupPopulate } from '../Group/Group'; import IUser from '../User'; import { UserPopulate } from '../User/User'; export declare enum PermissionScope { private = "private", internal = "internal", public = "public" } export declare enum AccessRoleIndex { reader = 6, commenter = 5, writer = 4, itemOrganizer = 3, organizer = 2, owner = 1 } export declare enum AccessRole { owner = "owner", organizer = "organizer", itemOrganizer = "itemOrganizer", writer = "writer", commenter = "commenter", reader = "reader" } export declare enum AccessRoleGroup { inherit = "inherit" } export interface IAccessibleUser { user?: IUser | string; role?: AccessRole | keyof typeof AccessRole; } export interface IAccessibleGroup { group?: IGroup | string; role?: AccessRole | AccessRoleGroup | keyof typeof AccessRole | keyof typeof AccessRoleGroup; } export default interface IPermission { scope?: PermissionScope | keyof typeof PermissionScope; groups?: IAccessibleGroup[] | string[] | any[] | IAccessibleGroup | string; users?: IAccessibleUser[] | string[] | any[] | IAccessibleUser | string; } export declare class AccessibleUserPopulate implements IAccessibleUser { user: UserPopulate | string; role: IAccessibleUser['role']; } export declare class AccessibleGroupPopulate implements IAccessibleGroup { group: GroupPopulate | string; role: IAccessibleGroup['role']; } export declare class PermissionPopulate implements IPermission { scope?: IPermission['scope']; groups?: AccessibleGroupPopulate[] | string[]; users?: AccessibleUserPopulate[] | string[]; }