import { ApiName, IWidgetInstance, WidgetProperty } from "../apis/api.interfaces";
import { IWidgetRegistration } from "./IWidgetRegistration";
import { Data } from "./VisibilityTelemetry";
import { WidgetApi } from "./WidgetApi";
import { WidgetDesignation, WidgetPropertyInternal, WidgetState } from "./orchestrator.types";
export interface IWidgetInstanceInternal extends IWidgetInstance {
    widgetRegistration: IWidgetRegistration;
    readonly widgetDesignation: WidgetDesignation;
    widgetId: string;
    widgetInstanceId: string;
    widgetState: WidgetState;
    widgetErrorStateReason: string;
    widgetErrorCode: number;
    widgetIconUri: string;
    isLoadForAddedInstancePending: boolean;
    softRefreshRequested: boolean;
    telemetry: Data.Telemetry;
    isCustomElementDefined: boolean;
    isPlatform: boolean;
    boardView?: string;
    setApi(apiName: ApiName, version: number, createApi: WidgetApi | ((widgetInstance: IWidgetInstanceInternal) => WidgetApi)): void;
    getAllWidgetProperties(): Map<WidgetPropertyInternal | WidgetProperty, any>;
    getWidgetProperty(key: WidgetPropertyInternal | WidgetProperty): any;
    setWidgetProperty(key: WidgetPropertyInternal | WidgetProperty, value: any): Promise<IWidgetInstanceInternal>;
    updateRegistration(registration: IWidgetRegistration): Promise<void>;
    refreshContent(): Promise<void>;
    suspend(): Promise<void>;
    resume(): Promise<void>;
    addStateChangeListener(listener: (widgetInstance: IWidgetInstanceInternal, previousState: WidgetState, currentState: WidgetState) => void): void;
    removeStateChangeListener(listener: (widgetInstance: IWidgetInstanceInternal, previousState: WidgetState, currentState: WidgetState) => void): void;
    widgetInitializationPromise(): Promise<void>;
    signalAPIInitialization(): void;
    addExecuteActionListener(listener: (actionProps: Array<string>, instanceId: number, widgetInstanceId: string, widgetRegistration: IWidgetRegistration) => void): void;
    removeExecuteActionListener(listener: (actionProps: Array<string>, instanceId: number, widgetInstanceId: string, widgetRegistration: IWidgetRegistration) => void): void;
    addSubmitActionListener(listener: (actionProps: Array<string>, instanceId: number, widgetInstanceId: string, widgetRegistration: IWidgetRegistration) => void): void;
    removeSubmitActionListener(listener: (actionProps: Array<string>, instanceId: number, widgetInstanceId: string, widgetRegistration: IWidgetRegistration) => void): void;
    notifyExecuteAction(actionProps: Array<string>): void;
    notifySubmitAction(actionProps: Array<string>): void;
    isOutlookWidget(): boolean;
}
