/**
 * GitRemoteService
 *
 * Backs IGitRemoteService with the user's local `gh` CLI. Shares the same
 * injected ExecFunction used by git-fork.service.ts and worktree.service.ts.
 *
 * Spec 089 — one-click-cloud-deploy, phase 4.
 */
import type { ExecFunction } from './worktree.service.js';
import type { CommitAndPushInput, CommitAndPushResult, CreateGitHubRepoInput, GitWorkingTreeStatus, IGitRemoteService } from '../../../application/ports/output/services/git-remote.service.interface.js';
export declare class GitRemoteService implements IGitRemoteService {
    private readonly execFile;
    constructor(execFile: ExecFunction);
    isGhAuthenticated(): Promise<boolean>;
    createGitHubRepoAndPush(input: CreateGitHubRepoInput): Promise<{
        remoteUrl: string;
    }>;
    private ensureGitInitialized;
    private ensureInitialCommit;
    private createRepoAndPush;
    private getAuthenticatedLogin;
    private readOriginUrl;
    /**
     * Read a single, cheap snapshot of the working tree for the SmartDeployButton
     * label state machine. Every git invocation is wrapped in try/catch so a
     * brand-new repo (no commits, no upstream, no remote) returns a sensible
     * all-zeros result instead of throwing.
     */
    getStatus(cwd: string): Promise<GitWorkingTreeStatus>;
    /**
     * Stage all → commit → push. No-op when both counts are zero.
     *
     * The orchestrating SyncRepoUseCase wraps this in operation-log entries,
     * so this method only emits structured logs through the optional onLog
     * callback rather than persisting anything itself.
     */
    commitAndPush(input: CommitAndPushInput): Promise<CommitAndPushResult>;
    private readHeadSha;
}
//# sourceMappingURL=git-remote.service.d.ts.map