import type { ElementSymbol } from '../../element'; import type { Matrix3x3, Vec3 } from '../../math'; interface VaspLineCursor { peek: (lookahead?: number) => string | undefined; advance: (count?: number) => void; position: () => number; } export declare const lines_cursor: (lines: readonly string[], start?: number) => VaspLineCursor; export declare const read_text_line: (text: string, offset: number) => { line: string; next: number; }; export declare const text_cursor: (text: string, start?: number) => VaspLineCursor; interface VaspHeaderOptions { format: string; coord_mode?: `strict` | `lenient` | `skip`; strict_species?: boolean; line_offset?: number; } interface VaspHeader { scale: Vec3; lattice: Matrix3x3; elements: ElementSymbol[]; counts: number[]; has_selective_dynamics: boolean; is_direct: boolean; } type VaspHeaderResult = { ok: true; header: VaspHeader; } | { ok: false; error: string; }; export declare const apply_axis_scale: (vec: Vec3, scale: Vec3) => Vec3; export declare function parse_vasp_header(cursor: VaspLineCursor, options: VaspHeaderOptions): VaspHeaderResult; export {};