/** * @since 2.0.0 */ import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from './HKT' import { Monad, Monad1, Monad2, Monad2C, Monad3, Monad3C } from './Monad' import { State } from './State' /** * @category model * @since 2.0.0 */ export interface StateT { (s: S): HKT } /** * @since 2.0.0 */ export interface StateM { readonly map: (fa: StateT, f: (a: A) => B) => StateT readonly of: (a: A) => StateT readonly ap: (fab: StateT B>, fa: StateT) => StateT readonly chain: (fa: StateT, f: (a: A) => StateT) => StateT readonly get: () => StateT readonly put: (s: S) => StateT readonly modify: (f: (s: S) => S) => StateT readonly gets: (f: (s: S) => A) => StateT readonly fromState: (fa: State) => StateT readonly fromM: (ma: HKT) => StateT readonly evalState: (ma: StateT, s: S) => HKT readonly execState: (ma: StateT, s: S) => HKT } /** * @category model * @since 2.0.0 */ export interface StateT1 { (s: S): Kind } /** * @since 2.0.0 */ export interface StateM1 { readonly map: (fa: StateT1, f: (a: A) => B) => StateT1 readonly of: (a: A) => StateT1 readonly ap: (fab: StateT1 B>, fa: StateT1) => StateT1 readonly chain: (fa: StateT1, f: (a: A) => StateT1) => StateT1 readonly get: () => StateT1 readonly put: (s: S) => StateT1 readonly modify: (f: (s: S) => S) => StateT1 readonly gets: (f: (s: S) => A) => StateT1 readonly fromState: (fa: State) => StateT1 readonly fromM: (ma: Kind) => StateT1 readonly evalState: (ma: StateT1, s: S) => Kind readonly execState: (ma: StateT1, s: S) => Kind } /** * @category model * @since 2.0.0 */ export interface StateT2 { (s: S): Kind2 } /** * @since 2.0.0 */ export interface StateM2 { readonly map: (fa: StateT2, f: (a: A) => B) => StateT2 readonly of: (a: A) => StateT2 readonly ap: (fab: StateT2 B>, fa: StateT2) => StateT2 readonly chain: (fa: StateT2, f: (a: A) => StateT2) => StateT2 readonly get: () => StateT2 readonly put: (s: S) => StateT2 readonly modify: (f: (s: S) => S) => StateT2 readonly gets: (f: (s: S) => A) => StateT2 readonly fromState: (fa: State) => StateT2 readonly fromM: (ma: Kind2) => StateT2 readonly evalState: (ma: StateT2, s: S) => Kind2 readonly execState: (ma: StateT2, s: S) => Kind2 } /** * @since 2.5.4 */ export interface StateM2C { readonly map: (fa: StateT2, f: (a: A) => B) => StateT2 readonly of: (a: A) => StateT2 readonly ap: (fab: StateT2 B>, fa: StateT2) => StateT2 readonly chain: (fa: StateT2, f: (a: A) => StateT2) => StateT2 readonly get: () => StateT2 readonly put: (s: S) => StateT2 readonly modify: (f: (s: S) => S) => StateT2 readonly gets: (f: (s: S) => A) => StateT2 readonly fromState: (fa: State) => StateT2 readonly fromM: (ma: Kind2) => StateT2 readonly evalState: (ma: StateT2, s: S) => Kind2 readonly execState: (ma: StateT2, s: S) => Kind2 } /** * @since 2.0.0 */ export interface StateT3 { (s: S): Kind3 } /** * @since 2.0.0 */ export interface StateM3 { readonly map: (fa: StateT3, f: (a: A) => B) => StateT3 readonly of: (a: A) => StateT3 readonly ap: ( fab: StateT3 B>, fa: StateT3 ) => StateT3 readonly chain: ( fa: StateT3, f: (a: A) => StateT3 ) => StateT3 readonly get: () => StateT3 readonly put: (s: S) => StateT3 readonly modify: (f: (s: S) => S) => StateT3 readonly gets: (f: (s: S) => A) => StateT3 readonly fromState: (fa: State) => StateT3 readonly fromM: (ma: Kind3) => StateT3 readonly evalState: (ma: StateT3, s: S) => Kind3 readonly execState: (ma: StateT3, s: S) => Kind3 } /** * @since 2.5.4 */ export interface StateM3C { readonly map: (fa: StateT3, f: (a: A) => B) => StateT3 readonly of: (a: A) => StateT3 readonly ap: (fab: StateT3 B>, fa: StateT3) => StateT3 readonly chain: ( fa: StateT3, f: (a: A) => StateT3 ) => StateT3 readonly get: () => StateT3 readonly put: (s: S) => StateT3 readonly modify: (f: (s: S) => S) => StateT3 readonly gets: (f: (s: S) => A) => StateT3 readonly fromState: (fa: State) => StateT3 readonly fromM: (ma: Kind3) => StateT3 readonly evalState: (ma: StateT3, s: S) => Kind3 readonly execState: (ma: StateT3, s: S) => Kind3 } /** * @since 2.0.0 */ export declare function getStateM(M: Monad3): StateM3 export declare function getStateM(M: Monad3C): StateM3C export declare function getStateM(M: Monad2): StateM2 export declare function getStateM(M: Monad2C): StateM2C export declare function getStateM(M: Monad1): StateM1 export declare function getStateM(M: Monad): StateM