import type { _MTLCommandBuffer } from "../Metal/MTLCommandBuffer.js";
import type { _MTLTexture } from "../Metal/MTLTexture.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSBitmapImageRep } from "../AppKit/NSBitmapImageRep.js";
import type { CGSize } from "../structs/CGSize.js";
import type { MTLRegion } from "../structs/MTLRegion.js";
import type { PGDisplayCoord_t } from "../structs/PGDisplayCoord_t.js";
import type { MTLTextureUsage } from "../Metal/MTLTextureUsage.js";
export interface _PGDisplay {
    /**
     * Encode processing of new frame (to deal with gamma, CSC, and more...), landing it in specific region of specific texture. The Metal command buffer in which to encode processing of new frame. The Metal texture in which the processed frame should land. The region within the Metal texture that the (linear scaled) frame should land in. True if encoding was successful, otherwise, false. Client calls this method to direct display object to append encoded display processing Metal pass to client supplied commandBuffer. Processed frame will land in specified region of client supplied texture. Nothing outside the specified region will be written. Note that commandBuffer and texture objects must both be descendants of host Metal device being used for guest acceleration. Note that texture.textureUsage must contain the bits specified in self.minimumTextureUsage. See newFrameEventHandler above since it notifies client of the existence of a new frame.
     */
    encodeCurrentFrameToCommandBuffer$texture$region$?(commandBuffer: _MTLCommandBuffer, texture: _MTLTexture, region: MTLRegion): boolean;
    /** The name of the display. */
    name?(): _NSString;
    /** The size of the display. Mostly for debug visibility. */
    sizeInMillimeters?(): CGSize;
    /** The dispatch_queue on which to invoke client supplied blocks. */
    queue?(): _NSObject;
    /** The block to invoke to handle display mode change. */
    modeChangeHandler?(): (arg0: PGDisplayCoord_t, arg1: number) => void;
    /**
     * The block to invoke to notify presence of new Guest frame to be processed. See encodeCurrentFrameToCommandBuffer:texture:region: below to get further processing underway.
     */
    newFrameEventHandler?(): () => void;
    /** The block to invoke to handle cursor glyph updates. */
    cursorGlyphHandler?(): (arg0: _NSBitmapImageRep, arg1: PGDisplayCoord_t) => void;
    /** The block to invoke to handle cursor show/hide updates. */
    cursorShowHandler?(): (arg0: boolean) => void;
    /** The block to invoke to handle cursor movement. */
    cursorMoveHandler?(): () => void;
    /**
     * Top,left display relative position of cursor hotSpot. This is a low overhead mechanism to sample cursor location on this display of guest compositor. Sentinel value for cursor not on display is {0xffff,0xffff}.
     */
    cursorPosition?(): PGDisplayCoord_t;
    /**
     * Create-time serialNum of display. Mostly for debug visibility. Param of [PGDevice newDisplayWithDescriptor:port:serialNum].
     */
    serialNum?(): number;
    /**
     * Create-time port number of display. Mostly for debug visibility. Param of [PGDevice newDisplayWithDescriptor:port:serialNum].
     */
    port?(): number;
    /**
     * Minimally required textureUsage bits for destination texture of encodeCurrentFrameToCommandBuffer:texture:region:. If destination texture doesn't meet this requirement, encodeCurrentFrameToCommandBuffer:texture:region: will fail.
     */
    minimumTextureUsage?(): MTLTextureUsage;
    /**
     * The number of frame presents generated by the guest since object creation. This value could exceed the number of times newFrameEventHandler block is invoked when host is not encoding frames fast enough to keep up.
     */
    guestPresentCount?(): number;
    /**
     * The number of unique frames encoded for present by the host since object creation. This value could be smaller than than the count of times encodeCurrentFrameToCommandBuffer:texture:region: is invoked when same frame is encoded multiple times.
     */
    hostPresentCount?(): number;
    /**
     * Supported list of display modes. This is the only writeable property of display object. Setting it will update supported mode list (up to 128 modes) and potentially trigger a mode change. First setting looks like hot-plug.
     */
    modeList?(): _NSArray;
    setModeList$?(value: _NSArray): void;
}
