import { GitBranch, GitCommit, GitTag, GitRemote, PullRequest, GitWorkflow, GitStats, GitConfig, CommitConvention, GitHook } from './types.js';
export declare class GitManager {
    private config;
    constructor(config?: GitConfig);
    getBranches(): Promise<GitBranch[]>;
    createBranch(name: string, from?: string): Promise<GitBranch>;
    switchBranch(name: string): Promise<void>;
    deleteBranch(name: string, force?: boolean): Promise<void>;
    getCommits(options?: {
        branch?: string;
        limit?: number;
        since?: string;
        until?: string;
        author?: string;
    }): Promise<GitCommit[]>;
    getCommitDetails(hash: string): Promise<GitCommit>;
    createCommit(message: string, options?: {
        all?: boolean;
        amend?: boolean;
        noVerify?: boolean;
    }): Promise<GitCommit>;
    cherryPick(commits: string[], options?: {
        noCommit?: boolean;
        mainline?: number;
    }): Promise<void>;
    rebase(onto: string, options?: {
        interactive?: boolean;
        autosquash?: boolean;
        preserveMerges?: boolean;
    }): Promise<void>;
    getTags(): Promise<GitTag[]>;
    createTag(name: string, options?: {
        message?: string;
        commit?: string;
        force?: boolean;
    }): Promise<GitTag>;
    getRemotes(): Promise<GitRemote[]>;
    push(options?: {
        remote?: string;
        branch?: string;
        force?: boolean;
        tags?: boolean;
        setUpstream?: boolean;
    }): Promise<void>;
    pull(options?: {
        remote?: string;
        branch?: string;
        rebase?: boolean;
        noCommit?: boolean;
    }): Promise<void>;
    stash(options?: {
        message?: string;
        includeUntracked?: boolean;
        keepIndex?: boolean;
    }): Promise<void>;
    stashPop(index?: number): Promise<void>;
    getStatus(): Promise<{
        branch: string;
        upstream?: string;
        ahead: number;
        behind: number;
        staged: string[];
        unstaged: string[];
        untracked: string[];
    }>;
    startWorkflow(type: GitWorkflow['type'], name: string): Promise<GitWorkflow>;
    getStats(): Promise<GitStats>;
    createPullRequest(options: {
        title: string;
        description: string;
        sourceBranch: string;
        targetBranch?: string;
        labels?: string[];
        reviewers?: string[];
    }): Promise<PullRequest>;
    setupGitHooks(hooks: GitHook[]): Promise<void>;
    validateCommitMessage(message: string, convention: CommitConvention): Promise<{
        valid: boolean;
        errors: string[];
    }>;
    private loadGitConfig;
    getConflicts(): Promise<string[]>;
    resolveConflict(file: string, resolution: 'ours' | 'theirs'): Promise<void>;
}
//# sourceMappingURL=git-manager.d.ts.map