import type { PrincipalContext } from './principal';
export interface PolicyDecisionOk {
    ok: true;
}
export interface PolicyDecisionDeny {
    ok: false;
    code: string;
    message: string;
    details?: unknown;
}
export type PolicyDecision = PolicyDecisionOk | PolicyDecisionDeny;
export interface PolicyInput {
    principal: PrincipalContext;
    fromRoot: string;
    toRoot: string;
    toPath: string;
    msgType: string;
    /** @deprecated Use fromRoot */
    fromRealm?: string;
    /** @deprecated Use toRoot */
    toRealm?: string;
}
export interface Policy {
    authorize(input: PolicyInput): PolicyDecision;
}
export declare class AllowAllPolicy implements Policy {
    authorize(_input: PolicyInput): PolicyDecision;
}
/** Simple deny-list policy for tests */
export declare class DenyPathPrefixPolicy implements Policy {
    private readonly denyPrefix;
    constructor(denyPrefix: string);
    authorize(input: PolicyInput): PolicyDecision;
}
//# sourceMappingURL=policy.d.ts.map