/**
 * Configuration Merging
 *
 * Deep merge utilities for combining configuration from multiple sources
 * with precedence handling.
 */
import type { Configuration, PartialConfiguration } from './types.js';
/**
 * Deep merges two objects, with source values overriding target values
 * Arrays are replaced, not merged
 *
 * @param target - Base object
 * @param source - Override object
 * @returns Merged object
 */
export declare function deepMerge<T extends Record<string, unknown>>(target: T, source: Partial<T>): T;
/**
 * Merges partial configuration into a complete configuration
 *
 * @param base - Base configuration (typically defaults)
 * @param partial - Partial configuration to merge in
 * @returns Complete merged configuration
 */
export declare function mergeConfiguration(base: Configuration, partial: PartialConfiguration): Configuration;
/**
 * Merges multiple partial configurations in order
 * Later configurations override earlier ones
 *
 * @param base - Base configuration
 * @param partials - Partial configurations to merge, in order
 * @returns Complete merged configuration
 */
export declare function mergeConfigurations(base: Configuration, ...partials: PartialConfiguration[]): Configuration;
/**
 * Creates a configuration by merging defaults with partial config
 *
 * @param partial - Partial configuration
 * @returns Complete configuration with defaults filled in
 */
export declare function createConfiguration(partial?: PartialConfiguration): Configuration;
/**
 * Creates a deep clone of a configuration
 */
export declare function cloneConfiguration(config: Configuration): Configuration;
/**
 * Compares two configurations and returns the differences
 */
export declare function diffConfigurations(a: Configuration, b: Configuration): PartialConfiguration;
/**
 * Checks if two configurations are equal
 */
export declare function configurationsEqual(a: Configuration, b: Configuration): boolean;
//# sourceMappingURL=merge.d.ts.map