import * as t from 'io-ts'; import * as R from './Result'; import * as M from './Maybe'; import * as P from './Phantom'; import { Nominal } from './Nominal'; export declare type Serialisable = { uri: URI; value: A; }; export declare const Serialisable: (uri: URI, value: A) => Serialisable; export declare const serialisableC: (uri: t.LiteralC, value: t.Type) => t.Type, Serialisable, unknown>; export declare type ToSerialisable = U extends M.Maybe ? M.SerialiseableMaybe> : U extends R.Result ? R.SerialiseableResult, ToSerialisable> : U extends P.Phantom ? P.SerialiseablePhantom> : U extends Nominal ? A : U extends Date ? SerialiseableDate : U extends Record ? SerialiseableObject<{ [K in keyof U]: ToSerialisable; }> : U extends Array ? SerialiseableArray> : U; export declare const isInstanceOfUriClass: (uri: URI, a: unknown) => a is A; export declare const toSerialisable: (a: A) => ToSerialisable; export declare const fromSerialisable: (a: ToSerialisable) => A; export declare type ObjectURI = 'Object'; export declare const objectURI: ObjectURI; declare type SerialiseableObject = Serialisable; export declare type DateURI = 'Date'; export declare const dateURI: DateURI; declare type SerialiseableDate = Serialisable; export declare type ArrayURI = 'Array'; export declare const arrayURI: ArrayURI; declare type SerialiseableArray = Serialisable>; export {};