import { Static, RuntypeBase, Codec } from '../runtype'; export declare type RecordFields = { readonly [_: string]: RuntypeBase; }; declare type RecordStaticType = IsPartial extends false ? IsReadonly extends false ? { -readonly [K in keyof O]: Static; } : { readonly [K in keyof O]: Static; } : IsReadonly extends false ? { -readonly [K in keyof O]?: Static; } : { readonly [K in keyof O]?: Static; }; export interface InternalRecord extends Codec> { readonly tag: 'object'; readonly fields: O; readonly isPartial: IsPartial; readonly isReadonly: IsReadonly; asPartial(): Partial; asReadonly(): IsPartial extends false ? Obj : Partial; pick(...keys: TKeys): InternalRecord, IsPartial, IsReadonly>; omit(...keys: TKeys): InternalRecord, IsPartial, IsReadonly>; } export { Obj as Object }; declare type Obj = InternalRecord; export declare type Partial = InternalRecord; export declare function isObjectRuntype(runtype: RuntypeBase): runtype is InternalRecord; /** * Construct an object runtype from runtypes for its values. */ export declare function InternalObject(fields: O, isPartial: Part, isReadonly: RO): InternalRecord; declare function Obj(fields: O): Obj; export declare function ReadonlyObject(fields: O): Obj; export declare function Partial(fields: O): Partial; export declare function ReadonlyPartial(fields: O): Partial;