import type { TodoItem, UpdateTodoItemInput, UpdateTodoItemOutput } from './todo.js'; export type FilesystemProvider = { readFile?: (path: string, includeIgnored: boolean) => Promise; writeFile?: (path: string, content: string) => Promise; fileExists?: (path: string) => Promise; removeFile?: (path: string) => Promise; renameFile?: (sourcePath: string, targetPath: string) => Promise; listFiles?: (path: string, recursive: boolean, maxCount: number, includeIgnored: boolean) => Promise<[string[], boolean]>; searchFiles?: (path: string, regex: string, filePattern: string) => Promise; readBinaryFile?: (url: string) => Promise<{ base64Data: string; mediaType: string; }>; }; export type CommandProvider = { executeCommand?: (command: string, needApprove: boolean) => Promise<{ stdout: string; stderr: string; exitCode: number; summary?: string; }>; }; export type InteractionProvider = { askFollowupQuestion?: (question: string, options: string[]) => Promise; }; export type WebProvider = { fetchUrl?: (url: string) => Promise; search?: (query: string) => Promise; }; export interface MemoryProvider { listMemoryTopics: () => Promise; readMemory: (topic?: string) => Promise; updateMemory: (operation: 'append' | 'replace' | 'remove', topic: string | undefined, content: string | undefined) => Promise; } export type ListTodoItemsOutput = TodoItem[]; export type GetTodoItemOutput = TodoItem & { subItems: { id: string; title: string; }[]; }; export type TodoProvider = { listTodoItems: (id?: string | null, status?: string | null) => Promise; getTodoItem: (id: string) => Promise; updateTodoItem: (input: UpdateTodoItemInput) => Promise; }; export type ToolProvider = FilesystemProvider & CommandProvider & InteractionProvider & WebProvider & Partial & Partial; export declare class MockProvider implements ToolProvider { listTodoItems(id?: string | null, _status?: string | null): Promise<{ id: string; title: string; status: "open"; description: string; }[]>; getTodoItem(id: string): Promise; updateTodoItem(input: UpdateTodoItemInput): Promise<{ id: string; }>; readFile(_path: string, _includeIgnored?: boolean): Promise; writeFile(_path: string, _content: string): Promise; removeFile(_path: string): Promise; renameFile(_sourcePath: string, _targetPath: string): Promise; listFiles(_path: string, _recursive: boolean, _maxCount: number, _includeIgnored?: boolean): Promise<[string[], boolean]>; searchFiles(_path: string, _regex: string, _filePattern: string): Promise; executeCommand(_command: string, _needApprove: boolean): Promise<{ stdout: string; stderr: string; exitCode: number; summary?: string; }>; askFollowupQuestion(_question: string, _options?: string[]): Promise; search(_query: string): Promise; listMemoryTopics(): Promise; readMemory(_topic?: string): Promise; updateMemory(_operation: 'append' | 'replace' | 'remove', _topic?: string, _content?: string): Promise; }