import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AwilixContainer, ModuleDescriptor } from 'awilix'; import { NameFormatter } from 'awilix/lib/load-modules'; import type { Class } from 'type-fest'; import { LoggerOptions } from '@diia-inhouse/types'; import { ApplicationHooks } from './applicationHooks.js'; import { AppConfigType, AppDepsType, ConfigFactoryFn, ContainerDependency, DepsFactoryFn, DepsType, LoadDepsFromFolderOptions, ServiceContext, ServiceOperator } from './interfaces/application.js'; export declare class Application extends ApplicationHooks { private readonly serviceName; private readonly nodeTracerProvider; container?: AwilixContainer>; protected asyncCommunicationClasses: Class[]; private config?; private baseContainer; private groupedDepsNames; private defaultFoldersWithDeps; private readonly nodeEnvObserver; constructor(serviceName: string, nodeTracerProvider: NodeTracerProvider, loggerOptions: LoggerOptions, loggerPkg?: string); setConfig(factory: ConfigFactoryFn>): Promise; patchConfig(config: Partial>): void; getConfig(): AppConfigType; setDeps(factory: DepsFactoryFn, AppDepsType>): Promise; initialize(dependencies?: ContainerDependency[]): Promise, DepsType>>; defaultNameFormatter(folderName: string, depsDir?: string): NameFormatter; extractDepsFromFolder(options: LoadDepsFromFolderOptions): ModuleDescriptor[]; extractDependenciesFromModules(modules: Record Promise>>, depsDir: string): Promise; loadDepsFromFolder(options: LoadDepsFromFolderOptions): Promise; private registerDependency; private registerGroup; private getDepsDir; private registerDependencies; private getBaseDeps; private start; private stop; private loadDefaultDepsFolders; private createContext; private filterRepositoryModulesByAdapter; private setOnShutDownHook; private onShutDown; } export default Application;