import { ConfigInterface } from "../../interface/ConfigInterface";
import { AbstractProcess } from "../abstract/AbstractProcess";
/**
 * ConfigStore is a singleton that loads and manages the application's configuration.
 * It prioritizes CLI arguments over configuration file values.
 */
export declare class ConfigStore extends AbstractProcess {
    private static instance;
    private config;
    private constructor();
    /**
     * Retrieves the singleton instance of ConfigStore.
     * @returns The singleton instance of ConfigStore.
     */
    static getInstance(): ConfigStore;
    /**
     * Retrieves a value from the configuration using dot notation.
     *
     * @param key - The key of the configuration to retrieve.
     * @returns The configuration value or undefined if not found.
     */
    get<T>(key: string): T | undefined;
    /**
     * Sets a value in the configuration using dot notation.
     *
     * @param key - The key of the configuration to set.
     * @param value - The value to set.
     */
    set(key: string, value: unknown): void;
    /**
     * Merges the provided configuration into the existing configuration using deep merge.
     *
     * @param newConfig - The new configuration to merge.
     */
    merge(newConfig: Partial<ConfigInterface>): void;
    /**
     * Retrieves the current configuration object.
     * @returns The current configuration.
     */
    getConfig(): ConfigInterface;
    /**
     * Prints the current configuration to the console.
     */
    print(): void;
    /**
     * Deeply merges two objects, preventing prototype pollution.
     *
     * @param target - The target object.
     * @param source - The source object.
     * @returns The merged object.
     */
    private deepMerge;
}
