import { Model, Document } from "mongoose";
import { IPermission } from "./permissionSchema";
import { IRole } from "./roleSchema";
import { IUser } from "./userSchema";
import { ServeOptions, PermissionEnum, HasPermissionCallback, UserRequest } from "../definitions/model";
export default class PermissionClass {
    private table;
    private permission;
    private role;
    private options;
    private model;
    constructor(model: Model<Document>, permission: Model<IPermission>, role: Model<IRole>, options: ServeOptions);
    private _getReadObjects;
    private _getUserRoles;
    checkUser(user: IUser): boolean;
    getMaxPermissionByTable(req: UserRequest, callback: (err: Error, perm?: PermissionEnum) => void): void;
    private _getMaxPermissionByDoc;
    getReadQuery(req: UserRequest, callback: (error: Error, query?: any) => void): void;
    private _hasReadPermissionByOptions;
    hasReadPermission(req: UserRequest, doc: Document, callback: HasPermissionCallback): void;
    private _hasAddPermissionByOptions;
    hasAddPermission(req: UserRequest, callback: HasPermissionCallback): void;
    private _hasUpdatePermissionByOptions;
    hasUpdatePermission(req: UserRequest, doc: Document, callback: HasPermissionCallback): void;
    private _hasDeletePermissionByOptions;
    hasDeletePermission(req: UserRequest, doc: Document, callback: HasPermissionCallback): void;
    private _hasAdminPermissionByOptions;
    hasAdminPermission(req: UserRequest, doc: Document, callback: HasPermissionCallback): void;
}
