import express, { NextFunction } from "express"; import { Model } from "mongoose"; import { FernsRouterOptions, RESTMethod } from "./api"; import { User } from "./auth"; export type PermissionMethod = (method: RESTMethod, user?: User, obj?: T) => boolean | Promise; export interface RESTPermissions { create: PermissionMethod[]; list: PermissionMethod[]; read: PermissionMethod[]; update: PermissionMethod[]; delete: PermissionMethod[]; } export declare const OwnerQueryFilter: (user?: User) => { ownerId: string; } | null; export declare const Permissions: { IsAuthenticatedOrReadOnly: (method: RESTMethod, user?: User) => boolean; IsOwnerOrReadOnly: (method: RESTMethod, user?: User, obj?: any) => boolean; IsAny: () => boolean; IsOwner: (_method: RESTMethod, user?: User, obj?: any) => any; IsAdmin: (_method: RESTMethod, user?: User) => boolean; IsAuthenticated: (_method: RESTMethod, user?: User) => boolean; }; export declare function checkPermissions(method: RESTMethod, permissions: PermissionMethod[], user?: User, obj?: T): Promise; export declare function permissionMiddleware(baseModel: Model, options: Pick, "permissions" | "populatePaths" | "discriminatorKey">): (req: express.Request, _res: express.Response, next: NextFunction) => Promise;