import type { BlockLayoutFamily } from './blockFlow';
import type { ContentFrameIntent, EyebrowTreatment, HeroLegibilityStrategy, ImageSurfaceMotion, ImageSurfaceTreatment, NonEmptyReadonlyArray, SectionHeightIntent, SiteStyleEmphasis, SiteStyleItemSurfaceIntent, SiteStyleSectionTransitionIntent, SiteStyleSurfaceIntent, TestimonialCardTreatment, TileTreatment } from './types';
export type AppearancePresetTarget = 'hero' | 'body-text' | 'offerings' | 'events' | 'media-text' | 'testimonials' | 'faq' | 'contact-form' | 'cta';
export type BlockAppearanceDesign = Readonly<{
    sectionSurface: SiteStyleSurfaceIntent;
    contentFrame: ContentFrameIntent;
    itemSurface: SiteStyleItemSurfaceIntent;
    transitionAfter: SiteStyleSectionTransitionIntent;
    emphasis: SiteStyleEmphasis;
    sectionHeight?: SectionHeightIntent;
    heroLegibility?: HeroLegibilityStrategy;
    imageSurfaceTreatment?: ImageSurfaceTreatment;
    imageSurfaceMotion?: ImageSurfaceMotion;
    testimonialCardTreatment?: TestimonialCardTreatment;
    tileTreatment?: TileTreatment;
    eyebrowTreatment?: EyebrowTreatment;
}>;
export type BlockAppearancePresetConstraints = Readonly<{
    layoutFamilies?: readonly BlockLayoutFamily[];
    layoutVariantKeys?: readonly string[];
}>;
export type BlockAppearanceOptionDesignPatch = Readonly<Partial<Pick<BlockAppearanceDesign, 'heroLegibility' | 'imageSurfaceTreatment' | 'imageSurfaceMotion' | 'sectionHeight' | 'testimonialCardTreatment' | 'tileTreatment' | 'eyebrowTreatment'>>>;
export type BlockAppearanceLayoutDesignPatch = BlockAppearanceOptionDesignPatch;
export type BlockAppearanceOption = Readonly<{
    id: string;
    label: string;
    designPatch: BlockAppearanceOptionDesignPatch;
}>;
export type BlockAppearanceOptionGroup = Readonly<{
    id: string;
    label: string;
    options: NonEmptyReadonlyArray<BlockAppearanceOption>;
    selectedOptionId: string;
}>;
export type BlockAppearanceLayoutPatch = Readonly<{
    constraints: BlockAppearancePresetConstraints;
    designPatch: BlockAppearanceLayoutDesignPatch;
}>;
export type BlockAppearancePreset = Readonly<{
    kind: 'block-design';
    id: string;
    target: AppearancePresetTarget;
    label: string;
    blockKinds: readonly string[];
    constraints?: BlockAppearancePresetConstraints;
    /**
     * Author-time curated defaults. Page design intent pins only the preset today;
     * option-level user pinning needs a separate persistence model before these
     * become editable controls.
     */
    optionGroups?: readonly BlockAppearanceOptionGroup[];
    /**
     * Layout-aware defaults keep a Look's visual recipe stable while preventing
     * contradictions such as compact/micro layouts inheriting immersive height.
     */
    layoutPatches?: readonly BlockAppearanceLayoutPatch[];
    design: BlockAppearanceDesign;
}>;
export type AppearancePreset = BlockAppearancePreset;
export type BlockAppearancePresetTarget = BlockAppearancePreset['target'];
export declare const appearancePresetTargets: readonly ["hero", "body-text", "offerings", "events", "media-text", "testimonials", "faq", "contact-form", "cta"];
