/**
 * Contains classes for controlling FX in Reaper
 * @module
 */
import { INotifyPropertyChanged } from './Notify';
import { IMessageHandler } from './Handlers';
import { ISendOscMessage, OscMessage } from './Messages';
/**
 * A Reaper FX.
 *
 * @example
 * ```typescript
 * // Open an FX UI window
 * fx.openUi();
 * // Bypass the FX
 * fx.bypass();
 * ```
 */
export declare class Fx implements INotifyPropertyChanged {
    readonly oscAddress: string;
    private _isBypassed;
    private _isUiOpen;
    private _name;
    private _preset;
    protected readonly _handlers: IMessageHandler[];
    protected readonly _sendOscMessage: ISendOscMessage;
    /**
     * @param name The FX name
     * @param oscAddress The OSC address of the FX
     * @param sendOscMessage A callback used to send OSC messages to Reaper
     */
    constructor(name: string, oscAddress: string, sendOscMessage: ISendOscMessage);
    /** Bypass the FX */
    bypass(): void;
    /** Close the UI of the FX */
    closeUi(): void;
    /** Indicates whether the FX is bypassed */
    get isBypassed(): boolean;
    /** Indicates whether the FX's UI is open */
    get isUiOpen(): boolean;
    /** The name of the FX */
    get name(): string;
    /** Load the next FX preset */
    nextPreset(): void;
    onPropertyChanged(property: string, callback: () => void): () => void;
    /** Open the UI of the FX */
    openUi(): void;
    /** The name of the current preset, if any */
    get preset(): string;
    /** Load the previous FX preset */
    previousPreset(): void;
    /**
     *  Receive and handle an OSC message
     * @param message The message to be handled
     */
    receive(message: OscMessage): boolean;
    /** Unbypass the FX */
    unbypass(): void;
}
/**
 * An FX on a {@link Track}
 */
export declare class TrackFx extends Fx {
    readonly trackNumber: number;
    readonly fxNumber: number;
    /**
     * @param trackNumber The number of the track the FX is on
     * @param fxNumber The FX number in the current bank
     * @param sendOscMessage A callback used to send OSC messages to Reaper
     */
    constructor(trackNumber: number, fxNumber: number, sendOscMessage: ISendOscMessage);
}
