/**
 * Renames all contract and interface files in a given directory (recursively) by appending the provided version (e.g., V1).
 * Also updates the file contents to reflect the new contract names and handles import statements accordingly.
 * Skips files that are in the whitelist.
 *
 * @param {string} directoryPath - Relative path to the directory containing the contracts/interfaces.
 * @param {string} version - The version to append to the contract/interface names (e.g., "1" for V1).
 * @param {string[]} contractsWhitelist - Array of contract names to skip from renaming (without file extensions, e.g., ["B3TR"]).
 * @param {string[]} interfacesWhitelist - Array of interface names to skip from renaming (without file extensions, e.g., ["IERC6372"]).
 * @param {string[]} usagesToUpdate - Array of contract/interface names that should be updated in the codebase (e.g., ["IVoterRewards"]) even if they are not renamed through imports.
 *
 * @throws Will throw an error if the directory does not exist or if a file read/write fails.
 */
export declare function renameContractsAndInterfaces(directoryPath: string, version: string, contractsWhitelist: string[], interfacesWhitelist: string[], usagesToUpdate: string[]): Promise<void>;
