import { type ConfigAccessor } from './config-accessor.js';
import { type Primitive } from '../../../business/utils/primitive.js';
/**
 * Implementations of config mutator provide the necessary methods to access and modify a configuration.
 */
export interface ConfigMutator extends ConfigAccessor {
    /**
     * Puts a scalar value into the configuration.
     *
     * @param key - The key to use to store the value in the configuration.
     * @param value - The value to store in the configuration.
     */
    putScalar(key: string, value: Primitive): void;
    /**
     * Puts an array of string, boolean or numeric values into the configuration.
     * @param key - The key to use to store the values in the configuration.
     * @param value - The values to store in the configuration.
     */
    putScalarArray(key: string, value: Primitive[]): void;
    /**
     * Puts an object value into the configuration.
     * @param key - The key to use to store the value in the configuration.
     * @param value - The value to store in the configuration.
     */
    putObject<T>(key: string, value: T): void;
    /**
     * Puts an array of object values into the configuration.
     * @param key - The key to use to store the values in the configuration.
     * @param value - The values to store in the configuration.
     */
    putObjectArray<T>(key: string, value: T[]): void;
}
