import type { InputOptions } from "../../interfaces/InputOptions";
import type { GitProviderDomain, GitProviderType } from "../../interfaces/SystemTypes";
/**
 * Generate SSH URL of the git repository
 * @param provider
 * @example `github`
 * @param repoSlug - Include username/org slug, exclude ".git" at the end
 * @example `digitopvn/diginext13`
 * @returns
 */
export declare function generateRepoSSH(provider: GitProviderType | string, repoSlug: string): string;
/**
 * Generate SSH URL of the git repository
 * @param repoSlug - Include username/org slug, exclude ".git" at the end
 * @example `digitopvn/diginext13`
 * @returns
 */
export declare function generateRepoURL(provider: GitProviderType | string, repoSlug: string): string;
/**
 * Generate SSH URL of the git repository
 * @param repoSlug - Include username/org slug, exclude ".git" at the end
 * @example `digitopvn/diginext13`
 * @returns
 */
export declare const getRepoURLFromRepoSSH: typeof generateRepoURL;
export declare const login: (options?: InputOptions) => Promise<boolean>;
export declare const logout: () => Promise<void>;
export interface InitializeGitRemoteOptions extends Pick<InputOptions, "repoSSH" | "targetDirectory" | "username"> {
    /**
     * App's working directory
     */
    dir: string;
}
/**
 * @deprecated
 * Setup "main" branch and "dev/*" branch
 */
export declare function initializeGitRemote(options: InitializeGitRemoteOptions): Promise<boolean>;
/**
 * Get user profile object
 */
export declare const getUserProfile: (options?: InputOptions) => Promise<import("./github").GithubProfile & import("./github").GithubApiFailResponse>;
export declare const setupRepositoryPermissions: (options?: InputOptions) => Promise<void>;
export declare const getListRepositories: (options?: InputOptions) => Promise<void>;
export declare const createNewPullRequest: (options?: InputOptions) => Promise<any[]>;
export declare const addKeysToKnownHosts: (data: {
    gitDomain: string;
    publicIdRsaFile: string;
    privateIdRsaFile: string;
}) => Promise<{
    gitDomain: string;
    publicIdRsaFile: string;
    privateIdRsaFile: string;
    sshConfigPath: string;
    knownHostsPath: string;
}>;
export declare const writeCustomSSHKeys: (params: {
    gitDomain: GitProviderDomain;
    privateKey: string;
    publicKey?: string;
    force?: boolean;
}) => Promise<{
    gitDomain: "bitbucket.org" | "github.com";
    privateIdRsaFile: string;
    publicIdRsaFile: string;
}>;
export declare const generateSSH: (options?: InputOptions) => Promise<string>;
export declare const sshKeysExisted: (options?: {
    publicIdRsaFile: string;
    privateIdRsaFile: string;
}) => Promise<boolean>;
export declare const getSshKeys: (options?: {
    publicIdRsaFile: string;
    privateIdRsaFile: string;
}) => Promise<{
    privateKey: string;
    publicKey: string;
}>;
export declare const getPublicKey: (filePath?: string) => Promise<{
    publicKey: string;
}>;
export declare const sshKeyContainPassphase: (options?: {
    sshFile: string;
}) => boolean;
export declare const verifySSH: (options?: InputOptions) => Promise<any>;
/**
 * Check if the client machine can access to the git provider publicly.
 */
export declare const checkGitProviderAccess: (gitProvider: GitProviderType) => Promise<boolean>;
/**
 * Check if the client machine can access to the PRIVATE git repository.
 */
export declare const checkGitRepoAccess: (repoSSH: string) => Promise<boolean>;
export declare function execGit(options: any): Promise<any>;
//# sourceMappingURL=index.d.ts.map