import { MixerConnection } from '../mixer-connection';
import { MixerStore } from '../state/mixer-store';
import { ChannelType } from '../types';
import { Channel } from './channel';
import { PannableChannel } from './interfaces';
import { AutomixGroupId } from './automix-controller';
/**
 * Represents a channel on the master bus
 */
export declare class MasterChannel extends Channel implements PannableChannel {
    protected fullChannelId: string;
    faderLevelCommand: string;
    /** SOLO state of the channel */
    readonly solo$: import('rxjs').Observable<boolean>;
    /** PAN value of the channel (between `0` and `1`) */
    readonly pan$: import('rxjs').Observable<number>;
    /** Assigned automix group (`a`, `b`, `none`) */
    readonly automixGroup$: import('rxjs').Observable<AutomixGroupId | "none">;
    /** Automix weight (linear) for this channel (between `0` and `1`) */
    readonly automixWeight$: import('rxjs').Observable<number>;
    /** Automix weight (dB) for this channel (between `-12` and `12` dB) */
    readonly automixWeightDB$: import('rxjs').Observable<number>;
    /** Multitrack selection state for the channel */
    readonly multiTrackSelected$: import('rxjs').Observable<boolean>;
    constructor(conn: MixerConnection, store: MixerStore, channelType: ChannelType, channel: number);
    /**
     * Set PAN value of the channel
     * @param value value between `0` and `1`
     */
    setPan(value: number): void;
    /**
     * Relatively change PAN value of the channel
     * @param offset offset to change (final values are between `0` and `1`)
     */
    changePan(offset: number): void;
    /**
     * Set SOLO state for the channel
     * @param value SOLO state
     */
    setSolo(value: boolean): void;
    /** Enable SOLO for the channel */
    solo(): void;
    /** Disable SOLO for the channel */
    unsolo(): void;
    /** Toggle SOLO state for the channel */
    toggleSolo(): void;
    private multiTrackAssertChannelType;
    private multiTrackSetSelection;
    /** Select this channel for multitrack recording */
    multiTrackSelect(): void;
    /** Remove this channel from multitrack recording */
    multiTrackUnselect(): void;
    /** Toggle multitrack recording for this channel */
    multiTrackToggle(): void;
    /** Assign this channel to an automix group. This also includes stereo-linked channels.
     * @param group `a` or `b` for automix groups. `none` to remove from all groups.
     */
    automixAssignGroup(group: AutomixGroupId | 'none'): void;
    /** Remove this channel from the automix group */
    automixRemove(): void;
    /**
     * Set automix weight (linear) for the channel
     * @param value value between `0` and `1`
     */
    automixSetWeight(value: number): void;
    /**
     * Set automix weight (dB) for the channel
     * @param value value between `-12` and `12`
     */
    automixSetWeightDB(dbValue: number): void;
    /**
     * Change the automix weight relatively by adding a given value
     * @param offsetDB value (dB) to add to the current value
     */
    automixChangeWeightDB(offsetDB: number): void;
}
