import { ConnectedPosition } from '@angular/cdk/overlay';
import { Type } from '@angular/core';
import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
import { AbstractLazyModule, LazyLoaderService } from '@deja-js/component/core';
import { Observable, Subject } from 'rxjs';
import { TooltipConfig } from './tooltip.model';
import { TooltipComponentInterface } from './tooltip-component.interface';
export declare abstract class TooltipService<D> {
    private lazyLoaderService;
    private dialog;
    private tooltipConfig?;
    protected close$: Subject<void>;
    protected positions: ReadonlyArray<ConnectedPosition>;
    constructor(lazyLoaderService: LazyLoaderService, dialog: MatDialog, tooltipConfig?: MatDialogConfig<D>);
    open$(triggerElement: HTMLElement, tooltipData: D, tooltipConfig?: TooltipConfig<D>): Observable<void>;
    close(): void;
    protected openRef$(tooltipData: D, triggerElement: HTMLElement, tooltipConfig: Partial<TooltipConfig<D>>): Observable<MatDialogRef<TooltipComponentInterface, void>>;
    protected abstract getModule(): Promise<Type<AbstractLazyModule<TooltipComponentInterface>>>;
}
