import React, { ReactNode } from 'react'; import { FormState, FormApi } from 'final-form'; import Field from '../common-types/field'; export interface ActionResolution { visible?: boolean; set?: object | ((formState: FormState>, getFieldState: FormApi['getFieldState']) => object); } export type InnerWhenFunction = (currentField: string) => string; export type WhenFunction = (currentField: string) => string | string[] | InnerWhenFunction[]; export interface ConditionProp { when?: string | string[] | WhenFunction | InnerWhenFunction[]; is?: any; isNotEmpty?: boolean; isEmpty?: boolean; pattern?: string | RegExp; flags?: string; notMatch?: any; greaterThan?: number; greaterThanOrEqualTo?: number; lessThan?: number; lessThanOrEqualTo?: number; then?: ActionResolution; else?: ActionResolution; or?: ConditionProp | ConditionProp[]; and?: ConditionProp | ConditionProp[]; not?: ConditionProp | ConditionProp[]; } export interface ConditionDefinition extends ConditionProp { mappedAttributes?: { is?: string[]; when?: string[]; set?: string[]; }; or?: ConditionProp | ConditionProp[]; and?: ConditionProp | ConditionProp[]; not?: ConditionProp | ConditionProp[]; sequence?: ConditionProp[]; } interface ConditionState { sets: object[]; initial: boolean; } interface ConditionAction { type: 'formResetted' | 'rememberSets'; sets?: object[]; } export interface ConditionProps { values?: object; children: ReactNode; condition?: ConditionDefinition | ConditionDefinition[]; field: Field; } export declare const reducer: (state: ConditionState, { type, sets }: ConditionAction) => ConditionState; declare const Condition: React.FC; export default Condition;