export interface UserPermissionConstructor { new (scope?: string): UserPermissionClass; } export interface IUserPermissionDesc { intro: string; } export interface UserPermissionSerialize { permName: string; available: number; expire: number; scope: string; project: string; userId?: string; } export interface UserPermissionClass { readonly className: string; readonly project: string; readonly available: number; readonly expire: number; readonly scope: string; readonly description: IUserPermissionDesc; setAvailable(v: number | Date): any; setExpire(v: number | Date): any; status: number; toJSON(): UserPermissionSerialize; } export interface IPermissionDict { has(name: string): boolean; } export interface IPermissionOperation { grant(permData: UserPermissionSerialize | UserPermissionClass): Promise; check(permData: UserPermissionSerialize | UserPermissionClass, saveAs?: string): Promise; drop(permData: UserPermissionSerialize | UserPermissionClass): Promise; dropLike(permData: UserPermissionSerialize | UserPermissionClass): Promise; }