import { AbsPosixPath } from "../types";
import { SpawnOptions, SpawnResult } from "./node-async";
export declare function execGit(cmd: string, args?: string[], options?: SpawnOptions): Promise<SpawnResult>;
export declare function assertCleanBranch(allowedBranches: string[]): Promise<void>;
/**
 * Get the hash of the HEAD commit.
 *
 * @return The hash of the HEAD commit.
 */
export declare function getHeadHash(): Promise<string>;
export declare function tagExists(tag: string): Promise<boolean>;
export interface GitCloneOptions {
    branch?: string;
    depth?: number;
    repository: string;
    directory: AbsPosixPath;
}
/**
 * Clone a repository into a new directory
 */
export declare function gitClone(options: GitCloneOptions): Promise<void>;
export interface GitAddOptions {
    paths: string[];
    repository: AbsPosixPath;
}
/**
 * Clone a repository into a new directory
 */
export declare function gitAdd(options: GitAddOptions): Promise<void>;
export interface GitCommitOptions {
    message: string;
    author?: string;
    repository: AbsPosixPath;
}
export declare function gitCommit(options: GitCommitOptions): Promise<void>;
export interface GitPushOptions {
    local: AbsPosixPath;
    remote: string;
}
export declare function gitPush(options: GitPushOptions): Promise<void>;
