import * as VScript from "vscript";
import * as _Video from "./Video";
import * as _ClusterSources from "./ClusterSources";
import * as _NetworkInterfaces from "./NetworkInterfaces";
export declare const lift: {
    readonly ManifoldCore: (kwl: string | null, socket: VScript.VSocket) => ManifoldCore | null;
    readonly ManifoldCoreOutput: (kwl: string | null, socket: VScript.VSocket) => ManifoldCoreOutput | null;
    readonly HSLCOLOUR: (x: any | null, _: VScript.VSocket) => HSLCOLOUR | null;
    readonly DistributedMultiviewer: (kwl: string | null, socket: VScript.VSocket) => DistributedMultiviewer | null;
    readonly DMVInternal: (kwl: string | null, socket: VScript.VSocket) => DMVInternal | null;
    readonly DMVMipMaps: (kwl: string | null, socket: VScript.VSocket) => DMVMipMaps | null;
    readonly DMVMipMapsOutput: (kwl: string | null, socket: VScript.VSocket) => DMVMipMapsOutput | null;
    readonly PortInfo: (x: any | null, _: VScript.VSocket) => PortInfo | null;
    readonly DMVMipMapsInput: (kwl: string | null, socket: VScript.VSocket) => DMVMipMapsInput | null;
};
export declare const lower: {
    readonly ManifoldCore: (ref: ManifoldCore | null) => string | null;
    readonly ManifoldCoreOutput: (ref: ManifoldCoreOutput | null) => string | null;
    readonly HSLCOLOUR: (x: HSLCOLOUR | null) => number[] | null;
    readonly DistributedMultiviewer: (ref: DistributedMultiviewer | null) => string | null;
    readonly DMVInternal: (ref: DMVInternal | null) => string | null;
    readonly DMVMipMaps: (ref: DMVMipMaps | null) => string | null;
    readonly DMVMipMapsOutput: (ref: DMVMipMapsOutput | null) => string | null;
    readonly PortInfo: (x: PortInfo | null) => number[] | null;
    readonly DMVMipMapsInput: (ref: DMVMipMapsInput | null) => string | null;
};
export declare class DMVMipMapsInput {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get enable(): VScript.rKeyword<boolean, boolean, DMVMipMapsInput>;
    /**
      IP address of the mipmap RTP stream
    */
    get src_ip_address(): VScript.rKeyword<string, string, DMVMipMapsInput>;
    /**
      IP address of the mipmap RTP stream
    */
    get dest_ip_address(): VScript.rKeyword<string, string, DMVMipMapsInput>;
    get interface(): VScript.rKeyword<string | null, _NetworkInterfaces.VirtualInterface | null, DMVMipMapsInput>;
    /**
      IP address of the secondary mipmap RTP stream
    */
    get secondary_src_ip_address(): VScript.rKeyword<string, string, DMVMipMapsInput>;
    /**
      IP address of the secondary mipmap RTP stream
    */
    get secondary_dest_ip_address(): VScript.rKeyword<string, string, DMVMipMapsInput>;
    get secondary_interface(): VScript.rKeyword<string | null, _NetworkInterfaces.VirtualInterface | null, DMVMipMapsInput>;
    get metadata(): VScript.rKeyword<number, number, DMVMipMapsInput>;
    get global_source_id(): VScript.rKeyword<number, number, DMVMipMapsInput>;
    get global_source_rl_id(): VScript.rKeyword<number, number, DMVMipMapsInput>;
}
export declare class DMVMipMapsInputAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends DMVMipMapsInput {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export interface PortInfo {
    port_line_id: number;
    port_line_stream_id: number;
}
export declare class DMVMipMapsOutput {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get bytes_per_second(): VScript.rKeyword<number, number, DMVMipMapsOutput>;
    /**
      IP address of the mipmap RTP stream for port 0
    */
    get port_0_ip_address(): VScript.rKeyword<string, string, DMVMipMapsOutput>;
    /**
      IP address of the mipmap RTP stream for port 1
    */
    get port_1_ip_address(): VScript.rKeyword<string, string, DMVMipMapsOutput>;
    get port_info(): VScript.rKeyword<any, PortInfo | null, this>;
}
export declare class DMVMipMapsOutputAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends DMVMipMapsOutput {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export declare class DMVMipMaps {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get mipmaps_ins_ports(): VScript.rKeyword<_ClusterSources.Ports, _ClusterSources.Ports, DMVMipMaps>;
    get inputs(): VScript.StronglyTypedArray<DMVMipMaps, DMVMipMapsInput, VScript.RowView<DMVMipMapsInput>>;
    get outputs(): VScript.StronglyTypedArray<DMVMipMaps, DMVMipMapsOutput, VScript.RowView<DMVMipMapsOutput>>;
}
export declare class DMVInternal {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get mipmaps(): DMVMipMaps;
}
export declare class DistributedMultiviewer {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get enable(): VScript.rwKeyword<boolean, boolean, DistributedMultiviewer>;
    get internal(): DMVInternal;
}
export declare type MultiviewerHeadVideoStandard = "HD1080p23_98" | "HD1080p24" | "HD1080p25" | "HD1080p29_97" | "HD1080p30" | "HD1080p50" | "HD1080p59_94" | "HD1080p60" | "HD2160p50" | "HD2160p59_94" | "HD2160p60";
/**
  TODO: discuss if we really need the more exotic values. Also, if r1035 is
  needed, our implementation of subtype relationships needs to be changed
  (slightly)
*/
export declare type VideoRaster = "NTSC" | "PAL" | "r720" | "r1920x1080" | "r2048x1080" | "r3840x2160" | "r4096x2160";
/**
  TODO: no idea what {Dual,Quad}Link_3G_* should really map to
*/
export declare type VideoInterface = "SD" | "HD" | "DualLink_HD" | "SingleLink_3G_A" | "SingleLink_3G_B_DL" | "SingleLink_3G_B_DS" | "DualLink_3G_B" | "DualLink_3G_C" | "QuadLink_3G_A" | "QuadLink_3G_B" | "SingleLink_12G";
export interface HSLCOLOUR {
    hue: number;
    saturation: number;
    lightness: number;
}
export declare type DOUBLEBUFFERMODE = "ON" | "OFF" | "AUTO";
export declare type OUTPUTORIENTATION = "HORIZONTAL" | "HORIZONTAL_REVERSE" | "VERTICAL" | "VERTICAL_REVERSE";
export declare class ManifoldCoreOutput {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get enable(): VScript.rKeyword<boolean, boolean, ManifoldCoreOutput>;
    get standard(): VScript.rKeyword<MultiviewerHeadVideoStandard, MultiviewerHeadVideoStandard, ManifoldCoreOutput>;
    get double_buffer_mode(): VScript.rKeyword<DOUBLEBUFFERMODE, DOUBLEBUFFERMODE, ManifoldCoreOutput>;
    get current_double_buffer_mode(): VScript.rKeyword<DOUBLEBUFFERMODE, DOUBLEBUFFERMODE, ManifoldCoreOutput>;
    get orientation(): VScript.rKeyword<OUTPUTORIENTATION, OUTPUTORIENTATION, ManifoldCoreOutput>;
    get streaming_enable(): VScript.rKeyword<boolean, boolean, ManifoldCoreOutput>;
    get streaming_transport_format(): VScript.rKeyword<_Video.TransportFormat, _Video.TransportFormat, ManifoldCoreOutput>;
    /**
      Destination IP address of the Head stream
    */
    get streaming_dest_ip_address(): VScript.rKeyword<string, string, ManifoldCoreOutput>;
    /**
      Secondary Destination IP address of the Head stream
    */
    get streaming_secondary_dest_ip_address(): VScript.rKeyword<string, string, ManifoldCoreOutput>;
    get bgnd_colour(): VScript.rKeyword<any, HSLCOLOUR | null, this>;
}
export declare class ManifoldCoreOutputAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends ManifoldCoreOutput {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export declare class ManifoldCore {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get tile_width(): VScript.rwKeyword<number, number, ManifoldCore>;
    get tile_height(): VScript.rwKeyword<number, number, ManifoldCore>;
    get rasterizers_num(): VScript.rwKeyword<number, number, ManifoldCore>;
    get read_grant_size(): VScript.rwKeyword<number, number, ManifoldCore>;
    get write_grant_size(): VScript.rwKeyword<number, number, ManifoldCore>;
    get outputs(): VScript.StronglyTypedArray<ManifoldCore, ManifoldCoreOutput, VScript.RowView<ManifoldCoreOutput>>;
}
export declare class ManifoldCoreAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends ManifoldCore {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export declare class All {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get distributed(): DistributedMultiviewer;
    get cores(): VScript.StronglyTypedArray<All, ManifoldCore, VScript.RowView<ManifoldCore>>;
    get outputs(): VScript.StronglyTypedArray<All, _Video.Essence, VScript.RowView<_Video.Essence>>;
}
export declare const Enums: {
    readonly OUTPUTORIENTATION: OUTPUTORIENTATION[];
    readonly DOUBLEBUFFERMODE: DOUBLEBUFFERMODE[];
    readonly VideoInterface: VideoInterface[];
    readonly VideoRaster: VideoRaster[];
    readonly MultiviewerHeadVideoStandard: MultiviewerHeadVideoStandard[];
};
