/**
 * Track Manager - Context-Driven Development
 *
 * Manages tracks (features, bugs) with spec → plan → implement workflow.
 * Inspired by Conductor's "Measure twice, code once" philosophy.
 */
import { Track, TrackMetadata, TrackSpec, TrackPlan, TrackPhase, TrackTask, TrackStatus, TaskStatus, TrackCreateOptions, TrackListOptions, ProjectContext } from './types';
export declare class TrackManager {
    private workingDirectory;
    private codeBuddyDir;
    private tracksDir;
    private contextDir;
    constructor(workingDirectory?: string);
    /**
     * Initialize the track system for a project
     */
    initialize(): Promise<void>;
    /**
     * Check if track system is initialized
     */
    isInitialized(): Promise<boolean>;
    /**
     * Create a new track
     */
    createTrack(options: TrackCreateOptions): Promise<Track>;
    /**
     * Get a track by ID
     */
    getTrack(trackId: string): Promise<Track | null>;
    /**
     * List all tracks
     */
    listTracks(options?: TrackListOptions): Promise<TrackMetadata[]>;
    /**
     * Update track status
     */
    updateTrackStatus(trackId: string, status: TrackStatus): Promise<void>;
    /**
     * Delete a track
     */
    deleteTrack(trackId: string): Promise<void>;
    /**
     * Update track spec
     */
    updateSpec(trackId: string, spec: Partial<TrackSpec>): Promise<void>;
    /**
     * Update track plan
     */
    updatePlan(trackId: string, plan: TrackPlan): Promise<void>;
    /**
     * Update a task's status
     */
    updateTaskStatus(trackId: string, phaseId: string, taskId: string, status: TaskStatus, commitSha?: string): Promise<void>;
    /**
     * Get the next pending task
     */
    getNextTask(trackId: string): Promise<{
        phase: TrackPhase;
        task: TrackTask;
    } | null>;
    /**
     * Load project context files
     */
    loadContext(): Promise<ProjectContext>;
    /**
     * Update a context file
     */
    updateContext(file: 'product' | 'tech-stack' | 'guidelines' | 'workflow', content: string): Promise<void>;
    /**
     * Get context as a string for injection into prompts
     */
    getContextString(): Promise<string>;
    private saveTrackMetadata;
    private loadTrackMetadata;
    private saveTrackSpec;
    private loadTrackSpec;
    private saveTrackPlan;
    private loadTrackPlan;
    private specToMarkdown;
    private markdownToSpec;
    private planToMarkdown;
    private taskToMarkdown;
    private markdownToPlan;
    private parseTaskStatus;
    private generateTrackId;
    private slugify;
    private extractListItems;
    private findTask;
    private recalculateProgress;
    private updateTracksIndex;
    private removeFromTracksIndex;
    private getStatusEmoji;
    private getTracksIndexTemplate;
    private getDefaultProductTemplate;
    private getDefaultTechStackTemplate;
    private getDefaultGuidelinesTemplate;
    private getDefaultWorkflowTemplate;
}
