import { Nullable } from "../../base-types";
import { IMemberPolicy } from "../../contracts/policies/member-policy";
import { IRule } from "../../contracts/policies/rule";
export interface IPolicy {
    readonly rules: Array<IRule>;
    readonly memberSecurity: Array<IMemberPolicy>;
    readonly memberGroupSecurity: Array<IMemberPolicy>;
    getRelatedId(): Nullable<number>;
}
export declare abstract class Policy implements IPolicy {
    rules: Array<IRule>;
    memberSecurity: Array<IMemberPolicy>;
    memberGroupSecurity: Array<IMemberPolicy>;
    createdBy?: Nullable<number>;
    createdOn?: Nullable<Date>;
    modifiedBy?: Nullable<number>;
    modifiedOn?: Nullable<Date>;
    abstract getRelatedId(): Nullable<number>;
}
