import { OperatorFunction } from 'rxjs';
import { FxType } from '../types';
type Projector<T> = (state: unknown) => T;
type Selector<T> = (...args: any[]) => Projector<T>;
/**
 * RxJS operator to apply a custom projection to the full mixer state.
 * @param projector Projector function generated by a selector
 */
export declare const select: <T>(projector: Projector<T>) => OperatorFunction<unknown, T>;
/**
 * RxJS operator to select a raw value from the mixer state.
 * @param path State key to select
 */
export declare const selectRawValue: <T>(path: string, defaultValue?: T) => OperatorFunction<unknown, T>;
/**
 * Select level value of the master fader
 */
export declare const selectMasterValue: Selector<number>;
/**
 * Select pan value of the master fader
 */
export declare const selectMasterPan: Selector<number>;
/**
 * Select dim value of the master fader
 */
export declare const selectMasterDim: Selector<number>;
/**
 * Select delay value of the master output (L or R)
 */
export declare const selectMasterDelay: Selector<number>;
/**
 * Select pan value of a channel
 * @param channelType Type of the channel
 * @param channel Channel number
 * @param busType Type of the bus
 * @param bus bus number
 */
export declare const selectPan: Selector<number>;
/**
 * Select mute value of a channel
 * @param channelType
 * @param channel
 * @param busType
 * @param bus
 */
export declare const selectMute: Selector<number>;
/**
 * Select solo value of a channel
 * @param channelType
 * @param channel
 */
export declare const selectSolo: Selector<number>;
/**
 * Select fader value of a channel
 * @param channelType
 * @param channel
 * @param busType
 * @param bus
 */
export declare const selectFaderValue: Selector<number>;
/**
 * Select delay value of a master channel in ms
 * @param channelType
 * @param channel
 */
export declare const selectDelayValue: Selector<number>;
/**
 * Select "post" value of a send channel
 * @param channelType
 * @param channel
 */
export declare const selectPost: Selector<number>;
/**
 * Select "postproc" value of a send channel
 * @param channelType
 * @param channel
 */
export declare const selectAuxPostProc: Selector<number>;
/**
 * Select BPM value of an FX bus
 * @param bus
 */
export declare const selectFxBpm: Selector<number>;
/**
 * Select FX type of an FX bus
 * @param channelType
 * @param channel
 */
export declare const selectFxType: Selector<FxType>;
/**
 * Select stereo index of a channel.
 * This will be -1 when no stereo link is active, 0 when the channel is left in the link, 1 if it's right
 * @param channelType
 * @param channel
 */
export declare const selectStereoIndex: Selector<number>;
/**
 * Select phantom power state of a hardware channel
 * @param channel
 * @param key Type of the channel: `hw` or `i`, according to the mixer model
 */
export declare const selectPhantom: Selector<number>;
/**
 * Select linear gain level of a channel
 * @param channel
 * @param key Type of the channel: `hw` or `i`, according to the mixer model
 */
export declare const selectGain: Selector<number>;
/**
 * Select fader value of a volume bus (headphones or solo)
 * @param busName Name of the bus in the "settings" part of the state
 * @param busId Optional ID of the bus
 */
export declare const selectVolumeBusValue: Selector<number>;
/**************
 * PLAYER
 *************/
/** Select player current length */
export declare const selectPlayerLength: Selector<number>;
/** Select player current position */
export declare const selectPlayerCurrentTrackPos: Selector<number>;
/** Select player elapsed time */
export declare const selectPlayerElapsedTime: Selector<number>;
/** Select player remaining time */
export declare const selectPlayerRemainingTime: Selector<number>;
/**************
 * MULTITRACK
 *************/
/** Select player current length */
export declare const selectMtkLength: Selector<number>;
/** Select player current position */
export declare const selectMtkCurrentTrackPos: Selector<number>;
/** Select player elapsed time */
export declare const selectMtkElapsedTime: Selector<number>;
/** Select player remaining time */
export declare const selectMtkRemainingTime: Selector<number>;
export {};
