import type { _DRFile } from "./DRFile.js";
export interface _DRFileDataProduction {
    /**
     * Calculates the size of the specified fork of a file. This method may be sent at any time after the file object has been instantiated. Requests that the recevier calculate the byte size of a file's fork (for instance, data fork or resource fork). If estimate is YES , you are being asked for an estimate of the final fork size, perhaps to provide an estimate of the track size, and do not have to be exact. Estimates should err on the high side; it's better to overestimate than underestimate. An estimate call may be made at any time. If estimate is NO , you are being asked for the actual fork size, to be used in the burn. This call is only made in the burn phase. The file object. The fork of the file whose size is to be calculated. If the file size should be estimated or exact. The length of the file's fork.
     */
    calculateSizeOfFile$fork$estimating$?(file: _DRFile, fork: number, estimate: boolean): number;
    /**
     * Prepare the file object for burning. Sent to the recevier before the burn begins. This would be an appropriate method to open files, or do any other prep work needed. The disc's entire hierarchy is completely in place and can be queried if needed. After this call, the burn's content is locked down, and you should be able to respond to the messages with exact values. The file object. YES if the burn should proceed.
     */
    prepareFileForBurn$?(file: _DRFile): boolean;
    /**
     * Produces the specified fork contents for burning. Sent during the burn (after the message) requesting that the receiver produce the specified fork contents. The recevier should fill up the buffer passed in as full as possible and then return control to the caller. While burning keeping the drive's buffer full is of utmost importance, so you should not perform lengthy operations or block for data in this method. This method should return the number of bytes actually in the buffer or 0 to indicate that there was an error producing the data. You may be asked to produce twice, once during the actual burn and once during verification depending on the verification type of the track. The file object. The fork of the file to produce. The buffer to produce data into. The length of the buffer to produce data into The byte address in the file that the burn engine is requesting The size of the track blocks The number of bytes produced.
     */
    produceFile$fork$intoBuffer$length$atAddress$blockSize$?(file: _DRFile, fork: number, buffer: string, bufferLength: number, address: number, blockSize: number): number;
    /**
     * Prepare the file object for verification. Sent during the burn (after production and before the message) to indicate that verification is about to begin. Now would be a good time to rewind to the start of the file, reset state machines, or do whatever else is needed to prepare to produce again. The file object. YES to indicate that the verification should proceed and NO to indicate a failure occurred.
     */
    prepareFileForVerification$?(file: _DRFile): boolean;
    /**
     * Cleanup the file object once the burn is complete. Sent to the receiver after the burn completes. This would be an appropriate place to close files, or do any other teardown work needed. This message will always be sent regardless of whether the burn succeeded or failed The file object.
     */
    cleanupFileAfterBurn$?(file: _DRFile): void;
}
