/* * ------------------------------------------- * Guard Model * ------------------------------------------- */ export interface Guard { is: (i: I) => i is A; } export type TypeOf = G extends Guard ? A : never; export type InputOf = G extends Guard ? I : never; export const URI = "Guard"; export type URI = typeof URI; declare module "@principia/prelude/HKT" { interface URItoKind { readonly [URI]: Guard; } interface URItoKind1 { readonly [URI]: Guard; } }