import { OscMessage } from './Messages';
import { Track } from './Tracks';
import { Transport } from './Transport';
import { TrackFx } from './Fx';
/** An OSC message handler */
export interface IMessageHandler {
    /**
     *  Handle an OSC message
     * @param message The message to handle
     */
    handle(message: OscMessage): boolean;
}
/**
 * Routes messages to the appropriate track
 * @param trackSelector A function that can be used to get a track
 * */
export declare class TrackMessageHandler implements IMessageHandler {
    private readonly trackSelector;
    constructor(trackSelector: (trackNumber: number) => Track | null);
    handle(message: OscMessage): boolean;
}
/** Routes messages to the transport */
export declare class TransportMessageHandler implements IMessageHandler {
    private readonly transport;
    constructor(transport: Transport);
    handle(message: OscMessage): boolean;
}
/** Routes messages to the appropriate track fx */
export declare class TrackFxMessageHandler implements IMessageHandler {
    private readonly fxSelector;
    constructor(fxSelector: (fxNumber: number) => TrackFx | null);
    handle(message: OscMessage): boolean;
}
/**
 * Handles an OSC message containing a single boolean value (0 or 1)
 * @param address The address of the message to handle
 * @param callback The callback to be called when a message with the specified OSC address is received
 */
export declare class BooleanMessageHandler implements IMessageHandler {
    readonly address: string;
    private readonly _callback;
    constructor(address: string, callback: (value: boolean) => void);
    handle(message: OscMessage): boolean;
}
export declare class IntegerMessageHandler implements IMessageHandler {
    readonly address: string;
    private readonly _callback;
    constructor(address: string, callback: (value: number) => void);
    handle(message: OscMessage): boolean;
}
export declare class StringMessageHandler implements IMessageHandler {
    readonly address: string;
    private readonly _callback;
    constructor(address: string, callback: (value: string) => void);
    handle(message: OscMessage): boolean;
}
export declare class FloatMessageHandler implements IMessageHandler {
    readonly address: string;
    private readonly _callback;
    constructor(address: string, callback: (value: number) => void);
    handle(message: OscMessage): boolean;
}
