import type { AnyCredentialType, CollectionDefinition, Container, TypeToken, WorkflowDefinition, } from "@codemation/core"; import type { AppConfig } from "./AppConfig"; import type { CodemationClassToken } from "./CodemationClassToken"; export interface CodemationRegistrationContextBase { readonly appConfig?: AppConfig; registerCredentialType(type: AnyCredentialType): void; registerCollection(definition: CollectionDefinition): void; registerNode(token: TypeToken, implementation?: CodemationClassToken): void; registerValue(token: TypeToken, value: TValue): void; registerClass(token: TypeToken, implementation: CodemationClassToken): void; registerFactory(token: TypeToken, factory: (container: Container) => TValue): void; } export interface CodemationAppContext extends CodemationRegistrationContextBase { registerWorkflow(workflow: WorkflowDefinition): void; registerWorkflows(workflows: ReadonlyArray): void; discoverWorkflows(...directories: ReadonlyArray): void; }