import { Rule } from './description/rule'; import { RuleContext } from './description/rule-context'; export interface RuleResult { id: string; type: 'allow' | 'forbid'; score: number; matchCount: number; conditionsCount: number; errors: RuleErrorResult[]; } export declare class RuleError extends Error { result?: RuleResult | undefined; constructor(message: string, result?: RuleResult | undefined); } export interface RuleErrorResult { path?: string[]; message: string; } export interface RuleEvaluatorMatcher { (sql: any, ruleContext: RuleContext): RuleErrorResult | null; } export declare function getValueFromPath(obj: any, path: string[]): any; export declare function getRuleMatchers(authSql: any, path: string[]): RuleEvaluatorMatcher[]; export declare class RulesEvaluator { private readonly allowRules; private readonly forbidRules; constructor(rules: { id: string; rule: Rule; }[]); checkForAuthorization(auth: RuleContext, sql: any): void; isAuthorized(auth: RuleContext, sql: any): boolean; evaluate(auth: RuleContext, sql: any): RuleResult | null; } export declare class RuleEvaluator { private id; private rule; private readonly matchers; private readonly allowAnonymous; private readonly allowAuthorized; private readonly requiredRole; constructor(id: string, rule: Rule); private returnResult; evaluate(auth: RuleContext, sql: any): RuleResult; } export declare function evaluateRule(sql: any, rule: Rule, ctx: RuleContext): RuleResult; export declare function evaluateRule(sql: any, rule: Rule[], ctx: RuleContext): RuleResult | null; export declare function expectMatchingRule(sql: any, rule: Rule, ctx: RuleContext): void; export declare function expectMatchingRule(sql: any, rule: Rule[], ctx: RuleContext): void; export declare function expectUnmatchingRule(sql: any, rule: Rule, ctx: RuleContext): void; export declare function expectUnmatchingRule(sql: any, rule: Rule[], ctx: RuleContext): void;