/**
 * MediaPlayback Cluster Behavior
 *
 * Handles transport commands - play, pause, stop and track navigation - for
 * media players and speakers.
 */
import { MediaPlaybackServer } from '@matter/main/behaviors/media-playback';
import { MediaPlayback } from '@matter/main/clusters/media-playback';
/**
 * Default MediaPlayback Server.
 *
 * matter.js's base MediaPlaybackServer implements none of the commands -
 * invoking one throws NotImplementedError - so a player without plugin
 * handlers would advertise the transport controls and fail every one. This
 * default reflects the command in `currentState` and answers Success, which is
 * enough for the endpoint to behave sanely on its own.
 */
export declare class DefaultMediaPlaybackServer extends MediaPlaybackServer {
    /**
     * Record a new playback state, when the command implies one.
     */
    protected reflect(state?: MediaPlayback.PlaybackState): MediaPlayback.PlaybackResponse;
    play(): Promise<MediaPlayback.PlaybackResponse>;
    pause(): Promise<MediaPlayback.PlaybackResponse>;
    stop(): Promise<MediaPlayback.PlaybackResponse>;
    startOver(): Promise<MediaPlayback.PlaybackResponse>;
    previous(): Promise<MediaPlayback.PlaybackResponse>;
    next(): Promise<MediaPlayback.PlaybackResponse>;
    skipForward(_request: MediaPlayback.SkipForwardRequest): Promise<MediaPlayback.PlaybackResponse>;
    skipBackward(_request: MediaPlayback.SkipBackwardRequest): Promise<MediaPlayback.PlaybackResponse>;
}
/**
 * Custom MediaPlayback Server that calls plugin handlers.
 *
 * Extends the default server for its `reflect()` state handling (the matter.js
 * base implements nothing at all).
 */
export declare class HomebridgeMediaPlaybackServer extends DefaultMediaPlaybackServer {
    /**
     * Get the registry for this behavior's endpoint
     */
    private getRegistry;
    /**
     * Run a plugin handler and reflect the resulting playback state.
     *
     * A handler that throws a Matter protocol error is propagated as-is so the
     * controller gets the real status; anything else is answered with a
     * cluster-level status rather than an exception, which keeps the endpoint
     * online.
     */
    private invoke;
    play(): Promise<MediaPlayback.PlaybackResponse>;
    pause(): Promise<MediaPlayback.PlaybackResponse>;
    stop(): Promise<MediaPlayback.PlaybackResponse>;
    startOver(): Promise<MediaPlayback.PlaybackResponse>;
    previous(): Promise<MediaPlayback.PlaybackResponse>;
    next(): Promise<MediaPlayback.PlaybackResponse>;
    skipForward(request: MediaPlayback.SkipForwardRequest): Promise<MediaPlayback.PlaybackResponse>;
    skipBackward(request: MediaPlayback.SkipBackwardRequest): Promise<MediaPlayback.PlaybackResponse>;
}
//# sourceMappingURL=MediaPlaybackBehavior.d.ts.map