import { DragSource } from 'dnd-core';
import { DragSourceSpec } from '../drag-source-specification';
import { DragSourceMonitor } from '../source-monitor';
export declare class Source implements DragSource {
    private spec;
    private monitor;
    constructor(spec: DragSourceSpec<any>, monitor: DragSourceMonitor<any, any>);
    withChangeDetection<T>(fn: () => T): T;
    canDrag(): boolean;
    isDragging(globalMonitor: any, sourceId: any): boolean;
    beginDrag(): any;
    endDrag(): void;
}
export declare function createSourceFactory(spec: DragSourceSpec<any>): (monitor: DragSourceMonitor) => DragSource;
