import type { NobjcObject } from "objc-js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _DRDevice } from "./DRDevice.js";
export declare class _DRBurn extends _NSObject {
    static alloc(): _DRBurn;
    static new(): _DRBurn;
    init(): _DRBurn;
    /**
     * @method burnForDevice: @abstract Creates an autoreleased burn object. @discussion Once a burn is created with this method, the object is ready to write data to the disc. @param device Device to use for the burn @result An autoreleased DRBurn object.
     */
    static burnForDevice$(device: _DRDevice): _DRBurn;
    /**
     * @method layoutForImageFile: @abstract Creates a layout capable of burning an image to disc. @discussion The layout created by this method may be any type of object. No assumptions should be made as to what sort of object may be returned based on the input image type. @param path The path to the image file. This file must be one that can be read by DiscRecording. The supported image types include: .dmg, .iso, .cue, and .toc. For .cue and .toc files the corresponding data files (.bin, .img, etc) must also be present and correctly referenced in the .cue/.toc file. @result An autoreleased layout object
     */
    static layoutForImageFile$(path: _NSString): NobjcObject;
    /**
     * @method initWithDevice: @abstract Initializes the burn object. @discussion Once a burn is initialized with this method, the object is ready to write data to the disc. @param device Device to use for the burn @result A DRBurn object.
     */
    initWithDevice$(device: _DRDevice): NobjcObject;
    /**
     * @method writeLayout: @abstract Begin the process of burning a disc layout. @discussion This method only begins the burning process. Once the burn has been started, control returns to the caller and it is up to the caller to monitor the progress of the burn (by listening for @link //apple_ref/occ/data/DRBurnStatusChangedNotification DRBurnStatusChangedNotification @/link or polling @link //apple_ref/occ/instm/DRBurn/status status @/link) to know when the burn completes (either successfully or with an error). @param layout The data to be burned to disc. There are three configurations of the object passed in: <ol> <li>For a multi-session burn, layout must be a valid NSArray containing one or more NSArrays, each of which contains one or more valid @link //apple_ref/occ/cl/DRTrack DRTrack @/link objects.</li> <li>For a single-session multi-track burn, layout must be a valid NSArray containing one or more valid @link //apple_ref/occ/cl/DRTrack DRTrack @/link objects.</li> <li>For a single-session single-track burn, layout must be a valid @link //apple_ref/occ/cl/DRTrack DRTrack @/link object.</li> </ol> If none of these configurations are met or the leaf values contained in layout are not valid @link //apple_ref/occ/cl/DRTrack DRTrack @/link objects, an exception is thrown.
     */
    writeLayout$(layout: NobjcObject): void;
    /**
     * @method status @abstract Returns a dictionary describing the status of the burn. @discussion The same dictionary is returned through the @link //apple_ref/occ/data/DRBurnStatusChangedNotification DRBurnStatusChangedNotification @/link notification @result An NSDictionary reporting the status of the burn.
     */
    status(): _NSDictionary;
    /**
     * @method abort @abstract Stops the burn. @discussion When this method returns the burn might not actually be fully stopped but it has been cancelled and only cleanup is going on. If a burn has not completed writing data to disc, you just made a coaster. Typically this method is only used as a result of the user hitting a cancel/stop button somewhere in the user interface.
     */
    abort(): void;
    /**
     * @method properties @abstract Returns the properties dictionary of the burn. @result An NSDictionary containing the properties of the burn.
     */
    properties(): _NSDictionary;
    /**
     * @method setProperties: @abstract Sets the properties dictionary of the burn. @param properties NSDictionary of the properties to set.
     */
    setProperties$(properties: _NSDictionary): void;
    /**
     * @method device @abstract Returns the device being used for the burn. @result The DRDevice the burn will use.
     */
    device(): _DRDevice;
    /**
     * @method requestedBurnSpeed @abstract Returns the speed at which this burn will attempt to write data. @discussion The actual speed also depends on the capabilities of the bus the device is on, the maximum speed of the device itself, and the media used. @result A float indicating the speed the burn should run at in kilobytes per second.
     */
    requestedBurnSpeed(): number;
    /**
     * @method setRequestedBurnSpeed: @abstract Sets the speed at which the burn will be attempted to be performed at @discussion The actual speed also depends on the capabilities of the bus the device is on, the maximum speed of the device itself, and the media used. @param speed The speed that the burn should run at in kilobytes per second.
     */
    setRequestedBurnSpeed$(speed: number): void;
    /**
     * @method appendable @abstract Indicates if the burn is appendable. @discussion When a burn completes, it can mark the disc so that no more data can be written to it. This creates a closed or non-appendable disc (which is the most compatible with audio CD players). If this method returns <i>NO</i>, then the disc will be marked as closed and no data can be appended to it. A return value of <i>YES</i> indicates further burns can be appended to the disc. @result A BOOL indicating if the burn is appendable.
     */
    appendable(): boolean;
    /**
     * @method setAppendable: @abstract Sets the burn to be appendable or non-appendable. @discussion When a burn completes, it can mark the disc so that no more data can be written to it. This creates a closed or non-appendable disc (which is the most compatible with audio CD players). @param appendable A BOOL indicating if the burn is appendable. Passing in <i>YES</i> indicates further burns can be appended to the disc, while passing in <i>NO</i>, marks the disc as closed and no data can be appended to it.
     */
    setAppendable$(appendable: boolean): void;
    /**
     * @method verifyDisc @abstract Indicates if the resulting disc will be verified. @discussion After data is written to disc, the data can be verified. The verification process will read the data on the disc back into memory and compare it to the data originally used to write to disc. The type of verification is determined by a track property on a track-by-track basis. See the @link //apple_ref/occ/cl/DRTrack DRTrack @/link documentation for more information on verification types. @result A BOOL indicating if the disc will be verified.
     */
    verifyDisc(): boolean;
    /**
     * @method setVerifyDisc: @abstract Sets the burn to verify or not verify the disc. @param verify A BOOL indicating if the disc is to be verified. Passing in <i>YES</i> (the default) indicates that the data written to disc will be verified against the source data once the burn complete. Passing in <i>NO</i> indicates that no verification will take place.
     */
    setVerifyDisc$(verify: boolean): void;
    /**
     * @method completionAction @abstract Returns the action to be performed at the end of the burn. @result An NSString
     */
    completionAction(): _NSString;
    /**
     * @method setCompletionAction: @abstract Sets the action to be performed at the end of the burn. @param action An NSString for the action to perform.
     */
    setCompletionAction$(action: _NSString): void;
}
