/**
 * Folder Management Tools for the Studiograph Agent
 *
 * Five tools that let the agent operate on the folder layout within a repo:
 *   - list_folders     — read the folder tree of a repo
 *   - create_subfolder — create a new subfolder inside an existing repo
 *                        (distinct from graph-tools' `create_folder`, which
 *                        creates a brand-new top-level repo)
 *   - rename_folder    — rename / move within the same repo
 *   - move_entity      — relocate an entry to a different folder within the
 *                        same repo (distinct from graph-tools'
 *                        `transfer_entity`, which moves across repos)
 *   - delete_folder    — remove a folder (recursive opt-in, blast-radius reported)
 *
 * The system prompt restraint rule applies to all of these:
 * never reorganize/rename/delete without explicit user request.
 */
import { Type as T } from 'typebox';
import { WorkspaceManager } from '../../core/workspace-manager.js';
import { type AuthUser, type AuthService } from '../../services/auth-service.js';
import type { MutationEvent } from './graph-tools.js';
export declare function createFolderTools(workspaceManager: WorkspaceManager, gitUser: {
    id: string;
    name: string;
    email: string;
}, onMutation?: (m: MutationEvent) => void, getCurrentUser?: () => AuthUser | null, authService?: AuthService | null, 
/**
 * Same activity hook as createGraphTools. Currently accepted but not wrapped
 * around individual folder ops — folder mutations are rare relative to entity
 * mutations, and the chip wouldn't have time to render before completing.
 * Param exists so the orchestrator can pass a single callback symmetrically.
 */
_onAgentActivity?: (action: 'enter' | 'leave' | 'heartbeat', repo: string) => void): {
    name: string;
    label: string;
    description: string;
    parameters: T.TObject<{
        repo: T.TString;
    }>;
    execute: (_toolCallId: string, params: any) => Promise<{
        content: {
            type: "text";
            text: string;
        }[];
        details: any;
    }>;
}[];
