///
import { WidgetTransport } from './libs/Transport';
import * as IWidget from './types';
import { WidgetHandlers } from './__codegen__/WidgetHandlers';
import { Config } from './config/Config';
declare const API: unique symbol;
interface WidgetParameters {
events: () => E;
handlers: Constructor;
api: Constructor;
}
declare class Widget = Partial, A = unknown> implements IWidget.LCDispatcher {
private config;
/**
* Версия виджета
*/
version: string;
/**
* Идентификатор виджета
*/
widgetId: string;
private uiPlugin;
private plugins;
private lastShowData;
private transportInstance;
private forceSendOpenIframe;
private onlineEnsurer;
/**
* Используется в плагинах и классах UI
*/
private proxy;
private [API];
/**
* API Мессенджера
*/
api: A;
/**
* Обработчики событий
*/
handlers: H;
/**
* События Мессенджера
*/
events: E;
/**
* @nodoc
*/
constructor(config: Config, params: WidgetParameters);
/**
* @docsubtitle Инициализировать виджет
* @doctemplate method_annotation
*/
init(): this;
/**
* @docsubtitle Открыть Мессенджер
* @doc
* Метод позволяет открыть определенный чат или список чатов в Мессенджере
* Если `params` не передан, при первом открытии
* будут использованы данные из `iframeOpenData`,
* при последующих открытиях будет вызван только `LCShown`
* @doc -scope=internal
* При вызове ручки возможно создание нового чата.
* Если необходимо предзагрузить виджет используйте `preload`
*
* @doctemplate method_annotation
*/
show(
/**
* @doc Параметры открытия Мессенджера
* @docref template=members_annotation
*/
params?: IWidget.IframeOpenData,
/**
* @doc Колбэк открытия чата/нулвого экрана
*/
callback?: (error?: Error | void) => void): void;
/**
* @docsubtitle Свернуть Мессенджер
*
* @doctemplate method_annotation
*/
hide(): void;
/**
* @docsubtitle Установить UI плагин
* @doctemplate method_annotation
*/
setUI(plugin: IWidget.UIPlugin): this;
/**
* @docsubtitle Установить плагин.
* @doc
* Порядок плагинов имеет значение.
*
* @doctemplate method_annotation
*/
addPlugin(plugin: IWidget.Plugin): this;
/**
* @docsubtitle Удалить виджет.
* @doctemplate method_annotation
*/
destroy(): void;
get options(): Partial;
/**
* @private
*/
dispatchLC(name: N, event: Parameters[N]>[0]): Parameters[N]>[0];
private getIframeUrl;
private handleErrorConnect;
/**
* @private
*/
protected get transport(): WidgetTransport;
private configureMetrikaTransport;
}
export { Widget as AbstractWidget };