import * as VScript from "vscript";
import * as _Audio from "./Audio";
export declare const lift: {
    readonly Downmixes: (kwl: string | null, socket: VScript.VSocket) => Downmixes | null;
    readonly Monos: (kwl: string | null, socket: VScript.VSocket) => Monos | null;
    readonly Stereos: (kwl: string | null, socket: VScript.VSocket) => Stereos | null;
    readonly StereosOutput: (kwl: string | null, socket: VScript.VSocket) => StereosOutput | null;
    readonly Mode71: (kwl: string | null, socket: VScript.VSocket) => Mode71 | null;
    readonly Mode51: (kwl: string | null, socket: VScript.VSocket) => Mode51 | null;
    readonly ChannelSelection: (kwl: string | null, socket: VScript.VSocket) => ChannelSelection | null;
    readonly ChannelMono: (kwl: string | null, socket: VScript.VSocket) => ChannelMono | null;
    readonly ChannelStereo: (kwl: string | null, socket: VScript.VSocket) => ChannelStereo | null;
    readonly SourceStereo: (kwl: string | null, socket: VScript.VSocket) => SourceStereo | null;
    readonly Source: (kwl: string | null, socket: VScript.VSocket) => Source | null;
    readonly ResourceStatus: (kwl: string | null, socket: VScript.VSocket) => ResourceStatus | null;
};
export declare const lower: {
    readonly Downmixes: (ref: Downmixes | null) => string | null;
    readonly Monos: (ref: Monos | null) => string | null;
    readonly Stereos: (ref: Stereos | null) => string | null;
    readonly StereosOutput: (ref: StereosOutput | null) => string | null;
    readonly Mode71: (ref: Mode71 | null) => string | null;
    readonly Mode51: (ref: Mode51 | null) => string | null;
    readonly ChannelSelection: (ref: ChannelSelection | null) => string | null;
    readonly ChannelMono: (ref: ChannelMono | null) => string | null;
    readonly ChannelStereo: (ref: ChannelStereo | null) => string | null;
    readonly SourceStereo: (ref: SourceStereo | null) => string | null;
    readonly Source: (ref: Source | null) => string | null;
    readonly ResourceStatus: (ref: ResourceStatus | null) => string | null;
};
export declare class ResourceStatus {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get list_of_free_outputs(): VScript.rKeyword<string, string, ResourceStatus>;
    get number_of_dangling_channel_blocks(): VScript.rKeyword<number, number, ResourceStatus>;
    get max_size_of_dangling_channel_block(): VScript.rKeyword<number, number, ResourceStatus>;
}
export declare class Source {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get channel(): VScript.duplexKeyword<number, number, Source>;
    get source(): VScript.duplexKeyword<string | null, _Audio.Essence | null, Source>;
}
export declare class SourceStereo {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get channel_left(): VScript.duplexKeyword<number, number, SourceStereo>;
    get channel_right(): VScript.duplexKeyword<number, number, SourceStereo>;
    get source(): VScript.duplexKeyword<string | null, _Audio.Essence | null, SourceStereo>;
}
export declare class ChannelStereo {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get gain(): VScript.rwKeyword<number, number, ChannelStereo>;
    get phase_inversion(): VScript.rwKeyword<boolean, boolean, ChannelStereo>;
    get mute(): VScript.rwKeyword<boolean, boolean, ChannelStereo>;
    get balance(): VScript.rwKeyword<number, number, ChannelStereo>;
    get source(): SourceStereo;
}
export declare class ChannelStereoAsNamedTableRow extends ChannelStereo {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<ChannelStereo>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<ChannelStereo>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class ChannelMono {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get gain(): VScript.rwKeyword<number, number, ChannelMono>;
    get phase_inversion(): VScript.rwKeyword<boolean, boolean, ChannelMono>;
    get mute(): VScript.rwKeyword<boolean, boolean, ChannelMono>;
    get pan(): VScript.rwKeyword<number, number, ChannelMono>;
    get source(): Source;
}
export declare class ChannelMonoAsNamedTableRow extends ChannelMono {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<ChannelMono>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<ChannelMono>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class ChannelSelection {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get gain(): VScript.rwKeyword<number, number, ChannelSelection>;
    get phase_inversion(): VScript.rwKeyword<boolean, boolean, ChannelSelection>;
    get mute(): VScript.rwKeyword<boolean, boolean, ChannelSelection>;
    get source(): Source;
}
export declare class ChannelSelectionAsNamedTableRow extends ChannelSelection {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<ChannelSelection>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<ChannelSelection>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class Mode51 {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get front_left(): ChannelSelection;
    get front_right(): ChannelSelection;
    get center(): ChannelSelection;
    get lfe(): ChannelSelection;
    get rear_surround_left(): ChannelSelection;
    get rear_surround_right(): ChannelSelection;
    get output(): _Audio.Essence;
}
export declare class Mode51AsNamedTableRow extends Mode51 {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<Mode51>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<Mode51>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class Mode71 {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get front_left(): ChannelSelection;
    get front_right(): ChannelSelection;
    get center(): ChannelSelection;
    get surround_left(): ChannelSelection;
    get surround_right(): ChannelSelection;
    get lfe(): ChannelSelection;
    get rear_surround_left(): ChannelSelection;
    get rear_surround_right(): ChannelSelection;
    get output(): _Audio.Essence;
}
export declare class Mode71AsNamedTableRow extends Mode71 {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<Mode71>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<Mode71>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
declare class StereosOutput {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      Reset to default
    */
    get reset_to_default(): VScript.wKeyword<"Click", "Click", StereosOutput>;
    get gain(): VScript.rwKeyword<number, number, StereosOutput>;
    get phase_inversion(): VScript.rwKeyword<boolean, boolean, StereosOutput>;
    get output(): _Audio.Essence;
}
export declare class Stereos {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get mono_channels(): VScript.StronglyTypedNamedTable<ChannelMono, VScript.NamedTableRowView<ChannelMono>>;
    get stereo_pairs(): VScript.StronglyTypedNamedTable<ChannelStereo, VScript.NamedTableRowView<ChannelStereo>>;
    get output(): StereosOutput;
}
export declare class StereosAsNamedTableRow extends Stereos {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<Stereos>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<Stereos>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class Monos {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get channels(): VScript.StronglyTypedNamedTable<ChannelSelection, VScript.NamedTableRowView<ChannelSelection>>;
    get output(): _Audio.Essence;
}
export declare class MonosAsNamedTableRow extends Monos {
    private readonly raw_row;
    readonly enclosing_table: VScript.StronglyTypedNamedTable<Monos>;
    readonly index: number;
    constructor(raw_row: VScript.NamedTableRow, enclosing_table: VScript.StronglyTypedNamedTable<Monos>);
    rename(name: string, opts?: VScript.CommonWriteOptions): Promise<void>;
    delete(opts?: VScript.CommonWriteOptions): Promise<void>;
}
export declare class Downmixes {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    get mode_5_1(): VScript.StronglyTypedNamedTable<Mode51, VScript.NamedTableRowView<Mode51>>;
    get mode_7_1(): VScript.StronglyTypedNamedTable<Mode71, VScript.NamedTableRowView<Mode71>>;
}
export declare class All {
    readonly raw: VScript.Subtree;
    constructor(raw: VScript.Subtree);
    /**
      @brief Defragment
      @desc Repeated allocation and deallocation of differently sized mixers
      can cause fader fragmentation. Press this button to defragment, but
      please note that _this will temporarily interrupt all outputs currently
      in use_.
    */
    get reorder_output(): VScript.wKeyword<"Click", "Click", All>;
    get mono_mixes(): VScript.StronglyTypedNamedTable<Monos, VScript.NamedTableRowView<Monos>>;
    get stereo_mixes(): VScript.StronglyTypedNamedTable<Stereos, VScript.NamedTableRowView<Stereos>>;
    get down_mixes(): Downmixes;
    get resource_status(): ResourceStatus;
    get audio_source_slices(): VScript.StronglyTypedArray<All, _Audio.SignalSourceSlice, VScript.RowView<_Audio.SignalSourceSlice>>;
}
export {};
