import { Optional } from '@ephox/katamari';
import { SugarElement } from '@ephox/sugar';
import * as Boxes from '../../alien/Boxes';
import { AlloyComponent } from '../../api/component/ComponentApi';
import { PositionCss } from '../../positioning/view/PositionCss';
import { DockingContext, DockingDecision, DockingState, DockingViewport } from './DockingTypes';
export interface StaticMorph {
    morph: 'static';
}
export interface AbsoluteMorph {
    morph: 'absolute';
    positionCss: PositionCss;
}
export interface FixedMorph {
    morph: 'fixed';
    positionCss: PositionCss;
}
export type MorphInfo = StaticMorph | AbsoluteMorph | FixedMorph;
declare const appear: (component: AlloyComponent, contextualInfo: DockingContext) => void;
declare const disappear: (component: AlloyComponent, contextualInfo: DockingContext) => void;
declare const isPartiallyVisible: (box: Boxes.Bounds, bounds: Boxes.Bounds) => boolean;
declare const forceTopPosition: (winBox: Boxes.Bounds, leftX: number, viewport: DockingViewport) => DockingDecision;
declare const forceBottomPosition: (winBox: Boxes.Bounds, leftX: number, viewport: DockingViewport) => DockingDecision;
declare const tryMorph: (component: AlloyComponent, viewport: DockingViewport, state: DockingState) => Optional<MorphInfo>;
declare const calculateMorphToOriginal: (component: AlloyComponent, viewport: DockingViewport, state: DockingState) => Optional<StaticMorph | AbsoluteMorph>;
declare const forceDockWith: (elem: SugarElement<HTMLElement>, viewport: DockingViewport, state: DockingState, getDecision: (winBox: Boxes.Bounds, leftX: number, v: DockingViewport) => DockingDecision) => Optional<FixedMorph>;
export { appear, disappear, isPartiallyVisible, tryMorph, calculateMorphToOriginal, forceDockWith, forceTopPosition, forceBottomPosition };
//# sourceMappingURL=Dockables.d.ts.map