import * as VScript from "vscript";
import * as _Video from "./Video";
export declare const lift: {
    readonly Crossbar: (kwl: string | null, socket: VScript.VSocket) => Crossbar | null;
    readonly CrossbarOutputs: (kwl: string | null, socket: VScript.VSocket) => CrossbarOutputs | null;
    readonly CrossbarInputs: (kwl: string | null, socket: VScript.VSocket) => CrossbarInputs | null;
};
export declare const lower: {
    readonly Crossbar: (ref: Crossbar | null) => string | null;
    readonly CrossbarOutputs: (ref: CrossbarOutputs | null) => string | null;
    readonly CrossbarInputs: (ref: CrossbarInputs | null) => string | null;
};
declare class CrossbarInputs {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get num_channels(): VScript.rwKeyword<number, number, CrossbarInputs>;
    get source(): VScript.duplexKeyword<string | null, _Video.Essence | null, CrossbarInputs>;
}
declare class CrossbarOutputs {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get num_channels(): VScript.rwKeyword<number, number, CrossbarOutputs>;
    get xbar(): VScript.rwKeyword<[number], [number], CrossbarOutputs>;
    get output(): _Video.Essence;
}
export declare class Crossbar {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get num_inputs(): VScript.rwKeyword<number, number, Crossbar>;
    get num_outputs(): VScript.rwKeyword<number, number, Crossbar>;
    get inputs(): VScript.StronglyTypedTable<CrossbarInputs, VScript.TableRowView<CrossbarInputs>>;
    get outputs(): VScript.StronglyTypedTable<CrossbarOutputs, VScript.TableRowView<CrossbarOutputs>>;
}
export declare class CrossbarAsNamedTableRow extends Crossbar {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<Crossbar>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<Crossbar>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class All {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get pool(): VScript.StronglyTypedNamedTable<Crossbar, VScript.NamedTableRowView<Crossbar>>;
}
export {};
