import type { Matrix3x3, Point2D, Vec2, Vec3 } from '../math'; import type { TooltipConfig, TooltipProp } from '../tooltip'; export type SpinChannel = `up` | `down` | null; export type RepresentationMode = `solid` | `wireframe` | `transparent`; export type ColorProperty = `band` | `velocity` | `spin` | `custom`; export type ReciprocalCellType = `wigner_seitz` | `parallelepiped`; export type SurfaceDimensionality = `1D` | `2D` | `quasi-2D` | `3D`; export interface Isosurface { vertices: Vec3[]; faces: number[][]; normals: Vec3[]; properties?: number[]; vector_properties?: Vec3[]; band_index: number; spin: SpinChannel; area?: number; dimensionality?: SurfaceDimensionality; orientation?: Vec3 | null; avg_velocity?: number; } export interface FermiSurfaceData { isosurfaces: Isosurface[]; k_lattice: Matrix3x3; fermi_energy: number; reciprocal_cell: ReciprocalCellType; metadata: FermiSurfaceMetadata; } export interface FermiSurfaceMetadata { n_bands: number; n_surfaces: number; total_area: number; source_format?: string; source_file?: string; has_spin?: boolean; has_velocities?: boolean; has_spin_texture?: boolean; is_irreducible?: boolean; } export type EnergyGrid5D = number[][][][][]; export type VectorGrid5D = Vec3[][][][][]; export interface BandGridData { energies: EnergyGrid5D; k_grid: Vec3; k_lattice: Matrix3x3; fermi_energy: number; velocities?: VectorGrid5D; spin_texture?: VectorGrid5D; n_bands: number; n_spins: number; origin?: Vec3; periodic?: boolean; } export interface FermiSliceData { isolines: Isoline[]; plane_normal: Vec3; plane_distance: number; k_lattice_2d: [Vec3, Vec3]; metadata: { n_lines: number; has_properties: boolean; }; } export interface Isoline { points: Vec3[]; points_2d: Vec2[]; properties?: number[]; band_index: number; spin: SpinChannel; is_closed: boolean; } export interface FermiSurfaceOptions { mu?: number; wigner_seitz?: boolean; compute_velocities?: boolean; compute_dimensionality?: boolean; selected_bands?: number[]; selected_spins?: SpinChannel[]; interpolation_factor?: number; } export interface FermiSliceOptions { miller_indices?: Vec3; distance?: number; } export interface FermiFileLoadData { fermi_data?: FermiSurfaceData; band_data?: BandGridData; filename: string; file_size: number; } export interface FermiErrorData { error_msg: string; filename?: string; } export interface FermiHoverData { band_index: number; spin: SpinChannel; position_cartesian: Vec3; position_fractional: Vec3 | null; screen_position: Point2D; surface_color?: string; property_value?: number; property_name?: string; is_tiled?: boolean; symmetry_index?: number; } export type FermiTooltipConfig = TooltipConfig; export type FermiTooltipProp = TooltipProp; export declare const is_fermi_surface_data: (data: BandGridData | FermiSurfaceData | null) => data is FermiSurfaceData; export declare const is_band_grid_data: (data: BandGridData | FermiSurfaceData | null) => data is BandGridData;