import { QualifierInfo } from "../../core-decorator/model/QualifierInfo.js"; import { EggPrototypeName } from "../../core-decorator/model/EggPrototypeInfo.js"; import { Loader } from "./Loader.js"; import { EggPrototype } from "./EggPrototype.js"; import { LifecycleContext, LifecycleObject } from "../../lifecycle/LifecycleHook.js"; //#region src/metadata/model/LoadUnit.d.ts export declare const EggLoadUnitType: { readonly MODULE: "MODULE"; readonly PLUGIN: "PLUGIN"; readonly APP: "APP"; }; export type EggLoadUnitType = (typeof EggLoadUnitType)[keyof typeof EggLoadUnitType]; export type EggLoadUnitTypeLike = EggLoadUnitType | string; export interface LoadUnitLifecycleContext extends LifecycleContext { unitPath: string; unitName?: string; loader: Loader; } export interface LoadUnit extends LifecycleObject { readonly name: string; readonly unitPath: string; readonly type: EggLoadUnitTypeLike; iterateEggPrototype(): IterableIterator; registerEggPrototype(proto: EggPrototype): void; deletePrototype(proto: EggPrototype): void; getEggPrototype(name: EggPrototypeName, qualifiers: QualifierInfo[]): EggPrototype[]; containPrototype(proto: EggPrototype): boolean; } export interface LoadUnitPair { loadUnit: LoadUnit; ctx: LoadUnitLifecycleContext; } export type LoadUnitCreator = (ctx: LoadUnitLifecycleContext) => LoadUnit | Promise; //#endregion