/** A tagged version snapshot of a spec (git-like versioning). */
export interface SpecVersionSnapshot {
    /** Semantic version tag, e.g. "v1.0.0", "v1.1.0" */
    tag: string;
    /** ISO 8601 timestamp when the snapshot was created */
    timestamp: string;
    /** Full spec content at time of snapshot */
    content: string;
    /** Optional human-readable message describing this version */
    message?: string;
    /** Optional author identifier */
    author?: string;
}
/** Storage structure for all snapshots of a spec. */
export interface SpecVersionSnapshotStore {
    specId: string;
    versions: SpecVersionSnapshot[];
}
/** A spec branch for experimental changes. */
export interface SpecBranch {
    /** Branch name (kebab-case) */
    name: string;
    /** The spec ID this branch belongs to */
    specId: string;
    /** ISO 8601 timestamp when the branch was created */
    createdAt: string;
    /** Version tag from which this branch was created */
    fromVersion: string;
    /** Full spec content on this branch */
    content: string;
}
/** Diff result between two spec versions at AC-level granularity. */
export interface SpecVersionDiff {
    fromTag: string;
    toTag: string;
    specId: string;
    /** Lines added in the "to" version */
    added: string[];
    /** Lines removed compared to "from" version */
    removed: string[];
    /** Acceptance criteria that changed (AC-level granularity) */
    criteriaChanges: {
        added: string[];
        removed: string[];
        modified: {
            before: string;
            after: string;
        }[];
    };
    /** Summary of sections that changed */
    sectionChanges: string[];
}
/** Conflict detected when merging a branch back into main. */
export interface SpecMergeConflict {
    type: 'content_diverged' | 'concurrent_edit';
    description: string;
    /** The conflicting lines or sections */
    details: string[];
}
/** Result of a merge operation. */
export interface SpecMergeResult {
    success: boolean;
    specId: string;
    branchName: string;
    newVersionTag?: string;
    conflicts: SpecMergeConflict[];
    message: string;
}
/** Input options for creating a spec version snapshot. */
export interface CreateVersionSnapshotInput {
    projectId: string;
    specId: string;
    tag: string;
    content: string;
    message?: string;
    author?: string;
}
/** Input options for creating a spec branch. */
export interface CreateSpecBranchInput {
    projectId: string;
    specId: string;
    branchName: string;
    fromVersion?: string;
    content: string;
}
/** Input options for merging a spec branch. */
export interface MergeSpecBranchInput {
    projectId: string;
    specId: string;
    branchName: string;
    /** Optional merged spec content (if pre-resolved). If absent, auto-merge is attempted. */
    resolvedContent?: string;
    newVersionTag?: string;
    message?: string;
}
/** Input for the branch_spec tool. */
export interface BranchSpecInput {
    projectId: string;
    specId: string;
    branchName: string;
    fromVersion?: string;
    /** Path to the spec file to read content from */
    specPath?: string;
}
/** Input for the version_spec tool. */
export interface VersionSpecInput {
    projectId: string;
    specId: string;
    tag?: string;
    message?: string;
    author?: string;
    /** Absolute path to the spec's spec.md file. */
    specPath?: string;
}
/** Input for the merge_spec_branch tool handler — alias for MergeSpecBranchInput. */
export type MergeSpecBranchHandlerInput = MergeSpecBranchInput;
/** Input for the diff_spec_versions tool. */
export interface DiffSpecVersionsInput {
    projectId: string;
    specId: string;
    /** From version tag (e.g. "v1.0.0"). If omitted with toVersion, uses penultimate version. */
    fromVersion?: string;
    /** To version tag (e.g. "v2.0.0"). Defaults to latest if not provided. */
    toVersion?: string;
    /** Output format: "text" returns +/- line diff, "json" returns structured object. */
    format?: 'text' | 'json';
}
/** Summary of a single version in the spec version history. */
export interface VersionSummary {
    tag: string;
    timestamp: string;
    author?: string;
    message?: string;
    /** Auto-generated summary: N lines added, M removed vs previous version. */
    changeSummary: string;
}
/** Input for the spec_history tool (version-based history). */
export interface SpecVersionHistoryInput {
    projectId: string;
    specId: string;
    /** Max number of versions to return (default 20). */
    limit?: number;
}
/** Options passed to the engine's computeSpecVersionDiff function. */
export interface ComputeDiffOptions {
    /** Absolute path to the project data directory. */
    dataDir: string;
    specId: string;
    fromVersion?: string;
    toVersion?: string;
}
//# sourceMappingURL=spec-versioning.d.ts.map