/**
 * Policy Resolver
 *
 * Resolves policy decisions for tools using hierarchical rules.
 * Resolution order (highest priority first):
 * 1. Explicit session overrides
 * 2. Global overrides
 * 3. Provider-specific rules (MCP, plugins)
 * 4. Agent-specific rules
 * 5. Profile rules (by priority)
 * 6. Default action
 */
import type { PolicyAction, PolicyDecision, PolicyContext, PolicyConfig } from './types.js';
/**
 * Resolves policy decisions for tools
 */
export declare class PolicyResolver {
    private config;
    constructor(config: PolicyConfig);
    /**
     * Resolve policy for a tool
     * @param toolName Tool name to check
     * @param context Additional context for resolution
     * @returns Policy decision
     */
    resolve(toolName: string, context?: Partial<PolicyContext>): PolicyDecision;
    /**
     * Resolve from a list of rules
     */
    private resolveFromRules;
    /**
     * Check if a rule matches the context
     */
    private ruleMatches;
    /**
     * Evaluate conditions for a rule
     */
    private evaluateConditions;
    /**
     * Evaluate a single condition
     */
    private evaluateCondition;
    /**
     * Simple glob matching
     */
    private matchGlob;
    /**
     * Evaluate time-based condition
     */
    private evaluateTimeCondition;
    /**
     * Build full context from partial input
     */
    private buildContext;
    /**
     * Create a policy decision
     */
    private createDecision;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<PolicyConfig>): void;
    /**
     * Get current configuration
     */
    getConfig(): PolicyConfig;
    /**
     * Check if action allows operation
     */
    static isAllowed(decision: PolicyDecision): boolean;
    /**
     * Check if action requires confirmation
     */
    static requiresConfirmation(decision: PolicyDecision): boolean;
    /**
     * Check if action denies operation
     */
    static isDenied(decision: PolicyDecision): boolean;
}
/**
 * Resolve policies for multiple tools
 */
export declare function resolveMultiple(resolver: PolicyResolver, toolNames: string[], context?: Partial<PolicyContext>): Map<string, PolicyDecision>;
/**
 * Filter tools by policy
 */
export declare function filterByPolicy(resolver: PolicyResolver, toolNames: string[], action: PolicyAction, context?: Partial<PolicyContext>): string[];
/**
 * Get allowed tools
 */
export declare function getAllowedTools(resolver: PolicyResolver, toolNames: string[], context?: Partial<PolicyContext>): string[];
