import type { NobjcObject } from "objc-js";
import type { _NSMutableData } from "../Foundation/NSMutableData.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSGraphicsContext } from "./NSGraphicsContext.js";
import type { _NSPDFPanel } from "./NSPDFPanel.js";
import type { _NSPrintInfo } from "./NSPrintInfo.js";
import type { _NSPrintPanel } from "./NSPrintPanel.js";
import type { _NSView } from "./NSView.js";
import type { _NSWindow } from "./NSWindow.js";
import type { CGRect } from "../structs/CGRect.js";
import type { NSRange } from "../structs/NSRange.js";
import type { NSPrintRenderingQuality } from "./NSPrintRenderingQuality.js";
import type { NSPrintingPageOrder } from "./NSPrintingPageOrder.js";
export declare class _NSPrintOperation extends _NSObject {
    static alloc(): _NSPrintOperation;
    static new(): _NSPrintOperation;
    init(): _NSPrintOperation;
    /**
     * Factory methods that create a new NSPrintOperation for printing, copying to Portable Document Format, or copying to Encapsulated PostScript. The passed-in NSPrintInfo is copied, and the copy is retained by the new NSPrintOperation. (So, no need to copy the NSPrintInfo you pass to these.) You can get the copy with -printInfo.
     */
    static printOperationWithView$printInfo$(view: _NSView, printInfo: _NSPrintInfo): _NSPrintOperation;
    static PDFOperationWithView$insideRect$toData$printInfo$(view: _NSView, rect: CGRect, data: _NSMutableData, printInfo: _NSPrintInfo): _NSPrintOperation;
    static PDFOperationWithView$insideRect$toPath$printInfo$(view: _NSView, rect: CGRect, path: _NSString, printInfo: _NSPrintInfo): _NSPrintOperation;
    static EPSOperationWithView$insideRect$toData$printInfo$(view: _NSView, rect: CGRect, data: _NSMutableData, printInfo: _NSPrintInfo): _NSPrintOperation;
    static EPSOperationWithView$insideRect$toPath$printInfo$(view: _NSView, rect: CGRect, path: _NSString, printInfo: _NSPrintInfo): _NSPrintOperation;
    /**
     * Slight conveniences, for use when the application's global NSPrintInfo is appropriate. Each of these methods invokes [NSPrintInfo sharedPrintInfo] and then invokes the like-named method listed above.
     */
    static printOperationWithView$(view: _NSView): _NSPrintOperation;
    static PDFOperationWithView$insideRect$toData$(view: _NSView, rect: CGRect, data: _NSMutableData): _NSPrintOperation;
    static EPSOperationWithView$insideRect$toData$(view: _NSView, rect: CGRect, data: _NSMutableData | null): _NSPrintOperation;
    /**
     * The current print operation for this thread. If this is nil, there is no current operation for the current thread.
     */
    static currentOperation(): _NSPrintOperation | null;
    static setCurrentOperation$(value: _NSPrintOperation | null): void;
    /**
     * Do the print operation, with panels that are document-modal to a specific window. When the operation has been completed, send the message selected by didRunSelector to the delegate, with the contextInfo as the last argument. The method selected by didRunSelector must have the same signature as: - (void)printOperationDidRun:(NSPrintOperation *)printOperation success:(BOOL)success contextInfo:(void *)contextInfo; This can only be invoked once. Create a new NSPrintOperation instance for each operation. When this method completes, the object is removed from being the current operation if it is the current operation.
     */
    runOperationModalForWindow$delegate$didRunSelector$contextInfo$(docWindow: _NSWindow, delegate: NobjcObject | null, didRunSelector: string | null, contextInfo: Uint8Array | null): void;
    /**
     * Do the print operation, with application-modal panels. Return YES if the operation completed successfully, NO if there was an error or the user cancelled the operation. This can only be invoked once. Create a new NSPrintOperation instance for each operation. When this method completes, the object is removed from being the current operation if it is the current operation.
     */
    runOperation(): boolean;
    /**
     * Methods that are invoked by the print operation itself as it proceeds. You should not invoke them.
     */
    createContext(): _NSGraphicsContext | null;
    destroyContext(): void;
    deliverResult(): boolean;
    cleanUpOperation(): void;
    /**
     * @deprecated Use -[NSPrintPanel addAccessoryController:] and -[NSPrintPanel removeAccessoryController:] instead
     */
    setAccessoryView$(view: _NSView | null): void;
    /** @deprecated Use -[NSPrintPanel accessoryControllers] instead */
    accessoryView(): _NSView | null;
    /** @deprecated */
    setJobStyleHint$(hint: _NSString | null): void;
    /** @deprecated */
    jobStyleHint(): _NSString | null;
    /** @deprecated Use -setShowsPrintPanel: and -setShowsProgressPanel: instead */
    setShowPanels$(flag: boolean): void;
    /** @deprecated Use -showsPrintPanel and -showsProgressPanel instead */
    showPanels(): boolean;
    /** Return YES if the operation for copying to PDF or EPS, NO if it's for printing. */
    copyingOperation(): boolean;
    /**
     * If the print sheet is unresponsive or sluggish due to the time is takes you to fully render a page, you can check this method in drawRect and other printing methods such as beginDocument and knowsPageRage: to determine if the print operation prefers speed over fidelity. Please see the comments for NSPrintRenderingQuality. Most applications render each page fast enough and do not need to call this method.
     */
    preferredRenderingQuality(): NSPrintRenderingQuality;
    /**
     * The title of the print job. If a job title is set it overrides anything that might be gotten by sending the printed view an [NSView(NSPrinting) printJobTitle] message.
     */
    jobTitle(): _NSString;
    setJobTitle$(value: _NSString): void;
    /** Whether the print and progress panels are shown during the operation. */
    showsPrintPanel(): boolean;
    setShowsPrintPanel$(value: boolean): void;
    showsProgressPanel(): boolean;
    setShowsProgressPanel$(value: boolean): void;
    /**
     * The print panel to be presented by the operation when it is run, if showsProgressPanel is YES and isCopyingOperation is NO. -printPanel will create a new NSPrintPanel if one hasn't been set yet.
     */
    printPanel(): _NSPrintPanel;
    setPrintPanel$(value: _NSPrintPanel): void;
    /**
     * The panel to be presented by the operation when it is run, if [[self printInfo] jobDisposition] is NSPrintSaveJob and [[[self printInfo] dictionary] objectForKey:NSPrintJobSavingURL] is nil. -PDFPanel will create a new NSPDFPanel if one hasn't been set yet. NSPrintOperation will throw an exception if panel.options contains NSPDFPanelRequestsParentDirectory when it attempts to display the panel.
     */
    PDFPanel(): _NSPDFPanel;
    setPDFPanel$(value: _NSPDFPanel): void;
    /**
     * Whether the print operation should spawn a separate thread in which to run itself.
     */
    canSpawnSeparateThread(): boolean;
    setCanSpawnSeparateThread$(value: boolean): void;
    /**
     * The page order that will be used to generate the pages in this job. This is the physical page order of the pages. It depends on the stacking order of the printer, the capability of the app to reverse page order, etc.
     */
    pageOrder(): NSPrintingPageOrder;
    setPageOrder$(value: NSPrintingPageOrder): void;
    /** The view being printed. */
    view(): _NSView | null;
    /**
     * The print info of the operation. -printInfo always returns a copy of the NSPrintInfo passed into the factory method used to create the print operation, unless -setPrintInfo: has been invoked, in which case it returns the exact same object passed into -setPrintInfo:. So, the factory methods listed above copy the passed-in NSPrintInfo, but -setPrintInfo: doesn't.
     */
    printInfo(): _NSPrintInfo;
    setPrintInfo$(value: _NSPrintInfo): void;
    /** The context for the output of this operation. */
    context(): _NSGraphicsContext | null;
    /**
     * The first through last one-based page numbers of the operation as it's being previewed or printed. The first page number might not be 1, and the page count might be NSIntegerMax to indicate that the number of pages is not known, depending on what the printed view returned when sent an [NSView(NSPrinting) knowsPageRange:] message.
     */
    pageRange(): NSRange;
    /**
     * The current one-based page number of the operation as it's being previewed or printed.
     */
    currentPage(): number;
}
