import { Optional } from '@ephox/katamari';
import { EventArgs, SugarPosition } from '@ephox/sugar';
import { AlloyComponent } from '../../api/component/ComponentApi';
import * as AlloyEvents from '../../api/events/AlloyEvents';
import { EventFormat } from '../../events/SimulatedEvent';
import { DraggingConfig, DraggingState, DragModeDeltas, DragStartData } from './DraggingTypes';
declare type EventsFunc<C extends DraggingConfig<E>, A extends EventFormat, E> = (dragConfig: C, dragState: DraggingState, updateStartState: (comp: AlloyComponent) => void) => Array<AlloyEvents.AlloyEventKeyAndHandler<A>>;
declare const calcStartData: <E>(dragConfig: DraggingConfig<E>, comp: AlloyComponent) => DragStartData;
declare const move: <E, ET extends Event>(component: AlloyComponent, dragConfig: DraggingConfig<E>, dragState: DraggingState, dragMode: DragModeDeltas<ET, SugarPosition>, event: EventArgs<ET, Node>) => void;
declare const stop: <E>(component: AlloyComponent, blocker: Optional<AlloyComponent>, dragConfig: DraggingConfig<E>, dragState: DraggingState) => void;
declare const handlers: <C extends DraggingConfig<E>, A extends EventFormat, E>(events: EventsFunc<C, A, E>) => (dragConfig: C, dragState: DraggingState) => AlloyEvents.AlloyEventRecord;
export { calcStartData, handlers, move, stop };
//# sourceMappingURL=DragUtils.d.ts.map