import type { Logger } from '@polka-codes/core';
import type { ApprovalDecision, ApprovalLevel, PlanApprovalRequest, Task } from '../types';
/**
 * Manages task approval requirements
 */
export declare class ApprovalManager {
    #private;
    constructor(logger: Logger, approvalLevel: ApprovalLevel, autoApproveSafeTasks: boolean, maxAutoApprovalCost: number, destructiveOperations: string[]);
    /**
     * Check if task requires approval
     */
    requiresApproval(task: Task): boolean;
    /**
     * Request user approval for a task
     */
    requestApproval(task: Task): Promise<ApprovalDecision>;
    /**
     * Check if task is destructive
     */
    private isDestructive;
    /**
     * Request user approval for a plan
     *
     * Displays the plan details and asks the user to approve or reject it.
     * This is used before executing a multi-task plan.
     *
     * @param request - Plan approval request with all plan details
     * @returns Approval decision with approved flag and optional reason
     */
    requestPlanApproval(request: PlanApprovalRequest): Promise<ApprovalDecision>;
    /**
     * Ask a question via stdin/stdout
     *
     * Creates a new readline interface for each question.
     * Note: This is intentional and safe for approval workflow which:
     * - Is low-frequency (once per plan approval)
     * - Properly closes the interface after each question
     * - Avoids listener leaks by creating fresh interface each time
     *
     * @param query - Question to display
     * @returns User's answer
     */
    private askQuestion;
}
//# sourceMappingURL=approval.d.ts.map