import { type Result, type SiteId } from '../../../../core/src/index';
import type { ManagementClient } from '../../client/management/types';
import type { LocalContent } from '../content/reader';
import type { EnvTarget } from '../helpers';
import type { ContentDiff, SyncResult } from '../sync';
import { compilePagePushCommands } from './pageCommands';
import type { CommandSurface, CommandSurfaceCompileResult, CommandSurfaceCompileSuccess, CommandSurfaceExecutionReport, CompiledContentPushExecutionPlan, CompiledContentPushExecutionStep, ContentPushExecutionPlan, ContentPushExecutionReport } from './pushExecutionTypes';
export type CommandSurfaceDispatchInput = Readonly<{
    siteId: SiteId;
    target: EnvTarget;
    diff: ContentDiff;
    local: LocalContent;
    client: ManagementClient;
    blockFieldExtensions: Parameters<typeof compilePagePushCommands>[0]['blockFieldExtensions'];
    onEntryCommandCount?: (commandCount: number) => void;
    onFormCommandCount?: (commandCount: number) => void;
    onNavigationCommandCount?: (commandCount: number) => void;
    onPageCommandCount?: (commandCount: number) => void;
}>;
export type CommandSurfaceDispatchDependencies = Readonly<{
    compileCommandSurface?: (surface: CommandSurface, input: CommandSurfaceDispatchInput) => CommandSurfaceCompileResult;
    executeCommandSurfaceAsReport?: (surface: CommandSurfaceCompileSuccess, input: CommandSurfaceDispatchInput) => Promise<CommandSurfaceExecutionReport>;
}>;
export declare function compileContentPushExecutionPlan(plan: ContentPushExecutionPlan, input: CommandSurfaceDispatchInput, dependencies?: CommandSurfaceDispatchDependencies): Result<CompiledContentPushExecutionPlan, ContentPushExecutionReport>;
export declare function executeCommandSurfaceAsReport(surface: CommandSurfaceCompileSuccess, input: CommandSurfaceDispatchInput): Promise<CommandSurfaceExecutionReport>;
export declare function skippedRemainingCommandReports(steps: readonly CompiledContentPushExecutionStep[]): CommandSurfaceExecutionReport[];
export declare function commandSurfaceReportToSyncResult(report: CommandSurfaceExecutionReport): SyncResult;
