import { Storage } from './storage.js';
import { Project } from '../models/project.js';
import { Task } from '../models/task.js';
import { Subtask } from '../models/subtask.js';
/**
 * File-based storage implementation using JSON with project-specific directories
 */
export declare class FileStorage implements Storage {
    private workingDirectory;
    private storageDir;
    private dataFile;
    private data;
    constructor(workingDirectory: string);
    /**
     * Initialize storage by validating working directory and loading data from file
     */
    initialize(): Promise<void>;
    /**
     * Save data to file
     */
    private save;
    getProjects(): Promise<Project[]>;
    getProject(id: string): Promise<Project | null>;
    createProject(project: Project): Promise<Project>;
    updateProject(id: string, updates: Partial<Project>): Promise<Project | null>;
    deleteProject(id: string): Promise<boolean>;
    getTasks(projectId?: string): Promise<Task[]>;
    getTask(id: string): Promise<Task | null>;
    createTask(task: Task): Promise<Task>;
    updateTask(id: string, updates: Partial<Task>): Promise<Task | null>;
    deleteTask(id: string): Promise<boolean>;
    deleteTasksByProject(projectId: string): Promise<number>;
    getSubtasks(taskId?: string, projectId?: string): Promise<Subtask[]>;
    getSubtask(id: string): Promise<Subtask | null>;
    createSubtask(subtask: Subtask): Promise<Subtask>;
    updateSubtask(id: string, updates: Partial<Subtask>): Promise<Subtask | null>;
    deleteSubtask(id: string): Promise<boolean>;
    deleteSubtasksByTask(taskId: string): Promise<number>;
    deleteSubtasksByProject(projectId: string): Promise<number>;
}
