import type { IJodit } from "jodit/esm/types/index";
import type { IToolCall, IToolPermission, ToolPermissionScope } from "../interface/index";
import type { ToolRegistry } from "./tool-registry";
/**
 * Permission Manager - handles tool execution permissions
 */
export declare class PermissionManager {
    private jodit;
    private toolRegistry;
    private permanentPermissions;
    private readonly PERMANENT_PERMISSIONS_KEY;
    constructor(jodit: IJodit, toolRegistry: ToolRegistry);
    /**
     * Check if tool requires permission
     */
    requiresPermission(toolName: string): boolean;
    /**
     * Check if tool is auto-denied
     */
    isAutoDenied(toolName: string): boolean;
    /**
     * Check if tool is auto-approved
     */
    isAutoApproved(toolName: string): boolean;
    /**
     * Check if permission is already granted
     * @param toolName - Tool name
     * @param conversationPermissions - Permissions from current conversation
     * @returns Permission if granted, null otherwise
     */
    checkPermission(toolName: string, conversationPermissions: IToolPermission[]): IToolPermission | null;
    /**
     * Grant permission for a tool
     */
    grantPermission(toolName: string, scope: ToolPermissionScope): IToolPermission;
    /**
     * Deny permission for a tool
     */
    denyPermission(toolName: string): IToolPermission;
    /**
     * Filter tool calls based on permissions
     * Returns array of [approved, needsPermission]
     */
    filterToolCalls(toolCalls: Readonly<IToolCall[]>, conversationPermissions: IToolPermission[]): {
        approved: IToolCall[];
        needsPermission: IToolCall[];
        denied: IToolCall[];
    };
    /**
     * Clear conversation-specific permissions
     */
    clearConversationPermissions(conversationId: string): void;
    /**
     * Load permanent permissions from localStorage
     */
    private loadPermanentPermissions;
    /**
     * Save permanent permissions to localStorage
     */
    private savePermanentPermissions;
    /**
     * Clear all permanent permissions
     */
    clearPermanentPermissions(): void;
    /**
     * Get all permanent permissions
     */
    getPermanentPermissions(): IToolPermission[];
    /**
     * Revoke permanent permission
     */
    revokePermanentPermission(toolName: string): void;
    /**
     * Destroy manager
     */
    destruct(): void;
}
