import * as VScript from "vscript";
import * as _Time from "./Time";
import * as _Primitives from "./Primitives";
import * as _Video from "./Video";
export declare const lift: {
    readonly BSLK: (kwl: string | null, socket: VScript.VSocket) => BSLK | null;
    readonly BSLKMixer: (kwl: string | null, socket: VScript.VSocket) => BSLKMixer | null;
    readonly BSLKLumaKeyer: (kwl: string | null, socket: VScript.VSocket) => BSLKLumaKeyer | null;
    readonly AutoFader: (kwl: string | null, socket: VScript.VSocket) => AutoFader | null;
    readonly AutoFaderTransition: (x: any | null, _: VScript.VSocket) => AutoFaderTransition | null;
};
export declare const lower: {
    readonly BSLK: (ref: BSLK | null) => string | null;
    readonly BSLKMixer: (ref: BSLKMixer | null) => string | null;
    readonly BSLKLumaKeyer: (ref: BSLKLumaKeyer | null) => string | null;
    readonly AutoFader: (ref: AutoFader | null) => string | null;
    readonly AutoFaderTransition: (x: AutoFaderTransition | null) => number[] | null;
};
export declare type BSLKMode = "MIXER" | "MIXER_INDEPENDENT" | "LUMA_KEYER" | "LUMA_KEYER_ADDITIVE";
interface AutoFaderTransition {
    target: number;
    /**
      Time for a full transition from 0.0 to 1.0 - set to 0s for jump to target
    */
    time: number;
}
export declare class AutoFader {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get current(): VScript.rKeyword<number, number, AutoFader>;
    get transition(): VScript.rwKeyword<any, AutoFaderTransition | null, this>;
}
declare class BSLKLumaKeyer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get source(): VScript.duplexKeyword<string | null, _Video.Essence | null, BSLKLumaKeyer>;
    /**
      Luminance level at and below which everything is transparent
    */
    get clip(): VScript.rwKeyword<number, number, BSLKLumaKeyer>;
    /**
      Luminance range above clip to reach full opacity
    */
    get gain(): VScript.rwKeyword<number, number, BSLKLumaKeyer>;
    /**
      Invert the transparent / opaque ends of the output range
    */
    get invert(): VScript.rwKeyword<boolean, boolean, BSLKLumaKeyer>;
    get opacity(): AutoFader;
}
declare class BSLKMixer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      Color mixed in when the sum of fader0 and fader1 is below 1.0 in
      MIXER_INDEPENDENT mode
    */
    get fade_via(): VScript.rwKeyword<any, _Video.HSLCOLOUR | null, this>;
    /**
      Which input is the ANC data and V sync source
    */
    get anc_input(): VScript.rKeyword<number, number, BSLKMixer>;
    /**
      Fader value for crossfade in MIXER mode, or for source0 in
      MIXER_INDEPENDENT mode
    */
    get fader0(): AutoFader;
    /**
      Fader value for for source1 in MIXER_INDEPENDENT mode, unused otherwise
    */
    get fader1(): AutoFader;
}
export declare class BSLK {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get alert_level(): VScript.rKeyword<_Primitives.AlertLevel, _Primitives.AlertLevel, BSLK>;
    get source0(): VScript.duplexKeyword<string | null, _Video.Essence | null, BSLK>;
    get source1(): VScript.duplexKeyword<string | null, _Video.Essence | null, BSLK>;
    get t_src(): VScript.duplexKeyword<string | null, _Time.Source | null, BSLK>;
    get phase_target(): VScript.duplexKeyword<number, number, BSLK>;
    get in_phase(): VScript.rKeyword<[number, number, number], [number, number, number], BSLK>;
    get phase_rst_counter(): VScript.rKeyword<number, number, BSLK>;
    get reserve_uhd_resources(): VScript.duplexKeyword<boolean, boolean, BSLK>;
    get hw_resources(): VScript.rKeyword<number, number, BSLK>;
    get mode(): VScript.rwKeyword<BSLKMode, BSLKMode, BSLK>;
    get output(): _Video.Essence;
    get luma_keyer(): BSLKLumaKeyer;
    get mixer(): BSLKMixer;
}
export declare class BSLKAsNamedTableRow extends BSLK {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<BSLK>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<BSLK>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class All {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get bslk(): VScript.StronglyTypedNamedTable<BSLK, VScript.NamedTableRowView<BSLK>>;
}
export declare const Enums: {
    readonly BSLKMode: BSLKMode[];
};
export {};
