import type { WindowType } from '../fft'; import type { MdFrequencyUnit } from './frequency-units'; import type { Complex } from './types'; import type { Pbc } from '../structure'; import type { Matrix3x3 } from '../math'; import type { TrajectoryPositionStream, TrajectorySignal } from '../trajectory'; import type { VelocitySource } from '../vacf'; export type TrajectoryFrequencyUnit = MdFrequencyUnit | `1/step`; export declare const TRAJECTORY_FREQUENCY_UNITS: readonly ["THz", "cm^-1", "1/step"]; type SpectralActivity = `active` | `inactive` | `unknown`; export type SpectroscopyPreprocessing = `body_fixed` | `remove_com` | `raw`; export declare const RAMAN_CHANNELS: readonly ["isotropic", "anisotropic", "vv", "vh", "unpolarized"]; export type RamanChannel = (typeof RAMAN_CHANNELS)[number]; export type InfraredSignal = { kind: `dipole`; series: TrajectorySignal; } | { kind: `polarization`; series: TrajectorySignal; branch_continuous: true; } | { kind: `current`; series: TrajectorySignal; }; export type RamanSignal = { kind: `polarizability`; series: TrajectorySignal; }; export interface TrajectorySpectroscopyInput { positions: TrajectoryPositionStream; masses: Float64Array; velocities?: TrajectorySignal | null; infrared_signal?: InfraredSignal | null; raman_signal?: RamanSignal | null; time_step?: number; time_unit?: string; metadata?: Record; } export interface TrajectorySpectroscopyOptions { frequency_unit?: TrajectoryFrequencyUnit; preprocessing?: SpectroscopyPreprocessing; velocity_source?: VelocitySource | `auto`; window?: WindowType; zero_pad_factor?: number; raman_channel?: RamanChannel; } export interface TrajectorySpectrumCurve { frequencies: number[]; power: number[]; normalized_power: number[]; frequency_unit: TrajectoryFrequencyUnit; sample_interval: number; frequency_spacing: number; rayleigh_resolution: number; nyquist: number; } type RamanSpectrumResult = Record & { selected_channel: RamanChannel; }; interface TrajectorySpectralPeak { frequency: number; mode_label?: string; ir_activity: SpectralActivity; raman_activity: SpectralActivity; ir_score: number | null; raman_score: number | null; vdos_prominence: number; ir_prominence: number; raman_prominence: number; potentially_mixed: boolean; displacement?: Complex[][]; displacement_unavailable_reason?: string; } export interface TrajectorySpectroscopyResult { vdos: TrajectorySpectrumCurve; ir: TrajectorySpectrumCurve | null; raman: RamanSpectrumResult | null; peaks: TrajectorySpectralPeak[]; frequency_unit: TrajectoryFrequencyUnit; preprocessing: SpectroscopyPreprocessing; velocity_source: VelocitySource; reference_positions: number[][]; elements: string[]; masses: number[]; pbc: Pbc; reference_lattice: Matrix3x3 | null; metadata: Record; } export declare const arrays_equal: (left: ArrayLike | undefined, right: ArrayLike) => boolean; export declare function validate_trajectory_signal(signal: TrajectorySignal, expected_shape?: number[], label?: string): void; export declare function standard_masses_for_elements(elements: string[]): Float64Array; export declare const calc_trajectory_spectroscopy: (input: TrajectorySpectroscopyInput, options?: TrajectorySpectroscopyOptions) => TrajectorySpectroscopyResult; export {};