import { Observable } from "rxjs";
import { InjectionToken } from "@angular/core";
import { Video } from "./video";
import { SelectorOptions } from "./selector-options";
import { DialogData } from "./dialog-data"
import { DataItem } from "../metadata";

export declare const SELECTOR_SERVICE: InjectionToken<string>;
export declare const BUTTON_PRIMARY_CATEGORY: string;
export declare const BUTTON_CANCEL_CATEGORY: string;
export declare const BUTTON_DELETE_CATEGORY: string;

/**
 * Provides API for opening selectors.
 *
 * @export
 * @interface SelectorService
 */
export declare interface SelectorService {
    /**
     * Opens library selector for selection videos. The result is returned as observable.
     *
     * @param {SelectorOptions} options Selector configuration options,
     * @returns {Observable<Array<Video>>}  Selected videos.
     * @memberof SelectorService
     */
    openVideoLibrarySelector(options: SelectorOptions): Observable<Array<Video>>;

    /**
     * Opens modal dialog and loads a component in it
     *
     * @param {DialogData} dialogData data for the component to be loaded,
     * @memberof SelectorService
     */
    openDialog(dialogData: DialogData): Observable<any>;

    /**
     * Opens library selector for selection images. The result is returned as observable.
     *
     * @param {SelectorOptions} options Selector configuration options,
     * @returns {Observable<Array<DataItem>>}  Selected images.
     * @memberof SelectorService
     */
    openImageLibrarySelector(options: SelectorOptions): Observable<DataItem[]>;
}
