import { Observable, Unsubscribable } from 'rxjs';
import { ICommandEntry, IExecuteCommandParams, ICommandRegistry } from '@adminide-stack/extension-api';
/** Manages and executes commands from all extensions. */
export declare class CommandRegistry implements ICommandRegistry {
    private entries;
    registerCommand(entryToRegister: ICommandEntry): Unsubscribable;
    deregisterCommand(entryToDeregister: ICommandEntry): boolean;
    executeCommand(parameters: IExecuteCommandParams): Promise<any>;
    /** All commands, emitted whenever the set of registered commands changed. */
    readonly commands: Observable<ICommandEntry[]>;
    /**
     * The current set of commands. Used by callers that do not need to react to commands being registered or
     * unregistered.
     */
    get commandsSnapshot(): any[];
}
/**
 * Executes the command (in the commands list) specified in params.
 *
 * Most callers should use CommandRegistry's executeCommand method, which uses the registered commands.
 */
export declare function executeCommand(commands: ICommandEntry[], parameters: IExecuteCommandParams): Promise<any>;
