import { ElementRef } from '@angular/core';
import { Observable } from 'rxjs';
import { ElConnectedPosition, ElFlexibleConnectedPositionStrategy, ElOverlayPositionBuilder, ElOverlayRef, ElPlatform, ElPositionStrategy } from './mapping';
import { ElOverlayContainerAdapter } from '../adapter/overlay-container-adapter';
import { ElViewportRulerAdapter } from '../adapter/viewport-ruler-adapter';
import { ElGlobalLogicalPosition } from './position-helper';
import { GlobalPositionStrategy } from '@angular/cdk/overlay';
export declare enum ElAdjustment {
    NOOP = "noop",
    CLOCKWISE = "clockwise",
    COUNTERCLOCKWISE = "counterclockwise",
    VERTICAL = "vertical",
    HORIZONTAL = "horizontal"
}
export declare enum ElPosition {
    TOP = "top",
    BOTTOM = "bottom",
    LEFT = "left",
    RIGHT = "right",
    START = "start",
    END = "end",
    TOP_END = "top-end",
    TOP_START = "top-start",
    BOTTOM_END = "bottom-end",
    BOTTOM_START = "bottom-start",
    END_TOP = "end-top",
    END_BOTTOM = "end-bottom",
    START_TOP = "start-top",
    START_BOTTOM = "start-bottom"
}
/**
 * The main idea of the adjustable connected strategy is to provide predefined set of positions for your overlay.
 * You have to provide adjustment and appropriate strategy will be chosen in runtime.
 * */
export declare class ElAdjustableConnectedPositionStrategy extends ElFlexibleConnectedPositionStrategy implements ElPositionStrategy {
    protected _position: ElPosition;
    protected _offset: number;
    protected _adjustment: ElAdjustment;
    protected appliedPositions: {
        key: ElPosition;
        connectedPosition: ElConnectedPosition;
    }[];
    readonly positionChange: Observable<ElPosition>;
    attach(overlayRef: ElOverlayRef): void;
    apply(): void;
    position(position: ElPosition): this;
    adjustment(adjustment: ElAdjustment): this;
    offset(offset: number): this;
    protected applyPositions(): void;
    protected createPositions(): ElPosition[];
    protected persistChosenPositions(positions: ElPosition[]): void;
    protected reorderPreferredPositions(positions: ElPosition[]): ElPosition[];
}
export declare class ElGlobalPositionStrategy extends GlobalPositionStrategy {
    position(position: ElGlobalLogicalPosition): this;
}
export declare class ElPositionBuilderService {
    protected document: any;
    protected viewportRuler: ElViewportRulerAdapter;
    protected platform: ElPlatform;
    protected positionBuilder: ElOverlayPositionBuilder;
    protected overlayContainer: ElOverlayContainerAdapter;
    constructor(document: any, viewportRuler: ElViewportRulerAdapter, platform: ElPlatform, positionBuilder: ElOverlayPositionBuilder, overlayContainer: ElOverlayContainerAdapter);
    global(): ElGlobalPositionStrategy;
    connectedTo(elementRef: ElementRef): ElAdjustableConnectedPositionStrategy;
}
