/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import { Portal } from '@angular/cdk/portal';
import { Direction, Directionality } from '@angular/cdk/bidi';
import { Subject } from 'rxjs';
/**
 * Basic interface for an overlay. Used to avoid circular type references between
 * `OverlayRef`, `PositionStrategy` and `ScrollStrategy`, and `OverlayConfig`.
 * @docs-private
 */
export interface OverlayReference {
    attach: (portal: Portal<any>) => any;
    detach: () => any;
    dispose: () => void;
    overlayElement: HTMLElement;
    hostElement: HTMLElement;
    getConfig: () => any;
    hasAttached: () => boolean;
    updateSize: (config: any) => void;
    updatePosition: () => void;
    getDirection: () => Direction;
    setDirection: (dir: Direction | Directionality) => void;
    _outsidePointerEvents: Subject<MouseEvent>;
    _keydownEvents: Subject<KeyboardEvent>;
}
