export declare enum GroupModificationType {
    TASK_GROUP_UP = "task_group_up",
    TASK_GROUP_DOWN = "task_group_down",
    UNGROUP_ALL_TASKS = "ungroup_all_tasks",
    SPLIT_GROUP = "split_group",
    MERGE_GROUP_UP = "merge_group_up",
    MERGE_GROUP_DOWN = "merge_group_down",
    REMOVE_TASK = "remove_task",
    REMOVE_GROUP = "remove_group"
}
export declare function moveGroupUp<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function moveGroupDown<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function ungroupAllTasks<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function splitGroup<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function mergeGroupUp<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function mergeGroupDown<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function removeTask<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function removeGroup<T>(tasks: T[][], groupIndex: number, taskIndex: number): T[][];
export declare function createGroupModificationHandlers<T>(): {
    moveGroupUp: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    moveGroupDown: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    ungroupAll: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    splitGroup: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    mergeGroupUp: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    mergeGroupDown: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    removeTask: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
    removeGroup: (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
};
export type GroupModificationHandlers<T> = ReturnType<typeof createGroupModificationHandlers<T>>;
export declare function getHandlerForModificationType<T>(handlers: GroupModificationHandlers<T>, type: GroupModificationType): (tasks: T[][], groupIndex: number, taskIndex: number) => T[][];
//# sourceMappingURL=GroupModificationUtils.d.ts.map