import type { StrictOmit, Type } from 'ts-gems'; import type { DataType, DataTypeBase } from './data-type.interface.js'; import type { Field } from './field.interface.js'; import type { MappedType } from './mapped-type.interface.js'; import type { MixinType } from './mixin-type.interface.js'; export interface ComplexType extends StrictOmit { kind: ComplexType.Kind; base?: DataType.Name | ComplexType | MixinType | MappedType; ctor?: Type; fields?: Record; additionalFields?: boolean | string | DataType | ['error'] | ['error', string]; keyField?: Field.Name; discriminatorField?: string; discriminatorValue?: string; } export declare namespace ComplexType { const Kind = "ComplexType"; type Kind = typeof Kind; }