import Reference from './Reference'; import { SchemaLike } from './types'; export interface ConditionBuilder { (this: T, value: any, schema: T): SchemaLike; (v1: any, v2: any, schema: T): SchemaLike; (v1: any, v2: any, v3: any, schema: T): SchemaLike; (v1: any, v2: any, v3: any, v4: any, schema: T): SchemaLike; } export declare type ConditionConfig = { is: any | ((...values: any[]) => boolean); then?: SchemaLike | ((schema: T) => SchemaLike); otherwise?: SchemaLike | ((schema: T) => SchemaLike); }; export declare type ConditionOptions = ConditionBuilder | ConditionConfig; export declare type ResolveOptions = { value?: any; parent?: any; context?: TContext; }; declare class Condition { refs: Reference[]; fn: ConditionBuilder; constructor(refs: Reference[], options: ConditionOptions); resolve(base: T, options: ResolveOptions): any; } export default Condition;