UNPKG

@opra/common

Version:
74 lines (73 loc) 2.29 kB
import 'reflect-metadata'; import type { Combine, Type } from 'ts-gems'; import { Validator } from 'valgen'; import { OpraSchema } from '../../schema/index.js'; import type { ApiDocument } from '../api-document.js'; import type { DocumentElement } from '../common/document-element.js'; import type { ComplexType } from './complex-type.js'; import { DataType } from './data-type.js'; import type { MappedType } from './mapped-type.js'; import type { MixinType } from './mixin-type.js'; import type { SimpleType } from './simple-type.js'; /** * @namespace UnionType */ export declare namespace UnionType { interface Metadata extends Combine<{ kind: OpraSchema.UnionType.Kind; name?: string; types: Type[]; }, DataType.Metadata, OpraSchema.UnionType> { } interface InitArguments extends Combine<{ kind: OpraSchema.UnionType.Kind; types: (ComplexType | MappedType | MixinType | SimpleType)[]; ctor?: Type; }, DataType.InitArguments, UnionType.Metadata> { } interface Options extends Combine<Pick<OpraSchema.UnionType, 'discriminator'>, DataType.Options> { } } /** * Type definition for UnionType * @class UnionType */ export interface UnionTypeStatic { /** * Class constructor of UnionType * * @param owner * @param args * @constructor */ new (owner: DocumentElement, args: UnionType.InitArguments): UnionType; /** * Create a new mixin type from given two types */ (types: (string | Type)[], options?: UnionType.Options): Type; prototype: UnionType; } /** * Type definition of UnionType prototype * @interface */ export interface UnionType extends UnionTypeClass { } /** * @class UnionType */ export declare const UnionType: UnionTypeStatic; /** * * @class UnionType */ declare class UnionTypeClass extends DataType { readonly kind: OpraSchema.UnionType.Kind; readonly types: (ComplexType | MixinType | MappedType | SimpleType)[]; readonly discriminator?: string; toJSON(options?: ApiDocument.ExportOptions): OpraSchema.UnionType; generateCodec(codec: 'encode' | 'decode', options?: DataType.GenerateCodecOptions): Validator; extendsFrom(): boolean; protected _locateBase(): UnionType | undefined; } export {};