import type { SourceBinding, SourceCredential, SourceDeployKey, SourceRef } from './types';
export interface GitTransportOptions {
    credential?: SourceCredential;
    deployKey?: SourceDeployKey & {
        privateKey: string;
    };
    executable?: string;
    timeoutMs?: number;
}
export interface ClonedSource {
    directory: string;
    commitSha: string;
}
export declare function discoverGitRefs(remoteValue: string, options?: GitTransportOptions): Promise<{
    branches: SourceRef[];
    tags: SourceRef[];
}>;
/** Clone/fetch is argv-only, timeout-bounded, non-interactive, and never embeds credentials in the remote URL. */
export declare function cloneSourceBinding(input: {
    remote: string;
    binding: SourceBinding;
    destination: string;
    ref?: string;
    commitSha?: string;
    sparsePaths?: string[];
}, options?: GitTransportOptions): Promise<ClonedSource>;
