/** * Adapted from https://github.com/rightfold/purescript-logging * * @since 0.3.0 */ import { Applicative, Applicative1, Applicative2 } from 'fp-ts/es6/Applicative' import { Predicate } from 'fp-ts/es6/function' import { HKT, Kind, Kind2, URIS, URIS2 } from 'fp-ts/es6/HKT' import { Monoid } from 'fp-ts/es6/Monoid' /** * A logger receives records and potentially performs some effects * * @since 0.3.0 */ export interface Logger { (a: A): HKT } /** * @since 0.3.0 */ export interface LoggerM { readonly contramap: (fa: Logger, f: (b: B) => A) => Logger readonly filter: (logger: Logger, predicate: Predicate) => Logger readonly getMonoid: () => Monoid> } /** * @since 0.3.0 */ export interface Logger1 { (a: A): Kind } /** * @since 0.3.0 */ export interface LoggerM1 { readonly contramap: (fa: Logger1, f: (b: B) => A) => Logger1 readonly filter: (logger: Logger1, predicate: Predicate) => Logger1 readonly getMonoid: () => Monoid> } /** * @since 0.3.3 */ export interface Logger2 { (a: A): Kind2 } /** * @since 0.3.3 */ export interface LoggerM2 { readonly contramap: (fa: Logger2, f: (b: B) => A) => Logger2 readonly filter: (logger: Logger2, predicate: Predicate) => Logger2 readonly getMonoid: () => Monoid> } /** * @since 0.3.0 */ export declare function getLoggerM(M: Applicative2): LoggerM2 export declare function getLoggerM(M: Applicative1): LoggerM1 export declare function getLoggerM(M: Applicative): LoggerM