declare const c: { value(): ValueConfig; }; type Config = { [P in keyof T]: ValueConfig; }; declare function config(object: Config): void; interface ValueConfig { req(): ValueConfig; readOnly(): ValueConfig; validate(fn: (value: V) => boolean): ValueConfig; } type Author = { name: string; address: string; city: string; };