import * as VScript from "vscript";
import * as _Video from "./Video";
export declare const lift: {
    readonly LiveView: (kwl: string | null, socket: VScript.VSocket) => LiveView | null;
    readonly Video: (kwl: string | null, socket: VScript.VSocket) => Video | null;
    readonly VideoBlackDetect: (kwl: string | null, socket: VScript.VSocket) => VideoBlackDetect | null;
    readonly Audio: (kwl: string | null, socket: VScript.VSocket) => Audio | null;
};
export declare const lower: {
    readonly LiveView: (ref: LiveView | null) => string | null;
    readonly Video: (ref: Video | null) => string | null;
    readonly VideoBlackDetect: (ref: VideoBlackDetect | null) => string | null;
    readonly Audio: (ref: Audio | null) => string | null;
};
export declare class Audio {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get active(): VScript.duplexKeyword<boolean, boolean, Audio>;
    get silence_detect_duration(): VScript.duplexKeyword<number, number, Audio>;
    get non_silence_detect_duration(): VScript.duplexKeyword<number, number, Audio>;
    get detect_level(): VScript.duplexKeyword<number, number, Audio>;
}
declare class VideoBlackDetect {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      Luminance threshold for black detect
    */
    get threshold_y(): VScript.duplexKeyword<number, number, VideoBlackDetect>;
    /**
      Chrominance threshold for black detect
    */
    get threshold_c(): VScript.duplexKeyword<number, number, VideoBlackDetect>;
    /**
      How many pixels can be above the threshold for black to be detected
    */
    get threshold_pixels(): VScript.duplexKeyword<number, number, VideoBlackDetect>;
    /**
      How long the video must be black before it is signaled as black
    */
    get attack(): VScript.duplexKeyword<number, number, VideoBlackDetect>;
    /**
      How long the video must be none black before it is signaled as not black
    */
    get release(): VScript.duplexKeyword<number, number, VideoBlackDetect>;
}
export declare class Video {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get active(): VScript.duplexKeyword<boolean, boolean, Video>;
    get freeze_detect_duration(): VScript.duplexKeyword<number, number, Video>;
    get black_detect(): VideoBlackDetect;
}
export declare class LiveView {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get source(): VScript.duplexKeyword<string | null, _Video.Essence | null, LiveView>;
    get running(): VScript.rKeyword<boolean, boolean, LiveView>;
    get signature(): VScript.rKeyword<any, _Video.TimestampedSignature | null, this>;
}
export declare class All {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get audio(): Audio;
    get video(): Video;
    get live_view(): LiveView;
}
export {};
