import type { RseConfig } from "@reliverse/cfg";
import type { DeploymentService } from "../../../../sdk-types.js";
import type { RepoOption } from "../../../../utils/projectRepository.js";
import type { ReliverseMemory } from "../../../../utils/schemaMemory.js";
import { type InstanceGithub } from "../../../../utils/instanceGithub.js";
/**
 * Result object from a GitHub setup attempt.
 */
interface GithubSetupResult {
    success: boolean;
    githubInstance?: InstanceGithub;
    username?: string;
}
/**
 * Initializes the local git repository.
 */
export declare function handleGitInit(cwd: string, isDev: boolean, projectName: string, projectPath: string, config: RseConfig, isTemplateDownload: boolean): Promise<boolean>;
/**
 * Configures a GitHub repository:
 * - Prompts for a GitHub username if needed.
 * - Uses handleGithubRepo to create or select an existing repository.
 * - Re-reads memory for the GitHub token and initializes the Octokit instance.
 */
export declare function configureGithubRepo(githubInstance: InstanceGithub, githubToken: string, skipPrompts: boolean, cwd: string, isDev: boolean, memory: ReliverseMemory, config: RseConfig, projectName: string, projectPath: string, maskInput: boolean, selectedTemplate: RepoOption, isTemplateDownload: boolean, githubUsername: string): Promise<GithubSetupResult>;
/**
 * Orchestrates the entire deployment flow.
 * It first asks whether the user wishes to use GitHub, then:
 * - Sets up local git if needed.
 * - Configures GitHub by attempting up to 3 retries.
 * - Proceeds with Vercel deployment (including domain selection).
 */
export declare function promptGitDeploy({ isLib, projectName, config, projectPath, primaryDomain: initialPrimaryDomain, hasDbPush, shouldRunDbPush, shouldInstallDeps, isDev, memory, cwd, maskInput, skipPrompts, selectedTemplate, isTemplateDownload, frontendUsername, }: {
    isLib: boolean;
    projectName: string;
    config: RseConfig;
    projectPath: string;
    primaryDomain: string;
    hasDbPush: boolean;
    shouldRunDbPush: boolean;
    shouldInstallDeps: boolean;
    isDev: boolean;
    memory: ReliverseMemory;
    cwd: string;
    maskInput: boolean;
    skipPrompts: boolean;
    selectedTemplate: RepoOption;
    isTemplateDownload: boolean;
    frontendUsername: string;
}): Promise<{
    deployService: DeploymentService | "none";
    primaryDomain: string;
    isDeployed: boolean;
    allDomains: string[];
}>;
export {};
