import Observable, { Property } from "./observable"; export declare type ObjectTemplate = { [K in keyof O]: O[K] extends Observable ? I : (O[K] extends Record ? ObjectTemplate : (O[K] extends Array ? ArrayTemplate : O[K])); }; export declare type ArrayTemplate = Array ? I : (A extends Record ? ObjectTemplate : A)>; export declare type CombinedTemplate = O extends Record ? ObjectTemplate : (O extends Array ? ArrayTemplate : (O extends Observable ? I2 : O)); export default function combineTemplate(template: T): Property>;