import type { D3InterpolateName } from './colors'; import type { GizmoOptions } from './scene/gizmo'; export interface SettingType { value: T; description: string; enum?: Readonly, string>>; minimum?: number; maximum?: number; multipleOf?: number; minItems?: number; maxItems?: number; items?: { minimum?: number; maximum?: number; multipleOf?: number; }; additionalProperties?: { type: `string` | `number` | `boolean` | `object`; }; web_only?: true; } export declare function enum_labels(setting: SettingType): Readonly>; export declare const SHOW_BONDS_OPTIONS: readonly ["never", "always", "crystals", "molecules"]; export type ShowBonds = (typeof SHOW_BONDS_OPTIONS)[number]; export type CameraProjection = `perspective` | `orthographic`; declare const VECTOR_COLOR_MODES: readonly ["auto", "element", "spin_direction", "magnitude", "uniform"]; export type VectorColorMode = (typeof VECTOR_COLOR_MODES)[number]; export type VectorLayerConfig = { visible: boolean; color: string | null; scale: number | null; }; export declare const ATOM_COLOR_MODE_OPTIONS: readonly ["element", "coordination", "wyckoff", "selective_dynamics", "property", "custom"]; export type AtomColorMode = (typeof ATOM_COLOR_MODE_OPTIONS)[number]; type SettingDefinition = Omit & { enum?: Readonly>; }; type DefinedSettingValue = Definition extends { enum: Readonly>; } ? Value : Definition extends { value: infer Value; } ? Value extends number ? number : Value extends boolean ? boolean : Value : never; type NormalizeSettings = { [Key in keyof Definition]: Definition[Key] extends SettingDefinition ? SettingType> : NormalizeSettings; }; export declare const SETTINGS_CONFIG: NormalizeSettings<{ color_scheme: SettingType; background_color: { value: string; description: string; }; background_opacity: SettingType; symmetry: { symprec: { value: number; description: string; minimum: number; maximum: number; }; algo: { value: "Moyo"; description: string; enum: { Moyo: string; Spglib: string; }; }; }; structure: { atom_radius: { value: number; description: string; minimum: number; maximum: number; }; same_size_atoms: { value: boolean; description: string; }; show_atoms: { value: boolean; description: string; }; show_image_atoms: { value: boolean; description: string; }; sphere_segments: { value: number; description: string; minimum: number; maximum: number; }; bond_thickness: { value: number; description: string; minimum: number; maximum: number; }; auto_bond_order: { value: boolean; description: string; }; aromatic_display: { value: string; description: string; enum: { aromatic: string; kekule: string; }; }; show_bonds: { value: string; description: string; enum: Readonly>; }; bond_color: { value: string; description: string; }; bonding_strategy: { value: string; description: string; enum: { electroneg_ratio: string; explicit_only: string; }; }; show_polyhedra: { value: string; description: string; enum: Readonly>; }; polyhedra_opacity: SettingType; polyhedra_show_edges: { value: boolean; description: string; }; polyhedra_edge_color: { value: string; description: string; }; polyhedra_color_mode: { value: string; description: string; enum: { vertex: string; center: string; uniform: string; }; }; polyhedra_color: { value: string; description: string; }; polyhedra_hide_center_atoms: { value: boolean; description: string; }; polyhedra_min_neighbors: { value: number; description: string; minimum: number; maximum: number; }; polyhedra_max_neighbors: { value: number; description: string; minimum: number; maximum: number; }; polyhedra_excluded_elements: { value: readonly string[]; description: string; }; polyhedra_included_elements: { value: readonly string[]; description: string; }; atom_color_mode: { value: string; description: string; enum: Readonly>; }; atom_color_scale: SettingType; atom_color_scale_type: { value: string; description: string; enum: { continuous: string; categorical: string; }; }; gizmo: SettingType; camera_position: { value: [number, number, number]; description: string; minItems: number; maxItems: number; }; camera_projection: SettingType; initial_zoom: { value: number; description: string; minimum: number; maximum: number; }; fov: { value: number; description: string; minimum: number; maximum: number; }; rotation_damping: { value: number; description: string; minimum: number; maximum: number; }; rotate_speed: { value: number; description: string; minimum: number; maximum: number; }; zoom_speed: { value: number; description: string; minimum: number; maximum: number; }; pan_speed: { value: number; description: string; minimum: number; maximum: number; }; zoom_to_cursor: { value: boolean; description: string; }; max_zoom: SettingType; min_zoom: SettingType; auto_rotate: { value: number; description: string; minimum: number; maximum: number; }; rotation: { value: [number, number, number]; description: string; minItems: number; maxItems: number; }; show_site_labels: { value: boolean; description: string; }; show_site_indices: { value: boolean; description: string; }; site_label_size: { value: number; description: string; minimum: number; maximum: number; }; site_label_color: { value: string; description: string; }; site_label_bg_color: { value: string; description: string; }; site_label_padding: { value: number; description: string; minimum: number; maximum: number; }; site_label_offset: { value: [number, number, number]; description: string; minItems: number; maxItems: number; }; ambient_light: { value: number; description: string; minimum: number; maximum: number; }; directional_light: { value: number; description: string; minimum: number; maximum: number; }; vector_configs: SettingType>; vector_scale: { value: number; description: string; minimum: number; maximum: number; }; vector_color: { value: string; description: string; }; vector_color_mode: SettingType<"element" | "auto" | "uniform" | "spin_direction" | "magnitude">; vector_color_scale: SettingType; vector_normalize: { value: boolean; description: string; }; vector_uniform_thickness: { value: boolean; description: string; }; vector_origin_gap: { value: number; description: string; minimum: number; maximum: number; }; vector_shaft_radius: { value: number; description: string; minimum: number; maximum: number; }; vector_arrow_head_radius: { value: number; description: string; minimum: number; maximum: number; }; vector_arrow_head_length: { value: number; description: string; minimum: number; maximum: number; }; show_displacement_arrows: { value: boolean; description: string; }; displacement_arrow_scale: { value: number; description: string; minimum: number; maximum: number; }; displacement_arrow_color: { value: string; description: string; }; show_trajectory_lines: { value: boolean; description: string; }; trajectory_line_trail_frames: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; trajectory_line_frame_stride: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; trajectory_line_color_mode: { value: string; description: string; enum: { element: string; time: string; }; }; trajectory_line_wrap_mode: { value: string; description: string; enum: { unwrap: string; break: string; }; }; show_cell_vectors: { value: boolean; description: string; }; cell_edge_opacity: SettingType; cell_surface_opacity: SettingType; cell_edge_color: { value: string; description: string; }; cell_surface_color: { value: string; description: string; }; cell_edge_width: { value: number; description: string; minimum: number; maximum: number; }; fullscreen_toggle: SettingType; }; brillouin: { bz_order: { value: number; description: string; minimum: number; maximum: number; }; surface_color: { value: string; description: string; }; surface_opacity: SettingType; edge_color: { value: string; description: string; }; edge_width: { value: number; description: string; minimum: number; maximum: number; }; show_vectors: { value: boolean; description: string; }; vector_scale: { value: number; description: string; minimum: number; maximum: number; }; camera_projection: SettingType; show_ibz: { value: boolean; description: string; }; ibz_color: { value: string; description: string; }; ibz_opacity: SettingType; fullscreen_toggle: SettingType; }; fermi: { mu: { value: number; description: string; }; color_property: { value: string; description: string; enum: { band: string; spin: string; property: string; }; }; color_scale: SettingType; representation: { value: string; description: string; enum: { solid: string; wireframe: string; transparent: string; }; }; surface_opacity: SettingType; show_bz: { value: boolean; description: string; }; bz_opacity: SettingType; show_vectors: { value: boolean; description: string; }; tile_bz: { value: boolean; description: string; }; clip_enabled: { value: boolean; description: string; }; clip_axis: { value: "z"; description: string; enum: { x: string; y: string; z: string; }; }; clip_position: { value: number; description: string; minimum: number; maximum: number; }; clip_flip: { value: boolean; description: string; }; interpolation_factor: { value: number; description: string; minimum: number; maximum: number; }; camera_projection: SettingType; fullscreen_toggle: SettingType; }; trajectory: { auto_play: { value: boolean; description: string; }; fps: { value: number; description: string; minimum: 0; maximum: 300; multipleOf: number; }; fps_range: SettingType; display_mode: { value: "structure+scatter"; description: string; enum: { 'structure+scatter': string; structure: string; scatter: string; histogram: string; 'structure+histogram': string; }; }; show_controls: { value: boolean; description: string; }; fullscreen_toggle: SettingType; step_labels: { value: number; description: string; minimum: number; maximum: number; }; layout: { value: "auto"; description: string; enum: { auto: string; horizontal: string; vertical: string; }; }; allow_file_drop: { value: boolean; description: string; }; index_above_bytes: { value: number; description: string; minimum: number; maximum: number; }; atom_type_mapping: SettingType>>; }; histogram: { mode: { value: "overlay"; description: string; enum: { overlay: string; single: string; }; }; show_legend: SettingType<"auto" | "always" | "never">; normalize: { value: "count"; description: string; enum: { count: string; probability: string; density: string; }; }; bin_count: { value: number; description: string; minimum: number; maximum: number; }; bar: { color: { value: string; description: string; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; stroke_color: { value: string; description: string; }; stroke_opacity: SettingType; }; }; bar: { bar: { color: { value: string; description: string; }; opacity: SettingType; border_radius: { value: number; description: string; minimum: number; maximum: number; }; }; line: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; }; }; box: { whisker_mode: { value: "tukey"; description: string; enum: { tukey: string; minmax: string; percentile: string; std: string; }; }; box_width: { value: number; description: string; minimum: number; maximum: number; }; show_outliers: { value: boolean; description: string; }; show_mean: { value: boolean; description: string; }; kind: { value: "box"; description: string; enum: { box: string; violin: string; 'violin+box': string; }; }; side: { value: "both"; description: string; enum: { both: string; positive: string; negative: string; }; }; bandwidth: { value: "silverman"; description: string; enum: { silverman: string; scott: string; }; }; violin_width: { value: number; description: string; minimum: number; maximum: number; }; violin_box_width: { value: number; description: string; minimum: number; maximum: number; }; box: { color: { value: string; description: string; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; stroke_color: { value: string; description: string; }; border_radius: { value: number; description: string; minimum: number; maximum: number; }; }; whisker: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; cap_fraction: { value: number; description: string; minimum: number; maximum: number; }; }; median: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; }; outlier: { radius: { value: number; description: string; minimum: number; maximum: number; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; }; violin: { opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; }; }; sankey: { min_fraction: { value: number; description: string; minimum: number; maximum: number; }; max_links: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; orientation: { value: "horizontal"; description: string; enum: { horizontal: string; vertical: string; }; }; node_align: { value: "justify"; description: string; enum: { justify: string; left: string; right: string; center: string; }; }; node_width: { value: number; description: string; minimum: number; maximum: number; }; node_padding: { value: number; description: string; minimum: number; maximum: number; }; link_opacity: { value: number; description: string; minimum: number; maximum: number; }; show_node_labels: { value: boolean; description: string; }; iterations: { value: number; description: string; minimum: number; maximum: number; }; }; sunburst: { shape: { value: "sunburst"; description: string; enum: { sunburst: string; icicle: string; }; }; inner_radius: { value: number; description: string; minimum: number; maximum: number; }; pad_angle: { value: number; description: string; minimum: number; maximum: number; }; label_rotation: { value: "auto"; description: string; enum: { auto: string; radial: string; tangential: string; horizontal: string; }; }; value_mode: { value: "leaf-sum"; description: string; enum: { 'leaf-sum': string; total: string; remainder: string; }; }; max_depth: { value: number; description: string; minimum: number; maximum: number; }; min_fraction: { value: number; description: string; minimum: number; maximum: number; }; max_children: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; show_labels: { value: boolean; description: string; }; label_text: { value: "label"; description: string; enum: { label: string; value: string; percent: string; 'label+value': string; 'label+percent': string; 'label+parent-percent': string; }; }; zoom_on_click: { value: boolean; description: string; }; show_breadcrumbs: { value: boolean; description: string; }; }; treemap: { padding_inner: { value: number; description: string; minimum: number; maximum: number; }; padding_top: { value: number; description: string; minimum: number; maximum: number; }; padding_outer: { value: number; description: string; minimum: number; maximum: number; }; value_mode: { value: "leaf-sum"; description: string; enum: { 'leaf-sum': string; total: string; remainder: string; }; }; max_depth: { value: number; description: string; minimum: number; maximum: number; }; min_fraction: { value: number; description: string; minimum: number; maximum: number; }; max_children: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; show_labels: { value: boolean; description: string; }; label_text: { value: "label"; description: string; enum: { label: string; value: string; percent: string; 'label+value': string; 'label+percent': string; 'label+parent-percent': string; }; }; zoom_on_click: { value: boolean; description: string; }; show_breadcrumbs: { value: boolean; description: string; }; }; scatter: { symbol_type: { value: string; description: string; enum: Readonly>; }; show_legend: SettingType<"auto" | "always" | "never">; show_points: { value: boolean; description: string; }; show_lines: { value: boolean; description: string; }; point: { size: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; stroke_color: { value: string; description: string; }; stroke_opacity: SettingType; }; line: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; opacity: SettingType; dash: { value: string; description: string; }; }; }; plot: { display: { x_grid: { value: boolean; description: string; }; y_grid: { value: boolean; description: string; }; y2_grid: { value: boolean; description: string; }; x_zero_line: { value: boolean; description: string; }; y_zero_line: { value: boolean; description: string; }; }; }; convex_hull: { binary: { camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }; ternary: { camera_elevation: { value: number; description: string; minimum: number; maximum: number; }; camera_azimuth: { value: number; description: string; minimum: number; maximum: number; }; show_hull_faces: { value: boolean; description: string; }; hull_face_color: { value: string; description: string; }; hull_face_opacity: SettingType; hull_face_color_mode: { value: "uniform" | "formation_energy" | "dominant_element" | "facet_index"; description: string; enum: { uniform: string; formation_energy: string; dominant_element: string; facet_index: string; }; }; camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }; quaternary: { camera_rotation_x: { value: number; description: string; minimum: number; maximum: number; }; camera_rotation_y: { value: number; description: string; minimum: number; maximum: number; }; show_hull_faces: { value: boolean; description: string; }; hull_face_color: { value: string; description: string; }; hull_face_opacity: SettingType; hull_face_color_mode: { value: "uniform" | "formation_energy" | "dominant_element" | "facet_index"; description: string; enum: { uniform: string; formation_energy: string; dominant_element: string; facet_index: string; }; }; camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }; }; }>; type SettingsConfig = typeof SETTINGS_CONFIG; type SettingsValues = { [Key in keyof Config]: Config[Key] extends SettingType ? Value : Config[Key] extends object ? SettingsValues : never; }; export type DefaultSettings = SettingsValues; export declare const DEFAULTS: SettingsValues; background_color: { value: string; description: string; }; background_opacity: SettingType; symmetry: { symprec: { value: number; description: string; minimum: number; maximum: number; }; algo: { value: "Moyo"; description: string; enum: { Moyo: string; Spglib: string; }; }; }; structure: { atom_radius: { value: number; description: string; minimum: number; maximum: number; }; same_size_atoms: { value: boolean; description: string; }; show_atoms: { value: boolean; description: string; }; show_image_atoms: { value: boolean; description: string; }; sphere_segments: { value: number; description: string; minimum: number; maximum: number; }; bond_thickness: { value: number; description: string; minimum: number; maximum: number; }; auto_bond_order: { value: boolean; description: string; }; aromatic_display: { value: string; description: string; enum: { aromatic: string; kekule: string; }; }; show_bonds: { value: string; description: string; enum: Readonly>; }; bond_color: { value: string; description: string; }; bonding_strategy: { value: string; description: string; enum: { electroneg_ratio: string; explicit_only: string; }; }; show_polyhedra: { value: string; description: string; enum: Readonly>; }; polyhedra_opacity: SettingType; polyhedra_show_edges: { value: boolean; description: string; }; polyhedra_edge_color: { value: string; description: string; }; polyhedra_color_mode: { value: string; description: string; enum: { vertex: string; center: string; uniform: string; }; }; polyhedra_color: { value: string; description: string; }; polyhedra_hide_center_atoms: { value: boolean; description: string; }; polyhedra_min_neighbors: { value: number; description: string; minimum: number; maximum: number; }; polyhedra_max_neighbors: { value: number; description: string; minimum: number; maximum: number; }; polyhedra_excluded_elements: { value: readonly string[]; description: string; }; polyhedra_included_elements: { value: readonly string[]; description: string; }; atom_color_mode: { value: string; description: string; enum: Readonly>; }; atom_color_scale: SettingType; atom_color_scale_type: { value: string; description: string; enum: { continuous: string; categorical: string; }; }; gizmo: SettingType; camera_position: { value: [number, number, number]; description: string; minItems: number; maxItems: number; }; camera_projection: SettingType; initial_zoom: { value: number; description: string; minimum: number; maximum: number; }; fov: { value: number; description: string; minimum: number; maximum: number; }; rotation_damping: { value: number; description: string; minimum: number; maximum: number; }; rotate_speed: { value: number; description: string; minimum: number; maximum: number; }; zoom_speed: { value: number; description: string; minimum: number; maximum: number; }; pan_speed: { value: number; description: string; minimum: number; maximum: number; }; zoom_to_cursor: { value: boolean; description: string; }; max_zoom: SettingType; min_zoom: SettingType; auto_rotate: { value: number; description: string; minimum: number; maximum: number; }; rotation: { value: [number, number, number]; description: string; minItems: number; maxItems: number; }; show_site_labels: { value: boolean; description: string; }; show_site_indices: { value: boolean; description: string; }; site_label_size: { value: number; description: string; minimum: number; maximum: number; }; site_label_color: { value: string; description: string; }; site_label_bg_color: { value: string; description: string; }; site_label_padding: { value: number; description: string; minimum: number; maximum: number; }; site_label_offset: { value: [number, number, number]; description: string; minItems: number; maxItems: number; }; ambient_light: { value: number; description: string; minimum: number; maximum: number; }; directional_light: { value: number; description: string; minimum: number; maximum: number; }; vector_configs: SettingType>; vector_scale: { value: number; description: string; minimum: number; maximum: number; }; vector_color: { value: string; description: string; }; vector_color_mode: SettingType<"element" | "auto" | "uniform" | "spin_direction" | "magnitude">; vector_color_scale: SettingType; vector_normalize: { value: boolean; description: string; }; vector_uniform_thickness: { value: boolean; description: string; }; vector_origin_gap: { value: number; description: string; minimum: number; maximum: number; }; vector_shaft_radius: { value: number; description: string; minimum: number; maximum: number; }; vector_arrow_head_radius: { value: number; description: string; minimum: number; maximum: number; }; vector_arrow_head_length: { value: number; description: string; minimum: number; maximum: number; }; show_displacement_arrows: { value: boolean; description: string; }; displacement_arrow_scale: { value: number; description: string; minimum: number; maximum: number; }; displacement_arrow_color: { value: string; description: string; }; show_trajectory_lines: { value: boolean; description: string; }; trajectory_line_trail_frames: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; trajectory_line_frame_stride: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; trajectory_line_color_mode: { value: string; description: string; enum: { element: string; time: string; }; }; trajectory_line_wrap_mode: { value: string; description: string; enum: { unwrap: string; break: string; }; }; show_cell_vectors: { value: boolean; description: string; }; cell_edge_opacity: SettingType; cell_surface_opacity: SettingType; cell_edge_color: { value: string; description: string; }; cell_surface_color: { value: string; description: string; }; cell_edge_width: { value: number; description: string; minimum: number; maximum: number; }; fullscreen_toggle: SettingType; }; brillouin: { bz_order: { value: number; description: string; minimum: number; maximum: number; }; surface_color: { value: string; description: string; }; surface_opacity: SettingType; edge_color: { value: string; description: string; }; edge_width: { value: number; description: string; minimum: number; maximum: number; }; show_vectors: { value: boolean; description: string; }; vector_scale: { value: number; description: string; minimum: number; maximum: number; }; camera_projection: SettingType; show_ibz: { value: boolean; description: string; }; ibz_color: { value: string; description: string; }; ibz_opacity: SettingType; fullscreen_toggle: SettingType; }; fermi: { mu: { value: number; description: string; }; color_property: { value: string; description: string; enum: { band: string; spin: string; property: string; }; }; color_scale: SettingType; representation: { value: string; description: string; enum: { solid: string; wireframe: string; transparent: string; }; }; surface_opacity: SettingType; show_bz: { value: boolean; description: string; }; bz_opacity: SettingType; show_vectors: { value: boolean; description: string; }; tile_bz: { value: boolean; description: string; }; clip_enabled: { value: boolean; description: string; }; clip_axis: { value: "z"; description: string; enum: { x: string; y: string; z: string; }; }; clip_position: { value: number; description: string; minimum: number; maximum: number; }; clip_flip: { value: boolean; description: string; }; interpolation_factor: { value: number; description: string; minimum: number; maximum: number; }; camera_projection: SettingType; fullscreen_toggle: SettingType; }; trajectory: { auto_play: { value: boolean; description: string; }; fps: { value: number; description: string; minimum: 0; maximum: 300; multipleOf: number; }; fps_range: SettingType; display_mode: { value: "structure+scatter"; description: string; enum: { 'structure+scatter': string; structure: string; scatter: string; histogram: string; 'structure+histogram': string; }; }; show_controls: { value: boolean; description: string; }; fullscreen_toggle: SettingType; step_labels: { value: number; description: string; minimum: number; maximum: number; }; layout: { value: "auto"; description: string; enum: { auto: string; horizontal: string; vertical: string; }; }; allow_file_drop: { value: boolean; description: string; }; index_above_bytes: { value: number; description: string; minimum: number; maximum: number; }; atom_type_mapping: SettingType>>; }; histogram: { mode: { value: "overlay"; description: string; enum: { overlay: string; single: string; }; }; show_legend: SettingType<"auto" | "always" | "never">; normalize: { value: "count"; description: string; enum: { count: string; probability: string; density: string; }; }; bin_count: { value: number; description: string; minimum: number; maximum: number; }; bar: { color: { value: string; description: string; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; stroke_color: { value: string; description: string; }; stroke_opacity: SettingType; }; }; bar: { bar: { color: { value: string; description: string; }; opacity: SettingType; border_radius: { value: number; description: string; minimum: number; maximum: number; }; }; line: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; }; }; box: { whisker_mode: { value: "tukey"; description: string; enum: { tukey: string; minmax: string; percentile: string; std: string; }; }; box_width: { value: number; description: string; minimum: number; maximum: number; }; show_outliers: { value: boolean; description: string; }; show_mean: { value: boolean; description: string; }; kind: { value: "box"; description: string; enum: { box: string; violin: string; 'violin+box': string; }; }; side: { value: "both"; description: string; enum: { both: string; positive: string; negative: string; }; }; bandwidth: { value: "silverman"; description: string; enum: { silverman: string; scott: string; }; }; violin_width: { value: number; description: string; minimum: number; maximum: number; }; violin_box_width: { value: number; description: string; minimum: number; maximum: number; }; box: { color: { value: string; description: string; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; stroke_color: { value: string; description: string; }; border_radius: { value: number; description: string; minimum: number; maximum: number; }; }; whisker: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; cap_fraction: { value: number; description: string; minimum: number; maximum: number; }; }; median: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; }; outlier: { radius: { value: number; description: string; minimum: number; maximum: number; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; }; violin: { opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; }; }; sankey: { min_fraction: { value: number; description: string; minimum: number; maximum: number; }; max_links: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; orientation: { value: "horizontal"; description: string; enum: { horizontal: string; vertical: string; }; }; node_align: { value: "justify"; description: string; enum: { justify: string; left: string; right: string; center: string; }; }; node_width: { value: number; description: string; minimum: number; maximum: number; }; node_padding: { value: number; description: string; minimum: number; maximum: number; }; link_opacity: { value: number; description: string; minimum: number; maximum: number; }; show_node_labels: { value: boolean; description: string; }; iterations: { value: number; description: string; minimum: number; maximum: number; }; }; sunburst: { shape: { value: "sunburst"; description: string; enum: { sunburst: string; icicle: string; }; }; inner_radius: { value: number; description: string; minimum: number; maximum: number; }; pad_angle: { value: number; description: string; minimum: number; maximum: number; }; label_rotation: { value: "auto"; description: string; enum: { auto: string; radial: string; tangential: string; horizontal: string; }; }; value_mode: { value: "leaf-sum"; description: string; enum: { 'leaf-sum': string; total: string; remainder: string; }; }; max_depth: { value: number; description: string; minimum: number; maximum: number; }; min_fraction: { value: number; description: string; minimum: number; maximum: number; }; max_children: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; show_labels: { value: boolean; description: string; }; label_text: { value: "label"; description: string; enum: { label: string; value: string; percent: string; 'label+value': string; 'label+percent': string; 'label+parent-percent': string; }; }; zoom_on_click: { value: boolean; description: string; }; show_breadcrumbs: { value: boolean; description: string; }; }; treemap: { padding_inner: { value: number; description: string; minimum: number; maximum: number; }; padding_top: { value: number; description: string; minimum: number; maximum: number; }; padding_outer: { value: number; description: string; minimum: number; maximum: number; }; value_mode: { value: "leaf-sum"; description: string; enum: { 'leaf-sum': string; total: string; remainder: string; }; }; max_depth: { value: number; description: string; minimum: number; maximum: number; }; min_fraction: { value: number; description: string; minimum: number; maximum: number; }; max_children: { value: number; description: string; minimum: number; maximum: number; multipleOf: number; }; show_labels: { value: boolean; description: string; }; label_text: { value: "label"; description: string; enum: { label: string; value: string; percent: string; 'label+value': string; 'label+percent': string; 'label+parent-percent': string; }; }; zoom_on_click: { value: boolean; description: string; }; show_breadcrumbs: { value: boolean; description: string; }; }; scatter: { symbol_type: { value: string; description: string; enum: Readonly>; }; show_legend: SettingType<"auto" | "always" | "never">; show_points: { value: boolean; description: string; }; show_lines: { value: boolean; description: string; }; point: { size: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; opacity: SettingType; stroke_width: { value: number; description: string; minimum: number; maximum: number; }; stroke_color: { value: string; description: string; }; stroke_opacity: SettingType; }; line: { width: { value: number; description: string; minimum: number; maximum: number; }; color: { value: string; description: string; }; opacity: SettingType; dash: { value: string; description: string; }; }; }; plot: { display: { x_grid: { value: boolean; description: string; }; y_grid: { value: boolean; description: string; }; y2_grid: { value: boolean; description: string; }; x_zero_line: { value: boolean; description: string; }; y_zero_line: { value: boolean; description: string; }; }; }; convex_hull: { binary: { camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }; ternary: { camera_elevation: { value: number; description: string; minimum: number; maximum: number; }; camera_azimuth: { value: number; description: string; minimum: number; maximum: number; }; show_hull_faces: { value: boolean; description: string; }; hull_face_color: { value: string; description: string; }; hull_face_opacity: SettingType; hull_face_color_mode: { value: "uniform" | "formation_energy" | "dominant_element" | "facet_index"; description: string; enum: { uniform: string; formation_energy: string; dominant_element: string; facet_index: string; }; }; camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }; quaternary: { camera_rotation_x: { value: number; description: string; minimum: number; maximum: number; }; camera_rotation_y: { value: number; description: string; minimum: number; maximum: number; }; show_hull_faces: { value: boolean; description: string; }; hull_face_color: { value: string; description: string; }; hull_face_opacity: SettingType; hull_face_color_mode: { value: "uniform" | "formation_energy" | "dominant_element" | "facet_index"; description: string; enum: { uniform: string; formation_energy: string; dominant_element: string; facet_index: string; }; }; camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }; }; }>>; export declare const is_valid_setting_value: (value: unknown, setting: SettingType) => boolean; export declare const validate_setting_value: (value: unknown, setting: SettingType) => Value; export declare const get_convex_hull_defaults: (element_count: 2 | 3 | 4) => SettingsValues> | SettingsValues; hull_face_color_mode: { value: "uniform" | "formation_energy" | "dominant_element" | "facet_index"; description: string; enum: { uniform: string; formation_energy: string; dominant_element: string; facet_index: string; }; }; camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }>> | SettingsValues; hull_face_color_mode: { value: "uniform" | "formation_energy" | "dominant_element" | "facet_index"; description: string; enum: { uniform: string; formation_energy: string; dominant_element: string; facet_index: string; }; }; camera_zoom: { value: number; description: string; minimum: number; maximum: number; }; color_mode: { value: "energy"; description: string; enum: { stability: string; energy: string; }; }; color_scale: { value: string; description: string; }; show_stable: { value: boolean; description: string; }; show_unstable: { value: boolean; description: string; }; show_stable_labels: { value: boolean; description: string; }; show_unstable_labels: { value: boolean; description: string; }; max_hull_dist_show_phases: { value: number; description: string; minimum: number; maximum: number; }; max_hull_dist_show_labels: { value: number; description: string; minimum: number; maximum: number; }; fullscreen: { value: boolean; description: string; }; info_pane_open: { value: boolean; description: string; }; legend_pane_open: { value: boolean; description: string; }; }>>; type DeepPartial = { [Key in keyof T]?: T[Key] extends Record ? DeepPartial : T[Key]; }; export type PartialSettings = DeepPartial; export declare const merge: (user?: PartialSettings) => DefaultSettings; export declare const build_structure_props_from_settings: (defaults: DefaultSettings) => { scene_props: { atom_radius: number; same_size_atoms: boolean; show_atoms: boolean; show_image_atoms: boolean; sphere_segments: number; bond_thickness: number; auto_bond_order: boolean; aromatic_display: "aromatic" | "kekule"; show_bonds: "always" | "never" | "crystals" | "molecules"; bond_color: string; bonding_strategy: "electroneg_ratio" | "explicit_only"; show_polyhedra: "always" | "never" | "crystals" | "molecules"; polyhedra_opacity: number; polyhedra_show_edges: boolean; polyhedra_edge_color: string; polyhedra_color_mode: "uniform" | "vertex" | "center"; polyhedra_color: string; polyhedra_hide_center_atoms: boolean; polyhedra_min_neighbors: number; polyhedra_max_neighbors: number; polyhedra_excluded_elements: readonly string[]; polyhedra_included_elements: readonly string[]; atom_color_mode: "property" | "element" | "coordination" | "wyckoff" | "selective_dynamics" | "custom"; atom_color_scale: D3InterpolateName; atom_color_scale_type: "continuous" | "categorical"; gizmo: boolean | GizmoOptions; camera_position: [number, number, number]; camera_projection: CameraProjection; initial_zoom: number; fov: number; rotation_damping: number; rotate_speed: number; zoom_speed: number; pan_speed: number; zoom_to_cursor: boolean; max_zoom: number | undefined; min_zoom: number | undefined; auto_rotate: number; rotation: [number, number, number]; show_site_labels: boolean; show_site_indices: boolean; site_label_size: number; site_label_color: string; site_label_bg_color: string; site_label_padding: number; site_label_offset: [number, number, number]; ambient_light: number; directional_light: number; vector_configs: Record; vector_scale: number; vector_color: string; vector_color_mode: "element" | "auto" | "uniform" | "spin_direction" | "magnitude"; vector_color_scale: D3InterpolateName; vector_normalize: boolean; vector_uniform_thickness: boolean; vector_origin_gap: number; vector_shaft_radius: number; vector_arrow_head_radius: number; vector_arrow_head_length: number; show_displacement_arrows: boolean; displacement_arrow_scale: number; displacement_arrow_color: string; show_trajectory_lines: boolean; trajectory_line_trail_frames: number; trajectory_line_frame_stride: number; trajectory_line_color_mode: "element" | "time"; trajectory_line_wrap_mode: "unwrap" | "break"; show_cell_vectors: boolean; cell_edge_opacity: number; cell_surface_opacity: number; cell_edge_color: string; cell_surface_color: string; cell_edge_width: number; fullscreen_toggle: boolean; }; color_scheme: string; background_color: string; background_opacity: number; show_image_atoms: boolean; show_trajectory_lines: boolean; }; export {};