import { type LibraryGitConfig } from "@ai-kod/config"; export type GitCloneProtocol = "https" | "ssh"; export interface GitCloneRequest { /** Source in the form owner/repo, owner/repo@ref, git URL or SSH URL */ source: string; /** Optional reference override (branch, tag) */ ref?: string; /** Absolute or relative destination directory */ destination: string; /** Optional clone depth override */ depth?: number; /** Protocol override */ protocol?: GitCloneProtocol; } export interface GitCloneResult { repository: string; ref: string; commitSha: string; destination: string; } export interface GitProviderLogger { debug?(message: string, meta?: Record): void; info?(message: string, meta?: Record): void; warn?(message: string, meta?: Record): void; error?(message: string, meta?: Record): void; } export interface GitProvider { readonly name: string; clone(request: GitCloneRequest): Promise; } export interface GitCommandOptions { cwd?: string; timeoutMs?: number; env?: NodeJS.ProcessEnv; binary?: string; } export interface GitCommandResult { stdout: string; stderr: string; } export type GitCommandRunner = (args: string[], options: GitCommandOptions) => Promise; export interface GitProviderFactoryOptions { provider?: string; logger?: GitProviderLogger; config?: LibraryGitConfig; runner?: GitCommandRunner; } export declare class GitProviderError extends Error { constructor(message: string, options?: { cause?: unknown; }); } export declare class GithubProvider implements GitProvider { private readonly config; private readonly logger?; private readonly runner; readonly name = "github"; constructor(config: LibraryGitConfig, logger?: GitProviderLogger | undefined, runner?: GitCommandRunner); clone(request: GitCloneRequest): Promise; private prepareDestination; private runGit; private resolveCoordinates; private fromOwnerSlug; private fromHttpsUrl; private fromSshUrl; private buildRemoteUrl; private injectToken; private sanitizeArgs; private looksLikeHttps; private looksLikeSsh; private ensureAllowedHost; private logDebug; } export declare function createGitProvider(options?: GitProviderFactoryOptions): GitProvider;