/**
 * Spec Content Synchronization
 *
 * Syncs spec CONTENT (title, description, user stories) to external tools.
 * Does NOT sync STATUS - that's managed by external tool.
 *
 * Sync Direction:
 * - Title/Description/User Stories: SpecWeave → External Tool (we update)
 * - Status/State: External Tool → SpecWeave (we read)
 */
import { SpecIdentifier } from '../types/spec-identifier.js';
import { Logger } from '../../utils/logger.js';
export interface SpecContent {
    /** Flexible identifier (JIRA-AUTH-123, user-login-ui, spec-001, etc.) */
    identifier: SpecIdentifier;
    /** Legacy ID for backward compatibility (deprecated) */
    id: string;
    title: string;
    description: string;
    userStories: SpecUserStory[];
    metadata: {
        priority?: string;
        tags?: string[];
        githubProject?: string;
        jiraEpic?: string;
        adoFeature?: string;
    };
    /** Project this spec belongs to (backend, frontend, mobile, etc.) */
    project: string;
}
export interface SpecUserStory {
    id: string;
    title: string;
    acceptanceCriteria: SpecAcceptanceCriterion[];
}
export interface SpecAcceptanceCriterion {
    id: string;
    description: string;
    completed: boolean;
    priority?: string;
    testable: boolean;
}
export interface ContentSyncResult {
    success: boolean;
    action: 'created' | 'updated' | 'updated-via-comment' | 'no-change' | 'skipped' | 'error';
    externalId?: string;
    externalUrl?: string;
    error?: string;
}
/**
 * Parse spec.md to extract content
 */
export declare function parseSpecContent(specPath: string, options?: {
    logger?: Logger;
}): Promise<SpecContent | null>;
/**
 * Detect changes between local spec and external tool
 */
export declare function detectContentChanges(localSpec: SpecContent, externalContent: {
    title: string;
    description: string;
    userStoryCount: number;
}): {
    hasChanges: boolean;
    changes: string[];
};
/**
 * Build external tool description from spec content
 */
export declare function buildExternalDescription(spec: SpecContent): string;
/**
 * Check if spec has external tool link
 */
export declare function hasExternalLink(specPath: string, provider: 'github' | 'jira' | 'ado'): Promise<string | null>;
/**
 * Update spec.md with external tool link
 */
export declare function updateSpecWithExternalLink(specPath: string, provider: 'github' | 'jira' | 'ado', externalId: string, externalUrl: string): Promise<void>;
/**
 * Get spec modification time
 */
export declare function getSpecModificationTime(specPath: string): Promise<Date>;
/**
 * Check if spec was modified since last sync
 */
export declare function wasSpecModifiedSinceSync(specPath: string, lastSyncTime?: Date): Promise<boolean>;
//# sourceMappingURL=spec-content-sync.d.ts.map