import { AnyMongoAbility, Generics, SubjectType, Abilities, AbilityTuple, ExtractSubjectType } from '@casl/ability'; export declare const EMPTY_RESULT_QUERY: { $expr: { $eq: number[]; }; }; export declare class AccessibleRecords { private readonly _ability; private readonly _action; constructor(_ability: AnyMongoAbility, _action: string); /** * In case action is not allowed, it returns `{ $expr: { $eq: [0, 1] } }` */ ofType(subjectType: T): Record; } type SubjectTypes = T extends AbilityTuple ? ExtractSubjectType : never; /** * Returns accessible records Mongo query per record type (i.e., entity type) based on provided Ability and action. */ export declare function accessibleBy(ability: T, action?: Parameters[0]): AccessibleRecords['abilities']>>; export {};