/**
 * Default Tool Definitions
 *
 * Factory functions for creating the default tools.
 */
import { type Tool } from "@clinebot/agents";
import { type ApplyPatchInput, type AskQuestionInput, type EditFileInput, type FetchWebContentInput, type ReadFilesInput, type RunCommandsInput, type SearchCodebaseInput, type SkillsInput } from "./schemas.js";
import type { ApplyPatchExecutor, AskQuestionExecutor, BashExecutor, CreateDefaultToolsOptions, DefaultToolsConfig, EditorExecutor, FileReadExecutor, SearchExecutor, SkillsExecutorWithMetadata, ToolOperationResult, WebFetchExecutor } from "./types.js";
/**
 * Create the read_files tool
 *
 * Reads the content of one or more files from the filesystem.
 */
export declare function createReadFilesTool(executor: FileReadExecutor, config?: Pick<DefaultToolsConfig, "fileReadTimeoutMs">): Tool<ReadFilesInput, ToolOperationResult[]>;
/**
 * Create the search_codebase tool
 *
 * Performs regex pattern searches across the codebase.
 */
export declare function createSearchTool(executor: SearchExecutor, config?: Pick<DefaultToolsConfig, "cwd" | "searchTimeoutMs">): Tool<SearchCodebaseInput, ToolOperationResult[]>;
/**
 * Create the run_commands tool
 *
 * Executes shell commands in the project directory.
 */
export declare function createBashTool(executor: BashExecutor, config?: Pick<DefaultToolsConfig, "cwd" | "bashTimeoutMs">): Tool<RunCommandsInput, ToolOperationResult[]>;
/**
 * Create the fetch_web_content tool
 *
 * Fetches content from URLs and analyzes them using provided prompts.
 */
export declare function createWebFetchTool(executor: WebFetchExecutor, config?: Pick<DefaultToolsConfig, "webFetchTimeoutMs">): Tool<FetchWebContentInput, ToolOperationResult[]>;
/**
 * Create the apply_patch tool
 *
 * Applies the legacy Cline patch format to one or more files.
 */
export declare function createApplyPatchTool(executor: ApplyPatchExecutor, config?: Pick<DefaultToolsConfig, "cwd" | "applyPatchTimeoutMs">): Tool<ApplyPatchInput, ToolOperationResult>;
/**
 * Create the editor tool
 *
 * Supports controlled filesystem edits with create, replace, and insert commands.
 */
export declare function createEditorTool(executor: EditorExecutor, config?: Pick<DefaultToolsConfig, "cwd" | "editorTimeoutMs">): Tool<EditFileInput, ToolOperationResult>;
/**
 * Create the skills tool
 *
 * Invokes a configured skill by name and optional arguments.
 */
export declare function createSkillsTool(executor: SkillsExecutorWithMetadata, config?: Pick<DefaultToolsConfig, "skillsTimeoutMs">): Tool<SkillsInput, string>;
/**
 * Create the ask_question tool
 *
 * Asks the user a single clarifying question with 2-5 selectable options.
 */
export declare function createAskQuestionTool(executor: AskQuestionExecutor, config?: Pick<DefaultToolsConfig, "askQuestionTimeoutMs">): Tool<AskQuestionInput, string>;
/**
 * Create a set of default tools for an agent
 *
 * This function creates the default tools based on the provided configuration
 * and executors. Only tools that are enabled AND have an executor provided
 * will be included in the returned array.
 *
 * @example
 * ```typescript
 * import { Agent } from "@clinebot/agents"
 * import { createDefaultTools } from "@clinebot/core/node"
 * import * as fs from "fs/promises"
 * import { exec } from "child_process"
 *
 * const tools = createDefaultTools({
 *   executors: {
 *     readFile: async ({ path }) => fs.readFile(path, "utf-8"),
 *     bash: async (cmd, cwd) => {
 *       return new Promise((resolve, reject) => {
 *         exec(cmd, { cwd }, (err, stdout, stderr) => {
 *           if (err) reject(new Error(stderr || err.message))
 *           else resolve(stdout)
 *         })
 *       })
 *     },
 *   },
 *   enableReadFiles: true,
 *   enableBash: true,
 *   enableSearch: false, // Disabled
 *   enableWebFetch: false, // Disabled
 *   cwd: "/path/to/project",
 * })
 *
 * const agent = new Agent({
 *   // ... provider config
 *   tools,
 * })
 * ```
 */
export declare function createDefaultTools(options: CreateDefaultToolsOptions): Tool[];
