import { Template, Json2jsonOptions, FormattingFunction } from './Json2json'; declare type AnyFunction = (...args: any[]) => any; declare type Json2jsonReturnType = U extends string ? U extends `${string}[]${string}` ? any[] : any : U extends FormattingFunction ? ReturnType : {} extends { [K in Exclude]: any; } ? U extends { $path: string; $formatting: FormattingFunction; } ? U['$path'] extends `${string}[]${string}` ? ReturnType[] : ReturnType : U extends { $formatting: FormattingFunction; } ? ReturnType : U extends { $default: infer D; } ? D extends AnyFunction ? ReturnType : D : any : U extends { $path: string; } ? U['$path'] extends `${string}[]${string}` ? { [K in Exclude]: Json2jsonReturnType; }[] : { [K in Exclude]: Json2jsonReturnType; } : { [K in Exclude]: Json2jsonReturnType; }; export default function json2json(json: T, template: U, options?: Json2jsonOptions): Json2jsonReturnType; export { Template, Json2jsonOptions };