import type { IfEquals } from "hry-types/src/Any/IfEquals"; import type { ComputeIntersection } from "hry-types/src/Object/ComputeIntersection"; import type { ReturnTypeInObject } from "hry-types/src/Object/ReturnTypeInObject"; import type { WMComponentOption } from "../../types/OfficialTypeAlias"; import type { DataConstraint } from "../RootComponent/Data/DataConstraint"; import type { MethodsConstraint } from "../RootComponent/Methods/MethodsConstraint"; import type { StoreConstraint } from "../RootComponent/Store/StoreConstraint"; export type InjectKey = "options" | "methods" | "data" | "store" | "behaviors"; interface BaseInjectInfo { [key: string]: unknown; options?: WMComponentOption; methods?: MethodsConstraint; data?: DataConstraint; store?: StoreConstraint; behaviors?: string[]; } export interface IInjectInfo extends BaseInjectInfo { } export type InjectData = DataConstraint extends IInjectInfo["data"] ? {} : IInjectInfo["data"]; export type IInjectAllData = IfEquals<{}, InjectData & IInjectStore, {}, ComputeIntersection>; export type IInjectStore = StoreConstraint extends IInjectInfo["store"] ? {} : ReturnTypeInObject; export type IInjectMethods = MethodsConstraint extends IInjectInfo["methods"] ? {} : IInjectInfo["methods"]; declare class InstanceConfig { private info; get injectInfo(): IInjectInfo | undefined; setInjectInfo(info: IInjectInfo | undefined): void; } export declare const instanceConfig: InstanceConfig; export {};