/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { FormGroup } from "@angular/forms";
import type { GanttComponent } from "../../gantt.component";
/**
 * The event data for the task editing events.
 */
export interface TaskEditEvent {
    /**
     * The `TaskEditItem` associated with the edited task.
     * The parent item is accessible through the `parent` property,
     * and allows traversing all ancestors that need to be updated.
     */
    item: TaskEditItem;
    /**
     * The FormGroup instance associated with the edited task.
     */
    taskFormGroup?: FormGroup;
    /**
     * The dependencies associated with the edited task.
     */
    dependencies: EditEventDependencies;
    /**
     * The GanttComponent instance.
     */
    sender: GanttComponent;
}
/**
 * The `TaskEditItem` associated with the edited task.
 * The parent item is accessible through the `parent` property,
 * and allows traversing all ancestors that need to be updated.
 */
export interface TaskEditItem {
    /**
     * The original data item for this entry.
     */
    dataItem: any;
    /**
     * Holds the parent data item and data about its parent.
     * If the current data item is at root level, this prop will be set to `null`.
     */
    parent?: TaskEditItem;
}
/**
 * The `EditEventDependencies` object associated with the edited task.
 * The created, updated and deleted items are accessible through their respective properties.
 */
export interface EditEventDependencies {
    /**
     * Lists the newly created dependencies.
     */
    createdItems: any[];
    /**
     * Lists the updated dependencies.
     */
    updatedItems: any[];
    /**
     * Lists the deleted dependencies.
     */
    deletedItems: any[];
}
/**
 * @hidden
 */
export type EditResultType = 'save' | 'remove' | 'cancel';
/**
 * @hidden
 */
export interface EditEvent {
    taskFormGroup: FormGroup;
    dataItem: any;
    dependencies: EditEventDependencies;
    editResultType: EditResultType;
}
