import { Gantt } from '../base/gantt';
import { IGanttData, ITaskData, ITaskbarEditedEventArgs, ITaskSegment } from '../base/interface';
import { DateProcessor } from '../base/date-processor';
/**
 * File for handling taskbar editing operation in Gantt.
 */
export declare class TaskbarEdit extends DateProcessor {
    protected parent: Gantt;
    taskBarEditElement: HTMLElement;
    taskBarEditRecord: IGanttData;
    taskBarEditAction: string;
    roundOffDuration: boolean;
    private droppedTarget;
    leftValue: number;
    private previousLeftValue;
    private mouseDownX;
    private mouseDownY;
    mouseMoveX: number;
    mouseMoveY: number;
    previousItem: ITaskData;
    previousItemProperty: string[];
    taskbarEditedArgs: ITaskbarEditedEventArgs;
    private progressBorderRadius;
    private scrollTimer;
    timerCount: number;
    dragMouseLeave: boolean;
    tooltipPositionX: number;
    isMouseDragged: boolean;
    private falseLine;
    connectorSecondElement: Element;
    connectorSecondRecord: IGanttData;
    connectorSecondAction: string;
    fromPredecessorText: string;
    toPredecessorText: string;
    finalPredecessor: string;
    dependencyCancel: boolean;
    drawPredecessor: boolean;
    private highlightedSecondElement;
    private editTooltip;
    private isDragged;
    private canDrag;
    private mainElement;
    private currentSegmentIndex;
    private progressValue;
    /** @private */
    tapPointOnFocus: boolean;
    private editElement;
    touchEdit: boolean;
    private prevZIndex;
    private previousMouseMove;
    private elementOffsetLeft;
    private elementOffsetTop;
    private elementOffsetWidth;
    private elementOffsetHeight;
    segmentIndex: number;
    private targetElement;
    currentItemTop: number;
    currentItemPrevTop: number;
    topValue: number;
    draggedRecordMarginTop: string;
    dragMoveY: number;
    private realTaskbarElement;
    private cloneTaskbarElement;
    private taskbarElement;
    private taskbarResizer;
    private currentIndex;
    private currentData;
    private isClonedElement;
    private draggedTreeGridRowElement;
    private draggedTreeGridRowHeight;
    private updatePosition;
    private tooltipValue;
    previousFlatData: object[];
    previousIds: string[];
    private oldData;
    constructor(ganttObj?: Gantt);
    private wireEvents;
    /**
     * To initialize the public property.
     *
     * @returns {void} .
     * @private
     */
    private initPublicProp;
    private mouseDownHandler;
    private mouseClickHandler;
    private showHideActivePredecessors;
    private applyActiveColor;
    private validateConnectorPoint;
    private mouseLeaveHandler;
    /**
     * To update taskbar edited elements on mouse down action.
     *
     * @param {PointerEvent} e .
     * @returns {void} .
     * @private
     */
    updateTaskBarEditElement(e: PointerEvent): void;
    /**
     * To show/hide taskbar editing elements.
     *
     * @param {Element} element .
     * @param {Element} secondElement .
     * @param {boolean} fadeConnectorLine .
     * @returns {void} .
     * @private
     */
    showHideTaskBarEditingElements(element: Element, secondElement: Element, fadeConnectorLine?: boolean): void;
    /**
     * To get taskbar edit actions.
     *
     * @param {PointerEvent} e .
     * @returns {string} .
     * @private
     */
    private getTaskBarAction;
    /**
     * To update property while perform mouse down.
     *
     * @param {PointerEvent} event .
     * @returns {void} .
     * @private
     */
    private updateMouseDownProperties;
    private isMouseDragCheck;
    removeFirstBorder(element: any): void;
    removeLastBorder(element: Element): void;
    private removetopOrBottomBorder;
    private topOrBottomBorder;
    private removeChildBorder;
    private addRemoveClasses;
    private addErrorElem;
    private removeErrorElem;
    ensurePosition(draggedRecords: IGanttData[], currentRecord: IGanttData): void;
    /**
     * To handle mouse move action in chart
     *
     * @param {PointerEvent} event .
     * @returns {void} .
     * @private
     */
    mouseMoveAction(event: PointerEvent): void;
    /**
     * Method to update taskbar editing action on mous move.
     *
     * @param {PointerEvent} e .
     * @param {boolean} isMouseClick .
     * @returns {void} .
     * @private
     */
    taskBarEditingAction(e: PointerEvent, isMouseClick: boolean): void;
    /**
     * To update property while perform mouse move.
     *
     * @param {PointerEvent} event .
     * @returns {void} .
     * @private
     */
    private updateMouseMoveProperties;
    /**
     * To start the scroll timer.
     *
     * @param {string} direction .
     * @returns {void} .
     * @private
     */
    startScrollTimer(direction: string): void;
    /**
     * To stop the scroll timer.
     *
     * @returns {void} .
     * @private
     */
    stopScrollTimer(): void;
    /**
     * To update left and width while perform taskbar drag operation.
     *
     * @param {PointerEvent} e .
     * @returns {void} .
     * @private
     */
    private enableDragging;
    private validateProgressWidth;
    /**
     * To update left and width while perform progress resize operation.
     *
     * @param {PointerEvent} e .
     * @param {number} segmentIndex .
     * @returns {void} .
     * @private
     */
    private performProgressResize;
    /**
     * To update left and width while perform taskbar left resize operation.
     *
     * @param {PointerEvent} e .
     * @returns {void} .
     * @private
     */
    private enableLeftResizing;
    private enableSplitTaskLeftResize;
    /**
     * Update mouse position and edited item value
     *
     * @param {PointerEvent} e .
     * @param {ITaskData} item .
     * @returns {void} .
     */
    private updateEditPosition;
    /**
     *  To update milestone property.
     *
     * @param {ITaskData} item .
     * @returns {void} .
     * @private
     */
    private updateIsMilestone;
    /**
     * To update left and width while perform taskbar right resize operation.
     *
     * @param {PointerEvent} e .
     * @returns {void} .
     * @private
     */
    private enableRightResizing;
    /**
     * To updated startDate and endDate while perform taskbar edit operation.
     *
     * @returns {void} .
     * @private
     */
    private updateEditedItem;
    /**
     * Extracts the maximum end date from a list of predecessor relationships.
     * The end date is selected based on the type of dependency:
     * - FS (Finish to Start) and FF (Finish to Finish): uses the end date.
     * - SS (Start to Start) and SF (Start to Finish): uses the start date.
     *
     * @param {IPredecessor[]} predecessorList - An array of predecessor links to analyze.
     * @returns {{ maxEndDate: Date }} - The latest relevant date among all predecessors.
     */
    private extractEndDates;
    /**
     * Validates whether the given task has a valid dependency configuration.
     * It compares the task's start or end date against the latest required predecessor date
     * and ensures the task starts after all its dependencies are satisfied.
     *
     * @param {IGanttData} record - The Gantt task to validate.
     * @returns {{ isValid: boolean }} - An object indicating if the task's dependencies are valid.
     */
    private isValidDependency;
    private updateChildDrag;
    private updateSplitLeftResize;
    private updateSplitRightResizing;
    sumOfDuration(segments: ITaskSegment[]): number;
    private setSplitTaskDrag;
    /**
     * To get roundoff enddate.
     *
     * @param {ITaskData} ganttRecord .
     * @param {boolean} isRoundOff .
     * @returns {number} .
     * @private
     */
    private getRoundOffEndLeft;
    /**
     * To get roundoff startdate.
     *
     * @param {ITaskData | ITaskSegment} ganttRecord .
     * @param {boolean} isRoundOff .
     * @returns {number} .
     * @private
     */
    getRoundOffStartLeft(ganttRecord: ITaskData | ITaskSegment, isRoundOff: boolean): number;
    private getDSTTransitions;
    private shouldAdjustForDst;
    /**
     * To get date by left value.
     *
     * @param {number} left .
     * @param {boolean} isMilestone .
     * @param {ITaskData} property .
     * @returns {Date} .
     * @private
     */
    getDateByLeft(left: number, isMilestone?: boolean, property?: ITaskData): Date;
    /**
     * To set item position.
     *
     * @returns {void} .
     * @private
     */
    private setItemPosition;
    /**
     * To handle mouse up event in chart
     *
     * @param {PointerEvent} e .
     * @returns {void} .
     * @private
     */
    mouseUpHandler(e: PointerEvent): void;
    /**
     * To perform taskbar edit operation.
     *
     * @param {PointerEvent} event .
     * @returns {void} .
     * @private
     */
    taskBarEditedAction(event: PointerEvent): void;
    /**
     * To cancel the taskbar edt action.
     *
     * @returns {void} .
     * @private
     */
    cancelTaskbarEditActionInMouseLeave(): void;
    updateSegmentProgress(taskData: ITaskData): void;
    /**
     * To trigger taskbar edited event.
     *
     * @param {ITaskbarEditedEventArgs} arg .
     * @returns {void} .
     * @private
     */
    taskbarEdited(arg: ITaskbarEditedEventArgs): void;
    /**
     * To get progress in percentage.
     *
     * @param {number} parentwidth .
     * @param {number} progresswidth .
     * @returns {number} .
     * @private
     */
    private getProgressPercent;
    /**
     * false line implementation.
     *
     * @returns {void} .
     * @private
     */
    private drawFalseLine;
    /**
     *
     * @param {boolean} isRemoveConnectorPointDisplay .
     * @returns {void} .
     * @private
     */
    removeFalseLine(isRemoveConnectorPointDisplay: boolean): void;
    /**
     *
     * @param {PointerEvent} e .
     * @returns {void} .
     * @private
     */
    updateConnectorLineSecondProperties(e: PointerEvent): void;
    private triggerDependencyEvent;
    private getCoordinate;
    private getElementByPosition;
    private multipleSelectionEnabled;
    private unWireEvents;
    /**
     * @returns {void} .
     * @private
     */
    destroy(): void;
}
