/**
 * Common interfaces for data processing operations.
 */
import { Either } from "monet";
/** Content returned from a fetch. items and a timestamp. */
export interface Content<T> {
    items: Array<T>;
    timestamp?: Date;
}
/** Capture error information. */
export interface ErrorInfo {
    error?: Error;
    message?: string;
    timestamp?: Date;
}
/**
 * Status may be provided prior to a result being produced.
 */
export interface Status {
    inProgress: boolean;
    name: string;
    message?: string;
    timestamp?: Date;
}
/** Makes a status and automatically sets the timestamp to now. */
export declare function mkStatus(inProgress: boolean, name: string, message?: string): {
    inProgress: boolean;
    name: string;
    message: string | undefined;
    timestamp: Date;
};
/** Result of fetch. Left is error. */
export declare type Result<T = any, E = ErrorInfo> = Either<E, Content<T>>;
/**
 * Smart constructors for Result<T, ErrorInfo> instances. If you don't
 * use `E=ErrorInfo` you will need to create your own if you want.
 */
export declare const ResultOps: {
    ok: <T = any>(c: Content<T>) => Either<ErrorInfo, Content<T>>;
    error: <T = any>(e: ErrorInfo) => Either<ErrorInfo, Content<T>>;
    errorNow: <T = any>(error: Error, message?: string | undefined) => Either<ErrorInfo, Content<T>>;
    okNow: <T = any>(items?: T[]) => Either<ErrorInfo, Content<T>>;
};
/**
 * A type often used when retrieving results that then get
 * indexed by name. You'll probably wrap non-null results
 * in a Maybe so you have `Maybe<NamedArrayTuple>` which
 * you then filter and map (e.g. `collect` or `reduce`).
 */
export declare type NamedArrayTuple<T> = [string, Array<T>];
