import type { ReadFile, ReadFileSystemInfo } from "@zwave-js/shared/bindings";
export declare function clearTemplateCache(): void;
/** Parses a JSON file with $import keys and replaces them with the selected objects */
export declare function readJsonWithTemplate(fs: ReadFileSystemInfo & ReadFile, filename: string, rootDirs?: string | string[]): Promise<Record<string, unknown>>;
/**
 * Resolves a single `$import` specifier (as used in device config files) to the
 * JSON it pulls in, with the imported file's own `$import`s resolved recursively.
 *
 * @param fs The filesystem used to read config and template files
 * @param contextFilename The file the specifier appears in, used to resolve relative paths and same-file (`#selector`) imports
 * @param specifier The `$import` specifier to resolve, e.g. `~/templates/master_template.json#base_enable_disable`
 * @param rootDirs The root directories that `~/`-prefixed specifiers are resolved against
 */
export declare function resolveTemplateImport(fs: ReadFileSystemInfo & ReadFile, contextFilename: string, specifier: string, rootDirs?: string | string[]): Promise<Record<string, unknown>>;
/**
 * Resolves the target file of an `$import` specifier to an absolute path,
 * without reading or resolving the file's contents. Returns `undefined` if the
 * specifier is invalid or the referenced file cannot be located.
 *
 * @param fs The filesystem used to locate `~/`-prefixed files
 * @param contextFilename The file the specifier appears in, used to resolve relative and same-file imports
 * @param specifier The `$import` specifier
 * @param rootDirs The root directories that `~/`-prefixed specifiers are resolved against
 */
export declare function resolveImportPath(fs: ReadFileSystemInfo & ReadFile, contextFilename: string, specifier: string, rootDirs?: string | string[]): Promise<string | undefined>;
//# sourceMappingURL=JsonTemplate.d.ts.map