export { type BashOperations, type BashSpawnContext, type BashSpawnHook, type BashToolDetails, type BashToolInput, type BashToolOptions, bashTool, bashToolDefinition, createBashTool, createBashToolDefinition, createLocalBashOperations, } from "./bash.js";
export { createEditTool, createEditToolDefinition, type EditOperations, type EditToolDetails, type EditToolInput, type EditToolOptions, editTool, editToolDefinition, } from "./edit.js";
export { withFileMutationQueue } from "./file-mutation-queue.js";
export { createFindTool, createFindToolDefinition, type FindOperations, type FindToolDetails, type FindToolInput, type FindToolOptions, findTool, findToolDefinition, } from "./find.js";
export { createGrepTool, createGrepToolDefinition, type GrepOperations, type GrepToolDetails, type GrepToolInput, type GrepToolOptions, grepTool, grepToolDefinition, } from "./grep.js";
export { createLsTool, createLsToolDefinition, type LsOperations, type LsToolDetails, type LsToolInput, type LsToolOptions, lsTool, lsToolDefinition, } from "./ls.js";
export { createReadTool, createReadToolDefinition, type ReadOperations, type ReadToolDetails, type ReadToolInput, type ReadToolOptions, readTool, readToolDefinition, } from "./read.js";
export { createSearchTool, createSearchToolDefinition, isSearchAvailable, type SearchToolDetails, type SearchToolInput, searchTool, searchToolDefinition, } from "./search.js";
export { createSkillTool, createSkillToolDefinition, type SkillToolDetails, type SkillToolInput, type SkillToolOptions, } from "./skill.js";
export { abortBackgroundAgents, type BackgroundAgentInfo, createSubagentTool, createSubagentToolDefinition, discoverAgentTypes, filterSubagentTools, getBackgroundAgents, getRunningBackgroundAgents, pruneBackgroundAgents, type SubagentResult, type SubagentToolDetails, type SubagentToolInput, type SubagentToolOptions, subagentTool, subagentToolDefinition, } from "./subagent.js";
export { createSuggestNextToolDefinition, type SuggestNextCallback, type SuggestNextDetails, type SuggestNextInput, } from "./suggest-next.js";
export { createTasksToolDefinition, type SessionTask, type TaskStatus, type TasksToolDetails, type TasksToolInput, type TasksUpdateCallback, } from "./tasks.js";
export { createTmpReadToolDefinition } from "./tmp-read.js";
export { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, type TruncationOptions, type TruncationResult, truncateHead, truncateLine, truncateTail, } from "./truncate.js";
export { createWaitToolDefinition, formatWaitCall, formatWaitResult, type WaitAgentInfo, type WaitToolDetails, type WaitToolInput, type WaitToolOptions, waitToolDefinition, } from "./wait.js";
export { createWebFetchTool, createWebFetchToolDefinition, createWebSearchTool, createWebSearchToolDefinition, type WebFetchToolDetails, type WebFetchToolInput, type WebSearchConfig, type WebSearchToolDetails, type WebSearchToolInput, webFetchTool, webFetchToolDefinition, webSearchTool, webSearchToolDefinition, } from "./web.js";
export { createWriteTool, createWriteToolDefinition, type WriteOperations, type WriteToolInput, type WriteToolOptions, writeTool, writeToolDefinition, } from "./write.js";
import type { AgentTool } from "@dreb/agent-core";
import type { ToolDefinition } from "../extensions/types.js";
import { type BashToolOptions } from "./bash.js";
import { type ReadToolOptions } from "./read.js";
import { type SkillToolOptions } from "./skill.js";
import { type SubagentToolOptions } from "./subagent.js";
import { type SuggestNextCallback } from "./suggest-next.js";
import { type TasksUpdateCallback } from "./tasks.js";
export type Tool = AgentTool<any>;
export type ToolDef = ToolDefinition<any, any>;
export declare const codingTools: Tool[];
export declare const readOnlyTools: Tool[];
export declare const allTools: {
    read: AgentTool<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TString;
        offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, any>;
    bash: AgentTool<import("@sinclair/typebox").TObject<{
        command: import("@sinclair/typebox").TString;
        timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, any>;
    edit: AgentTool<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TString;
        oldText: import("@sinclair/typebox").TString;
        newText: import("@sinclair/typebox").TString;
    }>, any>;
    write: AgentTool<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TString;
        content: import("@sinclair/typebox").TString;
    }>, any>;
    grep: AgentTool<import("@sinclair/typebox").TObject<{
        pattern: import("@sinclair/typebox").TString;
        path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        glob: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        ignoreCase: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
        literal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
        context: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, any>;
    find: AgentTool<import("@sinclair/typebox").TObject<{
        pattern: import("@sinclair/typebox").TString;
        path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, any>;
    ls: AgentTool<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, any>;
    web_search: AgentTool<import("@sinclair/typebox").TObject<{
        query: import("@sinclair/typebox").TString;
    }>, any>;
    web_fetch: AgentTool<import("@sinclair/typebox").TObject<{
        url: import("@sinclair/typebox").TString;
    }>, any>;
    subagent: AgentTool<import("@sinclair/typebox").TObject<{
        agent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
            agent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            task: import("@sinclair/typebox").TString;
            cwd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        }>>>;
        chain: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
            agent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            task: import("@sinclair/typebox").TString;
            cwd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        }>>>;
        background: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
    }>, any>;
    tmp_read: AgentTool<any, any>;
    wait: AgentTool<any, import("./wait.js").WaitToolDetails | undefined>;
    search: AgentTool<import("@sinclair/typebox").TObject<{
        query: import("@sinclair/typebox").TString;
        restrictToDir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        searchDir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        rebuild: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
    }>, any>;
};
export declare const allToolDefinitions: {
    read: ToolDefinition<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TString;
        offset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, import("./read.js").ReadToolDetails | undefined, any>;
    bash: ToolDefinition<import("@sinclair/typebox").TObject<{
        command: import("@sinclair/typebox").TString;
        timeout: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, import("./bash.js").BashToolDetails | undefined, {
        startedAt: number | undefined;
        endedAt: number | undefined;
        interval: NodeJS.Timeout | undefined;
    }>;
    edit: ToolDefinition<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TString;
        oldText: import("@sinclair/typebox").TString;
        newText: import("@sinclair/typebox").TString;
    }>, import("./edit.js").EditToolDetails | undefined, {
        argsKey?: string | undefined;
        preview?: import("./edit-diff.js").EditDiffError | import("./edit-diff.js").EditDiffResult | undefined;
    }>;
    write: ToolDefinition<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TString;
        content: import("@sinclair/typebox").TString;
    }>, undefined, any>;
    grep: ToolDefinition<import("@sinclair/typebox").TObject<{
        pattern: import("@sinclair/typebox").TString;
        path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        glob: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        ignoreCase: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
        literal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
        context: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, import("./grep.js").GrepToolDetails | undefined, any>;
    find: ToolDefinition<import("@sinclair/typebox").TObject<{
        pattern: import("@sinclair/typebox").TString;
        path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, import("./find.js").FindToolDetails | undefined, any>;
    ls: ToolDefinition<import("@sinclair/typebox").TObject<{
        path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
    }>, import("./ls.js").LsToolDetails | undefined, any>;
    web_search: ToolDefinition<import("@sinclair/typebox").TObject<{
        query: import("@sinclair/typebox").TString;
    }>, import("./web.js").WebSearchToolDetails | undefined, any>;
    web_fetch: ToolDefinition<import("@sinclair/typebox").TObject<{
        url: import("@sinclair/typebox").TString;
    }>, import("./web.js").WebFetchToolDetails | undefined, any>;
    subagent: ToolDefinition<import("@sinclair/typebox").TObject<{
        agent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
            agent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            task: import("@sinclair/typebox").TString;
            cwd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        }>>>;
        chain: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
            agent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            task: import("@sinclair/typebox").TString;
            cwd: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
            model: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        }>>>;
        background: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
    }>, import("./subagent.js").SubagentToolDetails | undefined, any>;
    tmp_read: ToolDefinition<any, any, any>;
    wait: ToolDefinition<import("@sinclair/typebox").TObject<{
        reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
    }>, import("./wait.js").WaitToolDetails | undefined, any>;
    search: ToolDefinition<import("@sinclair/typebox").TObject<{
        query: import("@sinclair/typebox").TString;
        restrictToDir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
        searchDir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
        rebuild: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
    }>, import("./search.js").SearchToolDetails, any>;
};
export type ToolName = keyof typeof allTools;
export interface ToolsOptions {
    read?: ReadToolOptions;
    bash?: BashToolOptions;
    subagent?: SubagentToolOptions;
    skill?: SkillToolOptions;
    tasks?: {
        onUpdate: TasksUpdateCallback;
    };
    suggestNext?: {
        onSuggest: SuggestNextCallback;
    };
}
export declare function createCodingToolDefinitions(cwd: string, options?: ToolsOptions): ToolDef[];
export declare function createReadOnlyToolDefinitions(cwd: string, options?: ToolsOptions): ToolDef[];
export declare function createAllToolDefinitions(cwd: string, options?: ToolsOptions): Record<ToolName | "skill", ToolDef>;
export declare function createCodingTools(cwd: string, options?: ToolsOptions): Tool[];
export declare function createReadOnlyTools(cwd: string, options?: ToolsOptions): Tool[];
export declare function createAllTools(cwd: string, options?: ToolsOptions): Record<ToolName | "skill", Tool>;
//# sourceMappingURL=index.d.ts.map