import { CreateTypeStatement } from './CreateTypeStatement'; import { ListDefinition, MapDefinition, SetDefinition, TupleDefinition, TypeDefinition } from './Type'; import { ColumnDefinition, FormatList, FormatMap, FormatSet, FormatTuple, FormatPossibleList, FormatPossibleMap, FormatPossibleSet, FormatPossibleTuple, NativeTypeMap, PossibleNativeTypeMap, StringKey } from './ColumnDefinition'; export declare type TransformTypeValue = T extends { type: keyof NativeTypeMap; } ? NativeTypeMap[T['type']] : IComplexTransformType['type']; export interface IComplexTransformType { type: T extends { type: infer U; } ? (U extends keyof NativeTypeMap ? NativeTypeMap[U] : (U extends CreateTypeStatement ? (U2 extends ColumnDefinition ? ({ [K in keyof U2]: TransformTypeValue; }) : any) : never)) : (T extends SetDefinition ? this['set'] : (T extends ListDefinition ? this['list'] : (T extends MapDefinition ? this['map'] : (T extends TupleDefinition ? this['tuple'] : never)))); // @ts-ignore set: T extends SetDefinition ? FormatSet> : never; // @ts-ignore list: T extends ListDefinition ? FormatList> : never; // @ts-ignore map: T extends MapDefinition ? FormatMap, TransformTypeValue> : never; // @ts-ignore tuple: T extends TupleDefinition ? (U extends [infer U1] ? FormatTuple<[TransformTypeValue]> : (U extends [infer U1, infer U2] ? FormatTuple<[TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer U8] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer U8, infer U9] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer U8, infer U9, infer U10] ? FormatTuple<[TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue, TransformTypeValue]> : FormatTuple)))))))))) : never; } export interface ITransformType { type: T extends { type: infer U; } ? (U extends StringKey ? NativeTypeMap[U] : (U extends CreateTypeStatement ? U2 : never)) : (T extends SetDefinition ? (U extends StringKey ? FormatSet : TransformTypeValue) : (T extends ListDefinition ? (U extends StringKey ? FormatList : TransformTypeValue) : (T extends MapDefinition ? FormatMap ? NativeTypeMap[K] : TransformTypeValue, V extends StringKey ? NativeTypeMap[V] : TransformTypeValue> : TransformTypeValue))); } export declare type TransformType = ITransformType['type']; export declare type TransformPossibleTypeValue = T extends { type: StringKey; } ? PossibleNativeTypeMap[T['type']] : IComplexTransformPossibleType['type']; export interface IComplexTransformPossibleType { type: T extends { type: infer U; } ? (U extends StringKey ? PossibleNativeTypeMap[U] : (U extends CreateTypeStatement ? (U2 extends ColumnDefinition ? ({ [K in StringKey]: TransformPossibleTypeValue; }) : any) : never)) : (T extends SetDefinition ? this['set'] : (T extends ListDefinition ? this['list'] : (T extends MapDefinition ? this['map'] : (T extends TupleDefinition ? this['tuple'] : never)))); // @ts-ignore set: T extends SetDefinition ? FormatPossibleSet> : never; // @ts-ignore list: T extends ListDefinition ? FormatPossibleList> : never; // @ts-ignore map: T extends MapDefinition ? FormatPossibleMap, TransformPossibleTypeValue> : never; // @ts-ignore tuple: T extends TupleDefinition ? (U extends [infer U1] ? FormatPossibleTuple<[TransformPossibleTypeValue]> : (U extends [infer U1, infer U2] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer U8] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer U8, infer U9] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : (U extends [infer U1, infer U2, infer U3, infer U4, infer U5, infer U6, infer U7, infer U8, infer U9, infer U10] ? FormatPossibleTuple<[TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue, TransformPossibleTypeValue]> : FormatPossibleTuple)))))))))) : never; } export interface ITransformPossibleType { type: T extends { type: infer U; } ? (U extends StringKey ? PossibleNativeTypeMap[U] : (U extends CreateTypeStatement ? U2 : never)) : (T extends SetDefinition ? (U extends StringKey ? FormatPossibleSet : TransformPossibleTypeValue) : (T extends ListDefinition ? (U extends StringKey ? FormatPossibleList : TransformPossibleTypeValue) : (T extends MapDefinition ? FormatPossibleMap ? PossibleNativeTypeMap[K] : TransformPossibleTypeValue, V extends StringKey ? PossibleNativeTypeMap[V] : TransformPossibleTypeValue> : TransformPossibleTypeValue))); } export declare type TransformPossibleType = ITransformPossibleType['type'];