declare type AnyConfig, U extends Record> = { [V in keyof U]: V extends keyof T ? U[V] extends (...args: any[]) => any ? (argv: T[V]) => T[V] : T[V] : U[V] } declare type CalculatedConfig< T extends Record, U extends Record > = T & { [V in keyof U]: V extends keyof T ? T[V] : U[V] } export default function mergeConfig< T extends Record, U extends Record >( defaultConfig: T, ...configs: (AnyConfig | null | undefined)[] ): CalculatedConfig export {}