import * as VScript from "vscript";
import * as _Memory from "./Memory";
import * as _DataDelayHandler from "./DataDelayHandler";
import * as _Video from "./Video";
import * as _Audio from "./Audio";
export declare const lift: {
    readonly Audio: (kwl: string | null, socket: VScript.VSocket) => Audio | null;
    readonly Delay: (kwl: string | null, socket: VScript.VSocket) => Delay | null;
    readonly DelayOutputs: (kwl: string | null, socket: VScript.VSocket) => DelayOutputs | null;
    readonly DelayInputs: (kwl: string | null, socket: VScript.VSocket) => DelayInputs | null;
    readonly Writer: (kwl: string | null, socket: VScript.VSocket) => Writer | null;
    readonly AFVRef: (kwl: string | null, socket: VScript.VSocket) => AFVRef | null;
    readonly DolbyERef: (kwl: string | null, socket: VScript.VSocket) => DolbyERef | null;
    readonly DolbyLine: (x: any | null, _: VScript.VSocket) => DolbyLine | null;
    readonly DolbyE: (kwl: string | null, socket: VScript.VSocket) => DolbyE | null;
    readonly DolbyEWriter: (kwl: string | null, socket: VScript.VSocket) => DolbyEWriter | null;
    readonly DolbyEDebug: (kwl: string | null, socket: VScript.VSocket) => DolbyEDebug | null;
    readonly Reader: (kwl: string | null, socket: VScript.VSocket) => Reader | null;
    readonly Buffer: (kwl: string | null, socket: VScript.VSocket) => Buffer | null;
    readonly Collaboration: (x: any | null, _: VScript.VSocket) => Collaboration | null;
    readonly BufferInput: (kwl: string | null, socket: VScript.VSocket) => BufferInput | null;
    readonly OutputDebug: (kwl: string | null, socket: VScript.VSocket) => OutputDebug | null;
    readonly InputDebug: (kwl: string | null, socket: VScript.VSocket) => InputDebug | null;
};
export declare const lower: {
    readonly Audio: (ref: Audio | null) => string | null;
    readonly Delay: (ref: Delay | null) => string | null;
    readonly DelayOutputs: (ref: DelayOutputs | null) => string | null;
    readonly DelayInputs: (ref: DelayInputs | null) => string | null;
    readonly Writer: (ref: Writer | null) => string | null;
    readonly AFVRef: (ref: AFVRef | null) => string | null;
    readonly DolbyERef: (ref: DolbyERef | null) => string | null;
    readonly DolbyLine: (x: DolbyLine | null) => number[] | null;
    readonly DolbyE: (ref: DolbyE | null) => string | null;
    readonly DolbyEWriter: (ref: DolbyEWriter | null) => string | null;
    readonly DolbyEDebug: (ref: DolbyEDebug | null) => string | null;
    readonly Reader: (ref: Reader | null) => string | null;
    readonly Buffer: (ref: Buffer | null) => string | null;
    readonly Collaboration: (x: Collaboration | null) => number[] | null;
    readonly BufferInput: (ref: BufferInput | null) => string | null;
    readonly OutputDebug: (ref: OutputDebug | null) => string | null;
    readonly InputDebug: (ref: InputDebug | null) => string | null;
};
export declare type BufferMode = "Samples" | "Time";
export declare type TransitionMode = "Jump" | "V_Fade";
export declare class InputDebug {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get writer_id(): VScript.rKeyword<number, number, InputDebug>;
    get writer_v_idx(): VScript.rKeyword<number, number, InputDebug>;
    get start_address(): VScript.rKeyword<number, number, InputDebug>;
    get end_address(): VScript.rKeyword<number, number, InputDebug>;
    get enable(): VScript.rKeyword<number, number, InputDebug>;
}
export declare class OutputDebug {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get reader_id(): VScript.rKeyword<number, number, OutputDebug>;
    get reader_v_idx(): VScript.rKeyword<number, number, OutputDebug>;
    get loop_start_address(): VScript.rKeyword<number, number, OutputDebug>;
    get loop_end_address(): VScript.rKeyword<number, number, OutputDebug>;
    get enable(): VScript.rKeyword<number, number, OutputDebug>;
    get start_address(): VScript.rKeyword<number, number, OutputDebug>;
    get start_timestamp(): VScript.rKeyword<number, number, OutputDebug>;
}
export declare class BufferInput {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get pages(): VScript.rKeyword<number, number, BufferInput>;
    get use(): VScript.rKeyword<number, number, BufferInput>;
    get samples(): VScript.duplexKeyword<number, number, BufferInput>;
    get time(): VScript.duplexKeyword<number, number, BufferInput>;
    get mode(): VScript.duplexKeyword<BufferMode, BufferMode, BufferInput>;
    get frequency(): VScript.duplexKeyword<_Audio.Frequency, _Audio.Frequency, BufferInput>;
    /**
      memory allocation based on a multiple of 16 channels
    */
    get num_channels(): VScript.duplexKeyword<number, number, BufferInput>;
}
export interface Collaboration {
    used_manual_time: number;
    used_audio_follow_video_time: number;
    used_auto_dolby_e_aligner: number;
    samples: number;
    time: number;
}
export declare class Buffer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get samples(): VScript.duplexKeyword<number, number, Buffer>;
    get time(): VScript.duplexKeyword<number, number, Buffer>;
    get mode(): VScript.duplexKeyword<BufferMode, BufferMode, Buffer>;
    get man_offset(): VScript.duplexKeyword<boolean, boolean, Buffer>;
    get audio_follow_video(): VScript.duplexKeyword<boolean, boolean, Buffer>;
    get auto_dolby_e_aligner(): VScript.duplexKeyword<boolean, boolean, Buffer>;
    get measurement_reference(): VScript.duplexKeyword<string | null, _Video.Essence | null, Buffer>;
    get collaboration(): VScript.rKeyword<any, Collaboration | null, this>;
}
export declare class Reader {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get reader_running(): VScript.rKeyword<boolean, boolean, Reader>;
    get debug(): OutputDebug;
}
export declare class ReaderAsTableRow extends Reader {
    readonly enclosing_table: VScript.StronglyTypedTable<Reader>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<Reader>);
}
export declare class DolbyEDebug {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get zero_samples_before_header(): VScript.rKeyword<number, number, DolbyEDebug>;
    get free_running_counter_header_detected(): VScript.rKeyword<number, number, DolbyEDebug>;
}
export declare class DolbyEDebugAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends DolbyEDebug {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export declare class DolbyEWriter {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get free_running_counter_irq(): VScript.rKeyword<number, number, DolbyEWriter>;
    get bits_irq(): VScript.rKeyword<number, number, DolbyEWriter>;
    get debug(): VScript.StronglyTypedArray<DolbyEWriter, DolbyEDebug, VScript.RowView<DolbyEDebug>>;
}
export declare class DolbyE {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get run_dolby_e_detector(): VScript.rwKeyword<boolean, boolean, DolbyE>;
    get measure_sample(): VScript.rwKeyword<number, number, DolbyE>;
}
export interface DolbyLine {
    earliest: number;
    earliest_ideal: number;
    ideal: number;
    latest_ideal: number;
    latest: number;
    calculated: number;
}
export declare class DolbyERef {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get channel_pair(): VScript.rwKeyword<number, number, DolbyERef>;
    get samples(): VScript.rKeyword<number, number, DolbyERef>;
    get time(): VScript.rKeyword<number, number, DolbyERef>;
    get dolby_e_line(): VScript.rKeyword<any, DolbyLine | null, this>;
}
export declare class AFVRef {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get transition_mode(): VScript.rwKeyword<TransitionMode, TransitionMode, AFVRef>;
    get audio_late(): VScript.rwKeyword<number, number, AFVRef>;
    get audio_early(): VScript.rwKeyword<number, number, AFVRef>;
}
export declare class Writer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get writer_running(): VScript.rKeyword<boolean, boolean, Writer>;
    get debug(): InputDebug;
    get dolby_e_debug(): DolbyEWriter;
}
export declare class WriterAsTableRow extends Writer {
    readonly enclosing_table: VScript.StronglyTypedTable<Writer>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<Writer>);
}
declare class DelayInputs {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get running(): VScript.rKeyword<boolean, boolean, DelayInputs>;
    get source(): VScript.duplexKeyword<string | null, _Audio.Essence | null, DelayInputs>;
    get writer(): VScript.StronglyTypedTable<Writer, VScript.TableRowView<Writer>>;
}
declare class DelayOutputs {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get running(): VScript.rKeyword<boolean, boolean, DelayOutputs>;
    get delay(): Buffer;
    get afv(): AFVRef;
    get dolby_e(): DolbyERef;
    get reader(): VScript.StronglyTypedTable<Reader, VScript.TableRowView<Reader>>;
    get output(): _Audio.Essence;
}
export declare class Delay {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get id(): VScript.duplexKeyword<string, string, Delay>;
    /**
      Delete
    */
    get delete_delay(): VScript.wKeyword<"Click", "Click", Delay>;
    get num_outputs(): VScript.rwKeyword<number, number, Delay>;
    /**
      Restart writer and reader
    */
    get restart(): VScript.wKeyword<"Click", "Click", Delay>;
    get allocate(): BufferInput;
    get dolby_e(): DolbyE;
    get inputs(): DelayInputs;
    get outputs(): VScript.StronglyTypedTable<DelayOutputs, VScript.TableRowView<DelayOutputs>>;
}
export declare class DelayAsTableRow extends Delay {
    readonly enclosing_table: VScript.StronglyTypedTable<Delay>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<Delay>);
}
export declare class Audio {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      Create
    */
    get create_delay(): VScript.wKeyword<"Click", "Click", Audio>;
    get buffer(): _DataDelayHandler.BufferStatus;
    get pool(): VScript.StronglyTypedTable<Delay, VScript.TableRowView<Delay>>;
    get statistics(): _DataDelayHandler.Statistic;
    get ecc(): _Memory.ECCMuxStatistics;
    get audio_source_slices(): VScript.StronglyTypedArray<Audio, _Audio.SignalSourceSlice, VScript.RowView<_Audio.SignalSourceSlice>>;
}
export declare const Enums: {
    readonly TransitionMode: TransitionMode[];
    readonly BufferMode: BufferMode[];
};
export {};
