import type { ISolutionBuilder, SolutionDefinition } from "@uipath/resource-builder-sdk"; export declare function lowerFirstChar(value: string): string; export declare function normalizeResourceCasing(solution: Pick | null | undefined): number; /** * Normalize in-memory casing then dispose. Callers run * `normalizeResourceFileCasing(dir)` separately when this returns null * because the file-level repair needs the resolved solution dir and * should only run when dispose succeeded. */ export declare function saveCasingNormalized(builder: Pick & { context: { loadAsync(): Promise>; }; }): Promise; /** * The SDK reads `kind`/`type` through `toLowerFirstChar` but writes them back * verbatim, and its stale-path check compares paths case-insensitively. A * server-cased file therefore gains a lower-cased twin on the next save, both * carrying the same resource key, and the load after that throws "Node already * added to the graph" on a case-sensitive filesystem. Move every resource file * to the path the next save targets, and drop the twins a corrupted tree * already carries. */ export declare function normalizeResourceFileCasing(solutionDir: string): Promise;