import type { FieldDefinition } from '../config/types.js';
export interface SectionSettings {
    background?: string;
    backgroundImage?: string;
    backgroundGradient?: string;
    paddingTop?: string;
    paddingBottom?: string;
    marginTop?: string;
    marginBottom?: string;
    visibility?: 'visible' | 'hidden';
    htmlId?: string;
    htmlClass?: string;
}
export interface ContainerSettings {
    maxWidth?: string;
    alignment?: 'left' | 'center' | 'right';
    padding?: string;
}
export interface RowSettings {
    gap?: string;
    verticalAlign?: 'top' | 'center' | 'bottom' | 'stretch';
    reverseOnMobile?: boolean;
    wrapOnMobile?: boolean;
}
export interface ColumnSettings {
    width: number;
    verticalAlign?: 'top' | 'center' | 'bottom';
    padding?: string;
    background?: string;
}
export interface BlockSettings {
    blockType: string;
    variant?: string;
}
export interface SavedSectionRefSettings {
    refId: string;
}
export interface ResponsiveOverrides {
    mobile?: Record<string, unknown>;
    tablet?: Record<string, unknown>;
}
interface BaseNode {
    id: string;
    responsive?: ResponsiveOverrides;
}
export interface PageNode extends BaseNode {
    type: 'page';
    children: (SectionNode | SavedSectionRefNode)[];
}
export interface SectionNode extends BaseNode {
    type: 'section';
    settings: SectionSettings;
    children: (ContainerNode | RowNode)[];
}
export interface ContainerNode extends BaseNode {
    type: 'container';
    settings: ContainerSettings;
    children: RowNode[];
}
export interface RowNode extends BaseNode {
    type: 'row';
    settings: RowSettings;
    children: ColumnNode[];
}
export interface ColumnNode extends BaseNode {
    type: 'column';
    settings: ColumnSettings;
    children: (BlockNode | ContainerNode)[];
}
export interface BlockNode extends BaseNode {
    type: 'block';
    settings: BlockSettings;
    data: Record<string, unknown>;
}
export interface SavedSectionRefNode extends BaseNode {
    type: 'savedSectionRef';
    settings: SavedSectionRefSettings;
}
export type BuilderNode = PageNode | SectionNode | ContainerNode | RowNode | ColumnNode | BlockNode | SavedSectionRefNode;
export type NodeType = BuilderNode['type'];
export interface VariantDefinition {
    name: string;
    label: string;
    description: string;
    thumbnail?: string;
    defaultSettings?: Record<string, unknown>;
    defaultData?: Record<string, unknown>;
}
export interface BlockTypeDefinition {
    type: string;
    label: string;
    icon: string;
    description?: string;
    variants: VariantDefinition[];
    fields: Record<string, FieldDefinition>;
    defaultData?: Record<string, unknown>;
}
export interface PreviewTheme {
    fontFamily?: string;
    headingFontFamily?: string;
    primaryColor?: string;
    secondaryColor?: string;
    borderRadius?: string;
}
export interface PageBuilderConfig {
    blocks?: BlockTypeDefinition[];
    previewTheme?: PreviewTheme;
}
export type ParentNode = PageNode | SectionNode | ContainerNode | RowNode | ColumnNode;
export declare function hasChildren(node: BuilderNode): node is ParentNode;
export {};
//# sourceMappingURL=types.d.ts.map