import { CramFileBlock } from '../file.ts'; import { DataType } from './dataSeriesTypes.ts'; import CramSlice from '../slice/index.ts'; export interface DataTypeMapping { byte: number; int: number; long: number; byteArray: Uint8Array; } export interface Cursor { bitPosition: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7; bytePosition: number; } export interface Cursors { lastAlignmentStart: number; coreBlock: Cursor; externalBlocks: { map: Map; getCursor: (contentId: number) => Cursor; }; } export default abstract class CramCodec { parameters: TParameters; dataType: DataType; constructor(parameters: TParameters, dataType: TResult); abstract decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record, cursors: Cursors): DataTypeMapping[TResult] | undefined; getBytesSubarray(_blocksByContentId: Record, _cursors: Cursors, _length: number): Uint8Array | undefined; }