import { type Result, type SiteId } from '../../../../core/src/index';
import type { ManagementBlock, ManagementClient, ManagementEntry, ManagementNavigationMenu, ManagementPage, NavigationItemInput } from '../../client/management/types';
import type { EnvTarget } from '../helpers';
import { type CliCommandCompileBatchSuccessWithReports, type CliCommandValidationCompileError } from './commandRuntime';
import { type EntryCommandReportSubject, type EntrySiteCommand, type EntrySiteCommandType } from './entryCommands';
import { type NavigationCommandReportSubject, type NavigationSiteCommand, type NavigationSiteCommandType } from './navigationCommands';
import { type PageCommandReportSubject, type PageSiteCommand, type PageSiteCommandType } from './pageCommands';
export type OneOffCommandBatchSource = 'one_off_entry' | 'one_off_page' | 'one_off_block' | 'one_off_navigation';
type OneOffCompileInput<TMutation> = Readonly<{
    source: OneOffCommandBatchSource;
    siteId: SiteId;
    targetEnv: EnvTarget;
    mutation: TMutation;
}>;
export type OneOffEntryMutation = Readonly<{
    kind: 'upsert';
    contentType: string;
    identifier: string;
    data: Record<string, unknown>;
    slug?: string;
}> | Readonly<{
    kind: 'publish' | 'unpublish';
    contentType: string;
    identifier: string;
}>;
export type OneOffPageMutation = Readonly<{
    kind: 'upsert';
    identifier: string;
    title: string;
    path: string;
    seoTitle?: string;
    seoDescription?: string;
}> | Readonly<{
    kind: 'publish' | 'unpublish';
    identifier: string;
}>;
export type OneOffBlockMutation = Readonly<{
    kind: 'upsert';
    pageIdentifier: string;
    blockIdentifier: string;
    blockKind: string;
    data: Record<string, unknown>;
}> | Readonly<{
    kind: 'reorder';
    pageIdentifier: string;
    blockIdentifiers: readonly string[];
}>;
export type OneOffNavigationMutation = Readonly<{
    kind: 'upsert';
    menuName: string;
    items: readonly NavigationItemInput[];
}>;
export type OneOffEntryCommandCompileSuccess = CliCommandCompileBatchSuccessWithReports<EntrySiteCommandType, EntryCommandReportSubject>;
export type OneOffPageCommandCompileSuccess = CliCommandCompileBatchSuccessWithReports<PageSiteCommandType, PageCommandReportSubject>;
export type OneOffNavigationCommandCompileSuccess = CliCommandCompileBatchSuccessWithReports<NavigationSiteCommandType, NavigationCommandReportSubject>;
export declare function compileOneOffEntryCommand(input: OneOffCompileInput<OneOffEntryMutation>): Result<OneOffEntryCommandCompileSuccess, CliCommandValidationCompileError>;
export declare function compileOneOffPageCommand(input: OneOffCompileInput<OneOffPageMutation>): Result<OneOffPageCommandCompileSuccess, CliCommandValidationCompileError>;
export declare function compileOneOffBlockCommand(input: OneOffCompileInput<OneOffBlockMutation>): Result<OneOffPageCommandCompileSuccess, CliCommandValidationCompileError>;
export declare function compileOneOffNavigationCommand(input: OneOffCompileInput<OneOffNavigationMutation>): Result<OneOffNavigationCommandCompileSuccess, CliCommandValidationCompileError>;
export declare function executeOneOffEntryCommand<TResult>(input: Readonly<{
    compiledPlan: Pick<OneOffEntryCommandCompileSuccess, 'plan'>;
    client: Pick<ManagementClient, 'entries'>;
    apply: (command: EntrySiteCommand, client: Pick<ManagementClient, 'entries'>) => Promise<TResult>;
}>): Promise<TResult>;
export declare function executeOneOffPageCommand<TResult>(input: Readonly<{
    compiledPlan: Pick<OneOffPageCommandCompileSuccess, 'plan'>;
    client: Pick<ManagementClient, 'pages' | 'blocks'>;
    apply: (command: PageSiteCommand, client: Pick<ManagementClient, 'pages' | 'blocks'>) => Promise<TResult>;
}>): Promise<TResult>;
export declare function executeOneOffNavigationCommand<TResult>(input: Readonly<{
    compiledPlan: Pick<OneOffNavigationCommandCompileSuccess, 'plan'>;
    client: Pick<ManagementClient, 'navigation'>;
    apply: (command: NavigationSiteCommand, client: Pick<ManagementClient, 'navigation'>) => Promise<TResult>;
}>): Promise<TResult>;
export declare function applyOneOffEntryCommand(command: EntrySiteCommand, client: Pick<ManagementClient, 'entries'>): Promise<ManagementEntry | void>;
export declare function applyOneOffEntryCommandReturningEntry(command: EntrySiteCommand, client: Pick<ManagementClient, 'entries'>): Promise<ManagementEntry>;
export declare function applyOneOffPageCommand(command: PageSiteCommand, client: Pick<ManagementClient, 'pages' | 'blocks'>): Promise<ManagementPage | ManagementBlock | void>;
export declare function applyOneOffPageCommandReturningPage(command: PageSiteCommand, client: Pick<ManagementClient, 'pages' | 'blocks'>): Promise<ManagementPage>;
export declare function applyOneOffPageCommandReturningBlock(command: PageSiteCommand, client: Pick<ManagementClient, 'pages' | 'blocks'>): Promise<ManagementBlock>;
export declare function applyOneOffNavigationCommand(command: NavigationSiteCommand, client: Pick<ManagementClient, 'navigation'>): Promise<ManagementNavigationMenu>;
export {};
