import type { ScrcpyMediaStreamPacket } from "@yume-chan/scrcpy";
import { ScrcpyVideoCodecId } from "@yume-chan/scrcpy";
import type { ScrcpyVideoDecoder, ScrcpyVideoDecoderCapability } from "@yume-chan/scrcpy-decoder-tinyh264";
import { WritableStream } from "@yume-chan/stream-extra";
import type { VideoFrameRenderer } from "./render/index.js";
export declare class WebCodecsVideoDecoder implements ScrcpyVideoDecoder {
    #private;
    static get isSupported(): boolean;
    static readonly capabilities: Record<string, ScrcpyVideoDecoderCapability>;
    get codec(): ScrcpyVideoCodecId;
    get writable(): WritableStream<ScrcpyMediaStreamPacket>;
    get renderer(): VideoFrameRenderer;
    get framesRendered(): number;
    get framesSkipped(): number;
    get sizeChanged(): import("@yume-chan/event").Event<{
        width: number;
        height: number;
    }, unknown>;
    get width(): number;
    get height(): number;
    /**
     * Create a new WebCodecs video decoder.
     */
    constructor({ codec, renderer }: WebCodecsVideoDecoder.Options);
    snapshot(): Promise<Blob | undefined>;
    dispose(): void;
}
export declare namespace WebCodecsVideoDecoder {
    interface Options {
        /**
         * The video codec to decode
         */
        codec: ScrcpyVideoCodecId;
        renderer: VideoFrameRenderer;
    }
}
//# sourceMappingURL=decoder.d.ts.map