import { ChangeDetectorRef, ElementRef, NgZone, ViewContainerRef, TemplateRef } from '@angular/core';
import { ConnectedPositionStrategy, Overlay, OverlayRef, OverlayState, PositionStrategy } from '@angular/cdk/overlay';
import { Observable } from 'rxjs/Observable';
import { Subscription } from 'rxjs/Subscription';
export declare class HasOverlay {
    protected _element: ElementRef;
    protected _overlay: Overlay;
    protected _viewContainerRef: ViewContainerRef;
    protected _zone: NgZone;
    protected _changeDetectorRef: ChangeDetectorRef;
    protected _scrollStrategy: any;
    protected _document: any;
    protected _overlayRef: OverlayRef | null;
    protected _portal: any;
    protected _panelOpen: boolean;
    /** Strategy that is used to position the panel. */
    protected _positionStrategy: ConnectedPositionStrategy;
    /** The subscription for closing actions (some are bound to document). */
    protected _closingActionsSubscription: Subscription;
    constructor(_element: ElementRef, _overlay: Overlay, _viewContainerRef: ViewContainerRef, _zone: NgZone, _changeDetectorRef: ChangeDetectorRef, _scrollStrategy: any, _document: any);
    readonly panelOpen: boolean;
    /** Opens the autocomplete suggestion panel. */
    openPanel(template: TemplateRef<any>): void;
    /** Closes the autocomplete suggestion panel. */
    closePanel(): void;
    onClosingAction(event: any): void;
    /**
     * A stream of actions that should close the autocomplete panel, including
     * when an option is selected, on blur, and when TAB is pressed.
     */
    readonly panelClosingActions: Observable<any>;
    /** Stream of clicks outside of the autocomplete panel. */
    protected readonly _outsideClickStream: Observable<any>;
    /**
     * This method listens to a stream of panel closing actions and resets the
     * stream every time the option list changes.
     */
    protected _subscribeToClosingActions(): Subscription;
    /** Destroys the autocomplete suggestion panel. */
    protected _destroyPanel(): void;
    protected _createOverlay(template: TemplateRef<any>): void;
    protected _getOverlayConfig(): OverlayState;
    protected _getOverlayPosition(): PositionStrategy;
    protected _getConnectedElement(): ElementRef;
    /** Returns the width of the input element, so the panel width can match it. */
    protected _getHostWidth(): number;
}
