import { TypeFlags } from '../type-flags'; import { Type, IType } from '../Type'; import { ObjectNode } from '../../core/ObjectNode'; import { INode } from '../../core/interface'; import { IContext, IValidationResult } from '../type-checker'; export declare type ITypeDispatcher = (snapshot: any) => IType; export declare class Union extends Type { readonly dispatcher: ITypeDispatcher | null; readonly types: IType[]; readonly flags: TypeFlags; readonly shouldAttachNode: boolean; constructor(name: string, types: IType[], dispatcher: ITypeDispatcher | null); isAssignableFrom(type: IType): boolean; describe(): string; instantiate(parent: ObjectNode, subpath: string, environment: any, value: any): INode; reconcile(current: INode, newValue: any): INode; determineType(value: any): IType; isValidSnapshot(value: any, context: IContext): IValidationResult; } export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType): IType; export declare function union(A: IType, B: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType): IType; export declare function union(A: IType, B: IType, C: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType, E: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType, I: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType, I: IType): IType; export declare function union(dispatch: ITypeDispatcher, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType, I: IType, J: IType): IType; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType, I: IType, J: IType): IType; export declare function union(...types: IType[]): IType; export declare function union(dispatchOrType: ITypeDispatcher | IType, ...otherTypes: IType[]): IType; export declare function isUnionType(type: any): type is Union;