export interface GitStatus {
    isRepo: boolean;
    isDirty: boolean;
    hasUncommitted: boolean;
    hasUntracked: boolean;
    branch: string;
    ahead: number;
    behind: number;
}
export interface CommitOptions {
    message: string;
    coAuthor?: {
        name: string;
        email: string;
    };
    signoff?: boolean;
    noVerify?: boolean;
}
export interface GitCommitResult {
    success: boolean;
    commitHash?: string;
    error?: string;
}
export interface GitValidationResult {
    isValid: boolean;
    errors: string[];
    suggestions: string[];
    gitVersion?: string;
}
export interface GitValidationOptions {
    onDebug?: (message: string) => void;
}
export interface PushOptions {
    remote?: string;
    branch?: string;
    force?: boolean;
    setUpstream?: boolean;
}
export interface GitPushResult {
    success: boolean;
    remote?: string;
    branch?: string;
    error?: string;
    stderr?: string;
}
export declare function checkGitAvailable(): Promise<boolean>;
export declare function getGitVersion(): Promise<string | null>;
export declare function isGitRepository(): Promise<boolean>;
export declare function getGitStatus(): Promise<GitStatus>;
export declare function stageAllChanges(): Promise<void>;
export declare function createCommit(options: CommitOptions): Promise<GitCommitResult>;
export declare function getCurrentCommitHash(): Promise<string | null>;
export declare function getUncommittedChanges(): Promise<string>;
export declare function hasChangesToCommit(): Promise<boolean>;
export declare function revertToCommit(commitHash: string): Promise<boolean>;
export declare function getChangedFiles(): Promise<string[]>;
export declare function validateGitEnvironment(options?: GitValidationOptions): Promise<GitValidationResult>;
export declare function getCurrentBranch(): Promise<string | null>;
export declare function hasUpstreamBranch(): Promise<boolean>;
export declare function checkGitRemote(remote?: string): Promise<{
    exists: boolean;
    accessible: boolean;
    error?: string;
}>;
export declare function pushToRemote(options?: PushOptions): Promise<GitPushResult>;
export declare function validateRemoteForPush(remote?: string): Promise<GitValidationResult>;
