import type { ReadableStream } from "@yume-chan/stream-extra";
import { TransformStream } from "@yume-chan/stream-extra";
import type { AsyncExactReadable, ValueOrPromise } from "@yume-chan/struct";
import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyControlMessageType, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../../control/index.js";
import type { ScrcpyMediaStreamPacket, ScrcpyVideoStream } from "../codec.js";
import type { ScrcpyDisplay, ScrcpyEncoder } from "../types.js";
import { ScrcpyOptions } from "../types.js";
import { CodecOptions } from "./codec-options.js";
import type { ScrcpyOptionsInit1_16 } from "./init.js";
import { ScrcpyLogLevel1_16, ScrcpyVideoOrientation1_16 } from "./init.js";
import type { ScrcpyScrollController } from "./scroll.js";
export declare class ScrcpyOptions1_16 extends ScrcpyOptions<ScrcpyOptionsInit1_16> {
    #private;
    static readonly DEFAULTS: {
        readonly logLevel: ScrcpyLogLevel1_16.Debug;
        readonly maxSize: 0;
        readonly bitRate: 8000000;
        readonly maxFps: 0;
        readonly lockVideoOrientation: ScrcpyVideoOrientation1_16.Unlocked;
        readonly tunnelForward: false;
        readonly crop: undefined;
        readonly sendFrameMeta: true;
        readonly control: true;
        readonly displayId: 0;
        readonly showTouches: false;
        readonly stayAwake: false;
        readonly codecOptions: CodecOptions;
    };
    static readonly SERIALIZE_ORDER: readonly ["logLevel", "maxSize", "bitRate", "maxFps", "lockVideoOrientation", "tunnelForward", "crop", "sendFrameMeta", "control", "displayId", "showTouches", "stayAwake", "codecOptions"];
    static serialize<T>(options: T, order: readonly (keyof T)[]): string[];
    /**
     * Parse a fixed-length, null-terminated string.
     * @param stream The stream to read from
     * @param maxLength The maximum length of the string, including the null terminator, in bytes
     * @returns The parsed string, without the null terminator
     */
    static parseCString(stream: AsyncExactReadable, maxLength: number): Promise<string>;
    static parseUint16BE(stream: AsyncExactReadable): Promise<number>;
    static parseUint32BE(stream: AsyncExactReadable): Promise<number>;
    readonly defaults: Required<ScrcpyOptionsInit1_16>;
    get controlMessageTypes(): readonly ScrcpyControlMessageType[];
    get clipboard(): ReadableStream<string>;
    constructor(init: ScrcpyOptionsInit1_16);
    serialize(): string[];
    setListEncoders(): void;
    setListDisplays(): void;
    parseEncoder(): ScrcpyEncoder | undefined;
    parseDisplay(line: string): ScrcpyDisplay | undefined;
    parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyVideoStream>;
    parseAudioStreamMetadata(): never;
    parseDeviceMessage(id: number, stream: AsyncExactReadable): Promise<boolean>;
    createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
    serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
    serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
    serializeSetClipboardControlMessage(message: ScrcpySetClipboardControlMessage): Uint8Array;
    createScrollController(): ScrcpyScrollController;
}
//# sourceMappingURL=options.d.ts.map