import { FlashFreqValues, FlashModeValues, FlashSizeValues } from "./arguments"; /** * Options for flashing a device with firmware. * @interface FlashOptions */ export interface FlashOptions { /** * An array of file objects representing the data to be flashed. * @type {Array<{ data: Uint8Array; address: number }>} */ fileArray: { data: Uint8Array; address: number; }[]; /** * The flash mode to be used (e.g., QIO, QOUT, DIO, DOUT). * @type {FlashModeValues} */ flashMode: FlashModeValues; /** * The flash frequency to be used (e.g., 40MHz, 80MHz). * @type {FlashFreqValues} */ flashFreq: FlashFreqValues; /** * The flash size to be used (e.g., detect, keep,256KB, 512KB, 1MB, 2MB, 4MB, 8MB, 16MB, 32MB, 64MB, 128MB). * @type {FlashSizeValues} */ flashSize: FlashSizeValues; /** * Flag indicating whether to erase all existing data in the flash memory before flashing. * @type {boolean} */ eraseAll: boolean; /** * Flag indicating whether to compress the data before flashing. * @type {boolean} */ compress: boolean; /** * A function to report the progress of the flashing operation (optional). * @type {(fileIndex: number, written: number, total: number) => void} */ reportProgress?: (fileIndex: number, written: number, total: number) => void; /** * A function to calculate the MD5 hash of the firmware image (optional). * @type {(image: Uint8Array) => string} */ calculateMD5Hash?: (image: Uint8Array) => string; }