import { type Matrix3x3, type Vec2, type Vec3 } from '../math'; import { SvelteSet } from 'svelte/reactivity'; import type { BornChargeData, Complex, FrequencyUnit, PhononMode, PhononModeData, PhononQPointModes, SpectrumKind, VibrationalMode, VibrationalSpectrum } from './types'; export type SpectrumCurve = { x: number[]; y: number[]; }; export declare function ir_intensity(eigenvector: Complex[][], masses: number[], born_charges: Matrix3x3[]): number; export declare function raman_invariants(tensor: Matrix3x3): { isotropic: number; anisotropy_sq: number; activity: number; depolarization_ratio: number; }; export interface IrRamanOptions { raman_tensors?: Matrix3x3[] | null; raman_activities?: number[] | null; acoustic_threshold?: number; } export declare function acoustic_mode_indices(modes: PhononMode[], q_position: Vec3, threshold?: number): SvelteSet; export declare function compute_ir_raman_spectrum(qpoint: PhononQPointModes, masses: number[], born: BornChargeData, options?: IrRamanOptions): VibrationalSpectrum; export declare function spectrum_from_phonon_data(data: PhononModeData, born: BornChargeData, options?: IrRamanOptions & { qpoint_index?: number; }): VibrationalSpectrum; export declare function spectrum_sticks(spectrum: VibrationalSpectrum, kind?: SpectrumKind, options?: { unit?: FrequencyUnit; include_acoustic?: boolean; include_imaginary?: boolean; }): SpectrumCurve & { modes: VibrationalMode[]; }; export interface BroadenOptions { fwhm?: number; fwhm_fn?: (peak_center: number) => number; shape_factor?: number; range?: Vec2; step_size?: number; } export declare function broaden_spectrum(sticks: SpectrumCurve, options?: BroadenOptions): SpectrumCurve; export declare function scale_to_max(values: number[]): number[]; export declare const to_transmittance: (absorbance: number[]) => number[];