export type SettingValue = boolean | number | string; export type SettingsOption = SettingValue | { label: string; value: SettingValue; }; export type SettingDescriptor = { /** Path in the settings object (dot notation supported). */ name: string; /** Human-friendly label shown in the control list. Defaults to `name`. */ label?: string; description?: string; type: 'boolean' | 'number' | 'string' | 'select'; min?: number; max?: number; step?: number; options?: SettingsOption[]; defaultValue?: SettingValue; }; export type SettingsSectionDescriptor = { /** Optional stable id for preserving collapse state across re-renders. */ id?: string; name: string; description?: string; /** Whether this section starts collapsed when first seen. Defaults to true. */ initiallyCollapsed?: boolean; settings: SettingDescriptor[]; }; export type SettingsSchema = { title?: string; sections: SettingsSectionDescriptor[]; }; export type SettingsState = Record; export declare function clamp(value: number, min?: number, max?: number): number; export declare function setValueAtPath(settings: SettingsState, path: string, value: SettingValue): SettingsState; export declare function getSectionKey(section: SettingsSectionDescriptor, index: number): string; export declare function buildInitialCollapsedState(sections: SettingsSectionDescriptor[]): Record; export declare function normalizeOption(option: SettingsOption): { label: string; value: SettingValue; }; export declare function resolveSettingValue(setting: SettingDescriptor, settings: SettingsState): SettingValue; export declare function mergeCollapsedState(previous: Record, sections: SettingsSectionDescriptor[]): Record; //# sourceMappingURL=settings.d.ts.map