import 'reflect-metadata'; import type { Class, Combine, Type } from 'ts-gems'; 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 { ComplexTypeBase } from './complex-type-base.js'; import { DataType } from './data-type.js'; import type { MappedType } from './mapped-type.js'; /** * @namespace MixinType */ export declare namespace MixinType { interface Metadata extends Combine<{ kind: OpraSchema.MixinType.Kind; name?: string; types: Type[]; }, DataType.Metadata, Pick, OpraSchema.MixinType> { } interface InitArguments extends Combine<{ kind: OpraSchema.MixinType.Kind; types: (ComplexType | MappedType | MixinType)[]; ctor?: Type; }, DataType.InitArguments, MixinType.Metadata> { } } /** * Type definition for MixinType * @class MixinType */ export interface MixinTypeStatic { /** * Class constructor of MixinType * * @param owner * @param args * @constructor */ new (owner: DocumentElement, args: MixinType.InitArguments): MixinType; /** * Create a new mixin type from given two types * @param types * @param options */ (types: [Class, Class], options?: DataType.Options): Class; /** * Helper method that mixes given types * @param types * @param options */ (types: [Class, Class, Class], options?: DataType.Options): Class; /** * Helper method that mixes given types * @param types * @param options */ (types: [ Class, Class, Class, Class ], options?: DataType.Options): Class; /** * Helper method that mixes given types * @param types * @param options */ (types: [ Class, Class, Class, Class, Class ], options?: DataType.Options): Class; prototype: MixinType; } /** * Type definition of MixinType prototype * @interface */ export interface MixinType extends MixinTypeClass { } /** * @class MixinType */ export declare const MixinType: MixinTypeStatic; /** * * @class MixinType */ declare class MixinTypeClass extends ComplexTypeBase { readonly kind: OpraSchema.MixinType.Kind; readonly types: (ComplexType | MixinType | MappedType)[]; extendsFrom(baseType: DataType | string | Type | object): boolean; toJSON(options?: ApiDocument.ExportOptions): OpraSchema.MixinType; protected _locateBase(callback: (base: ComplexTypeBase) => boolean): ComplexTypeBase | undefined; } export {};