/**
 * Forge-style git-clone-on-server deploys: the box clones the site's repository
 * into a fresh release directory rather than receiving a tarball over SCP.
 *
 * The clone is shallow (`--depth 1`) on the configured branch for speed. When a
 * specific commit is requested, it is fetched and checked out so deploys are
 * reproducible. The resolved commit SHA is written to `<release>/.ts-cloud-sha`
 * so later steps (and rollbacks) can identify the release.
 */
import type { SiteRepositoryConfig } from '@ts-cloud/core';
export interface GitCheckoutOptions {
    /** Repository to clone. */
    repository: SiteRepositoryConfig;
    /** Absolute release directory to clone into (`<base>/releases/<id>`). */
    releaseDir: string;
    /**
     * Specific commit to deploy. When omitted, the branch tip is used (Forge's
     * push-to-deploy behaviour).
     */
    commit?: string;
}
/** Default branch when the repository config omits one. */
export declare const DEFAULT_DEPLOY_BRANCH = "main";
/** Default tag glob when `strategy: 'tag'` and no explicit tag is set. */
export declare const DEFAULT_TAG_PATTERN = "v*";
/**
 * Build the shell commands that clone + checkout the repository into the
 * release directory. Assumes `git` is installed (the bootstrap installs it).
 *
 * Strategy is taken from `repository.strategy`:
 *  - `'push'` (default) — clone the branch tip (or a pinned `commit`).
 *  - `'tag'` — clone a version tag: the explicit `repository.tag`, else the
 *    highest tag matching `repository.tagPattern`, resolved on the box via
 *    `git ls-remote --sort=-v:refname`.
 */
export declare function buildGitCheckoutScript(options: GitCheckoutOptions): string[];
