import { Cursors, DataTypeMapping } from '../codecs/_base.ts'; import { DataSeriesEncodingKey } from '../codecs/dataSeriesTypes.ts'; import CramContainerCompressionScheme, { DataSeriesTypes } from '../container/compressionScheme.ts'; import { DecodeOptions, ReadFeature } from '../record.ts'; import CramSlice, { SliceHeader } from './index.ts'; import { CramFileBlock } from '../file.ts'; export type DataSeriesDecoder = (dataSeriesName: T) => DataTypeMapping[DataSeriesTypes[T]] | undefined; export type BulkByteRawDecoder = (dataSeriesName: 'QS' | 'BA', length: number) => Uint8Array | undefined; export default function decodeRecord(slice: CramSlice, decodeDataSeries: DataSeriesDecoder, compressionScheme: CramContainerCompressionScheme, sliceHeader: SliceHeader, coreDataBlock: CramFileBlock, blocksByContentId: Record, cursors: Cursors, majorVersion: number, recordNumber: number, uniqueId: number, decodeOptions?: Required, decodeBulkBytesRaw?: BulkByteRawDecoder): { readLength: number; sequenceId: number | undefined; cramFlags: number; flags: number; alignmentStart: number; readGroupId: number; readNameRaw: Uint8Array | undefined; mateToUse: { mateFlags: number; mateSequenceId: number; mateAlignmentStart: number; mateReadName: string | undefined; } | undefined; templateSize: number | undefined; mateRecordNumber: number | undefined; readFeatures: ReadFeature[] | undefined; lengthOnRef: number | undefined; mappingQuality: number | undefined; qualityScores: Uint8Array | null | undefined; readBases: string | null | undefined; tags: Record; uniqueId: number; };