import { IType, IAnyType, IModelType, ModelProperties, ModelInstanceType, ModelSnapshotType2, ModelCreationType2, _NotCustomized } from "../../internal"; export declare type ITypeDispatcher = (snapshot: any) => IAnyType; export interface UnionOptions { eager?: boolean; dispatcher?: ITypeDispatcher; } /** * Transform _NotCustomized | _NotCustomized... to _NotCustomized, _NotCustomized | A | B to A | B * @hidden */ export declare type _CustomCSProcessor = Exclude extends never ? _NotCustomized : Exclude; /** @hidden */ export interface ITypeUnion extends IType<_CustomCSProcessor, _CustomCSProcessor, T> { } export declare function union(A: IModelType, B: IModelType): ITypeUnion | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType): ITypeUnion | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType, D: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType, D: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType, G: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType, G: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType, G: IModelType, H: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType, G: IModelType, H: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType, G: IModelType, H: IModelType, I: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(options: UnionOptions, A: IModelType, B: IModelType, C: IModelType, D: IModelType, E: IModelType, F: IModelType, G: IModelType, H: IModelType, I: IModelType): ITypeUnion | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2 | ModelCreationType2, ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2 | ModelSnapshotType2, ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType | ModelInstanceType>; export declare function union(A: IType, B: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType, D: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType, D: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType, D: IType, E: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType): ITypeUnion; export declare function union(A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType, I: IType): ITypeUnion; export declare function union(options: UnionOptions, A: IType, B: IType, C: IType, D: IType, E: IType, F: IType, G: IType, H: IType, I: IType): ITypeUnion; export declare function union(...types: IAnyType[]): IAnyType; export declare function union(dispatchOrType: UnionOptions | IAnyType, ...otherTypes: IAnyType[]): IAnyType; /** * Returns if a given value represents a union type. * * @param type * @returns */ export declare function isUnionType(type: IT): type is IT;