import { Logger } from '@flxbl-io/sfp-logger';
export default class Git {
    private projectDir?;
    private logger?;
    private _git;
    private repositoryLocation;
    private tempRepoLocation;
    private _isATemporaryRepo;
    private constructor();
    fetch(): Promise<import("simple-git").FetchResult>;
    getHeadCommit(): Promise<string>;
    getBaseBranchCommit(baseBranch: string): Promise<string>;
    show(options: string[]): Promise<string>;
    tag(options: string[]): Promise<string[]>;
    diff(options: string[]): Promise<string[]>;
    log(options: string[]): Promise<string[]>;
    getRemoteOriginUrl(overrideOriginURL?: string): Promise<string>;
    commitFile(pathToFiles: string[], message?: string): Promise<void>;
    pushTags(tags?: string[]): Promise<void>;
    deleteTags(tags?: string[]): Promise<void>;
    addAnnotatedTag(tagName: string, annotation: string, commitId?: string): Promise<void>;
    isBranchExists(branch: string): Promise<boolean>;
    static initiateRepoAtTempLocation(logger: Logger, commitRef?: string, branch?: string): Promise<Git>;
    static initiateRepo(logger?: Logger, projectDir?: string): Promise<Git>;
    raw(commands: string[]): import("simple-git").Response<string>;
    getRepositoryPath(): string;
    deleteTempoRepoIfAny(): Promise<void>;
    addSafeConfig(repoDir: string): Promise<void>;
    pushToRemote(branch: string, isForce: boolean): Promise<void>;
    isATemporaryRepo(): boolean;
    getCurrentCommitId(): Promise<string>;
    checkout(commitRef: string, isForce?: boolean): Promise<string>;
    checkoutPath(commitRef: string, path: string, isForce?: boolean): Promise<string>;
    stageChangedFiles(path: string): Promise<boolean>;
    createBranch(branch: string): Promise<void>;
}
