/**
* @since 0.3.0
*/
import { Contravariant1 } from 'fp-ts/lib/Contravariant'
import { Predicate } from 'fp-ts/lib/function'
import { IO } from 'fp-ts/lib/IO'
import { Monoid } from 'fp-ts/lib/Monoid'
import { URIS3, Kind3, URIS2, Kind2, URIS, Kind, HKT } from 'fp-ts/lib/HKT'
import { MonadIO3, MonadIO2C, MonadIO2, MonadIO1, MonadIO } from 'fp-ts/lib/MonadIO'
declare module 'fp-ts/lib/HKT' {
interface URItoKind {
LoggerIO: LoggerIO
}
}
/**
* @since 0.3.0
*/
export declare const URI = 'LoggerIO'
/**
* @since 0.3.0
*/
export declare type URI = typeof URI
/**
* @since 0.3.0
*/
export interface LoggerIO {
(a: A): IO
}
/**
* @since 0.3.0
*/
export declare const filter: (logger: LoggerIO, predicate: Predicate) => LoggerIO
/**
* @since 0.3.0
*/
export declare const getMonoid: () => Monoid>
/**
* @since 0.3.0
*/
export declare const loggerIO: Contravariant1
/**
* @category Combinator
*
* @since 0.3.4
*
* @example
* import { pipe } from 'fp-ts/lib/pipeable'
* import * as IO from 'fp-ts/lib/IO'
* import * as C from 'fp-ts/lib/Console'
* import { withLogger } from 'logging-ts/lib/IO'
* import { equal } from 'assert'
*
* const log = withLogger(IO.io)(C.log)
*
* const result = pipe(
* IO.of(3),
* log(n => `lifted "${n}" to the IO monad`), // n === 3
* IO.map(n => n * n),
* log(n => `squared the value, which is "${n}"`), // n === 9
* )
*
* equal(result(), 9)
*/
export declare function withLogger(
M: MonadIO3
): (logger: LoggerIO) => (message: (a: A) => B) => (ma: Kind3) => Kind3
export declare function withLogger(
M: MonadIO2
): (logger: LoggerIO) => (message: (a: A) => B) => (ma: Kind2) => Kind2
export declare function withLogger(
M: MonadIO2C
): (logger: LoggerIO) => (message: (a: A) => B) => (ma: Kind2) => Kind2
export declare function withLogger(
M: MonadIO1
): (logger: LoggerIO) => (message: (a: A) => B) => (ma: Kind) => Kind
export declare function withLogger(
M: MonadIO
): (logger: LoggerIO) => (message: (a: A) => B) => (ma: HKT) => HKT
declare const contramap: (f: (b: B) => A) => (fa: LoggerIO) => LoggerIO
export {
/**
* @since 0.3.0
*/
contramap
}