import { WGS84Coords } from "./coordinates.js"; import { type GefBoreData } from "./gef-bore.js"; import { type GefCptData } from "./gef-cpt.js"; import { type GefDissData } from "./gef-diss.js"; import { type ColumnInfo, type GefBoreHeaders, type GefCptHeaders, type GefDissHeaders } from "./gef-schemas.js"; import type { PreExcavationLayer, GefExtension } from "./gef-cpt.js"; import type { Child } from "./gef-schemas.js"; import type { BoreSpecimen } from "./gef-bore.js"; import type { Parent } from "./gef-schemas.js"; import type { GefWarning } from "./gef-warnings.js"; export type GEFHeadersMap = Map>>; export type GefFileType = "CPT" | "BORE" | "DISS"; export type GefData = GefCptData | GefBoreData | GefDissData; export interface ProcessedItemMetadata { id: number; category: string; description: string; descriptionNl?: string; required?: boolean; } export interface ProcessedMeasurement { value: number; unit: string; metadata: ProcessedItemMetadata; } export interface ProcessedText { value: string; decoded?: string; metadata: ProcessedItemMetadata; } export interface ProcessedLocation { wgs84: WGS84Coords | null; wgs84Error: string | null; coordinateSystem: { code: string; name: string; nameEn: string; epsg: string | null; } | null; originalX: number | undefined; originalY: number | undefined; xUncertainty: number | undefined; yUncertainty: number | undefined; } export interface ProcessedElevation { heightSystem: { code: string; name: string; nameEn: string; epsg: string | null; } | null; surfaceElevation: number | undefined; uncertainty: number | undefined; } export interface ProcessedCompany { name: string; address: string | undefined; countryCode: string | undefined; } export interface ProcessedMetadataBase { filename: string; fileType: GefFileType; projectId: string | undefined; testId: string | undefined; company: ProcessedCompany | null; startDate: string | undefined; startTime: string | undefined; location: ProcessedLocation | null; elevation: ProcessedElevation | null; gefVersion: string | undefined; reportCode: string | undefined; measurementCode: string | undefined; fileDate: string | undefined; fileOwner: string | undefined; operatingSystem: string | undefined; comments: Array; measurements: Record; texts: Record; } export interface ProcessedColumn { columnName: string; unit: string; quantityNumber: number; description: string; descriptionNl: string; } export interface ProcessedCptMetadata extends ProcessedMetadataBase { fileType: "CPT"; extension: GefExtension; columns: Record; preExcavationLayers: Array; children: Array; } export interface ProcessedBoreMetadata extends ProcessedMetadataBase { fileType: "BORE"; specimens: Array; } export interface ProcessedDissMetadata extends ProcessedMetadataBase { fileType: "DISS"; columns: Record; parent: Parent | undefined; } export type ProcessedMetadata = ProcessedCptMetadata | ProcessedBoreMetadata | ProcessedDissMetadata; interface ParseRecordsConfig { columnSeparator: string | RegExp; recordSeparator: string | RegExp; columnInfo: Array; voidValues: Map; hasTextColumn: boolean; /** Column numbers where values should be Math.abs()'d (CPT depth normalization) */ absoluteValueColumns?: Set; } interface ParseRecordsResult { rows: Array>; warnings: Array; } /** * Shared record-parsing loop for CPT and DISS data blocks. * Splits records, coerces numbers with zod, checks voids, tracks line numbers, * handles text columns, and accumulates warnings. */ export declare function parseGefRecords(dataString: string, config: ParseRecordsConfig): ParseRecordsResult; /** * Check for duplicate quantity numbers in column info. * Shared between CPT and DISS warning generators. */ export declare function checkDuplicateQuantities(filename: string, columnInfo: Array, quantitySpec: Record): Array; export declare function processCommonFields(filename: string, fileType: GefFileType, headers: GefCptHeaders | GefBoreHeaders | GefDissHeaders): Omit; /** * Build a map of semantic column keys from columnInfo and quantity spec. * Keys are camelCase derived from the quantity name (e.g. "penetrationLength"). * Skips columns with quantityNumber 0 (unknown) and category "reserved". */ export declare function buildColumnMap(columnInfo: Array, quantitySpec: Record): Record; interface MeasurementVar { id: number; value: number | undefined; unit: string; } /** * Get a measurement variable numeric value by ID from parsed headers */ export declare function getMeasurementVarValue(measurementVars: Array, id: number): number | undefined; export declare function parseGefFile(gefContent: string, filename: string): Promise; export {}; //# sourceMappingURL=gef-common.d.ts.map