import type { AwilixContainer, NameAndRegistrationPair, Resolver } from "awilix"; import type { AuthUser } from "./app"; import type { Authenticator } from "./authenticator"; import type { Validator } from "./validation"; import type { MessageBus } from "./messageBus"; export interface AppServices { authUser: AuthUser; validator: Validator; authenticator: Authenticator; messageBus: MessageBus; } export interface Container extends AwilixContainer { register(name: K, value: Resolver): this; register(name: string | symbol, value: Resolver): this; register(registration: NameAndRegistrationPair): this; }