import { NamedTypeDefinitionDeferred } from './reflection-type'; import { ShapeOf } from './runtime'; export declare class ValueClass { static reflection: NamedTypeDefinitionDeferred; } type WritableArray = Array>; type Fun = (...a: any[]) => any; type WritableObject = { -readonly [P in keyof T]: Writable; }; export type Writable = T extends ReadonlyArray ? WritableArray : T extends Fun ? T : T extends object ? WritableObject : T; export declare function toJSON(value: Cls): Cls extends ValueClass ? Writable> : never; export declare function toShape(value: Cls): Cls extends ValueClass ? ShapeOf : never; export {};