import * as VScript from "vscript";
import * as _Memory from "./Memory";
import * as _DataDelayHandler from "./DataDelayHandler";
import * as _Audio from "./Audio";
import * as _Time from "./Time";
import * as _Definitions from "./Definitions";
import * as _Video from "./Video";
export declare const lift: {
    readonly Video: (kwl: string | null, socket: VScript.VSocket) => Video | 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 AudioControl: (kwl: string | null, socket: VScript.VSocket) => AudioControl | null;
    readonly GroupSelections: (kwl: string | null, socket: VScript.VSocket) => GroupSelections | null;
    readonly DelayPayload: (kwl: string | null, socket: VScript.VSocket) => DelayPayload | null;
    readonly DMA: (kwl: string | null, socket: VScript.VSocket) => DMA | null;
    readonly Http: (kwl: string | null, socket: VScript.VSocket) => Http | null;
    readonly File: (kwl: string | null, socket: VScript.VSocket) => File | null;
    readonly Time: (kwl: string | null, socket: VScript.VSocket) => Time | null;
    readonly Writer: (kwl: string | null, socket: VScript.VSocket) => Writer | null;
    readonly Reader: (kwl: string | null, socket: VScript.VSocket) => Reader | null;
    readonly Buffer: (kwl: string | null, socket: VScript.VSocket) => Buffer | 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 Video: (ref: Video | 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 AudioControl: (ref: AudioControl | null) => string | null;
    readonly GroupSelections: (ref: GroupSelections | null) => string | null;
    readonly DelayPayload: (ref: DelayPayload | null) => string | null;
    readonly DMA: (ref: DMA | null) => string | null;
    readonly Http: (ref: Http | null) => string | null;
    readonly File: (ref: File | null) => string | null;
    readonly Time: (ref: Time | null) => string | null;
    readonly Writer: (ref: Writer | null) => string | null;
    readonly Reader: (ref: Reader | null) => string | null;
    readonly Buffer: (ref: Buffer | null) => string | 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 = "Frames" | "Time";
export declare type InputMode = "Single" | "Quad" | "UHD";
export declare type DmaTrigger = "frame" | "clip_in_files" | "clip_single_file";
export declare type DelayMode = "FrameSync_Freeze" | "FrameSync_Black" | "FramePhaser";
export declare type DmaTriggerSetupStatus = "Stop" | "Restart" | "Process" | "Done";
export declare type DmaTriggerSetup = "Stop" | "Restart";
export declare type Groups = "Group0" | "Group1" | "Group2" | "Group3";
export declare class InputDebug {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get writer_id(): VScript.rKeyword<number, number, InputDebug>;
    get stride_line(): VScript.rKeyword<number, number, InputDebug>;
    get vid_mux_sel(): VScript.rKeyword<number, number, InputDebug>;
    get stride_frame(): VScript.rKeyword<number, number, InputDebug>;
    get start_address(): VScript.rKeyword<number, number, InputDebug>;
    get end_address(): VScript.rKeyword<number, number, InputDebug>;
    get num_lines(): VScript.rKeyword<number, number, InputDebug>;
    get horizontal_blanking(): VScript.rKeyword<number, number, InputDebug>;
    get horizontal_error(): VScript.rKeyword<number, number, InputDebug>;
    get horizontal_active(): VScript.rKeyword<number, number, InputDebug>;
    get mode_hanc(): VScript.rKeyword<number, number, InputDebug>;
    get mode_vanc(): VScript.rKeyword<number, number, InputDebug>;
    get mode_enable(): VScript.rKeyword<number, number, InputDebug>;
    get mode_interlaced(): VScript.rKeyword<number, number, InputDebug>;
    get mode_stop(): VScript.rKeyword<number, number, InputDebug>;
    get mode_en_cnt(): VScript.rKeyword<number, number, InputDebug>;
    get delta_time(): VScript.rKeyword<number, number, InputDebug>;
    get time_from_start(): VScript.rKeyword<number, number, InputDebug>;
    get delta_start_address(): VScript.rKeyword<number, number, InputDebug>;
    get frame_start_address(): VScript.rKeyword<number, number, InputDebug>;
    get in_panic(): VScript.rKeyword<boolean, boolean, 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 reader_w_idx(): VScript.rKeyword<number, number, OutputDebug>;
    get start_first_active_line_field_0(): VScript.rKeyword<number, number, OutputDebug>;
    get end_first_blanking_line_field_0(): VScript.rKeyword<number, number, OutputDebug>;
    get start_first_active_line_field_1(): VScript.rKeyword<number, number, OutputDebug>;
    get end_first_blanking_line_field_1(): VScript.rKeyword<number, number, OutputDebug>;
    get line_number_field_0(): VScript.rKeyword<number, number, OutputDebug>;
    get line_number_field_1(): VScript.rKeyword<number, number, OutputDebug>;
    get line_total(): VScript.rKeyword<number, number, OutputDebug>;
    get start_line_number_generator(): VScript.rKeyword<number, number, OutputDebug>;
    get start_v_flag_generator(): VScript.rKeyword<number, number, OutputDebug>;
    get horizontal_blanking(): VScript.rKeyword<number, number, OutputDebug>;
    get horizontal_active(): VScript.rKeyword<number, number, OutputDebug>;
    get mode_hanc(): VScript.rKeyword<number, number, OutputDebug>;
    get mode_vanc(): VScript.rKeyword<number, number, OutputDebug>;
    get mode_video(): VScript.rKeyword<number, number, OutputDebug>;
    get mode_en_cnt(): VScript.rKeyword<number, number, OutputDebug>;
    get ce_sel(): VScript.rKeyword<number, number, OutputDebug>;
    get ce_sel_enable(): VScript.rKeyword<number, number, OutputDebug>;
    get length_frame(): VScript.rKeyword<number, number, OutputDebug>;
    get length_line(): VScript.rKeyword<number, number, OutputDebug>;
    get stride_line(): VScript.rKeyword<number, number, OutputDebug>;
    get stride_frame(): VScript.rKeyword<number, number, OutputDebug>;
    get start_address(): VScript.rKeyword<number, number, OutputDebug>;
    get end_address(): VScript.rKeyword<number, number, OutputDebug>;
    get jump(): VScript.rKeyword<number, number, OutputDebug>;
    get reset(): VScript.rKeyword<number, number, OutputDebug>;
    get start_generator(): VScript.rKeyword<number, number, OutputDebug>;
    get delta_frame(): VScript.rKeyword<number, number, OutputDebug>;
    get delta_time(): VScript.rKeyword<number, number, OutputDebug>;
    get time_from_start(): VScript.rKeyword<number, number, OutputDebug>;
    get delta_start_address(): VScript.rKeyword<number, number, OutputDebug>;
    get frame_start_address(): VScript.rKeyword<number, number, OutputDebug>;
    get register_panic(): VScript.rKeyword<boolean, boolean, 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 frames(): VScript.duplexKeyword<number, number, BufferInput>;
    get time(): VScript.duplexKeyword<number, number, BufferInput>;
    get mode(): VScript.duplexKeyword<BufferMode, BufferMode, BufferInput>;
    get add_blanking(): VScript.duplexKeyword<boolean, boolean, BufferInput>;
    get calculation_standard_frame(): VScript.rKeyword<_Video.Standard, _Video.Standard, BufferInput>;
    get calculation_standard_time(): VScript.rKeyword<_Video.Standard, _Video.Standard, BufferInput>;
    get standard(): VScript.duplexKeyword<_Video.Standard, _Video.Standard, BufferInput>;
    get max_bandwidth(): VScript.duplexKeyword<_Definitions.Bandwidth, _Definitions.Bandwidth, BufferInput>;
    get delay_mode(): VScript.duplexKeyword<DelayMode, DelayMode, BufferInput>;
    get input_mode(): VScript.duplexKeyword<InputMode, InputMode, BufferInput>;
}
export declare class Buffer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      frame calculation based on 'calculation_standard_frame'
    */
    get frames(): VScript.duplexKeyword<number, number, Buffer>;
    /**
      time calculation based on 'calculation_standard_time'
    */
    get time(): VScript.duplexKeyword<number, number, Buffer>;
    get mode(): VScript.duplexKeyword<BufferMode, BufferMode, Buffer>;
}
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 Writer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get writer_running(): VScript.rKeyword<boolean, boolean, Writer>;
    get debug(): InputDebug;
}
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>);
}
export declare class Time {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get t_src(): VScript.duplexKeyword<string | null, _Time.Source | null, Time>;
    get phaser_range(): VScript.rwKeyword<number, number, Time>;
    get restart_phaser(): VScript.rwKeyword<number, number, Time>;
}
export declare class File {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      trigger DMA writer
    */
    get trigger_dma_writer(): VScript.wKeyword<"Click", "Click", File>;
    /**
      trigger DMA reader
    */
    get trigger_dma_reader(): VScript.wKeyword<"Click", "Click", File>;
    get setup_dma_reader(): VScript.rwKeyword<DmaTrigger, DmaTrigger, File>;
}
export declare class Http {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      before initiate the dma download process, stop the writer/reader. If the
      job ist done, restart the writer/reader
    */
    get setup_handler(): VScript.rwKeyword<DmaTriggerSetup, DmaTriggerSetup, Http>;
    get handler_status(): VScript.rKeyword<DmaTriggerSetupStatus, DmaTriggerSetupStatus, Http>;
}
export declare class DMA {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get file(): File;
    get http(): Http;
}
export declare class DelayPayload {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get video(): _Video.Essence;
    get audio(): _Audio.Essence;
}
export declare class GroupSelections {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get group(): VScript.duplexKeyword<Groups, Groups, GroupSelections>;
}
export declare class GroupSelectionsAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends GroupSelections {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export declare class AudioControl {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get group_selections(): VScript.StronglyTypedArray<AudioControl, GroupSelections, VScript.RowView<GroupSelections>>;
}
declare class DelayInputs {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get writer_running(): VScript.rKeyword<boolean, boolean, DelayInputs>;
    get latest_running_standard(): VScript.rKeyword<_Video.Standard, _Video.Standard, DelayInputs>;
    get source(): VScript.duplexKeyword<string | null, _Video.Essence | null, DelayInputs>;
    get writer(): VScript.StronglyTypedTable<Writer, VScript.TableRowView<Writer>>;
}
declare class DelayOutputs {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get output_mode(): VScript.duplexKeyword<InputMode, InputMode, DelayOutputs>;
    get running(): VScript.rKeyword<boolean, boolean, DelayOutputs>;
    get time(): Time;
    get delay(): Buffer;
    get audio_control(): AudioControl;
    get reader(): VScript.StronglyTypedTable<Reader, VScript.TableRowView<Reader>>;
    get output(): DelayPayload;
}
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 dma(): DMA;
    get inputs(): VScript.StronglyTypedTable<DelayInputs, VScript.TableRowView<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 Video {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      Create
    */
    get create_delay(): VScript.wKeyword<"Click", "Click", Video>;
    get buffer(): _DataDelayHandler.BufferStatus;
    get pool(): VScript.StronglyTypedTable<Delay, VScript.TableRowView<Delay>>;
    get statistic(): _DataDelayHandler.Statistic;
    get ecc(): _Memory.ECCMuxStatistics;
    get audio_source_slices(): VScript.StronglyTypedArray<Video, _Audio.SignalSourceSlice, VScript.RowView<_Audio.SignalSourceSlice>>;
}
export declare const Enums: {
    readonly Groups: Groups[];
    readonly DmaTriggerSetup: DmaTriggerSetup[];
    readonly DmaTriggerSetupStatus: DmaTriggerSetupStatus[];
    readonly DelayMode: DelayMode[];
    readonly DmaTrigger: DmaTrigger[];
    readonly InputMode: InputMode[];
    readonly BufferMode: BufferMode[];
};
export {};
