import { ComponentType } from 'react';
export interface ExperienceBuilderComponent {
    id: string;
    type: string;
    props: Record<string, any>;
    className?: string;
    style?: React.CSSProperties;
    children?: ExperienceBuilderComponent[];
}
export interface LayoutRegion {
    id: string;
    type: 'header' | 'main' | 'sidebar' | 'footer' | 'custom';
    components: ExperienceBuilderComponent[];
    className?: string;
    style?: React.CSSProperties;
    settings?: Record<string, any>;
}
export interface ExperienceBuilderLayout {
    id: string;
    title: string;
    description?: string;
    regions: LayoutRegion[];
    theme?: string;
    settings?: Record<string, any>;
    metadata?: {
        created: string;
        updated: string;
        author: string;
        version: string;
    };
}
export interface ExperienceBuilderTheme {
    name: string;
    label: string;
    description?: string;
    colors: Record<string, string>;
    typography?: Record<string, any>;
    spacing?: Record<string, any>;
    breakpoints?: Record<string, number>;
    cssVariables?: Record<string, string>;
    customCSS?: string;
}
export interface ComponentMapping {
    [componentType: string]: {
        component: ComponentType<any>;
        category: 'ai' | 'dashboard' | 'forms' | 'layout' | 'data' | 'analytics' | 'feedback' | 'monitoring';
        label: string;
        description: string;
        drupalMapping: string;
        sdcComponent: string;
        props?: Record<string, any>;
        icon?: string;
        preview?: string;
        schema?: ComponentSchema;
    };
}
export interface ComponentSchema {
    properties: Record<string, {
        type: 'string' | 'number' | 'boolean' | 'array' | 'object';
        label: string;
        description?: string;
        default?: any;
        options?: Array<{
            label: string;
            value: any;
        }>;
        required?: boolean;
        validation?: {
            min?: number;
            max?: number;
            pattern?: string;
            custom?: (value: any) => boolean | string;
        };
    }>;
    required?: string[];
}
export interface DrupalConfig {
    baseUrl?: string;
    apiEndpoint?: string;
    authentication?: {
        type: 'basic' | 'oauth' | 'session';
        credentials?: Record<string, any>;
    };
    csrf?: {
        token?: string;
        header?: string;
    };
    entityType?: string;
    bundle?: string;
    fieldMappings?: Record<string, string>;
}
export interface DrupalContext {
    entityId?: string;
    entityType?: string;
    bundle?: string;
    language?: string;
    viewMode?: string;
    user?: {
        uid: number;
        name: string;
        roles: string[];
        permissions: string[];
    };
    settings?: Record<string, any>;
}
export interface ExperienceBuilderConfig {
    mode: 'render' | 'edit' | 'preview';
    enableSSR: boolean;
    enableDrupalIntegration: boolean;
    enablePreview: boolean;
    enableThemeEditor: boolean;
    enableComponentEditor: boolean;
    enableLayoutEditor: boolean;
    enableCodeExport: boolean;
    drupalConfig?: DrupalConfig;
    apiConfig?: {
        baseUrl: string;
        endpoints: Record<string, string>;
        authentication?: Record<string, any>;
    };
    features?: {
        autoSave: boolean;
        versionControl: boolean;
        collaboration: boolean;
        analytics: boolean;
        performance: boolean;
    };
}
export interface ExperienceBuilderIntegrationProps {
    initialLayout: ExperienceBuilderLayout;
    componentMappings?: Partial<ComponentMapping>;
    theme?: string;
    mode?: 'render' | 'edit' | 'preview';
    enableSSR?: boolean;
    enablePreview?: boolean;
    enableDrupalIntegration?: boolean;
    drupalConfig?: DrupalConfig;
    onLayoutChange?: (layout: ExperienceBuilderLayout) => void;
    onComponentUpdate?: (componentId: string, updates: any) => void;
    onThemeChange?: (theme: string) => void;
    className?: string;
}
export interface ExperienceBuilderEditorProps {
    layout: ExperienceBuilderLayout;
    componentRegistry: ComponentMapping;
    onLayoutChange: (layout: ExperienceBuilderLayout) => void;
    onComponentAdd: (component: ExperienceBuilderComponent, regionId: string) => void;
    onComponentUpdate: (componentId: string, updates: any) => void;
    onComponentRemove: (componentId: string, regionId: string) => void;
    onRegionAdd: (region: LayoutRegion) => void;
    onRegionUpdate: (regionId: string, updates: any) => void;
    onRegionRemove: (regionId: string) => void;
    theme?: ExperienceBuilderTheme;
    readonly?: boolean;
    className?: string;
}
export interface ExperienceBuilderPreviewProps {
    layout: ExperienceBuilderLayout;
    componentRegistry: ComponentMapping;
    theme?: ExperienceBuilderTheme;
    viewport?: 'desktop' | 'tablet' | 'mobile';
    interactive?: boolean;
    showOutlines?: boolean;
    showLabels?: boolean;
    className?: string;
}
export interface ComponentPaletteProps {
    componentRegistry: ComponentMapping;
    categories?: string[];
    searchTerm?: string;
    onComponentSelect: (componentType: string) => void;
    onComponentDrag: (componentType: string, event: React.DragEvent) => void;
    className?: string;
}
export interface ComponentEditorProps {
    component: ExperienceBuilderComponent;
    schema: ComponentSchema;
    onUpdate: (updates: any) => void;
    onCancel: () => void;
    onSave: () => void;
    readonly?: boolean;
    className?: string;
}
export interface ExperienceBuilderTemplate {
    id: string;
    name: string;
    description: string;
    category: 'dashboard' | 'landing-page' | 'admin-panel' | 'ai-workspace' | 'custom';
    layout: ExperienceBuilderLayout;
    preview?: string;
    tags?: string[];
    author?: string;
    version?: string;
    license?: string;
    dependencies?: string[];
}
export interface TemplateLibrary {
    templates: ExperienceBuilderTemplate[];
    categories: Array<{
        id: string;
        label: string;
        description?: string;
        icon?: string;
    }>;
    featured?: string[];
    recent?: string[];
}
export interface ExperienceBuilderWorkflow {
    id: string;
    name: string;
    description: string;
    trigger: {
        type: 'manual' | 'scheduled' | 'event' | 'webhook';
        config: Record<string, any>;
    };
    steps: Array<{
        id: string;
        type: 'component-update' | 'layout-change' | 'theme-switch' | 'api-call' | 'script';
        config: Record<string, any>;
        conditions?: Array<{
            field: string;
            operator: 'equals' | 'not-equals' | 'contains' | 'greater-than' | 'less-than';
            value: any;
        }>;
    }>;
    enabled: boolean;
    schedule?: string;
    metadata?: {
        created: string;
        updated: string;
        author: string;
        executions: number;
    };
}
export interface ExperienceBuilderAnalytics {
    pageViews: number;
    uniqueVisitors: number;
    avgSessionDuration: number;
    bounceRate: number;
    componentInteractions: Record<string, number>;
    performanceMetrics: {
        loadTime: number;
        renderTime: number;
        interactivityTime: number;
        cumulativeLayoutShift: number;
        largestContentfulPaint: number;
    };
    errors: Array<{
        timestamp: string;
        type: string;
        message: string;
        componentId?: string;
        stack?: string;
    }>;
    userJourney: Array<{
        timestamp: string;
        action: string;
        componentId?: string;
        data?: Record<string, any>;
    }>;
}
export interface ExperienceBuilderExport {
    format: 'json' | 'yaml' | 'drupal' | 'react' | 'html';
    layout: ExperienceBuilderLayout;
    componentMappings: ComponentMapping;
    theme?: ExperienceBuilderTheme;
    templates?: ExperienceBuilderTemplate[];
    workflows?: ExperienceBuilderWorkflow[];
    metadata: {
        version: string;
        timestamp: string;
        source: string;
        author?: string;
    };
}
export interface ExperienceBuilderImport {
    data: ExperienceBuilderExport;
    options: {
        mergeStrategy: 'replace' | 'merge' | 'append';
        preserveIds: boolean;
        validateComponents: boolean;
        backupExisting: boolean;
    };
}
export interface AIComponentProps {
    modelId?: string;
    agentId?: string;
    workflowId?: string;
    dataSource?: string;
    realTimeUpdates?: boolean;
    enableAI?: boolean;
    aiConfig?: Record<string, any>;
}
export interface DashboardComponentProps {
    layout?: 'grid' | 'flex' | 'masonry';
    widgets?: string[];
    refreshInterval?: number;
    enableFilters?: boolean;
    enableExport?: boolean;
    showAlerts?: boolean;
}
export interface FormComponentProps {
    schema?: Record<string, any>;
    enableValidation?: boolean;
    enableAutoSave?: boolean;
    multiStep?: boolean;
    enableAI?: boolean;
    submitEndpoint?: string;
}
export interface DataComponentProps {
    dataSource?: string;
    enableFiltering?: boolean;
    enableSorting?: boolean;
    enablePagination?: boolean;
    enableExport?: boolean;
    virtualized?: boolean;
    pageSize?: number;
}
export interface ExperienceBuilderEvent {
    type: string;
    componentId?: string;
    regionId?: string;
    data?: any;
    timestamp: number;
    source: 'user' | 'system' | 'api' | 'workflow';
}
export interface ExperienceBuilderEventHandler {
    (event: ExperienceBuilderEvent): void | Promise<void>;
}
export interface ExperienceBuilderState {
    layout: ExperienceBuilderLayout;
    selectedComponent: string | null;
    selectedRegion: string | null;
    mode: 'render' | 'edit' | 'preview';
    theme: string;
    viewport: 'desktop' | 'tablet' | 'mobile';
    clipboard: ExperienceBuilderComponent | null;
    history: ExperienceBuilderLayout[];
    historyIndex: number;
    isDirty: boolean;
    isLoading: boolean;
    errors: string[];
}
export interface ExperienceBuilderActions {
    setLayout: (layout: ExperienceBuilderLayout) => void;
    updateComponent: (componentId: string, updates: any) => void;
    addComponent: (component: ExperienceBuilderComponent, regionId: string) => void;
    removeComponent: (componentId: string, regionId: string) => void;
    selectComponent: (componentId: string | null) => void;
    selectRegion: (regionId: string | null) => void;
    setMode: (mode: 'render' | 'edit' | 'preview') => void;
    setTheme: (theme: string) => void;
    setViewport: (viewport: 'desktop' | 'tablet' | 'mobile') => void;
    copy: (componentId: string) => void;
    paste: (regionId: string) => void;
    undo: () => void;
    redo: () => void;
    save: () => Promise<void>;
    load: (layoutId: string) => Promise<void>;
}
//# sourceMappingURL=types.d.ts.map