import type { EditorBlockId } from "@riverbankcms/core";
import type { BlockValidationError } from "./validateBlocksForPublish";
export type PublishBlockedMessage = Readonly<{
    type: "single-invalid-block";
    blockLabel: string;
} | {
    type: "multiple-invalid-blocks";
    count: number;
}>;
export type RevealInvalidBlockCommand = Readonly<{
    blockId: EditorBlockId;
    reveal: "show-validation";
}>;
export type PublishFocusTarget = Readonly<{
    blockId: EditorBlockId;
    fieldPath: string | null;
}>;
export type BlockedPublishPlan = Readonly<{
    type: "allowed";
} | {
    type: "blocked";
    invalidBlockIds: readonly EditorBlockId[];
    revealCommands: readonly RevealInvalidBlockCommand[];
    focusTarget: PublishFocusTarget | null;
    message: PublishBlockedMessage;
    openDrawer: boolean;
}>;
type DeriveBlockedPublishPlanParams = Readonly<{
    validationErrors: readonly BlockValidationError[];
    drawerOpen: boolean;
}>;
export declare function deriveBlockedPublishPlan({ validationErrors, drawerOpen, }: DeriveBlockedPublishPlanParams): BlockedPublishPlan;
export declare function formatPublishBlockedMessage(message: PublishBlockedMessage): string;
export {};
