import type { Container, TypeToken } from "@codemation/core"; import type { CodemationClassToken } from "../presentation/config/CodemationClassToken"; interface CodemationContainerRegistrationBase { readonly token: TypeToken; } export interface CodemationValueRegistration extends CodemationContainerRegistrationBase { readonly useValue: TValue; } export interface CodemationClassRegistration extends CodemationContainerRegistrationBase { readonly useClass: CodemationClassToken; } export interface CodemationFactoryRegistration extends CodemationContainerRegistrationBase { readonly useFactory: (container: Container) => TValue; } export type CodemationContainerRegistration = | CodemationValueRegistration | CodemationClassRegistration | CodemationFactoryRegistration;