import { ControlOptions, Policy, TimeOptions, PropType, CacheKey } from '../types'; export declare class Grant { protected readonly options: ControlOptions; protected present: Record>; constructor(policies?: Policy[], options?: ControlOptions); set policies(policies: Policy[]); get policies(): Policy[]; update(policy: Policy): void; exists(policy: Policy): boolean; delete(policy: Policy): boolean; has(cKey: CacheKey): boolean; scopes(prop: PropType, cKey?: CacheKey): S[]; subjects(cKey?: CacheKey): Sub[]; time(options?: TimeOptions, cKey?: CacheKey): boolean; location(ip: string, cKey?: CacheKey): boolean; field(data: any, cKey?: CacheKey | ((data: any) => CacheKey | Promise>)): Promise; filter(data: any, cKey?: CacheKey | ((data: any) => CacheKey | Promise>)): Promise; protected notations(policies: Policy[], data: any, type: 'filter' | 'field', cKey?: CacheKey | ((data: any) => CacheKey | Promise>)): Promise; }