import { ValidConfigOptions } from '../options/options';
import { CommitAuthor } from './author';
import { TargetPullRequest } from './sourceCommit/getPullRequestStates';
import { Commit } from './sourceCommit/parseSourceCommit';
export declare function getRemoteUrl({ repoName, accessToken, gitHostname }: ValidConfigOptions, repoOwner: string): string;
export declare function cloneRepo({ sourcePath, targetPath }: {
    sourcePath: string;
    targetPath: string;
}, onProgress: (progress: number) => void): Promise<void>;
export declare function getLocalConfigFileCommitDate({ cwd }: {
    cwd: string;
}): Promise<number | undefined>;
export declare function isLocalConfigFileUntracked({ cwd }: {
    cwd: string;
}): Promise<boolean | undefined>;
export declare function isLocalConfigFileModified({ cwd }: {
    cwd: string;
}): Promise<boolean>;
export declare function getRepoInfoFromGitRemotes({ cwd }: {
    cwd: string;
}): Promise<{
    repoOwner: string;
    repoName: string;
}[]>;
export declare function getGitProjectRootPath(dir: string): Promise<string | undefined>;
export declare function getIsCommitInBranch(options: ValidConfigOptions, commitSha: string): Promise<boolean>;
export declare function deleteRemote(options: ValidConfigOptions, remoteName: string): Promise<void>;
export declare function addRemote(options: ValidConfigOptions, remoteName: string): Promise<void>;
export declare function fetchBranch(options: ValidConfigOptions, branch: string): Promise<void>;
export declare function getIsMergeCommit(options: ValidConfigOptions, sha: string): Promise<boolean>;
export declare function getShasInMergeCommit(options: ValidConfigOptions, sha: string): Promise<string[]>;
export declare function cherrypick({ options, sha, mergedTargetPullRequest, commitAuthor, }: {
    options: ValidConfigOptions;
    sha: string;
    mergedTargetPullRequest?: TargetPullRequest;
    commitAuthor: CommitAuthor;
}): Promise<{
    conflictingFiles: {
        absolute: string;
        relative: string;
    }[];
    unstagedFiles: string[];
    needsResolving: boolean;
}>;
export declare function gitAddAll({ options }: {
    options: ValidConfigOptions;
}): Promise<{
    cmdArgs: readonly string[];
    code: number | null;
    stderr: string;
    stdout: string;
}>;
export declare function commitChanges({ options, commit, commitAuthor, }: {
    options: ValidConfigOptions;
    commit: Commit;
    commitAuthor: CommitAuthor;
}): Promise<void>;
export type ConflictingFiles = Awaited<ReturnType<typeof getConflictingFiles>>;
export declare function getConflictingFiles(options: ValidConfigOptions): Promise<{
    absolute: string;
    relative: string;
}[]>;
export declare function getUnstagedFiles(options: ValidConfigOptions): Promise<string[]>;
export declare function createBackportBranch({ options, sourceBranch, backportBranch, targetBranch, }: {
    options: ValidConfigOptions;
    sourceBranch: string;
    backportBranch: string;
    targetBranch: string;
}): Promise<void>;
export declare function deleteBackportBranch({ options, backportBranch, }: {
    options: ValidConfigOptions;
    backportBranch: string;
}): Promise<void>;
export declare function getRepoForkOwner(options: ValidConfigOptions): string;
export declare function pushBackportBranch({ options, backportBranch, }: {
    options: ValidConfigOptions;
    backportBranch: string;
}): Promise<{
    cmdArgs: readonly string[];
    code: number | null;
    stderr: string;
    stdout: string;
}>;
export declare function getLocalSourceRepoPath(options: ValidConfigOptions): Promise<string | undefined>;
