import type { EvaluateToolApprovalPoliciesArgs, RequestToolApprovalThroughServiceArgs, ResolveToolApprovalArgs, ToolApprovalDecision, ToolApprovalRequest, ToolApprovalPolicyDecision, ToolApprovalUserDecision } from './types.js';
import { type ProjectApprovalRule } from './remembered-rules/index.js';
import type { ToolApprovalPolicyContext } from './types.js';
export type ToolApprovalServiceOptions = {
    workspaceRoot?: string;
    projectApprovalRulesFile?: string;
    now?: () => Date;
};
/**
 * Owns approval policy resolution and shared approval request semantics.
 *
 * Policies may allow, deny, request a human decision, or abstain. This service
 * also creates host-neutral approval requests and owns remembered project
 * approval rule behavior so hosts do not reach into lower-level primitives.
 */
export declare class ToolApprovalService {
    private readonly options;
    constructor(options?: ToolApprovalServiceOptions);
    evaluate(args: EvaluateToolApprovalPoliciesArgs): Promise<ToolApprovalPolicyDecision | undefined>;
    resolve(args: ResolveToolApprovalArgs): Promise<ToolApprovalDecision>;
    requestHumanApproval(args: RequestToolApprovalThroughServiceArgs): Promise<ToolApprovalDecision>;
    createRequest(args: ToolApprovalPolicyContext & {
        reason?: string;
        autonomyEvaluation?: ToolApprovalDecision['autonomyEvaluation'];
    }): Promise<ToolApprovalRequest>;
    resolveUserDecision(args: {
        context: ToolApprovalPolicyContext;
        decision: ToolApprovalUserDecision;
    }): ToolApprovalDecision;
    rememberProjectApproval(context: ToolApprovalPolicyContext): ProjectApprovalRule | undefined;
    isApprovedByRememberedProjectRule(context: ToolApprovalPolicyContext): boolean;
    private createProjectApprovalRuleRepository;
    private static withAutonomyEvaluation;
}
//# sourceMappingURL=service.d.ts.map