import { HKT, Kind, Kind2, URIS, URIS2 } from 'fp-ts/lib/HKT'; import { Alternative, Alternative1, Alternative2 } from 'fp-ts/lib/Alternative'; export interface Sink { readonly value: A; readonly effects: HKT; } export interface SinkM { readonly map: (fa: Sink, f: (a: A) => B) => Sink; readonly of: (a: A) => Sink; readonly chain: (fa: Sink, f: (a: A) => Sink) => Sink; readonly ap: (fab: Sink B>, fa: Sink) => Sink; readonly newSink: (value: A, effects: HKT) => Sink; } export interface Sink1 { readonly value: A; readonly effects: Kind; } export interface SinkM1 { readonly map: (fa: Sink1, f: (a: A) => B) => Sink1; readonly of: (a: A) => Sink1; readonly chain: (fa: Sink1, f: (a: A) => Sink1) => Sink1; readonly ap: (fab: Sink1 B>, fa: Sink1) => Sink1; readonly newSink: (value: A, effects: Kind) => Sink1; } export interface Sink2 { readonly value: A; readonly effects: Kind2; } export interface SinkM2 { readonly map: (fa: Sink2, f: (a: A) => B) => Sink2; readonly of: (a: A) => Sink2; readonly chain: (fa: Sink2, f: (a: A) => Sink2) => Sink2; readonly ap: (fab: Sink2 B>, fa: Sink2) => Sink2; readonly newSink: (value: A, effects: Kind2) => Sink2; } export declare function getSink(M: Alternative2): SinkM2; export declare function getSink(M: Alternative1): SinkM1; export declare function getSink(M: Alternative): SinkM;