/**
 * Todo Store - Persistent todo list management
 *
 * @module agent/tools/todo-store
 * @description
 * Manages a todo list with optional persistence callbacks.
 * The coding-agent uses this to integrate with SessionManager for session persistence.
 *
 * ## Architecture
 *
 * The TodoStore supports two modes:
 * 1. **Simple mode** (default): Stores todos in memory only
 * 2. **Persistent mode**: Uses callbacks to persist/load todos
 *
 * ## Usage
 *
 * ### Simple mode
 * ```typescript
 * const store = new TodoStore();
 * store.setTodos([{ content: "Task", status: "pending", priority: "high" }]);
 * ```
 *
 * ### Persistent mode (coding-agent style)
 * ```typescript
 * const store = new TodoStore({
 *   persist: (todos) => sessionManager.appendCustomEntry('todo', { todos }),
 *   load: () => loadFromSession(),
 *   rebuildFromBranch: () => rebuildFromSession(),
 * });
 * ```
 */
import type { TodoItem, TodoStatus, TodoStoreOptions } from "./todo-types.js";
export type { TodoItem, TodoStatus, TodoPriority, TodoStoreOptions, TodoToolDetails } from "./todo-types.js";
declare const TODO_STATUSES: readonly ["pending", "in_progress", "completed", "cancelled"];
declare const TODO_PRIORITIES: readonly ["high", "medium", "low"];
/**
 * Simple Todo Store for the todo tool.
 * Supports optional persistence callbacks for session integration.
 */
export declare class TodoStore {
    private todos;
    private options?;
    /**
     * Create a new TodoStore
     * @param initialTodos - Optional initial todos (takes precedence over load callback)
     * @param options - Optional persistence callbacks
     */
    constructor(initialTodos?: TodoItem[], options?: TodoStoreOptions);
    constructor(options?: TodoStoreOptions);
    /**
     * Get all todos (returns a copy)
     */
    getTodos(): TodoItem[];
    /**
     * Set todos and persist
     */
    setTodos(todos: TodoItem[]): void;
    /**
     * Find todos matching a query
     */
    find(query: string): TodoItem[];
    /**
     * Filter todos by status
     */
    filterByStatus(status: TodoStatus): TodoItem[];
    /**
     * Rebuild todos from session branch
     * Called when navigating the session tree
     */
    rebuildFromBranch(): void;
    /**
     * Remove expired todos
     */
    private removeExpired;
}
export { TODO_STATUSES, TODO_PRIORITIES };
