import { IFlowElement } from "./Structure/IFlowElement";
import { FlowStepSequence } from "./Structure/FlowStepSequence";
import { BaseFlowStep } from "./Steps/BaseFlowStep";
import { XFlowConfiguration } from "./Structure/XFlowConfiguration";
import { IContextForControl } from "../Common/IContextForControl";
import { IDraggingElementType } from "./CommonUI/IDraggingElementType";
import { XFlowEditor } from "./XFlowEditor";
import { IFlowStepSequence } from "./Structure/IFlowStepSequence";
import { FlowStepOutputInstructionType } from "./Structure/FlowStepOutputInstructions";
import { IFlowStep } from "./Structure/IFlowStep";
import { IContext } from "../Common/IContext";
import { XDataDefinition } from "../Common/Data/XDataDefinition";
import { IFlowDisplayBehavior } from "./Structure/DisplayBehavior/IFlowDisplayBehavior";
import { FlowViewMode } from "./DesignerUI/FlowViewMode";
import { FlowBuilderPage } from "./DesignerUI/FlowBuilderPage";
import { IFlowDialog } from "./DesignerUI/IFlowDialog";
import { IPosition } from "./CommonUI/IPosition";
import { IColorElemContext, IColorPickerDialog } from "../CommonUI/BuildUI/ColorPicker";
interface IDraggingControl {
    destination?: string;
    source: {
        parent?: string;
        current: string;
    };
    pos: IPosition;
}
export declare class FlowEditContext implements IContext, IColorElemContext {
    flowEditor: XFlowEditor;
    flowTitle?: string;
    viewAPIUrl?: string;
    flowStartDataDefinition: XDataDefinition;
    mode: FlowBuilderPage;
    private _designerScrollTop;
    get designerScrollTop(): number;
    set designerScrollTop(top: number);
    private _draggingControl;
    get draggingControl(): IDraggingControl | null;
    set draggingControl(con: IDraggingControl | null);
    private candidateSequences;
    onFlowSave?: () => void;
    onFlowCancel?: () => void;
    constructor(flowEditor: XFlowEditor);
    get displayBehavior(): IFlowDisplayBehavior;
    onViewModeChanged(): void;
    onDeleteConnection(): void;
    onContextInitialized(): void;
    onClearSelectionInContext(): void;
    onSequenceBeingDragged(sequence: IFlowStepSequence, x: number, y: number): void;
    onSequenceDragEnding(sequence: IFlowStepSequence, x: number, y: number): void;
    onStepAdded(sequence: IFlowStepSequence, step: IFlowStep): void;
    onStepRemoved(sequence: IFlowStepSequence, step: IFlowStep): void;
    onStepMoved(fromSequence: IFlowStepSequence, toSequence: IFlowStepSequence, step: IFlowStep, index?: number): void;
    onStepMovedInSequence(fromSequence: IFlowStepSequence, step: IFlowStep, newIndex: number): void;
    onStepEdit(sequence: IFlowStepSequence, step: IFlowStep): void;
    onStepPathEdit(sequence: IFlowStepSequence, step: IFlowStep, path: string): void;
    onSequencesCombined(sequence: IFlowStepSequence, combineTo: IFlowStepSequence): void;
    onSequenceAdded(sequence: IFlowStepSequence): void;
    onSequenceRemoved(sequence: IFlowStepSequence): void;
    onSequenceUpdate(sequence: IFlowStepSequence): void;
    onSequenceExpanded(sequence: FlowStepSequence): void;
    onSequenceCollapsed(sequence: FlowStepSequence): void;
    onSequenceConnected(sequence: FlowStepSequence): void;
    private delayPosition;
    refreshSequences(): void;
    refreshLines(): void;
    refreshSequence(sequence: IFlowStepSequence): void;
    getCandidateSequences(): IFlowStepSequence[];
    findCandidateSequence(id: string): IFlowStepSequence | null;
    getCandidateOrRealSequence(id: string): IFlowStepSequence | undefined;
    getSequenceByXY(x: number, y: number): FlowStepSequence | null;
    purgeCandidateSequences(): void;
    private syncCandidates;
    positionCandidateSequences(requirePurge?: boolean): boolean;
    positionSequenceToFarRight(nonPathCandidate: IFlowStepSequence): void;
    private _dragOverSequenceId;
    set dragOverSequence(sequence: FlowStepSequence | null);
    get dragOverSequenceId(): string | undefined;
    canCombine(combine: IFlowStepSequence, withSequence: IFlowStepSequence): boolean;
    combineSequences(combine: IFlowStepSequence, withSequence: IFlowStepSequence): void;
    private cloneFlowElement;
    onCopy(selectedId?: string): void;
    onCut(selectedId?: string): void;
    deleteSequence(idx: number): void;
    onDelete(selectedId?: string): void;
    onPaste(): void;
    get flow(): XFlowConfiguration;
    private _selectionElement?;
    private _lastSelectionElement?;
    get selection(): string | undefined;
    get selectionElement(): IFlowElement | undefined;
    get lastSelectionElement(): IFlowElement | undefined;
    setSelection(selection: IFlowElement): void;
    clearSelection(): void;
    private _clipboardElement?;
    get clipboardElement(): IFlowElement | undefined;
    set clipboardElement(elem: IFlowElement | undefined);
    private _contextControl;
    get contextControl(): IContextForControl | null;
    set contextControl(control: IContextForControl | null);
    private _notification?;
    set notification(n: IFlowDialog | undefined);
    get notification(): IFlowDialog | undefined;
    private _draggingElemType?;
    get draggingElemType(): IDraggingElementType | undefined;
    set draggingElemType(type: IDraggingElementType | undefined);
    isShowEditor: boolean;
    toggleEditLayer(): void;
    hideEditLayer(): void;
    showEditLayer(): void;
    refresh(): void;
    private _selectedStepStrategy;
    set selectedStepStrategy(s: IFlowEditStepStrategy | null);
    setSelectedStepStrategy(elem: HTMLElement, step: BaseFlowStep): void;
    get selectedStepStrategy(): IFlowEditStepStrategy | null;
    private _selectedSequenceStrategy;
    set selectedSequenceStrategy(s: IFlowEditSequenceDialog | null);
    setSelectedSequenceStrategy(elem: HTMLElement, sequence: FlowStepSequence): void;
    get selectedSequenceStrategy(): IFlowEditSequenceDialog | null;
    private _isShowDescription;
    set isShowDescription(show: boolean);
    get isShowDescription(): boolean;
    private _isShowErrorBranch;
    set isShowErrorBranch(show: boolean);
    get isShowErrorBranch(): boolean;
    private _isCollapsed;
    set isCollapsed(show: boolean);
    get isCollapsed(): boolean;
    private _selectedSequenceForError;
    set selectedSequenceForError(s: IFlowEditSequenceDialog | null);
    setSelectedSequenceForError(elem: HTMLElement, sequence: FlowStepSequence): void;
    get selectedSequenceForError(): IFlowEditSequenceDialog | null;
    private _viewMode;
    set viewMode(mode: FlowViewMode);
    get viewMode(): FlowViewMode;
    private _selectedForColor;
    get selectedForColor(): IColorPickerDialog | undefined;
    set selectedForColor(sel: IColorPickerDialog | undefined);
    setSelectedForColor(sequence: FlowStepSequence, element: HTMLElement): void;
    private _showErrorOrEndConnections;
    get showErrorOrEndConnections(): FlowStepOutputInstructionType | null;
    set showErrorOrEndConnections(isShow: FlowStepOutputInstructionType | null);
}
interface IFlowEditStepStrategy {
    position: {
        x: number;
        y: number;
    };
    step: BaseFlowStep;
}
interface IFlowEditSequenceDialog {
    position: {
        x: number;
        y: number;
    };
    sequence: FlowStepSequence;
}
export {};
