import { DirectModel, Model } from './model'; import { MetaModel } from './metaModel'; import { ReadStream } from 'ziron-worker'; import { ModelTranslatable, modelTranslateSymbol } from '../../api/configTranslatable/modelTranslatable'; import { AnyOfModel, DefinitionModel, ObjectModel, StreamModel, ValueModel } from './definitionModel'; import { ExtractNonStrictValidationType, ExtractStrictValidationType } from './validator/validationType'; declare type TypeofMultiValueType = T extends string ? (ST extends true ? ExtractStrictValidationType : ExtractNonStrictValidationType) : never; declare type TypeofValueType = T extends string[] ? TypeofMultiValueType : T extends string ? (ST extends true ? ExtractStrictValidationType : ExtractNonStrictValidationType) : any; declare type TypeofValueTypes> = T extends any[] ? T[number] : T[keyof T]; declare type TypeofAnyOfModelValue> = { [key in keyof T]: T[key] extends Model ? TypeofModel : never; }; declare type TypeofAnyOfModel = TypeofValueTypes>; declare type TypeofValueModel = T["convertType"] extends false ? T["strictType"] extends false ? TypeofValueType : TypeofValueType : TypeofValueType; declare type TypeofObjectModel> = { [key in keyof T]: TypeofModel; }; declare type TypeofArrayModel = (TypeofModel)[]; declare type TypeofStreamModel = T['chunks'] extends string ? ReadStream : ReadStream>>; declare type TypeofMetaModel = T['optional'] extends true ? T['canBeNull'] extends true ? undefined | null | TypeofDefinitionModel : undefined | TypeofDefinitionModel : T['canBeNull'] extends true ? null | TypeofDefinitionModel : TypeofDefinitionModel; declare type TypeofDefinitionModel = T extends { "0": Model; } ? TypeofArrayModel : T extends ObjectModel ? TypeofObjectModel : T extends StreamModel ? TypeofStreamModel : T extends ValueModel ? TypeofValueModel : T extends AnyOfModel ? TypeofAnyOfModel : any; declare type TypeofDirectModel = T extends DefinitionModel ? TypeofDefinitionModel : T extends MetaModel ? TypeofMetaModel : any; export declare type TypeofModel = T extends DirectModel ? TypeofDirectModel : T extends ModelTranslatable ? TypeofDirectModel> : T extends { new (): any; prototype: {}; } ? T["prototype"] : any; export {};