import { UpdateFilter } from "mongodb"; import { CreateAccessPolicy, CreatePolicyExecutionContext, DeleteAccessPolicy, DeletePolicyExecutionContext, ReadAccessPolicy, ReadPolicyExecutionContext, UpdateOperationsACL, UpdateOperationsPolicyExecutionContext, UpdatePolicyExecutionContext, UpdatePolicyModule } from "../types"; declare type CollectionName = string; declare type Action = 'create' | 'update' | 'read' | 'delete'; export declare type PolicyCollection = Record; }; create?: { requireAuthentication?: boolean; default?: CreateAccessPolicy; }; update?: UpdatePolicyModule; delete?: { requireAuthentication?: boolean; default?: DeleteAccessPolicy; }; }>; export declare class PolicyExecutor { /** * Map containing policies for each CRUD action of each collection. * i.e maps collection -> action -> policy */ private policies; constructor(); addPolices(policies: PolicyCollection): void; requiresAuthentication(collection: string, action: Action): boolean | undefined; getReadPolicy(collectionName: string, ctx: ReadPolicyExecutionContext): import("../types").FilterPolicyResult; getCreatePolicy(collectionName: string, ctx: CreatePolicyExecutionContext): boolean | Promise; getUpdatePolicy(collectionName: string, ctx: UpdatePolicyExecutionContext): import("../types").FilterPolicyResult; validateUpdateOperations(collectionName: string, ctx: UpdateOperationsPolicyExecutionContext): Promise; applyACL(policy: UpdateOperationsACL, updateFilter: UpdateFilter): boolean; getDeletePolicy(collectionName: string, ctx: DeletePolicyExecutionContext): import("../types").FilterPolicyResult; private _executeOptionalPolicy; } export {};