import { Observable } from "rxjs";
import { InjectionToken } from "@angular/core";
import { CommandsData } from "./commands-data";
import { CommandModel } from "./command-model";
import { CommandCategory } from "./command-category";

export declare const COMMANDS_TOKEN: InjectionToken<string>;

/**
 * A provider used for retrieving commands for items.
 */
export declare interface CommandProvider {
    /**
     * Fetches the commands for the provided context.
     * @param data The context for the commands.
     */
    getCommands(data: CommandsData): Observable<CommandModel[]>;

    /**
     * Fetches the command categories for the provided context.
     * @param data The context for the categories.
     */
    getCategories(data: CommandsData): Observable<CommandCategory[]>;
}
