import { IWidgetStatus, IWidgetSettings, IWidgetVisibility, IWidgetSize, IWidgetLifecycle, IViewChanged, IWidgetSignalApi, IWidgetTelemetryApi, IPackageStateApi, WidgetSize } from "../apis/api.interfaces";
import { WidgetState } from "../orchestrator/orchestrator.types";
import { IWidgetInstanceInternal } from "../orchestrator/IWidgetInstanceInternal";
export declare type WidgetStatusEventInternal = "onShowLastUpdated" | "onHideLastUpdated" | "onSignedOut" | "onSignedIn";
export interface IWidgetStatusInternal extends IWidgetStatus {
    getStatus(): string;
    addStatusEventListenerInternal(listener: (eventName: WidgetStatusEventInternal) => void): void;
    removeStatusEventListenerInternal(listener: (eventName: WidgetStatusEventInternal) => void): void;
}
export declare type WidgetSettingsEventInternal = "onShowSettings" | "onHideSettings" | "listenerChanged";
export interface IWidgetSettingsInternal extends IWidgetSettings {
    isConfigurationSupported(): boolean;
    onShowSettingsStart(): void;
    onShowSettingsEnd(): void;
    onHideSettingsStart(): void;
    onHideSettingsEnd(): void;
    addEventListenerInternal(listener: (eventName: WidgetSettingsEventInternal) => void): void;
    removeEventListenerInternal(listener: (eventName: WidgetSettingsEventInternal) => void): void;
}
export interface IWidgetSettingsEventHandler {
    widgetSettingsEventsCallback(name: WidgetSettingsEventInternal): void;
}
export interface IViewChangedInternal extends IViewChanged {
    fireViewChangedEvent(view: string): void;
}
export interface IPackageStateInternal extends IPackageStateApi {
    firePackageStateUpdatedEvent(): void;
}
export interface IWidgetVisibilityInternal extends IWidgetVisibility {
    onVisible(): Promise<void>;
    onHidden(): Promise<void>;
}
export interface IWidgetSizeInternal extends IWidgetSize {
    fireStartEvent(size: string): void;
    fireEndEventAndUpdateSize(size: string): void;
}
export interface IWidgetLifecycleInternal extends IWidgetLifecycle {
    onWidgetRemoved(): void;
    onRefresh(): Promise<void>;
    onSuspending(): Promise<void>;
    onResumed(): Promise<void>;
}
export interface IWidgetSignalApiInternal extends IWidgetSignalApi {
    getWebxtWidgetListForTelemetry(): any;
}
export interface IWidgetLifecycleObserver {
    registerTrigger(triggerThresholdDivisor: number, currentState: WidgetState, callback: () => void): void;
    registerWidget(widget: IWidgetInstanceInternal): void;
    setNumWidgets(numWidgets: number): void;
    unregisterTrigger(): void;
}
export interface IWidgetTelemetryApiInternal extends IWidgetTelemetryApi {
    sendWebXTWidgetCardActionTelemetryAsync(instance: IWidgetInstanceInternal, actionId: string | undefined, isNav: boolean): Promise<void>;
    sendWebXTWidgetVisibilityTelemetry(instance: IWidgetInstanceInternal): void;
    sendWebXTWidgetActivationUrlTelemetryAsync(instance: IWidgetInstanceInternal): Promise<void>;
    sendWebXTWidgetActionMenuTelemetryAsync(instance: IWidgetInstanceInternal, isActionMenuOpen: boolean): Promise<void>;
    sendWebXTWidgetSizeChangeTelemetryAsync(instance: IWidgetInstanceInternal, newSize: WidgetSize): Promise<void>;
    sendWebXTWidgetUnpinTelemetryAsync(instance: IWidgetInstanceInternal): Promise<void>;
}
