import { Resource } from './../models/resource'; import { IRule } from '../models/rule'; import { Subject } from '../models/subject'; import { IPermissionRequest } from '../models/decision'; import { IPolicySet, IPolicyBase } from '../models/policy'; import { DecisionCombinator } from '../models/decision-combinator'; import { Action } from '../models/action'; export interface IPolicySetCollection extends IPolicyBase { policies: IPolicyBase[]; } export interface IPolicySetDescription { name: string; isDefault: boolean; combinator: DecisionCombinator; } export interface IPolicyStore { name: string; getPolicySets(): IPolicySetDescription[]; getDefaultPolicySet(): IPolicySetDescription; getPolicySet(name: string): IPolicySetCollection; getPolicyRules(policyName: string, policySetName?: string): IRule[]; getRuleResolver(policyName: string, policySetName?: string): (permissionRequest: IPermissionRequest) => IRule[]; getPrivilegesResolver(policyName: string, policySetName?: string): (permissionRequest: IPermissionRequest) => Action; getSubjectPrivileges(subject: Subject): IRule[]; getResourcePrivileges(resource: Resource): IRule[]; getPolicyEditor(policyName: string, policySetName?: string): (change: 'add' | 'update' | 'delete', rule: IRule) => { rule: IRule; status: number; }; save(callback: (err: Error) => void): any; } export declare const PolicyStoreFactory: (name: string, callback: (err: Error, policyStore: IPolicyStore) => void, policySets?: IPolicySet[]) => void;