export interface Newtype { readonly _URI: URI; readonly _A: A; } export declare type AnyNewtype = Newtype; export interface Constructor { URI: URI; wrap: (_: T) => Newtype; unwrap: (_: Newtype) => T; } export interface GenericConstructor { URI: URI; wrap: (_: T) => Newtype; unwrap: (_: Newtype) => T; of: () => Constructor; } export interface ConstructorK> { wrap: (_: T) => K; unwrap: (_: K) => T; } export declare const typeDef: () => (URI: URI) => Constructor; export declare const genericDef: (URI: URI) => GenericConstructor; export declare const newtype: >() => (_: Constructor) => ConstructorK; export declare type TypeOf> = [T] extends [Constructor] ? Newtype : never; export declare type Generic> = [K] extends [GenericConstructor] ? Newtype : never; //# sourceMappingURL=Newtype.d.ts.map