import { NodeApi } from "../interfaces/node-api";
import { IdObj } from "./utils";
export type CreateHandler<T> = (args: {
    parentId: string | null;
    parentNode: NodeApi<T> | null;
    index: number;
    type: "internal" | "leaf";
}) => (IdObj | null) | Promise<IdObj | null>;
export type MoveHandler<T> = (args: {
    dragIds: string[];
    dragNodes: NodeApi<T>[];
    parentId: string | null;
    parentNode: NodeApi<T> | null;
    index: number;
}) => void | Promise<void>;
export type RenameHandler<T> = (args: {
    id: string;
    name: string;
    node: NodeApi<T>;
}) => void | Promise<void>;
export type DeleteHandler<T> = (args: {
    ids: string[];
    nodes: NodeApi<T>[];
}) => void | Promise<void>;
export type EditResult = {
    cancelled: true;
} | {
    cancelled: false;
    value: string;
};
