/**
 * SyncRepoUseCase
 *
 * Stages local changes, commits them, and pushes to the existing GitHub
 * remote. Drives the SmartDeployButton's "Save changes" / "Save & publish"
 * actions for non-technical users — the word "sync" never appears in the
 * UI but is kept in the use-case name as the canonical engineering term.
 *
 * Pre-conditions enforced here so the route layer can stay thin:
 *   1. The Application exists.
 *   2. The Application has a `gitRemoteUrl` (Publish flow has already run).
 *
 * All progress + errors are appended to the operation log under
 * `OperationLogKind.RepoSync` so the OperationLogsDrawer can show the
 * full history including subprocess stderr on failure.
 */
import type { IApplicationRepository } from '../../ports/output/repositories/application-repository.interface.js';
import type { CommitAndPushResult, IGitRemoteService } from '../../ports/output/services/git-remote.service.interface.js';
import type { IOperationLogService } from '../../ports/output/services/operation-log-service.interface.js';
export interface SyncRepoInput {
    applicationId: string;
    /**
     * Optional commit message override. Defaults to a generic
     * `chore(shep): sync local changes` message that's friendly to read in a
     * GitHub commit history without exposing any user-facing copy.
     */
    message?: string;
}
export declare class SyncRepoUseCase {
    private readonly applicationRepo;
    private readonly gitRemoteService;
    private readonly opLog;
    constructor(applicationRepo: IApplicationRepository, gitRemoteService: IGitRemoteService, opLog: IOperationLogService);
    execute(input: SyncRepoInput): Promise<CommitAndPushResult>;
}
//# sourceMappingURL=sync-repo.use-case.d.ts.map