/** * 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) => 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; onValidate?: (settings: Record) => Record | null; } export interface SettingsFormState { values: Record; errors: Record; touched: Record; dirty: Record; isValid: boolean; isSubmitting: boolean; } export interface SettingsValidationResult { isValid: boolean; errors: Record; } /** * 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): Record; /** * Validate all settings (returns result object) */ export declare function validateAllSettings(categories: SettingsCategory[], values: Record): SettingsValidationResult; /** * Helper to flatten nested settings for storage */ export declare function flattenSettings(settings: any, prefix?: string): Record; export declare const flattenSettingsValues: typeof flattenSettings; /** * Helper to unflatten settings from storage */ export declare function unflattenSettings(flattened: Record): any; export declare const unflattenSettingsValues: typeof unflattenSettings; /** * Get all settings that require restart */ export declare function getRestartRequiredSettings(schema: SettingsSchema | SettingsCategory[], changedSettings: Record | string[]): string[]; /** * Get default values from settings */ export declare function getDefaultSettingsValues(categories: SettingsCategory[]): Record; /** * Evaluate conditional visibility for a field */ export declare function evaluateFieldVisibility(field: SettingDefinition, currentValues: Record): boolean; /** * Group fields by their group property */ export declare function groupFields(fields: SettingDefinition[]): Map; /** * 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): SettingsFormState; //# sourceMappingURL=SettingsSchema.d.ts.map