import { ElementRef } from '@angular/core';
import { Observable } from 'rxjs';
import { ConnectedPosition, FlexibleConnectedPositionStrategy, GlobalPositionStrategy, OverlayPositionBuilder, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';
import { Platform } from '@angular/cdk/platform';
import { RGlobalLogicalPosition } from './position-helper';
import { RViewportRulerAdapter } from '../adapter/viewport-ruler-adapter';
import { ROverlayContainerAdapter } from '../adapter/overlay-container-adapter';
export declare type RAdjustmentValues = 'noop' | 'clockwise' | 'counterclockwise' | 'vertical' | 'horizontal';
export declare enum RAdjustment {
    NOOP = "noop",
    CLOCKWISE = "clockwise",
    COUNTERCLOCKWISE = "counterclockwise",
    VERTICAL = "vertical",
    HORIZONTAL = "horizontal"
}
export declare type RPositionValues = 'top' | 'bottom' | 'left' | 'right' | 'start' | 'end' | 'top-end' | 'top-start' | 'bottom-end' | 'bottom-start' | 'end-top' | 'end-bottom' | 'start-top' | 'start-bottom';
export declare enum RPosition {
    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 RAdjustableConnectedPositionStrategy extends FlexibleConnectedPositionStrategy implements PositionStrategy {
    protected _position: RPosition;
    protected _offset: number;
    protected _adjustment: RAdjustment;
    protected appliedPositions: {
        key: RPosition;
        connectedPosition: ConnectedPosition;
    }[];
    readonly positionChange: Observable<RPosition>;
    attach(overlayRef: OverlayRef): void;
    apply(): void;
    position(position: RPosition): this;
    adjustment(adjustment: RAdjustment): this;
    offset(offset: number): this;
    protected applyPositions(): void;
    protected createPositions(): RPosition[];
    protected persistChosenPositions(positions: RPosition[]): void;
    protected reorderPreferredPositions(positions: RPosition[]): RPosition[];
    protected mapToLogicalPosition(position: RPosition): RPosition;
}
export declare class RGlobalPositionStrategy extends GlobalPositionStrategy {
    position(position: RGlobalLogicalPosition): this;
}
export declare class RPositionBuilderService {
    protected document: any;
    protected viewportRuler: RViewportRulerAdapter;
    protected platform: Platform;
    protected positionBuilder: OverlayPositionBuilder;
    protected overlayContainer: ROverlayContainerAdapter;
    constructor(document: any, viewportRuler: RViewportRulerAdapter, platform: Platform, positionBuilder: OverlayPositionBuilder, overlayContainer: ROverlayContainerAdapter);
    global(): RGlobalPositionStrategy;
    connectedTo(elementRef: ElementRef): RAdjustableConnectedPositionStrategy;
}
