import { InertiaAppConfig } from './types'; type ConfigKeys = T extends Function ? never : string extends keyof T ? string : Extract | { [Key in Extract]: T[Key] extends object ? `${Key}.${ConfigKeys & string}` : never; }[Extract]; type ConfigValue> = K extends `${infer P}.${infer Rest}` ? P extends keyof T ? Rest extends ConfigKeys ? ConfigValue : never : never : K extends keyof T ? T[K] : never; type ConfigSetObject = { [K in ConfigKeys]?: ConfigValue; }; type FirstLevelOptional = { [K in keyof T]?: T[K] extends object ? { [P in keyof T[K]]?: T[K][P]; } : T[K]; }; export declare class Config { protected config: FirstLevelOptional; protected defaults: TConfig; constructor(defaults: TConfig); extend(defaults?: TExtension): Config; replace(newConfig: FirstLevelOptional): void; get>(key: K): ConfigValue; set>(keyOrValues: K | Partial>, value?: ConfigValue): void; } export declare const config: Config; export {};