/**
* Data is an ADT which allows you to represent all the states involved in loading a
* piece of data asynchronously.
*
* @since 0.9.2
*/
import * as AD from 'fp-ts/Alt';
import * as Alternative_ from 'fp-ts/Alternative';
import * as App from 'fp-ts/Applicative';
import * as Ap from 'fp-ts/Apply';
import * as Ch from 'fp-ts/Chain';
import { Compactable1 } from 'fp-ts/Compactable';
import * as Ei from 'fp-ts/Either';
import { Eq } from 'fp-ts/Eq';
import { Filterable1 } from 'fp-ts/Filterable';
import { Foldable1 } from 'fp-ts/Foldable';
import { Lazy } from 'fp-ts/function';
import * as F from 'fp-ts/Functor';
import { HKT } from 'fp-ts/HKT';
import { Monad1 } from 'fp-ts/Monad';
import { Monoid } from 'fp-ts/Monoid';
import * as O from 'fp-ts/Option';
import { Pointed1 } from 'fp-ts/Pointed';
import { Predicate } from 'fp-ts/Predicate';
import { Semigroup } from 'fp-ts/Semigroup';
import { Separated } from 'fp-ts/Separated';
import { Show } from 'fp-ts/Show';
import { Traversable1 } from 'fp-ts/Traversable';
import * as P from './Progress';
/**
* @since 0.9.2
* @category Model
*/
export declare type Data = NoData | Loading | Refresh | Replete;
/**
* @since 0.9.2
* @category Type-level
*/
export declare type Value = [A] extends [Data] ? R : never;
/**
* @since 0.9.2
* @category Refinement
*/
export declare const isNoData: (data: Data) => data is NoData;
/**
* @since 0.9.2
* @category Refinement
*/
export declare const isLoading: (data: Data) => data is Loading;
/**
* @since 0.9.2
* @category Refinement
*/
export declare const isRefresh: (data: Data) => data is Refresh;
/**
* @since 0.9.2
* @category Refinement
*/
export declare const isReplete: (data: Data) => data is Replete;
/**
* @since 0.9.2
* @category Refinement
*/
export declare const hasValue: (data: Data) => data is Refresh | Replete;
/**
* @since 0.9.2
* @category Model
*/
export interface NoData {
readonly _tag: 'NoData';
}
/**
* @since 0.9.2
* @category Constructor
*/
export declare const noData: NoData;
/**
* @since 0.9.2
* @category Model
*/
export interface Loading {
readonly _tag: 'Loading';
readonly progress: O.Option;
}
/**
* @since 0.9.2
* @category Constructor
*/
export declare const loading: Loading;
/**
* @since 0.9.2
* @category Constructor
*/
export declare const fromProgress: (progress: P.Progress) => Loading;
/**
* @since 0.9.2
* @category Model
*/
export interface Refresh {
readonly _tag: 'Refresh';
readonly value: A;
readonly progress: O.Option;
}
/**
* @since 0.9.2
* @category Constructor
*/
export declare const refresh: (value: A, progress?: O.Option) => Refresh;
/**
* @since 0.9.2
* @category Model
*/
export interface Replete {
readonly _tag: 'Replete';
readonly value: A;
}
/**
* @since 0.9.2
* @category Constructor
*/
export declare const replete: (value: A) => Replete;
/**
* @since 0.9.2
* @category Deconstructor
*/
export declare const matchW: (onNoData: () => A, onLoading: (progress: O.Option) => B, onRefresh: (value: C, progress: O.Option) => D, onReplete: (value: C) => E) => (data: Data) => A | B | D | E;
/**
* @since 0.9.2
* @category Deconstructor
*/
export declare const match3W: (onNoData: () => A, onLoading: (progress: O.Option) => B, onRefreshOrReplete: (value: C) => D) => (data: Data) => A | B | D;
/**
* @since 0.9.2
* @category Deconstructor
*/
export declare const match: (onNoData: () => A, onLoading: () => A, onRefresh: (value: B) => A, onReplete: (value: B) => A) => (data: Data) => A;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const toLoading: (data: Data) => Data;
/**
* @since 0.9.2
* @category Constructor
*/
export declare const fromNullable: (a: A | null | undefined) => Data;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export declare const getShow: (S: Show) => Show>;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export declare const getEq: (S: Eq) => Eq>;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export declare const getSemigroup: (S: Semigroup) => Semigroup>;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export declare const getMonoid: (S: Semigroup) => Monoid>;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const getOrElse: (onInitial: () => A, onLoading: (progress: O.Option) => A) => (ma: Data) => A;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const getOrElseW: (onInitial: () => A, onLoading: (progress: O.Option) => B) => (ma: Data) => A | B | C;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const elem: (E: Eq) => (a: A) => (ma: Data) => boolean;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const exists: (predicate: Predicate) => (ma: Data) => boolean;
/**
* @since 0.9.2
* @category Constructor
*/
export declare const of: (value: A) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const map: (f: (value: A) => B) => (data: Data) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const chain: (f: (value: A) => Data) => (data: Data) => Data;
/**
* @since 0.9.2
* @category URI
*/
export declare const URI = "@typed/fp/Data";
/**
* @since 0.9.2
* @category URI
*/
export declare type URI = typeof URI;
declare module 'fp-ts/HKT' {
interface URItoKind {
[URI]: Data;
}
}
/**
* @since 0.9.2
* @category Instance
*/
export declare const Pointed: Pointed1;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Functor: F.Functor1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const bindTo: (name: N) => (fa: Data) => Data<{ [K in N]: A; }>;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const flap: (a: A) => (fab: Data<(a: A) => B>) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const tupled: (fa: Data) => Data;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Chain: Ch.Chain1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const ap: (fa: Data) => (fab: Data<(a: A) => B>) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const bind: (name: Exclude, f: (a: A) => Data) => (ma: Data) => Data<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B; }>;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const chainFirst: (f: (a: A) => Data) => (first: Data) => Data;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Apply: Ap.Apply1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const apFirst: (second: Data) => (first: Data) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const apS: (name: Exclude, fb: Data) => (fa: Data) => Data<{ readonly [K in N | keyof A]: K extends keyof A ? A[K] : B; }>;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const apSecond: (second: Data) => (first: Data) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const apT: (fb: Data) => (fas: Data) => Data;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export declare const getApplySemigroup: (S: Semigroup) => Semigroup>;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Applicative: App.Applicative1;
/**
* @since 0.9.2
* @category Typeclass Constructor
*/
export declare const getApplicativeMonoid: (M: Monoid) => Monoid>;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Monad: Monad1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const chainRec: (f: (value: A) => Data>) => (value: A) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const alt: (f: Lazy>) => (b: Data) => Data;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Alt: AD.Alt1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const altAll: (startWith: Data) => (as: readonly Data[]) => Data;
/**
* @since 0.9.2
* @category Constructor
*/
export declare const zero: () => Data;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Alternative: Alternative_.Alternative1;
/**
* @since 0.9.2
* @category Natural Transformation
*/
export declare const fromOption: (option: O.Option) => Data;
/**
* @since 0.9.2
* @category Natural Transformation
*/
export declare const toOption: (data: Data) => O.Option;
/**
* @since 0.9.2
* @category Combinator
*/
export declare function foldMap(M: Monoid): (f: (a: A) => M) => (fa: Data) => M;
/**
* @since 0.9.2
* @category Deconstructor
*/
export declare const reduce: (seed: A, f: (acc: A, value: B) => A) => (data: Data) => A;
/**
* @since 0.9.2
* @category Deconstructor
*/
export declare const reduceRight: (seed: A, f: (value: B, acc: A) => A) => (data: Data) => A;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Foldable: Foldable1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare function traverse(F: App.Applicative): (f: (value: A) => HKT) => (data: Data) => HKT>;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Traversable: Traversable1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const compact: (dataOption: Data>) => Data;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const separate: (dataEither: Data>) => Separated, Data>;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Compactable: Compactable1;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const partitionMap: Filterable1['partitionMap'];
/**
* @since 0.9.2
* @category Combinator
*/
export declare const partition: import("fp-ts/Filterable").Partition1<"@typed/fp/Data">;
/**
* @since 0.9.2
* @category Combinator
*/
export declare const filterMap: Filterable1['filterMap'];
/**
* @since 0.9.2
* @category Combinator
*/
export declare const filter: import("fp-ts/Filterable").Filter1<"@typed/fp/Data">;
/**
* @since 0.9.2
* @category Instance
*/
export declare const Filterable: Filterable1;
//# sourceMappingURL=Data.d.ts.map