import { readFile as _readFile } from 'node:fs/promises'; import { type ServiceProperties } from 'knifecycle'; import { type LogService } from 'common-services'; export declare enum NodeEnv { Test = "test", Development = "development", Production = "production" } export type BaseAppEnv = 'local'; export interface BaseAppEnvVars { NODE_ENV: NodeEnv; ISOLATED_ENV?: string; } export interface AppEnvVars extends BaseAppEnvVars { } export interface ProcessEnvConfig { BASE_ENV?: Partial; } export type ProcessEnvDependencies = ProcessEnvConfig & { APP_ENV: T; PROJECT_DIR: string; PROCESS_ENV: Partial; log?: LogService; readFile?: typeof _readFile; }; /** * Initialize the ENV service using process env plus dotenv files * loaded in `.env.node.${ENV.NODE_ENV}` and `.env.app.${APP_ENV}`. * @param {Object} services * The services `ENV` depends on * @param {Object} [services.BASE_ENV] * Base env vars that will be added to the environment * @param {Object} services.APP_ENV * The injected `APP_ENV` value * @param {Object} services.PROCESS_ENV * The injected `process.env` value * @param {Object} services.PROJECT_DIR * The NodeJS project directory * @param {Object} [services.log=noop] * An optional logging service * @return {Promise} * A promise of an object containing the actual env vars. */ declare function initENV({ BASE_ENV, APP_ENV, PROCESS_ENV, PROJECT_DIR, log, readFile, }: ProcessEnvDependencies): Promise; declare const _default: ServiceProperties & typeof initENV; export default _default;