/**
 * Changelog Generator
 *
 * Automated changelog generation from git commits:
 * - Conventional commits parsing
 * - Version grouping
 * - Breaking changes detection
 * - Multiple output formats
 */
export type CommitType = 'feat' | 'fix' | 'docs' | 'style' | 'refactor' | 'perf' | 'test' | 'build' | 'ci' | 'chore' | 'revert';
export interface ConventionalCommit {
    hash: string;
    shortHash: string;
    type: CommitType;
    scope?: string;
    subject: string;
    body?: string;
    breaking: boolean;
    breakingNote?: string;
    date: Date;
    author: string;
    references: string[];
}
export interface VersionEntry {
    version: string;
    date: Date;
    commits: ConventionalCommit[];
    breaking: ConventionalCommit[];
}
export interface ChangelogOptions {
    /** Repository path */
    repoPath?: string;
    /** Number of releases to include (0 = all) */
    releaseCount?: number;
    /** Include unreleased commits */
    includeUnreleased?: boolean;
    /** Group commits by type */
    groupByType?: boolean;
    /** Include commit body */
    includeBody?: boolean;
    /** Include author */
    includeAuthor?: boolean;
    /** Repository URL for links */
    repoUrl?: string;
    /** Output format */
    format?: 'markdown' | 'json' | 'html';
}
/**
 * Changelog Generator
 */
export declare class ChangelogGenerator {
    private options;
    constructor(options?: ChangelogOptions);
    /**
     * Generate changelog
     */
    generate(): Promise<string>;
    /**
     * Parse versions from git history
     */
    parseVersions(): Promise<VersionEntry[]>;
    /**
     * Get git tags sorted by date
     */
    private getTags;
    /**
     * Get parsed commits
     */
    private getCommits;
    /**
     * Parse conventional commit format
     */
    private parseConventionalCommit;
    /**
     * Format as Markdown
     */
    private formatMarkdown;
    /**
     * Format single commit as Markdown
     */
    private formatCommitMarkdown;
    /**
     * Format as HTML
     */
    private formatHtml;
    /**
     * Write changelog to file
     */
    writeToFile(filePath: string): Promise<void>;
    /**
     * Update existing CHANGELOG.md
     */
    updateChangelog(changelogPath?: string): Promise<void>;
}
/**
 * Generate changelog
 */
export declare function generateChangelog(options?: ChangelogOptions): Promise<string>;
/**
 * Update CHANGELOG.md file
 */
export declare function updateChangelog(options?: ChangelogOptions): Promise<void>;
export default ChangelogGenerator;
