/** * @since 0.0.1 */ import type { Alt2 } from 'fp-ts/Alt' import type { Alternative2 } from 'fp-ts/Alternative' import type { Applicative2 } from 'fp-ts/Applicative' import type { Apply2 } from 'fp-ts/Apply' import type { Functor2 } from 'fp-ts/Functor' import type { Monad2 } from 'fp-ts/Monad' import type { Option } from 'fp-ts/Option' import type { State } from 'fp-ts/State' import { Lazy } from 'fp-ts/function' /** * @category model * @since 0.0.1 */ export interface StateOption { (s: S): Option<[A, S]> } /** * @category constructors * @since 0.0.1 */ export declare const none: () => StateOption /** * @category constructors * @since 0.0.1 */ export declare const some: (a: A) => StateOption /** * @category constructors * @since 0.0.1 */ export declare const get: () => StateOption /** * @category constructors * @since 0.0.1 */ export declare const put: (s: S) => StateOption /** * @category constructors * @since 0.0.1 */ export declare const modify: (f: (s: S) => S) => StateOption /** * @category constructors * @since 0.0.1 */ export declare const gets: (f: (s: S) => A) => StateOption /** * @category constructors * @since 0.0.1 */ export declare const fromOption: (ma: Option) => StateOption /** * @category constructors * @since 0.0.1 */ export declare const fromState: (fa: State) => StateOption /** * @category combinators * @since 0.0.1 */ export declare const fromOptionK: , B>( f: (...a: A) => Option ) => (...a: A) => StateOption /** * @category combinators * @since 0.0.1 */ export declare const chainOptionK: ( f: (a: A) => Option ) => (ma: StateOption) => StateOption /** * @category Functor * @since 0.0.1 */ export declare const map: (f: (a: A) => B) => (fa: StateOption) => StateOption /** * @category Apply * @since 0.0.1 */ export declare const ap: ( fa: StateOption ) => (fab: StateOption B>) => StateOption /** * @category Apply * @since 0.0.1 */ export declare const apFirst: ( fb: StateOption ) => (fa: StateOption) => StateOption /** * @category Apply * @since 0.0.1 */ export declare const apSecond: ( fb: StateOption ) => (fa: StateOption) => StateOption /** * @category Monad * @since 0.0.1 */ export declare const chain: ( f: (a: A) => StateOption ) => (ma: StateOption) => StateOption /** * @category Applicative * @since 0.0.1 */ export declare const of: Applicative2['of'] /** * @category Monad * @since 0.0.1 */ export declare const chainFirst: ( f: (a: A) => StateOption ) => (ma: StateOption) => StateOption /** * @category Monad * @since 0.0.1 */ export declare const flatten: (mma: StateOption>) => StateOption /** * @category Alternative * @since 0.0.1 */ export declare const alt: ( that: Lazy> ) => (fa: StateOption) => StateOption /** * @category Alternative * @since 0.0.1 */ export declare const zero: Alternative2['zero'] /** * @category instances * @since 0.0.1 */ export declare const URI = 'StateOption' /** * @category instances * @since 0.0.1 */ export declare type URI = typeof URI declare module 'fp-ts/HKT' { interface URItoKind2 { readonly [URI]: StateOption } } /** * @category instances * @since 0.0.1 */ export declare const Functor: Functor2 /** * @category instances * @since 0.0.1 */ export declare const Apply: Apply2 /** * @category instances * @since 0.0.1 */ export declare const Applicative: Applicative2 /** * @category instances * @since 0.0.1 */ export declare const Monad: Monad2 /** * @category instances * @since 0.0.1 */ export declare const Alt: Alt2 /** * @category instances * @since 0.0.1 */ export declare const Alternative: Alternative2 /** * @category utils * @since 0.0.1 */ export declare const evaluate: (s: S) => (ma: StateOption) => Option /** * @category utils * @since 0.0.1 */ export declare const execute: (s: S) => (ma: StateOption) => Option /** * @category do notation * @since 0.0.1 */ export declare const bindTo: ( name: N ) => (fa: StateOption) => StateOption /** * @category do notation * @since 0.0.1 */ export declare const bind: ( name: Exclude, f: (a: A) => StateOption ) => (fa: StateOption) => StateOption