import type { FileLoadData } from '../io/types'; import type { ScalarGrid3D } from '../isosurface/grid'; import type { Matrix3x3, Point2D, Vec2, Vec3 } from '../math'; import type { DefaultSettings } from '../settings'; import type { TooltipConfig, TooltipProp } from '../tooltip'; export type FermiSurfaceSettings = Omit; export type SpinChannel = `up` | `down` | null; export type RepresentationMode = `solid` | `wireframe` | `transparent`; export type ColorProperty = `band` | `spin` | `property`; type ReciprocalCellType = `wigner_seitz` | `parallelepiped`; export interface FermiIsosurface { positions: Float32Array; indices: Uint32Array; normals: Float32Array; properties?: Float32Array; band_index: number; spin: SpinChannel; } export declare const vertex_count: (surface: Pick) => number; export interface FermiSurfaceData { isosurfaces: FermiIsosurface[]; k_lattice: Matrix3x3; fermi_energy: number; reciprocal_cell: ReciprocalCellType; metadata: FermiSurfaceMetadata; } export interface FermiSurfaceMetadata { n_bands: number; n_surfaces: number; source_format?: string; } export type BandEnergyGrid = ScalarGrid3D; export interface BandGridData { energies: BandEnergyGrid[][]; k_grid: Vec3; k_lattice: Matrix3x3; fermi_energy: number; n_bands: number; n_spins: number; origin?: Vec3; periodic?: boolean; grid_shift?: Vec3; } 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; interpolation_factor?: number; } export interface FermiSliceOptions { miller_indices?: Vec3; distance?: number; } export interface FermiFileLoadData extends FileLoadData { fermi_data?: FermiSurfaceData; band_data?: BandGridData; filename: string; file_size: number; } export interface FermiErrorData extends FileLoadData { error_msg: 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; n_symmetry_ops?: 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; export {};