import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _MTLDevice } from "../Metal/MTLDevice.js";
export declare class _PGDeviceDescriptor extends _NSObject {
    static alloc(): _PGDeviceDescriptor;
    static new(): _PGDeviceDescriptor;
    init(): _PGDeviceDescriptor;
    /** The metal device to use to back the PGDevice */
    device(): _MTLDevice;
    setDevice$(value: _MTLDevice): void;
    /**
     * The length, of the memory that backs the APPLEGPU_BAR_MMIO By default, the value of mmioLength will be the recommended default size for the MMIO memory.
     */
    mmioLength(): number;
    setMmioLength$(value: number): void;
    /** The block to invoke to create a task. */
    createTask(): (arg0: number, arg1: NobjcObject) => NobjcObject;
    setCreateTask$(value: (arg0: number, arg1: NobjcObject) => NobjcObject): void;
    /** The block to invoke to destroy a task. */
    destroyTask(): (arg0: NobjcObject) => void;
    setDestroyTask$(value: (arg0: NobjcObject) => void): void;
    /** The block to invoke to map guest memory into a task. */
    mapMemory(): (arg0: NobjcObject, arg1: number, arg2: number, arg3: boolean, arg4: NobjcObject) => boolean;
    setMapMemory$(value: (arg0: NobjcObject, arg1: number, arg2: number, arg3: boolean, arg4: NobjcObject) => boolean): void;
    /** The block to invoke to unmap guest memory from a task. */
    unmapMemory(): (arg0: NobjcObject, arg1: number, arg2: number) => boolean;
    setUnmapMemory$(value: (arg0: NobjcObject, arg1: number, arg2: number) => boolean): void;
    /** The block to invoke to perform a read of guest memory */
    readMemory(): (arg0: number, arg1: number, arg2: NobjcObject) => boolean;
    setReadMemory$(value: (arg0: number, arg1: number, arg2: NobjcObject) => boolean): void;
    /**
     * The block to invoke to raise an interrupt to the guest. May be raised from a dispatch queue must be thread safe.
     */
    raiseInterrupt(): (arg0: number) => void;
    setRaiseInterrupt$(value: (arg0: number) => void): void;
    /**
     * The block to invoke to add a trace range. If the client is unable to provide range tracing, it should not populate this property or removeTraceRange.
     */
    addTraceRange(): (arg0: NobjcObject, arg1: (arg0: NobjcObject) => void) => NobjcObject;
    setAddTraceRange$(value: (arg0: NobjcObject, arg1: (arg0: NobjcObject) => void) => NobjcObject): void;
    /**
     * The block to invoke to remove a trace range. This property must be populated if addTraceRange is populated.
     */
    removeTraceRange(): (arg0: NobjcObject) => void;
    setRemoveTraceRange$(value: (arg0: NobjcObject) => void): void;
    /**
     * The number of PGDisplay ports configured into the VM. By default, the value of displayPortCount will be 1. Valid values range from 1 to the value returned by PGMaxDisplayPortCount().
     */
    displayPortCount(): number;
    setDisplayPortCount$(value: number): void;
}
