import { FileTreeMutationEvent } from "./publicTypes.js";

//#region src/model/mutationEvents.d.ts
type FileTreeStoreEventInvalidation = {
  canonicalChanged: boolean;
  projectionChanged: boolean;
  visibleCountDelta: number | null;
};
type FileTreeStoreAddEvent = FileTreeStoreEventInvalidation & {
  operation: 'add';
  path: string;
};
type FileTreeStoreRemoveEvent = FileTreeStoreEventInvalidation & {
  operation: 'remove';
  path: string;
  recursive: boolean;
};
type FileTreeStoreMoveEvent = FileTreeStoreEventInvalidation & {
  from: string;
  operation: 'move';
  to: string;
};
type FileTreeStoreIgnoredSemanticEvent = FileTreeStoreEventInvalidation & {
  operation: 'expand' | 'collapse' | 'mark-directory-unloaded' | 'begin-child-load' | 'apply-child-patch' | 'complete-child-load' | 'fail-child-load' | 'cleanup';
};
type FileTreeStoreSemanticEvent = FileTreeStoreAddEvent | FileTreeStoreRemoveEvent | FileTreeStoreMoveEvent | FileTreeStoreIgnoredSemanticEvent;
type FileTreeStoreBatchEvent = FileTreeStoreEventInvalidation & {
  events: readonly FileTreeStoreSemanticEvent[];
  operation: 'batch';
};
type FileTreeStoreEvent = FileTreeStoreSemanticEvent | FileTreeStoreBatchEvent;
declare function isPathMutationEvent(event: FileTreeStoreEvent): event is Extract<FileTreeStoreEvent, {
  operation: 'add' | 'remove' | 'move' | 'batch';
}>;
declare function remapPathThroughMutation(path: string | null, event: FileTreeStoreEvent, preserveRemovedPath?: boolean): string | null;
declare function toTreesMutationEvent(event: FileTreeStoreEvent): FileTreeMutationEvent | null;
//#endregion
export { isPathMutationEvent, remapPathThroughMutation, toTreesMutationEvent };
//# sourceMappingURL=mutationEvents.d.ts.map