import { WidgetLifecycleEvent } from "../apis/api.interfaces";
import { WidgetInstanceElement } from "../widgetInstanceElement/widget-instance";
import { IWidgetInstanceInternal } from "./IWidgetInstanceInternal";
import { IWidgetRegistration } from "./IWidgetRegistration";
import { OrchestratorEvent } from "./orchestrator.types";
export interface IWidgetOrchestrator {
    getWidgetInstances(): Promise<Array<IWidgetInstanceInternal>>;
    getRiverInstances(): Promise<Array<IWidgetInstanceInternal>>;
    getFeedInstance(): Promise<IWidgetInstanceInternal>;
    getWidgetRegistrations(): Promise<Array<IWidgetRegistration>>;
    getWidgetInitializerUrl(appType: string): string;
    getWidget(widgetInstance: IWidgetInstanceInternal): Promise<WidgetInstanceElement>;
    refreshWidgets(): Promise<boolean>;
    reloadFailedWidgets(lifecycle: WidgetLifecycleEvent | null, forceReloadPage?: boolean): Promise<void>;
    reloadFailedWidgetsInDynamicFeed(widgetInstance: IWidgetInstanceInternal): Promise<void>;
    suspendWidgets(): Promise<void>;
    resumeWidgets(): Promise<void>;
    isUserRegionChina(): boolean;
    isUserRegionUnitedStates(): boolean;
    listenForPeregrineStatus(): void;
    loadPeregrineWidget(widgetInstance: IWidgetInstanceInternal): void;
    loadSpecificPeregrineWidgets(widgetInstances: Array<IWidgetInstanceInternal>): void;
    loadPeregrineWidgets(): Promise<void>;
    addWidgetInstance(widgetRegistration: IWidgetRegistration, widgetId?: string): Promise<IWidgetInstanceInternal>;
    addWidgetInstanceForRiver(widgetRegistration: IWidgetRegistration): Promise<IWidgetInstanceInternal>;
    removeWidgetInstance(widgetInstance: IWidgetInstanceInternal): void;
    removeWidgetInstanceFromRiver(widgetInstance: IWidgetInstanceInternal, isHide: boolean): void;
    isRiverInstance(widgetInstance: IWidgetInstanceInternal): boolean;
    widgetInnerFocus(widgetInstance: IWidgetInstanceInternal): void;
    initializeOutlookWidgetAsync(widgetInstance: IWidgetInstanceInternal, widgetInstanceElement: WidgetInstanceElement, entryPointHost: string): Promise<void>;
    addEventListener(listener: (name: OrchestratorEvent, widgetInstance: IWidgetInstanceInternal | null) => void): void;
    removeEventListener(listener: (name: OrchestratorEvent, widgetInstance: IWidgetInstanceInternal | null) => void): void;
}
