import { TASONSerializerOptions } from "../TASONSerializerOptions"; import { Constructor } from "type-fest"; export interface TASONScalarTypeInfo { kind: "scalar"; ctor: Constructor; serialize?: (value: T, options: TASONSerializerOptions) => string; deserialize?: (value: string, options: TASONSerializerOptions) => T; } export interface TASONObjectTypeInfo { kind: "object"; ctor: T extends {} ? Constructor : never; serialize?: (value: T, options: TASONSerializerOptions) => Partial & Record; deserialize?: (value: Readonly & Record>, options: TASONSerializerOptions) => T; } export type TASONTypeInfo = TASONScalarTypeInfo | TASONObjectTypeInfo; export type TASONNamedTypeInfo = TASONTypeInfo & { name: string; }; export declare function defineType(type: TASONTypeInfo): TASONTypeInfo;