import * as VScript from "vscript";
import * as _Video from "./Video";
import * as _Time from "./Time";
export declare const lift: {
    readonly Response: (kwl: string | null, socket: VScript.VSocket) => Response | null;
    readonly Request: (kwl: string | null, socket: VScript.VSocket) => Request | null;
    readonly Debug: (kwl: string | null, socket: VScript.VSocket) => Debug | null;
    readonly MetadataInserter: (kwl: string | null, socket: VScript.VSocket) => MetadataInserter | null;
    readonly MetadataExtractor: (kwl: string | null, socket: VScript.VSocket) => MetadataExtractor | null;
    readonly SdiDetails: (x: any | null, _: VScript.VSocket) => SdiDetails | null;
};
export declare const lower: {
    readonly Response: (ref: Response | null) => string | null;
    readonly Request: (ref: Request | null) => string | null;
    readonly Debug: (ref: Debug | null) => string | null;
    readonly MetadataInserter: (ref: MetadataInserter | null) => string | null;
    readonly MetadataExtractor: (ref: MetadataExtractor | null) => string | null;
    readonly SdiDetails: (x: SdiDetails | null) => number[] | null;
};
export interface SdiDetails {
    did: number;
    sdid: number;
}
export declare class MetadataExtractor {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get brief(): VScript.rKeyword<string, string, MetadataExtractor>;
    get extractor_type(): VScript.rKeyword<"SDI" | "RTP_2110_40", "SDI" | "RTP_2110_40", MetadataExtractor>;
    get bnc_node(): VScript.rKeyword<any, any, MetadataExtractor>;
    get media_clock(): VScript.rKeyword<string | null, _Time.Source | null, MetadataExtractor>;
    get rtp_requested(): VScript.rKeyword<boolean, boolean, MetadataExtractor>;
    get rtp_index(): VScript.rKeyword<number, number, MetadataExtractor>;
    get restrict_extractor_to(): VScript.rKeyword<_Video.ClosedCaptionMode, _Video.ClosedCaptionMode, MetadataExtractor>;
}
export declare class MetadataExtractorAsTableRow extends MetadataExtractor {
    readonly enclosing_table: VScript.StronglyTypedTable<MetadataExtractor>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<MetadataExtractor>);
}
export declare class MetadataInserter {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get video_dt_node(): VScript.rKeyword<any, any, MetadataInserter>;
    get media_clock(): VScript.rKeyword<string | null, _Time.Source | null, MetadataInserter>;
    get src(): VScript.duplexKeyword<string | null, MetadataExtractor | null, MetadataInserter>;
}
export declare class Debug {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get hpos(): VScript.rwKeyword<number, number, Debug>;
    get vpos(): VScript.rwKeyword<number, number, Debug>;
}
export declare class Request {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get standard(): VScript.rKeyword<_Video.Standard, _Video.Standard, Request>;
    get src(): VScript.rKeyword<string | null, MetadataExtractor | null, Request>;
    get dst(): VScript.rKeyword<string | null, MetadataInserter | null, Request>;
}
export declare class RequestAsTableRow extends Request {
    readonly enclosing_table: VScript.StronglyTypedTable<Request>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<Request>);
}
export declare class Response {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get standard(): VScript.rKeyword<_Video.Standard, _Video.Standard, Response>;
    get src(): VScript.rKeyword<string | null, MetadataExtractor | null, Response>;
    get dst(): VScript.rKeyword<string | null, MetadataInserter | null, Response>;
}
export declare class ResponseAsTableRow extends Response {
    readonly enclosing_table: VScript.StronglyTypedTable<Response>;
    readonly index: number;
    constructor(raw_row: VScript.TableRow, enclosing_table: VScript.StronglyTypedTable<Response>);
}
export declare type RTPChannelStatus = "Connecting" | "Connected";
export declare class All {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get rtp_channel(): VScript.rKeyword<RTPChannelStatus, RTPChannelStatus, All>;
    get responses(): VScript.StronglyTypedTable<Response, VScript.TableRowView<Response>>;
    get debug(): Debug;
}
export declare const Enums: {
    readonly RTPChannelStatus: RTPChannelStatus[];
};
