import { Obj } from '../entity.js';
import { RuleEffect, AuthzActionType, Rule } from '../authorizer.js';
import { ObjOptions } from './base.js';
export declare class SecurityPolicyObj extends Obj<'SecurityPolicy'> {
    readonly typeOf: "SecurityPolicy";
    constructor(opts: ObjOptions);
}
export declare function isSecurityPolicyObj(obj: any): obj is SecurityPolicyObj;
export interface PolicyRuleObjOptions extends ObjOptions {
    effect: RuleEffect;
    overrideable: boolean;
    applicableActions?: AuthzActionType[];
    applicableEntityTypes?: string[];
    rules?: Rule[];
}
/**
 * PolicyRuleObj - A policy rule object using declarative rules.
 */
export declare class PolicyRuleObj extends Obj<'PolicyRule'> {
    readonly typeOf: "PolicyRule";
    effect: RuleEffect;
    overrideable: boolean;
    applicableActions?: AuthzActionType[];
    applicableEntityTypes?: string[];
    rules?: Rule[];
    constructor(opts: PolicyRuleObjOptions);
}
export declare function isPolicyRuleObj(obj: any): obj is PolicyRuleObj;
