import { type SyncResult } from '../sync';
import { type CliCommandExecutionReport } from './commandRuntime';
export declare function commandReportToSyncResult<TSubject>(input: Readonly<{
    report: CliCommandExecutionReport<TSubject>;
    incrementSuccess: (result: SyncResult, subject: TSubject) => void;
    recordFailure: (result: SyncResult, identifier: string, message: string, subject: TSubject | undefined) => void;
}>): SyncResult;
export declare function executeCompiledCliCommandPlanAsSyncResult<TCompiledPlan extends Readonly<{
    plan: Readonly<{
        commands: readonly unknown[];
    }>;
}>, TExecutionResult, TSubject>(input: Readonly<{
    compiledPlan: TCompiledPlan;
    onBeforeExecute?: (commandCount: number) => void;
    executePlan: (plan: TCompiledPlan['plan']) => Promise<TExecutionResult>;
    executionToReport: (input: Readonly<{
        execution: TExecutionResult;
        compiledPlan: TCompiledPlan;
    }>) => CliCommandExecutionReport<TSubject>;
    reportToSyncResult: (report: CliCommandExecutionReport<TSubject>) => SyncResult;
}>): Promise<SyncResult>;
