import * as React from 'react'; import { FieldFeedbacksChildContext } from './FieldFeedbacks'; import { FieldFeedbackValidation } from './FieldFeedbackValidation'; import { FormWithConstraintsChildContext } from './FormWithConstraints'; import { InputElement } from './InputElement'; export declare enum Status { None = 0, Pending = 1, Rejected = 2, Resolved = 3 } export interface AsyncProps { promise: (value: string) => Promise; pending?: React.ReactNode; then?: (value: T) => React.ReactNode; catch?: (reason: any) => React.ReactNode; } interface AsyncState { status: Status; value?: T | unknown; } export interface AsyncChildContext { async: Async; } export declare type AsyncContext = FormWithConstraintsChildContext & FieldFeedbacksChildContext; declare class AsyncComponent extends React.PureComponent, AsyncState> { } declare const Async_base: { new (...args: any[]): { validateFieldEventEmitter: import("./EventEmitter").EventEmitter<[InputElement], FieldFeedbackValidation>; emitValidateFieldEvent(input: InputElement): Promise; addValidateFieldEventListener(listener: (input: InputElement) => FieldFeedbackValidation | Promise): void; removeValidateFieldEventListener(listener: (input: InputElement) => FieldFeedbackValidation | Promise): void; }; } & typeof AsyncComponent; export declare class Async extends Async_base implements React.ChildContextProvider { static contextTypes: React.ValidationMap; context: AsyncContext; static childContextTypes: React.ValidationMap; getChildContext(): AsyncChildContext; state: AsyncState; componentDidMount(): void; componentWillUnmount(): void; validate: (input: InputElement) => Promise | undefined; setStateSync(state: AsyncState): Promise; _validate(input: InputElement): Promise; render(): React.ReactNode; } export {};