import { type BufferAccess } from '../../common/BufferAccess.js'; import { type RecorderInterface } from '../recorder/RecorderInterface.js'; export declare const cpcStandardSpeedRecordOptions: DataRecordOptions; /** * Abstract Encoder class used for ZX Spectrum (.tzx), Amstrad CPC (.cdt) and MSX (.tsx). * * https://github.com/mamedev/mame/blob/master/src/lib/formats/tzx_cas.cpp * https://sinclair.wiki.zxnet.co.uk/wiki/TAP_format */ export declare class TzxEncoder { private readonly recorder; readonly tzxCycleFactor: number; readonly standardSpeedRecordOptions: DataRecordOptions; static createForCpc(recorder: RecorderInterface): TzxEncoder; static createForZxSpectrum(recorder: RecorderInterface): TzxEncoder; private readonly oscillator; constructor(recorder: RecorderInterface, tzxCycleFactor: number, standardSpeedRecordOptions: DataRecordOptions); begin(): void; end(): void; recordSilenceMs(lengthMs: number): void; recordStandardSpeedDataBlock(blockDataBa: BufferAccess): void; recordDataBlock(blockDataBa: BufferAccess, options: DataRecordOptions): void; recordPureDataBlock(blockDataBa: BufferAccess, options: PureDataRecordOptions): void; recordKansasCityLikeBlock(blockDataBa: BufferAccess, config: KansasCityLikeConfiguration): void; recordPulse(length: number): void; recordPulses(length: number, count: number): void; private tzxCyclesToSamples; } type PureDataRecordOptions = { zeroBitPulseLength: number; oneBitPulseLength: number; lastByteUsedBits: number; pauseLengthMs: number; }; export type DataRecordOptions = PureDataRecordOptions & { pilotPulseLength: number; pilotPulses: number; syncFirstPulseLength: number; syncSecondPulseLength: number; }; export type KansasCityLikeConfiguration = { pauseAfterBlockMs: number; pilotPulseLength: number; pilotPulses: number; zeroPulseLength: number; onePulseLength: number; zeroPulsesInZeroBit: number; onePulsesInOneBit: number; startBitCount: number; startBitValue: 0 | 1; stopBitCount: number; stopBitValue: 0 | 1; msbFirst: boolean; }; export declare const msxKansasCityLikeConfiguration: KansasCityLikeConfiguration; export {};