export type PermissionMode = 'strict' | 'permissive' | 'custom';
export type ToolCategory = 'file' | 'code' | 'web' | 'database' | 'api' | 'system' | 'custom';
export interface ToolPermission {
    name: string;
    category: ToolCategory;
    allowed: boolean;
    reason?: string;
    restrictions?: string[];
}
export interface PermissionConfig {
    mode: PermissionMode;
    allowedTools: string[];
    disallowedTools: string[];
    categoryPermissions: Record<ToolCategory, boolean>;
    customPermissions: Record<string, ToolPermission>;
    restrictions: {
        maxFileSize?: number;
        allowedFileTypes?: string[];
        blockedDomains?: string[];
        maxApiCalls?: number;
        allowedDirectories?: string[];
    };
}
export declare class ToolPermissionManager {
    private config;
    private configFile;
    private workingDirectory;
    constructor(workingDirectory?: string);
    /**
     * Check if a tool is allowed
     */
    isToolAllowed(toolName: string, category?: ToolCategory): boolean;
    /**
     * Get permission reason for a tool
     */
    getPermissionReason(toolName: string): string;
    /**
     * Get all allowed tools
     */
    getAllowedTools(): string[];
    /**
     * Get all disallowed tools
     */
    getDisallowedTools(): string[];
    /**
     * Set permission mode
     */
    setPermissionMode(mode: PermissionMode): void;
    /**
     * Allow a specific tool
     */
    allowTool(toolName: string, reason?: string): void;
    /**
     * Disallow a specific tool
     */
    disallowTool(toolName: string, reason?: string): void;
    /**
     * Set category permissions
     */
    setCategoryPermission(category: ToolCategory, allowed: boolean): void;
    /**
     * Get permission configuration for Claude Agent SDK
     */
    getClaudeAgentConfig(): {
        allowedTools?: string[];
        disallowedTools?: string[];
        permissionMode: 'strict' | 'permissive';
    };
    /**
     * Validate tool usage against restrictions
     */
    validateToolUsage(toolName: string, params: any): {
        allowed: boolean;
        reason?: string;
    };
    /**
     * Get permission summary
     */
    getPermissionSummary(): string;
    /**
     * Reset to default permissions
     */
    resetToDefaults(): void;
    /**
     * Get default permission configuration
     */
    private getDefaultConfig;
    /**
     * Load configuration from file
     */
    private loadConfig;
    /**
     * Save configuration to file
     */
    private saveConfig;
    /**
     * Get tools by category
     */
    private getToolsByCategory;
    /**
     * Get category for a tool
     */
    private getToolCategory;
}
//# sourceMappingURL=toolPermissions.d.ts.map