import { Observable } from 'rxjs';
import { Rpc } from '../rpc/rpc';
import { ExtensionUpdateStatus, RpcSmeExtensionConfiguration, SmeExtensionEntries, SmeExtensions, SmeExtensionSearchOptions } from '../rpc/sme-extension/rpc-sme-extension-model';
/**
 * Sme Extension Module Side Service.
 */
export declare class SmeExtension {
    private rpc;
    /**
     * Subject for tracking RPC responses from the extension host.
     */
    private watcher;
    /**
     * The source name to use when logging about this service.
     */
    private get logSourceName();
    /**
     * Initializes a new instance of the Extension Manager class.
     *
     * @param rpc the rpc to forward auth requests to a parent window.
     */
    constructor(rpc: Rpc);
    /**
     * Get available extension request.
     *
     * @returns an observable for the response message from the extension host.
     */
    getAvailableExtensions(): Observable<SmeExtensions>;
    /**
     * Get installed extension request.
     *
     * @returns an observable for the response message from the extension host.
     */
    getInstalledExtensions(): Observable<SmeExtensions>;
    /**
     * Get all extensions (available + installed) request.
     *
     * @returns an observable for the response message from the extension host.
     */
    getAllExtensions(): Observable<SmeExtensions>;
    /**
     * Install the extension.
     *
     * @param config the configuration.
     * @returns an observable for installed result of extension.
     */
    installExtension(config: RpcSmeExtensionConfiguration): Observable<SmeExtensions>;
    /**
     * Gets the update status of extensions.
     *
     * @returns An observable for update status of extension availability.
     */
    getUpdateStatus(): Observable<ExtensionUpdateStatus>;
    /**
     * Search the entry points that meet the search options.
     *
     * @param searchOptions the search options
     */
    searchEntriesByCondition(searchOptions: SmeExtensionSearchOptions): Observable<SmeExtensionEntries>;
    /**
     * Internal method handles rpc request.
     *
     * @param request the result object
     * @returns an observable for installed and available extensions.
     */
    private handleRpcRequest;
    /**
     * Handles the installation request of extension.
     *
     * @param request the request object.
     * @returns an observable for installed result.
     */
    private handleRpcExtensionWriteRequest;
    /**
     * Handles rpc request of extension update status.
     *
     * @param request the result object
     * @returns an observable for update status of extension availability.
     */
    private handleRpcUpdateStatusRequest;
    /**
     * Handles rpc request of extension search entry points.
     *
     * @param request the result object
     * @returns an observable for extension entries.
     */
    private handleRpcSearchEntryPointsRequest;
    /**
     * Handles rpc response messages from the extension host.
     *
     * @param data the result of the extension host request.
     * @returns the promise of RPC response.
     */
    private onRpcResponse;
}
