import { Flatten, Nominal } from 'tslang'; import { ISyncable } from './syncable'; export declare type AccessRight = 'read' | 'write' | 'full'; export declare const ACCESS_RIGHTS: AccessRight[]; export declare type AccessControlEntryType = 'allow' | 'deny'; export declare type AccessControlEntryRuleName = Nominal; export interface IAccessControlEntry { name: string; rule: AccessControlEntryRuleName; type: AccessControlEntryType; explicit: boolean; rights: AccessRight[]; options?: TOptions; } export declare type AccessControlEntry = ObjectAccessControlEntry | FieldAccessControlEntry; export interface ObjectAccessControlEntry extends IAccessControlEntry { } export interface FieldAccessControlEntry extends IAccessControlEntry { fields: string[] | '*'; } export declare const SYNCABLE_ESSENTIAL_FIELD_NAMES: (keyof ISyncable)[]; export declare function getAccessControlEntryPriority({ explicit, type, }: Flatten): number;