/** * Create a new class that can be instantiated. All instances of the class * will be immutable, and will be guaranteed to have all properties of the * interface T. Default values for these properties can be specified. Using * the getter and setter methods are type safe. * * @param data An object defining the default value for instances of the * class that will be returned. * * @return A class that can be used to instantiate immutable objects. */ export declare function Record(data: Pick): RecordInterface; export declare type RecordInterface = new (inner?: Partial) => Props & Methods; declare type Props = { readonly [P in keyof T]: T[P]; }; interface Methods { get(key: K): V; set(key: K, value: V): this; merge(inner: Partial | { [key in K]: V; }): this; toJS(): any; } export {};