/**
 * GitHub Cloner Utility
 *
 * Handles cloning GitHub repositories for admin starter templates
 * and other project templates.
 */
export interface CloneOptions {
    url: string;
    outputPath: string;
    branch?: string;
    depth?: number;
    removeGit?: boolean;
    verbose?: boolean;
}
export interface CloneResult {
    success: boolean;
    outputPath: string;
    error?: string;
    metadata?: {
        repository: string;
        branch: string;
        commitHash: string;
        clonedAt: string;
    };
}
export declare class GitHubCloner {
    /**
     * Clone a GitHub repository
     */
    static clone(options: CloneOptions): Promise<CloneResult>;
    /**
     * Clone admin starter repository
     */
    static cloneAdminStarter(outputPath: string, options?: Partial<CloneOptions>): Promise<CloneResult>;
    /**
     * Clone a specific template repository
     */
    static cloneTemplate(templateName: string, outputPath: string, options?: Partial<CloneOptions>): Promise<CloneResult>;
    /**
     * Check if a repository exists and is accessible
     */
    static checkRepository(url: string): Promise<{
        exists: boolean;
        error?: string;
    }>;
    /**
     * Get available branches for a repository
     */
    static getBranches(url: string): Promise<{
        branches: string[];
        error?: string;
    }>;
    /**
     * Get the latest commit hash for a repository
     */
    static getLatestCommit(url: string, branch?: string): Promise<{
        commitHash: string;
        error?: string;
    }>;
    /**
     * Get commit hash for a cloned repository
     */
    private static getCommitHash;
    /**
     * Extract repository name from URL
     */
    private static extractRepositoryName;
    /**
     * Clone with retry logic
     */
    static cloneWithRetry(options: CloneOptions, maxRetries?: number): Promise<CloneResult>;
    /**
     * Clone and setup project
     */
    static cloneAndSetup(options: CloneOptions & {
        installDependencies?: boolean;
        runSetup?: boolean;
        setupCommands?: string[];
    }): Promise<CloneResult>;
    /**
     * Install dependencies in cloned repository
     */
    private static installDependencies;
    /**
     * Run setup commands in cloned repository
     */
    private static runSetupCommands;
    /**
     * Clean up cloned repository
     */
    static cleanup(outputPath: string): Promise<void>;
}
//# sourceMappingURL=githubCloner.d.ts.map