import type { PolicyDecision } from '../types';
import { PolicyRegistry } from './registry';
import { type PolicyRef } from './spec';
export interface SubjectRelationship {
    relation: string;
    object: string;
    objectType?: string;
}
export interface SubjectContext {
    roles?: string[];
    attributes?: Record<string, unknown>;
    relationships?: SubjectRelationship[];
}
export interface ResourceContext {
    type: string;
    id?: string;
    fields?: string[];
    attributes?: Record<string, unknown>;
}
export interface DecisionContext {
    subject: SubjectContext;
    resource: ResourceContext;
    context?: Record<string, unknown>;
    action: string;
    policies: PolicyRef[];
    consents?: string[];
    flags?: string[];
}
export declare class PolicyEngine {
    private readonly registry;
    constructor(registry: PolicyRegistry);
    decide(input: DecisionContext): PolicyDecision;
    private resolvePolicies;
    private matchRuleSet;
    private evaluateFields;
}
