import type { Matrix3x3, Vec2, Vec3 } from '../math'; import type { AxisConfig } from '../plot/core/types'; import type * as types from './types'; import type { RibbonConfig } from './types'; export declare const is_valid_range: (range: unknown) => range is Vec2; export declare const ranges_equal: (a: Vec2 | undefined | null, b: Vec2 | undefined | null, tol?: number) => boolean; export declare const axis_with_range: (axis: AxisConfig | undefined, range: Vec2 | undefined, label?: string) => AxisConfig; export declare function sync_axis_range(axis: AxisConfig, range: unknown): AxisConfig; export declare function detect_zoom_change(bands_range: unknown, dos_range: unknown, shared_range: Vec2, current_synced: Vec2 | null, dos_enabled?: boolean): Vec2 | null | undefined; export declare const IMAGINARY_MODE_NOISE_THRESHOLD = 0.005; export declare function pretty_sym_point(symbol: string): string; export declare const get_segment_key: (start_label?: string, end_label?: string) => string; export declare const get_ordered_segments: (band_struct: types.BaseBandStructure | null, segments: Set) => string[]; export declare function scale_segment_distances(segment_distances: number[], x_start: number, x_end: number): number[]; export declare function get_ribbon_config(ribbon_config: RibbonConfig | Record, label: string): RibbonConfig; export declare function get_band_xaxis_ticks(band_struct: types.BaseBandStructure, branches?: string[] | Set): [number[], string[]]; export declare function convert_frequencies(frequencies: number[], unit?: types.FrequencyUnit): number[]; export declare function normalize_densities(densities: number[], freqs_or_energies: number[], mode: types.NormalizationMode): number[]; export declare function apply_gaussian_smearing(freqs_or_energies: number[], densities: number[], sigma: number): number[]; export declare function clear_smearing_cache(): void; export declare function extract_spin_channels(data: unknown): { up: T; down: T | null; } | null; export declare function normalize_band_structure(band_struct: unknown): types.BaseBandStructure | null; export declare function normalize_dos(dos: unknown, options?: { auto_convert_units?: boolean; }): types.DosData | null; export declare function extract_k_path_points(band_struct: types.BaseBandStructure, recip_lattice_matrix: Matrix3x3, options?: { wrap_to_bz?: boolean; }): Vec3[]; export declare function find_qpoint_at_distance(band_struct: types.BaseBandStructure, target: number): number | null; export declare function qpoint_x_position(band_struct: types.BaseBandStructure, qpoint_index: number, x_positions: Record): number | null; export declare function find_qpoint_at_rescaled_x(band_struct: types.BaseBandStructure, rescaled_x: number, x_positions: Record): number | null; type SpinDensities = Record; export interface PymatgenDos { '@class': string; '@module': string; energies: number[]; densities: SpinDensities | number[]; efermi: number; } export interface PymatgenCompleteDos extends PymatgenDos { '@class': `CompleteDos` | `LobsterCompleteDos`; structure?: Record; pdos?: Record[]; atom_dos?: Record; spd_dos?: Record; } export declare function extract_pdos(dos: unknown, pdos_type: types.PdosType, filter_keys?: string[]): Record | null; export declare function shift_to_fermi(dos: PymatgenCompleteDos): PymatgenCompleteDos; export declare function generate_ribbon_path(x_values: number[], y_values: number[], width_values: number[], x_scale_fn: (x: number) => number, y_scale_fn: (y: number) => number, max_width_px: number, scale?: number): string; export declare function extract_efermi(data: unknown): number | undefined; export declare function negative_fraction(values: number[]): number; export declare function compute_frequency_range(band_structs: unknown, doses: unknown, padding_factor?: number): Vec2 | undefined; export declare function format_dos_tooltip(x_formatted: string, y_formatted: string, label: string | null, is_horizontal: boolean, is_phonon: boolean, units: types.FrequencyUnit, x_axis_label: string, y_axis_label: string, num_series: number): { title?: string; lines: string[]; }; export declare const SPIN_MODES: readonly [{ readonly value: "mirror"; readonly label: "↕"; readonly title: "Mirror: spin-up above, spin-down below zero"; }, { readonly value: "overlay"; readonly label: "≡"; readonly title: "Overlay: both spins on same axis"; }, { readonly value: "up_only"; readonly label: "↑"; readonly title: "Show spin-up only"; }, { readonly value: "down_only"; readonly label: "↓"; readonly title: "Show spin-down only"; }]; export declare const NORMALIZATION_MODES: readonly [{ readonly value: null; readonly label: "None"; }, { readonly value: "max"; readonly label: "Max=1"; }, { readonly value: "sum"; readonly label: "Sum=1"; }, { readonly value: "integral"; readonly label: "∫=1"; }]; export declare const FREQUENCY_UNITS: types.FrequencyUnit[]; export declare const DEFAULT_SPIN_MODE: types.SpinMode; export declare const DEFAULT_SIGMA = 0; export declare const DEFAULT_NORMALIZE: types.NormalizationMode; export declare const DEFAULT_UNITS: types.FrequencyUnit; export declare function format_sigma(val: number): string; export declare const validate_sigma_range: ([min, max]: Vec2) => Vec2; export declare function calculate_sigma_step(range: Vec2): number; export interface BandPointMeta extends Record { band_idx: number; spin: `up` | `down`; is_acoustic: boolean | null; nb_bands: number; frac_coords: Vec3 | null; qpoint_label: string | null; band_width: number | null; slope: number | null; } export declare function compute_slope(x_vals: number[], y_vals: number[], idx: number): number | null; export declare function find_gamma_indices(bs: types.BaseBandStructure): number[]; export declare const ACOUSTIC_FREQ_THRESHOLD = 0.5; export declare function classify_acoustic(bs: types.BaseBandStructure, band_idx: number, gamma_indices: number[], threshold?: number): boolean | null; export declare function build_point_metadata(opts: { x_vals: number[]; y_vals: number[]; band_idx: number; spin: `up` | `down`; is_acoustic: boolean | null; bs: types.BaseBandStructure; start_idx: number; }): BandPointMeta[]; export {};