import type { LayoutVariantKey } from '../../../../theme-core/src/site-styles/index';
export type CustomizeFacetValueOption<TValue extends string = string> = Readonly<{
    value: TValue;
    label: string;
    icon?: string;
}>;
export type EventCalendarListLayoutCustomizeFacetTarget = Readonly<{
    kind: 'event-calendar-list-layout-content';
}>;
export type CustomizeFacetTarget = EventCalendarListLayoutCustomizeFacetTarget;
export type CustomizeFacetDefinition<TBlockKind extends string = string, TFacetId extends string = string, TValue extends string = string> = Readonly<{
    blockKind: TBlockKind;
    id: TFacetId;
    label: string;
    description?: string;
    values: readonly CustomizeFacetValueOption<TValue>[];
    defaultValue: TValue;
    target: CustomizeFacetTarget;
    appliesToLayoutVariants?: readonly string[];
}>;
export type CustomizeFacetCycleDirection = 'prev' | 'next';
export type CustomizeFacetContent = Record<string, unknown>;
export declare function defineCustomizeFacet<const Definition extends CustomizeFacetDefinition>(definition: Definition): Definition;
export declare const eventCalendarListLayoutFacet: {
    readonly blockKind: "block.event-calendar";
    readonly id: "eventCalendar.listLayout";
    readonly label: "List style";
    readonly values: {
        value: "compact" | "grid" | "stack";
        label: "Compact" | "Grid" | "Stack";
    }[];
    readonly defaultValue: "stack";
    readonly target: {
        readonly kind: "event-calendar-list-layout-content";
    };
    readonly appliesToLayoutVariants: readonly ["combined", "list"];
};
export declare const systemCustomizeFacetDefinitions: readonly [{
    readonly blockKind: "block.event-calendar";
    readonly id: "eventCalendar.listLayout";
    readonly label: "List style";
    readonly values: {
        value: "compact" | "grid" | "stack";
        label: "Compact" | "Grid" | "Stack";
    }[];
    readonly defaultValue: "stack";
    readonly target: {
        readonly kind: "event-calendar-list-layout-content";
    };
    readonly appliesToLayoutVariants: readonly ["combined", "list"];
}];
export type SystemCustomizeFacetDefinition = (typeof systemCustomizeFacetDefinitions)[number];
export type SystemCustomizeFacetId = SystemCustomizeFacetDefinition['id'];
export type SystemCustomizeFacetValue = SystemCustomizeFacetDefinition['values'][number]['value'];
export type SystemCustomizeFacetBlockKind = SystemCustomizeFacetDefinition['blockKind'];
export type SystemCustomizeFacetSelection = {
    [Definition in SystemCustomizeFacetDefinition as Definition['id']]: Readonly<{
        facetId: Definition['id'];
        value: Definition['values'][number]['value'];
    }>;
}[SystemCustomizeFacetId];
export type SystemCustomizeFacetTransition = {
    [Definition in SystemCustomizeFacetDefinition as Definition['id']]: Readonly<{
        facetId: Definition['id'];
        value: Definition['values'][number]['value'];
        fromValue: Definition['values'][number]['value'];
    }>;
}[SystemCustomizeFacetId];
export type SystemCustomizeFacetHistorySelection = {
    [Definition in SystemCustomizeFacetDefinition as Definition['id']]: Readonly<{
        facetId: Definition['id'];
        fromValue: Definition['values'][number]['value'];
        toValue: Definition['values'][number]['value'];
    }>;
}[SystemCustomizeFacetId];
export type ParseSystemCustomizeFacetSelectionResult = Readonly<{
    success: true;
    data: SystemCustomizeFacetSelection;
    definition: SystemCustomizeFacetDefinition;
}> | Readonly<{
    success: false;
    error: Readonly<{
        kind: 'unknown-facet';
        facetId: unknown;
    }> | Readonly<{
        kind: 'invalid-value';
        facetId: SystemCustomizeFacetId;
        value: unknown;
        definition: SystemCustomizeFacetDefinition;
    }>;
}>;
export declare const systemCustomizeFacetIds: [SystemCustomizeFacetId, ...SystemCustomizeFacetId[]];
export declare const systemCustomizeFacetValues: [SystemCustomizeFacetValue, ...SystemCustomizeFacetValue[]];
export declare function isSystemCustomizeFacetId(value: unknown): value is SystemCustomizeFacetId;
export declare function parseSystemCustomizeFacetSelection(facetId: unknown, value: unknown): ParseSystemCustomizeFacetSelectionResult;
export declare function systemCustomizeFacetDefinitionForId(facetId: SystemCustomizeFacetId): SystemCustomizeFacetDefinition;
export declare function systemCustomizeFacetDefinitionForBlock(blockKind: string, facetId: SystemCustomizeFacetId): SystemCustomizeFacetDefinition | null;
export declare function systemCustomizeFacetDefinitionsForBlock(blockKind: string): readonly SystemCustomizeFacetDefinition[];
export declare function isSystemCustomizeFacetValue(definition: SystemCustomizeFacetDefinition, value: unknown): value is SystemCustomizeFacetValue;
export declare function systemCustomizeFacetLabelForValue(definition: SystemCustomizeFacetDefinition, value: SystemCustomizeFacetValue): string;
export declare function systemCustomizeFacetAppliesToLayoutVariant(definition: SystemCustomizeFacetDefinition, layoutVariantKey: LayoutVariantKey | string | null | undefined): boolean;
export declare function systemCustomizeFacetCurrentValue(definition: SystemCustomizeFacetDefinition, content: CustomizeFacetContent): SystemCustomizeFacetValue;
export declare function systemCustomizeFacetNextValue(definition: SystemCustomizeFacetDefinition, currentValue: SystemCustomizeFacetValue, direction: CustomizeFacetCycleDirection): SystemCustomizeFacetValue | null;
export declare function systemCustomizeFacetApplyContentPatch(definition: SystemCustomizeFacetDefinition, content: CustomizeFacetContent, value: SystemCustomizeFacetValue): CustomizeFacetContent;
export declare function systemCustomizeFacetRollbackContentPatch(definition: SystemCustomizeFacetDefinition, currentContent: CustomizeFacetContent, previousContent: CustomizeFacetContent): CustomizeFacetContent;
