/**
 * Dashboard Configuration Zod Schema
 *
 * Validates that theme-specific dashboard.config.ts files conform to the expected structure.
 * This schema is used during build time and development to catch configuration errors early.
 */
import { z } from 'zod';
/**
 * Schema for theme-specific dashboard configuration
 * All properties are optional since themes only need to override what they want to change
 */
export declare const dashboardConfigSchema: z.ZodObject<{
    topbar: z.ZodOptional<z.ZodObject<{
        search: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
            placeholder: z.ZodOptional<z.ZodString>;
            maxResults: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>;
        notifications: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        themeToggle: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        support: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
            type: z.ZodOptional<z.ZodEnum<{
                dropdown: "dropdown";
                link: "link";
                modal: "modal";
            }>>;
            links: z.ZodOptional<z.ZodArray<z.ZodObject<{
                label: z.ZodString;
                url: z.ZodOptional<z.ZodString>;
                icon: z.ZodString;
                external: z.ZodOptional<z.ZodBoolean>;
                action: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>>;
        }, z.core.$strip>>;
        quickCreate: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        userMenu: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
            showAvatar: z.ZodOptional<z.ZodBoolean>;
            showEmail: z.ZodOptional<z.ZodBoolean>;
            showRole: z.ZodOptional<z.ZodBoolean>;
            items: z.ZodOptional<z.ZodArray<z.ZodObject<{
                type: z.ZodEnum<{
                    link: "link";
                    action: "action";
                    divider: "divider";
                }>;
                label: z.ZodOptional<z.ZodString>;
                href: z.ZodOptional<z.ZodString>;
                icon: z.ZodOptional<z.ZodString>;
                action: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    sidebar: z.ZodOptional<z.ZodObject<{
        defaultCollapsed: z.ZodOptional<z.ZodBoolean>;
        rememberState: z.ZodOptional<z.ZodBoolean>;
        collapsedWidth: z.ZodOptional<z.ZodString>;
        expandedWidth: z.ZodOptional<z.ZodString>;
        toggle: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
            showInTopbar: z.ZodOptional<z.ZodBoolean>;
            hideOnMobile: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        navigation: z.ZodOptional<z.ZodObject<{
            showEntityCounts: z.ZodOptional<z.ZodBoolean>;
            groupEntities: z.ZodOptional<z.ZodBoolean>;
            showRecents: z.ZodOptional<z.ZodBoolean>;
            maxRecents: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    settings: z.ZodOptional<z.ZodObject<{
        pages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
            label: z.ZodOptional<z.ZodString>;
            description: z.ZodOptional<z.ZodString>;
            icon: z.ZodOptional<z.ZodString>;
            order: z.ZodOptional<z.ZodNumber>;
            features: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
            requiredRole: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
        layout: z.ZodOptional<z.ZodObject<{
            showDescription: z.ZodOptional<z.ZodBoolean>;
            showIcons: z.ZodOptional<z.ZodBoolean>;
            groupByCategory: z.ZodOptional<z.ZodBoolean>;
            enableSearch: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    entities: z.ZodOptional<z.ZodObject<{
        defaultListView: z.ZodOptional<z.ZodObject<{
            pagination: z.ZodOptional<z.ZodObject<{
                defaultPageSize: z.ZodOptional<z.ZodNumber>;
                allowedPageSizes: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
                showSizeSelector: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            sorting: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                defaultSort: z.ZodOptional<z.ZodObject<{
                    field: z.ZodString;
                    direction: z.ZodEnum<{
                        asc: "asc";
                        desc: "desc";
                    }>;
                }, z.core.$strip>>;
                rememberSort: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            filtering: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                quickFilters: z.ZodOptional<z.ZodBoolean>;
                advancedFilters: z.ZodOptional<z.ZodBoolean>;
                rememberFilters: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            search: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                placeholder: z.ZodOptional<z.ZodString>;
                searchableFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
                instantSearch: z.ZodOptional<z.ZodBoolean>;
                debounceMs: z.ZodOptional<z.ZodNumber>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        defaultFormView: z.ZodOptional<z.ZodObject<{
            validation: z.ZodOptional<z.ZodObject<{
                validateOnBlur: z.ZodOptional<z.ZodBoolean>;
                validateOnChange: z.ZodOptional<z.ZodBoolean>;
                showFieldErrors: z.ZodOptional<z.ZodBoolean>;
                showFormErrors: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            autosave: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                intervalMs: z.ZodOptional<z.ZodNumber>;
                showIndicator: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            confirmation: z.ZodOptional<z.ZodObject<{
                showOnCreate: z.ZodOptional<z.ZodBoolean>;
                showOnUpdate: z.ZodOptional<z.ZodBoolean>;
                showOnDelete: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        customizations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
            listView: z.ZodOptional<z.ZodAny>;
            formView: z.ZodOptional<z.ZodAny>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
    homepage: z.ZodOptional<z.ZodObject<{
        widgets: z.ZodOptional<z.ZodObject<{
            welcome: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                showUserName: z.ZodOptional<z.ZodBoolean>;
                showLastLogin: z.ZodOptional<z.ZodBoolean>;
                showQuickActions: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            stats: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                entities: z.ZodOptional<z.ZodArray<z.ZodString>>;
                timeframe: z.ZodOptional<z.ZodEnum<{
                    today: "today";
                    "7days": "7days";
                    "30days": "30days";
                    "90days": "90days";
                }>>;
                showTrends: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            recentActivity: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                maxItems: z.ZodOptional<z.ZodNumber>;
                entities: z.ZodOptional<z.ZodArray<z.ZodString>>;
                showTimestamps: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
            quickActions: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    entity: z.ZodString;
                    action: z.ZodString;
                    label: z.ZodString;
                }, z.core.$strip>>>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        layout: z.ZodOptional<z.ZodObject<{
            columns: z.ZodOptional<z.ZodNumber>;
            gutter: z.ZodOptional<z.ZodEnum<{
                small: "small";
                medium: "medium";
                large: "large";
            }>>;
            responsive: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    performance: z.ZodOptional<z.ZodObject<{
        cache: z.ZodOptional<z.ZodObject<{
            entityConfigs: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                duration: z.ZodOptional<z.ZodNumber>;
            }, z.core.$strip>>;
            entityData: z.ZodOptional<z.ZodObject<{
                enabled: z.ZodOptional<z.ZodBoolean>;
                duration: z.ZodOptional<z.ZodNumber>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        loading: z.ZodOptional<z.ZodObject<{
            showSkeletons: z.ZodOptional<z.ZodBoolean>;
            showProgressBars: z.ZodOptional<z.ZodBoolean>;
            minimumLoadingTime: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>;
        errors: z.ZodOptional<z.ZodObject<{
            showErrorBoundaries: z.ZodOptional<z.ZodBoolean>;
            logErrors: z.ZodOptional<z.ZodBoolean>;
            enableRetry: z.ZodOptional<z.ZodBoolean>;
            maxRetries: z.ZodOptional<z.ZodNumber>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    accessibility: z.ZodOptional<z.ZodObject<{
        keyboard: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodOptional<z.ZodBoolean>;
            showShortcuts: z.ZodOptional<z.ZodBoolean>;
            customShortcuts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        }, z.core.$strip>>;
        screenReader: z.ZodOptional<z.ZodObject<{
            announceNavigation: z.ZodOptional<z.ZodBoolean>;
            announceActions: z.ZodOptional<z.ZodBoolean>;
            announceErrors: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        visual: z.ZodOptional<z.ZodObject<{
            showFocusOutlines: z.ZodOptional<z.ZodBoolean>;
            highContrastMode: z.ZodOptional<z.ZodBoolean>;
            reducedMotion: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    isSettingsPageEnabled: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
    getEnabledSettingsPages: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
    isTopbarFeatureEnabled: z.ZodOptional<z.ZodFunction<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>>;
}, z.core.$strip>;
/**
 * Type inference from schema
 */
export type DashboardConfigInput = z.input<typeof dashboardConfigSchema>;
export type DashboardConfigOutput = z.output<typeof dashboardConfigSchema>;
/**
 * Validate a dashboard configuration object
 *
 * @param config - The configuration object to validate
 * @returns Validated configuration
 * @throws ZodError if validation fails
 */
export declare function validateDashboardConfig(config: unknown): DashboardConfigOutput;
/**
 * Safely validate a dashboard configuration object
 *
 * @param config - The configuration object to validate
 * @returns Success result with validated config or error result with issues
 */
export declare function safeValidateDashboardConfig(config: unknown): z.ZodSafeParseResult<{
    topbar?: {
        search?: {
            enabled?: boolean;
            placeholder?: string;
            maxResults?: number;
        };
        notifications?: {
            enabled?: boolean;
        };
        themeToggle?: {
            enabled?: boolean;
        };
        support?: {
            enabled?: boolean;
            type?: "dropdown" | "link" | "modal";
            links?: {
                label: string;
                icon: string;
                url?: string;
                external?: boolean;
                action?: string;
            }[];
        };
        quickCreate?: {
            enabled?: boolean;
        };
        userMenu?: {
            enabled?: boolean;
            showAvatar?: boolean;
            showEmail?: boolean;
            showRole?: boolean;
            items?: {
                type: "link" | "action" | "divider";
                label?: string;
                href?: string;
                icon?: string;
                action?: string;
            }[];
        };
    };
    sidebar?: {
        defaultCollapsed?: boolean;
        rememberState?: boolean;
        collapsedWidth?: string;
        expandedWidth?: string;
        toggle?: {
            enabled?: boolean;
            showInTopbar?: boolean;
            hideOnMobile?: boolean;
        };
        navigation?: {
            showEntityCounts?: boolean;
            groupEntities?: boolean;
            showRecents?: boolean;
            maxRecents?: number;
        };
    };
    settings?: {
        pages?: Record<string, {
            enabled?: boolean;
            label?: string;
            description?: string;
            icon?: string;
            order?: number;
            features?: Record<string, boolean>;
            requiredRole?: string;
        }>;
        layout?: {
            showDescription?: boolean;
            showIcons?: boolean;
            groupByCategory?: boolean;
            enableSearch?: boolean;
        };
    };
    entities?: {
        defaultListView?: {
            pagination?: {
                defaultPageSize?: number;
                allowedPageSizes?: number[];
                showSizeSelector?: boolean;
            };
            sorting?: {
                enabled?: boolean;
                defaultSort?: {
                    field: string;
                    direction: "asc" | "desc";
                };
                rememberSort?: boolean;
            };
            filtering?: {
                enabled?: boolean;
                quickFilters?: boolean;
                advancedFilters?: boolean;
                rememberFilters?: boolean;
            };
            search?: {
                enabled?: boolean;
                placeholder?: string;
                searchableFields?: string[];
                instantSearch?: boolean;
                debounceMs?: number;
            };
        };
        defaultFormView?: {
            validation?: {
                validateOnBlur?: boolean;
                validateOnChange?: boolean;
                showFieldErrors?: boolean;
                showFormErrors?: boolean;
            };
            autosave?: {
                enabled?: boolean;
                intervalMs?: number;
                showIndicator?: boolean;
            };
            confirmation?: {
                showOnCreate?: boolean;
                showOnUpdate?: boolean;
                showOnDelete?: boolean;
            };
        };
        customizations?: Record<string, {
            listView?: any;
            formView?: any;
        }>;
    };
    homepage?: {
        widgets?: {
            welcome?: {
                enabled?: boolean;
                showUserName?: boolean;
                showLastLogin?: boolean;
                showQuickActions?: boolean;
            };
            stats?: {
                enabled?: boolean;
                entities?: string[];
                timeframe?: "today" | "7days" | "30days" | "90days";
                showTrends?: boolean;
            };
            recentActivity?: {
                enabled?: boolean;
                maxItems?: number;
                entities?: string[];
                showTimestamps?: boolean;
            };
            quickActions?: {
                enabled?: boolean;
                actions?: {
                    entity: string;
                    action: string;
                    label: string;
                }[];
            };
        };
        layout?: {
            columns?: number;
            gutter?: "small" | "medium" | "large";
            responsive?: boolean;
        };
    };
    performance?: {
        cache?: {
            entityConfigs?: {
                enabled?: boolean;
                duration?: number;
            };
            entityData?: {
                enabled?: boolean;
                duration?: number;
            };
        };
        loading?: {
            showSkeletons?: boolean;
            showProgressBars?: boolean;
            minimumLoadingTime?: number;
        };
        errors?: {
            showErrorBoundaries?: boolean;
            logErrors?: boolean;
            enableRetry?: boolean;
            maxRetries?: number;
        };
    };
    accessibility?: {
        keyboard?: {
            enabled?: boolean;
            showShortcuts?: boolean;
            customShortcuts?: Record<string, string>;
        };
        screenReader?: {
            announceNavigation?: boolean;
            announceActions?: boolean;
            announceErrors?: boolean;
        };
        visual?: {
            showFocusOutlines?: boolean;
            highContrastMode?: boolean;
            reducedMotion?: boolean;
        };
    };
    isSettingsPageEnabled?: z.core.$InferOuterFunctionType<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>;
    getEnabledSettingsPages?: z.core.$InferOuterFunctionType<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>;
    isTopbarFeatureEnabled?: z.core.$InferOuterFunctionType<z.core.$ZodFunctionArgs, z.core.$ZodFunctionOut>;
}>;
//# sourceMappingURL=dashboard-schema.d.ts.map