import * as VScript from "vscript";
import * as _Time from "./Time";
import * as _Primitives from "./Primitives";
export declare const lift: {
    readonly HSLCOLOURWITHOPACITY: (x: any | null, _: VScript.VSocket) => HSLCOLOURWITHOPACITY | null;
    readonly HSLCOLOUR: (x: any | null, _: VScript.VSocket) => HSLCOLOUR | null;
    readonly Essence: (kwl: string | null, socket: VScript.VSocket) => Essence | null;
    readonly AFD: (x: any | null, _: VScript.VSocket) => AFD | null;
    readonly ClosedCaption: (kwl: string | null, socket: VScript.VSocket) => ClosedCaption | null;
    readonly ClosedCaptionChannelsPresent: (x: any | null, _: VScript.VSocket) => ClosedCaptionChannelsPresent | null;
    readonly TimestampedSignature: (x: any | null, _: VScript.VSocket) => TimestampedSignature | null;
    readonly Signal: (kwl: string | null, socket: VScript.VSocket) => Signal | null;
    readonly SignalSubstream: (x: any | null, _: VScript.VSocket) => SignalSubstream | null;
};
export declare const lower: {
    readonly HSLCOLOURWITHOPACITY: (x: HSLCOLOURWITHOPACITY | null) => number[] | null;
    readonly HSLCOLOUR: (x: HSLCOLOUR | null) => number[] | null;
    readonly Essence: (ref: Essence | null) => string | null;
    readonly AFD: (x: AFD | null) => (number | "AR_4_3" | "AR_16_9")[] | null;
    readonly ClosedCaption: (ref: ClosedCaption | null) => string | null;
    readonly ClosedCaptionChannelsPresent: (x: ClosedCaptionChannelsPresent | null) => boolean[] | null;
    readonly TimestampedSignature: (x: TimestampedSignature | null) => (number | [number, number])[] | null;
    readonly Signal: (ref: Signal | null) => string | null;
    readonly SignalSubstream: (x: SignalSubstream | null) => (boolean | "QUAD_SDQS_1" | "QUAD_SDQS_2" | "QUAD_SDQS_3" | "QUAD_SDQS_4" | "QUAD_2SI_1" | "QUAD_2SI_2" | "QUAD_2SI_3" | "QUAD_2SI_4")[] | null;
};
export declare type Standard = "PAL" | "NTSC" | "HD720p25" | "HD720p29_97" | "HD720p30" | "HD720p50" | "HD720p59_94" | "HD720p60" | "HD1080p23_98" | "HD1080sF23_98" | "HD1080p24" | "HD1080sF24" | "HD1080p25" | "HD1080sF25" | "HD1080p29_97" | "HD1080sF29_97" | "HD1080p30" | "HD1080sF30" | "HD1080i50" | "HD1080i59_94" | "HD1080i60" | "HD1080p50" | "HD1080p59_94" | "HD1080p60" | "HD2160p50" | "HD2160p59_94" | "HD2160p60" | "HD1080p24_DCI" | "HD1080sF25_DCI";
export declare type PixelClockFrequency = "F13_5MHz" | "F74_175MHz" | "F74_25MHz" | "F148_35MHz" | "F148_5MHz" | "F296_7MHz" | "F297MHz";
export declare type Speed = "SD" | "HD" | "s3G_A" | "s3G_B" | "s12G";
export declare type Raster = "NTSC" | "PAL" | "r720" | "r1080" | "r2048" | "r2160";
export declare type FrameRate = "f23_98" | "f24" | "f25" | "f29_97" | "f30" | "f50" | "f59_94" | "f60";
export declare type Refresh = "fp23_98" | "fsF23_98" | "fp24" | "fsF24" | "fp25" | "fsF25" | "fp29_97" | "fsF29_97" | "fp30" | "fsF30" | "fp50" | "fi50" | "fp59_94" | "fi59_94" | "fp60" | "fi60";
export declare type Sampling = "b8_422_YUV" | "b10_422_YUV" | "b12_422_YUV" | "b10_444_YUV" | "b10_444_GBR" | "b12_444_YUV" | "b12_444_GBR" | "b12_444_XYZ" | "b10_4444_YUVA" | "b10_4444_GBRA" | "b8_4444_YUVA";
export declare type TransportStructure = "Interlaced" | "Segmented" | "Progressive";
export declare type Field = "First" | "Second";
export declare type SubStream = "QUAD_SDQS_1" | "QUAD_SDQS_2" | "QUAD_SDQS_3" | "QUAD_SDQS_4" | "QUAD_2SI_1" | "QUAD_2SI_2" | "QUAD_2SI_3" | "QUAD_2SI_4";
export declare type SubStream2SI = "QUAD_2SI_1" | "QUAD_2SI_2" | "QUAD_2SI_3" | "QUAD_2SI_4";
export declare type ColorSpace = "BT601" | "BT709" | "BT2020" | "BT2100" | "BT709_FULL" | "BT2020_FULL" | "BT2100_FULL";
interface SignalSubstream {
    stream: SubStream;
    splitter: boolean;
}
export declare class Signal {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get alert_level(): VScript.rKeyword<_Primitives.AlertLevel, _Primitives.AlertLevel, Signal>;
    get standard(): VScript.rKeyword<Standard, Standard, Signal>;
    get colorspace(): VScript.rKeyword<ColorSpace, ColorSpace, Signal>;
    get substream(): VScript.rKeyword<any, SignalSubstream | null, this>;
    get frozen(): VScript.rKeyword<boolean, boolean, Signal>;
    get black(): VScript.rKeyword<boolean, boolean, Signal>;
    get dt_node(): VScript.rKeyword<any, any, Signal>;
}
export declare class SignalAsTableRow extends Signal {
    readonly enclosing_table: VScript.StronglyTypedTable<Signal>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<Signal>);
}
export interface TimestampedSignature {
    free_running_counter: number;
    signature: [number, number];
}
export declare type ClosedCaptionMode = "CEA608" | "CEA708" | "OP47";
export declare type ClosedCaptionChannel = "CC0" | "CC1" | "CC2" | "CC3";
interface ClosedCaptionChannelsPresent {
    c_c0: boolean;
    c_c1: boolean;
    c_c2: boolean;
    c_c3: boolean;
}
export declare class ClosedCaption {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get mode(): VScript.rKeyword<ClosedCaptionMode, ClosedCaptionMode, ClosedCaption>;
    get channels_present(): VScript.rKeyword<any, ClosedCaptionChannelsPresent | null, this>;
    get screen(): VScript.rKeyword<string, string, ClosedCaption>;
}
/**
  used internally by the SDP parser
*/
export declare type GeneralizedTransportFormat = "ST2022_6" | "ST2110_GPM" | "ST2110_BPM" | "ST2042_raw" | "RFC4175";
export declare type TransportFormat = "ST2022_6" | "ST2110_GPM" | "ST2110_BPM" | "ST2042_raw";
export declare type DiracCompression = "C_2_5" | "C_3_33" | "C_4" | "C_4_44" | "C_6_66" | "C_8";
export declare type BNCInputFreq = "ceDisable" | "ceMADI" | "ceSD" | "ceHD" | "ce3G" | "ce12G";
export declare type AspectRatio = "AR_4_3" | "AR_16_9";
export interface AFD {
    ar: AspectRatio;
    code: number;
    top: number;
    bottom: number;
    left: number;
    right: number;
}
export declare class Essence {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get brief(): VScript.rKeyword<string, string, Essence>;
    get desc(): VScript.rKeyword<string, string, Essence>;
    get afd(): VScript.rKeyword<any, AFD | null, this>;
    get cc(): VScript.rKeyword<string | null, ClosedCaption | null, Essence>;
    get signals(): VScript.StronglyTypedTable<Signal, VScript.TableRowView<Signal>>;
    /**
      some signal sources, such as RTP audio/video streams, include a
      well-defined offset to the PTP epoch (as seen by the sender). During
      processing, these 'media clocks' may shift (e.g., as signals pass through
      delay elements) or broaden into finite intervals (e.g., as audio channels
      at different offsets to the PTP epoch are combined into a single audio
      essence). Using the `media_clock` keyword, such changes are tracked
      explicitly and forwarded to audio/video transmitters.
    */
    get media_clock(): _Time.Source;
}
export declare class EssenceAsArrayRow<ParentType extends VScript.StronglyTypedSubtree> extends Essence {
    readonly index: number;
    readonly parent: ParentType;
    constructor(st: VScript.Subtree, index: number, parent: ParentType);
}
export interface HSLCOLOUR {
    hue: number;
    saturation: number;
    lightness: number;
}
export interface HSLCOLOURWITHOPACITY {
    hue: number;
    saturation: number;
    lightness: number;
    opacity: number;
}
export declare const Enums: {
    readonly AspectRatio: AspectRatio[];
    readonly BNCInputFreq: BNCInputFreq[];
    readonly DiracCompression: DiracCompression[];
    readonly TransportFormat: TransportFormat[];
    readonly GeneralizedTransportFormat: GeneralizedTransportFormat[];
    readonly ClosedCaptionChannel: ClosedCaptionChannel[];
    readonly ClosedCaptionMode: ClosedCaptionMode[];
    readonly ColorSpace: ColorSpace[];
    readonly SubStream2SI: SubStream2SI[];
    readonly SubStream: SubStream[];
    readonly Field: Field[];
    readonly TransportStructure: TransportStructure[];
    readonly Sampling: Sampling[];
    readonly Refresh: Refresh[];
    readonly FrameRate: FrameRate[];
    readonly Raster: Raster[];
    readonly Speed: Speed[];
    readonly PixelClockFrequency: PixelClockFrequency[];
    readonly Standard: Standard[];
};
export {};
