/** * Format constants. * * Layer 0. Imports nothing. Every magic number the parser relies on lives here with the * clause it comes from, so no other file needs a bare literal. */ /** The fixed header is one of these, and each signal adds exactly one more. */ export declare const EDF_HEADER_BLOCK_BYTES: 256; /** Total header size is always `EDF_HEADER_BLOCK_BYTES * (signalCount + 1)`. */ export declare const EDF_SIGNAL_HEADER_BYTES: 256; /** Trimmed, case-sensitive. On disk the field is `'EDF Annotations '` — 15 chars plus a pad. */ export declare const EDF_ANNOTATIONS_LABEL: "EDF Annotations"; export declare const BDF_ANNOTATIONS_LABEL: "BDF Annotations"; /** EDF spec recommendation, not a limit. Exceeding it is a warning, never an error. */ export declare const EDF_RECOMMENDED_MAX_RECORD_BYTES: 61440; /** * Time is compared in exact 100 ns ticks, never in floats. Float equality on event times is * how ERP alignment silently breaks. */ export declare const TICKS_PER_SECOND = 10000000n; /** 16-bit two's complement. */ export declare const EDF_DIGITAL_MIN: -32768; export declare const EDF_DIGITAL_MAX: 32767; /** 24-bit two's complement, sign-extended from bit 23. */ export declare const BDF_DIGITAL_MIN: -8388608; export declare const BDF_DIGITAL_MAX: 8388607; /** ns lives in a 4-byte field, so it cannot exceed four digits. */ export declare const EDF_MAX_SIGNAL_COUNT: 9999; /** Default ceiling for any read that allocates. Refused before allocating, not during. */ export declare const DEFAULT_MAX_MATERIALIZE_BYTES: number; /** TAL structural bytes. Every byte of a multi-byte UTF-8 sequence is >= 0x80, so these can * never collide with text — which is why splitting on structure before decoding is safe. */ export declare const TAL_ONSET_DURATION_SEPARATOR: 21; export declare const TAL_FIELD_TERMINATOR: 20; export declare const TAL_TERMINATOR: 0; /** Fixed-header field offsets and lengths, per the EDF specification. */ export declare const HEADER_FIELDS: { readonly version: { readonly offset: 0; readonly length: 8; }; readonly patientId: { readonly offset: 8; readonly length: 80; }; readonly recordingId: { readonly offset: 88; readonly length: 80; }; readonly startDate: { readonly offset: 168; readonly length: 8; }; readonly startTime: { readonly offset: 176; readonly length: 8; }; readonly headerByteLength: { readonly offset: 184; readonly length: 8; }; readonly reserved: { readonly offset: 192; readonly length: 44; }; readonly recordCount: { readonly offset: 236; readonly length: 8; }; readonly recordDuration: { readonly offset: 244; readonly length: 8; }; readonly signalCount: { readonly offset: 252; readonly length: 4; }; }; /** * Per-signal header field widths, in the order they appear. * * The layout is FIELD-MAJOR, not one struct per signal: all `ns` labels, then all `ns` * transducers, and so on. For signal `i`, a field's address is * `256 + ns * (sum of widths before it) + i * (its own width)`. */ export declare const SIGNAL_FIELD_WIDTHS: { readonly label: 16; readonly transducerType: 80; readonly physicalDimension: 8; readonly physicalMinimum: 8; readonly physicalMaximum: 8; readonly digitalMinimum: 8; readonly digitalMaximum: 8; readonly prefiltering: 80; readonly samplesPerRecord: 8; readonly reserved: 32; }; /** Cumulative width preceding each per-signal field. Multiply by ns to get its block start. */ export declare const SIGNAL_FIELD_BLOCK_OFFSETS: { readonly label: 0; readonly transducerType: 16; readonly physicalDimension: 96; readonly physicalMinimum: 104; readonly physicalMaximum: 112; readonly digitalMinimum: 120; readonly digitalMaximum: 128; readonly prefiltering: 136; readonly samplesPerRecord: 216; readonly reserved: 224; }; /** Published package version. Kept in sync with package.json by a test. */ export declare const VERSION = "0.6.244"; //# sourceMappingURL=constants.d.ts.map