import { NameNode, TypeDefinitionNode } from 'graphql'; import { FlexSearchLanguage, TypeConfig, TypeKind } from '../config'; import { ModelComponent, ValidationContext } from '../validation/validation-context'; import { TypeLocalization } from './i18n'; import { Model } from './model'; import { Namespace } from './namespace'; import { EffectiveModuleSpecification } from './modules/effective-module-specification'; import { TypeModuleSpecification } from './modules/type-module-specification'; export declare abstract class TypeBase implements ModelComponent { readonly model: Model; readonly name: string; readonly namespacePath: ReadonlyArray; readonly pluralName: string; readonly description: string | undefined; abstract readonly kind: TypeKind; readonly astNode: TypeDefinitionNode | undefined; readonly nameASTNode: NameNode | undefined; readonly flexSearchLanguage: FlexSearchLanguage | undefined; readonly moduleSpecification?: TypeModuleSpecification; /** * Indicates if this is type that is built into cruddl instead of being declared by the schema author */ readonly isBuiltinType: boolean; protected constructor(input: TypeConfig, model: Model); validate(context: ValidationContext): void; private validateName; private validateModuleDeclaration; getLocalization(resolutionOrder: ReadonlyArray): TypeLocalization; get namespace(): Namespace; get label(): Record; get labelPlural(): Record; get hint(): Record; get effectiveModuleSpecification(): EffectiveModuleSpecification; abstract readonly isObjectType: boolean; abstract readonly isRootEntityType: boolean; abstract readonly isChildEntityType: boolean; abstract readonly isEntityExtensionType: boolean; abstract readonly isValueObjectType: boolean; abstract readonly isScalarType: boolean; abstract readonly isEnumType: boolean; }