import type { Config, ConfigEnvironmentFileV2, ConfigFileV1, ConfigFileV2 } from '@taqueria/protocol/types';
export type ConfigFileSetV2 = {
    config: ConfigFileV2;
    environments: {
        [name: string]: ConfigEnvironmentFileV2;
    };
};
export declare const readJsonFileInterceptConfig: (readJsonFile: <T>(filePath: string) => Promise<T>) => <T>(filePath: string) => Promise<T>;
export declare const readConfigFiles: (readJsonFile: <T>(filePath: string) => Promise<T>) => (configFilePath: string) => Promise<ConfigFileSetV2>;
export declare const writeJsonFileInterceptConfig: (writeJsonFile: (filePath: string) => (data: unknown) => Promise<string>) => (filePath: string) => (data: unknown) => Promise<string>;
export declare const writeConfigFiles: (writeJsonFile: (filePath: string) => (data: unknown) => Promise<string>) => (configFilePath: string) => (configFileSetV2: ConfigFileSetV2) => Promise<string>;
/** Migrate FileV1 to FileV2
 *
 * NOTE: Although this is nearly identical to transformConfigToConfigFileV2
 * This function should be sealed while the transformConfigToConfigFileV2
 * will change iteratively to become more like V2
 */
export declare const transformConfigFileV1ToConfigFileSetV2: (configFileV1: ConfigFileV1) => ConfigFileSetV2;
export declare const transformConfigToConfigFileV2: (config: Config) => ConfigFileSetV2;
export declare const transformConfigFileV2ToConfig: (configFileSetV2: ConfigFileSetV2) => Config;
