import React from "react";
import { Direction } from "react-beautiful-dnd";
import { BaseFlowStep } from "../../Steps/BaseFlowStep";
import { IFlowDisplayBehavior, ILine } from "./IFlowDisplayBehavior";
import { FlowStepSequence, FlowStepSequenceStrategy } from "../FlowStepSequence";
import { FlowConnection, XFlowConfiguration } from "../XFlowConfiguration";
import { FlowEditContext } from "../../FlowEditContext";
import { FlowStepOutputInstructions } from "../FlowStepOutputInstructions";
import { IInjectTopItem } from "../../../CommonUI/BuildUI/Topbar";
import { IFlowElement } from "../IFlowElement";
export declare abstract class BaseDisplayBehavior implements IFlowDisplayBehavior {
    readonly isEnableContextMenu: boolean;
    readonly lineLabelPosition: "start" | "middle" | "end";
    editContext: FlowEditContext;
    flow: XFlowConfiguration;
    constructor(editContext: FlowEditContext, flow: XFlowConfiguration);
    readonly sequenceOuterPadding: string;
    getShowTopItems(): IInjectTopItem;
    isCollapsed(sequence: FlowStepSequence): boolean;
    setIsCollapsed(sequence: FlowStepSequence, isCollapsed: boolean): void;
    toggleIsCollapsed(event: React.MouseEvent<HTMLDivElement>, sequence: FlowStepSequence): void;
    onSetSelection(sequence: FlowStepSequence): void;
    clearSelection(): void;
    onSelectStepStrategyConnect(element: HTMLElement, step: BaseFlowStep): void;
    readonly linePathType: "smooth" | "grid" | "straight";
    getLine(value: FlowConnection): ILine;
    getLines(): ILine[];
    addStepToSequence(seq: FlowStepSequence, step: BaseFlowStep, index?: number): void;
    moveStepToSequence(step: BaseFlowStep, fromSeq: FlowStepSequence, toSeq: FlowStepSequence, index?: number): void;
    readonly candidateWidth: number;
    readonly candidateHeight: number;
    readonly candidateDraggingWidth: number;
    readonly candidateDraggingHeight: number;
    readonly candidatePadding: string;
    readonly candidateFontSize: number;
    getCandidateCommonStyles(): {
        width: number;
        height: number;
        padding: string;
        fontSize: number;
        dragging: {
            width: number;
            height: number;
        };
    };
    getErrorSeqeuenceMainSize(sequence: FlowStepSequence): {
        width: number;
        height: number | undefined;
        fontSize: number;
        title: {
            color: string;
        };
    };
    getErrorSequenceTitleStyle(sequence: FlowStepSequence): {
        color: string;
    };
    getEndSequenceMainSize(sequence: FlowStepSequence): {
        width: number;
        height: number | undefined;
    };
    getEndSequenceTitleStyle(sequence: FlowStepSequence): {
        color: string;
    };
    getPrimaryMainSize(sequence: FlowStepSequence): {
        width: number;
        height: number | undefined;
    };
    getPrimarySequenceTitleStyle(sequence: FlowStepSequence): {
        color: string;
    };
    readonly collapsedWidth: number;
    readonly collapsedHeight: number;
    readonly errorCollapsedWidth: number;
    readonly emptyTextFontSize: number;
    readonly sequenceTitleColor: string;
    readonly stackWidth: number;
    readonly stackHeight: number;
    getSequenceMainSize(sequence: FlowStepSequence): {
        width: number;
        height: number | undefined;
    };
    getSequenceExtraSize(sequence: FlowStepSequence): {
        width: number;
        height: number;
    };
    getSequenceRealSize(sequence: FlowStepSequence): {
        width: number;
        height: number | undefined;
    };
    getSequenceTitleStyle(sequence: FlowStepSequence): {
        color: string;
    };
    getEmptySequenceStyle(sequence: FlowStepSequence): {
        fontSize: number;
    };
    getSequenceStepsForPaths(sequence: FlowStepSequence): readonly BaseFlowStep[];
    getPathsForStep(step: BaseFlowStep): FlowStepOutputInstructions[];
    getSequenceInstructions(sequence: FlowStepSequence): readonly FlowStepOutputInstructions[];
    readonly sequenceCandidateShift: number;
    setCandidateDesiredPositionForSequenceStrategy(inst: FlowStepOutputInstructions): void;
    readonly pathCandidateShift: number;
    setCandidateDesiredPositionForStepStrategy(inst: FlowStepOutputInstructions): void;
    setCandidateDesiredPositionForSeqeuence(sequence: FlowStepSequence): void;
    isShowStepConnection(step: BaseFlowStep): boolean;
    getInitialSequenceStrategy(): FlowStepSequenceStrategy;
    isEnabledPlaceholderWhileDrop(sequence: FlowStepSequence): boolean;
    getSequenceBackgroundColor(sequence: FlowStepSequence): string;
    getSequenceBorderColor(sequence: FlowStepSequence): string;
    renderSequenceTitle(sequence: FlowStepSequence): JSX.Element | null;
    renderSequenceActions(sequence: FlowStepSequence): JSX.Element | null;
    renderSequenceContent(sequence: FlowStepSequence): JSX.Element | null;
    renderStepStrategy(): JSX.Element;
    renderSequenceStrategy(sequence: FlowStepSequence): JSX.Element | null;
    renderExtraContents(editContext: FlowEditContext): JSX.Element | null;
    renderEditUI(elem: IFlowElement | undefined | null): JSX.Element | null;
    getSequenceDroppableDirection(sequence: FlowStepSequence): Direction;
}
