import { Optional } from '@ephox/katamari';
import * as Boxes from '../../alien/Boxes';
import { AlloyComponent } from '../../api/component/ComponentApi';
import { PositionCss } from '../../positioning/view/PositionCss';
import { DockingContext, DockingState } from './DockingTypes';
declare type StaticMorph<T> = () => T;
declare type AbsoluteMorph<T> = (pos: PositionCss) => T;
declare type FixedMorph<T> = (pos: PositionCss) => T;
export interface MorphAdt {
    fold: <T>(statics: StaticMorph<T>, absolute: AbsoluteMorph<T>, fixed: FixedMorph<T>) => T;
    match: <T>(branches: {
        static: StaticMorph<T>;
        absolute: AbsoluteMorph<T>;
        fixed: FixedMorph<T>;
    }) => T;
    log: (label: string) => void;
}
declare const appear: (component: AlloyComponent, contextualInfo: DockingContext) => void;
declare const disappear: (component: AlloyComponent, contextualInfo: DockingContext) => void;
declare const isPartiallyVisible: (box: Boxes.Bounds, viewport: Boxes.Bounds) => boolean;
declare const getMorph: (component: AlloyComponent, viewport: Boxes.Bounds, state: DockingState) => Optional<MorphAdt>;
declare const getMorphToOriginal: (component: AlloyComponent, state: DockingState) => Optional<MorphAdt>;
export { appear, disappear, isPartiallyVisible, getMorph, getMorphToOriginal };
//# sourceMappingURL=Dockables.d.ts.map