/**
 * Contains classes for Reaper markers
 * @module
 */
import { INotifyPropertyChanged } from './Notify';
import { ReaperOscEvent } from './Client/Events';
import { ReaperOscCommand } from './Client/Commands';
declare type SendCommand = (command: ReaperOscCommand) => void;
/** A marker in the current device marker bank */
export declare class Marker implements INotifyPropertyChanged {
    readonly slotIndex: number;
    private readonly _send;
    private _name;
    /** The user-assigned marker number (as shown in Reaper's UI), or empty string if not yet populated */
    private _number;
    private _time;
    /**
     * @param slotIndex The 1-based slot index within the current device marker bank
     * @param send A callback used to send typed commands to Reaper
     */
    constructor(slotIndex: number, _send: SendCommand);
    /** The marker's name */
    get name(): string;
    /**
     * The user-assigned marker number (as shown in Reaper's UI).
     * This is a string because Reaper sends it as a string (e.g. "1", "2").
     * Empty string if not yet populated.
     */
    get number(): string;
    /** The marker's time position in seconds */
    get time(): number;
    /**
     * Handle a typed incoming event
     * @param event The event to handle
     */
    handleEvent(event: ReaperOscEvent): void;
    onPropertyChanged(property: string, callback: () => void): () => void;
    /**
     * Rename this marker. Uses write-by-ID: the user-assigned marker number from {@link number}.
     * @param name The new name for the marker
     */
    rename(name: string): void;
    /**
     * Move this marker to a new time position. Uses write-by-ID.
     * Note: moving a marker may change its bank slot index on the next sync.
     * @param time The new time position in seconds
     */
    setTime(time: number): void;
    /**
     * Change the user-assigned number of this marker. Uses write-by-ID.
     * @param number The new user-assigned marker number
     */
    setNumber(number: number): void;
}
/** The most recently passed marker during playback */
export declare class LastMarker implements INotifyPropertyChanged {
    private _name;
    private _number;
    private _time;
    /** The marker's name */
    get name(): string;
    /**
     * The user-assigned marker number (as shown in Reaper's UI).
     * Empty string if no marker has been passed yet.
     */
    get number(): string;
    /** The marker's time position in seconds */
    get time(): number;
    /**
     * Handle a typed incoming event
     * @param event The event to handle
     */
    handleEvent(event: ReaperOscEvent): void;
    onPropertyChanged(property: string, callback: () => void): () => void;
}
export {};
