import { type EventizedObject, type UnsubscribeFunc } from '@spearwolf/eventize';
import { WebGPURenderer } from 'three/webgpu';
import { FrameLoop } from './FrameLoop.js';
import type { DisplayEventProps, DisplayParameters, ResizeDisplayToFn } from './types.js';
type DisplayEventListener<T = DisplayEventProps> = (props: T) => unknown;
export interface Display extends EventizedObject {
}
export declare class Display {
    #private;
    [FrameLoop.OnFrame]: (props: {
        now: number;
    }) => void;
    static MaxResolution: number;
    static CssRulesPrefixContainer: string;
    static CssRulesPrefixDisplay: string;
    static CssRulesPrefixFullscreen: string;
    resizePollIntervalMs: number;
    pixelZoom: number;
    styleImageRendering?: 'pixelated' | 'auto';
    get width(): number;
    get height(): number;
    frameNo: number;
    get isFirstFrame(): boolean;
    frameLoop: FrameLoop;
    resizeToElement?: HTMLElement;
    resizeToCallback?: ResizeDisplayToFn;
    resizeToAttributeEl: HTMLElement;
    styleSheetRoot: HTMLElement | ShadowRoot;
    renderer?: WebGPURenderer;
    get canvas(): HTMLCanvasElement;
    get isWebGPUBackend(): boolean;
    get isWebGLBackend(): boolean;
    constructor(domElementOrRenderer: HTMLElement | WebGPURenderer, options?: DisplayParameters);
    get now(): number;
    get deltaTime(): number;
    get maxDeltaTime(): number;
    set maxDeltaTime(value: number);
    get pause(): boolean;
    set pause(pause: boolean);
    get isRunning(): boolean;
    get pixelRatio(): number;
    get devicePixelRatio(): number;
    resize(): void;
    renderFrame(now?: number): void;
    start(beforeStartCallback?: (args: DisplayEventProps) => Promise<void> | void): Promise<Display>;
    stop(): void;
    dispose(): void;
    getEventProps(): DisplayEventProps;
    readonly onResize: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly onRenderFrame: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly onNextFrame: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly nextFrame: () => Promise<DisplayEventProps>;
    readonly onInit: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly onStart: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly onRestart: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly onPause: (listener: DisplayEventListener) => UnsubscribeFunc;
    readonly onDispose: (listener: DisplayEventListener<Display>) => UnsubscribeFunc;
}
export {};
//# sourceMappingURL=Display.d.ts.map