/**
 * Settings Schema System
 * Consolidated settings system with all features from both implementations
 */
export interface SettingOption {
    value: any;
    label: string;
    description?: string;
}
export interface SettingDefinition {
    key: string;
    label: string;
    description?: string;
    defaultValue?: any;
    type: "string" | "number" | "boolean" | "select" | "multiselect" | "password" | "textarea" | "email" | "url" | "color" | "date" | "time" | "datetime" | "json" | "ipaddress" | "network-interface";
    options?: SettingOption[];
    required?: boolean;
    validation?: {
        min?: number;
        max?: number;
        minLength?: number;
        maxLength?: number;
        pattern?: string;
        custom?: (value: any) => string | null;
    };
    validationMessage?: string;
    transform?: {
        fromStorage?: (value: any) => any;
        toStorage?: (value: any) => any;
    };
    help?: string;
    hint?: string;
    placeholder?: string;
    prefix?: string;
    suffix?: string;
    inputWidth?: "small" | "medium" | "large" | "full";
    rows?: number;
    readOnly?: boolean;
    hidden?: boolean;
    sensitive?: boolean;
    requiresRestart?: boolean;
    category: string;
    subcategory?: string;
    group?: string;
    order?: number;
    icon?: string;
    showIf?: (settings: Record<string, any>) => boolean;
    confirmMessage?: string;
    min?: number;
    max?: number;
    step?: number;
}
export interface SettingsCategory {
    id: string;
    label: string;
    description?: string;
    icon?: string;
    settings: SettingDefinition[];
    order?: number;
}
export interface SettingsSchema {
    categories: SettingsCategory[];
    version: string;
    onSettingChange?: (key: string, value: any, oldValue: any) => void | Promise<void>;
    onValidate?: (settings: Record<string, any>) => Record<string, string> | null;
}
export interface SettingsFormState {
    values: Record<string, any>;
    errors: Record<string, string>;
    touched: Record<string, boolean>;
    dirty: Record<string, boolean>;
    isValid: boolean;
    isSubmitting: boolean;
}
export interface SettingsValidationResult {
    isValid: boolean;
    errors: Record<string, string>;
}
/**
 * Built-in validation functions
 */
export declare const Validators: {
    required: (message?: string) => (value: any) => string | null;
    email: (message?: string) => (value: string) => string | null;
    url: (message?: string) => (value: string) => string | null;
    ipAddress: (message?: string) => (value: string) => string | null;
    port: (message?: string) => (value: number) => string | null;
    range: (min: number, max: number, message?: string) => (value: number) => string | null;
    pattern: (pattern: RegExp, message?: string) => (value: string) => string | null;
    minLength: (min: number, message?: string) => (value: string) => string | null;
    maxLength: (max: number, message?: string) => (value: string) => string | null;
};
/**
 * Helper to create a settings schema
 */
export declare function createSettingsSchema(schema: SettingsSchema): SettingsSchema;
/**
 * Get setting by key from categories
 */
export declare function getSettingByKey(categories: SettingsCategory[], key: string): SettingDefinition | undefined;
/**
 * Validate a single setting
 */
export declare function validateSetting(setting: SettingDefinition, value: any): string | null;
/**
 * Validate all settings against schema
 */
export declare function validateSettings(schema: SettingsSchema, settings: Record<string, any>): Record<string, string>;
/**
 * Validate all settings (returns result object)
 */
export declare function validateAllSettings(categories: SettingsCategory[], values: Record<string, any>): SettingsValidationResult;
/**
 * Helper to flatten nested settings for storage
 */
export declare function flattenSettings(settings: any, prefix?: string): Record<string, any>;
export declare const flattenSettingsValues: typeof flattenSettings;
/**
 * Helper to unflatten settings from storage
 */
export declare function unflattenSettings(flattened: Record<string, any>): any;
export declare const unflattenSettingsValues: typeof unflattenSettings;
/**
 * Get all settings that require restart
 */
export declare function getRestartRequiredSettings(schema: SettingsSchema | SettingsCategory[], changedSettings: Record<string, any> | string[]): string[];
/**
 * Get default values from settings
 */
export declare function getDefaultSettingsValues(categories: SettingsCategory[]): Record<string, any>;
/**
 * Evaluate conditional visibility for a field
 */
export declare function evaluateFieldVisibility(field: SettingDefinition, currentValues: Record<string, any>): boolean;
/**
 * Group fields by their group property
 */
export declare function groupFields(fields: SettingDefinition[]): Map<string, SettingDefinition[]>;
/**
 * Apply toStorage transform
 */
export declare function applyToStorageTransform(field: SettingDefinition, value: any): any;
/**
 * Apply fromStorage transform
 */
export declare function applyFromStorageTransform(field: SettingDefinition, value: any): any;
/**
 * Create settings form state
 */
export declare function createSettingsFormState(categories: SettingsCategory[], initialValues?: Record<string, any>): SettingsFormState;
//# sourceMappingURL=SettingsSchema.d.ts.map