import { Logger } from '@medishn/toolkit';
import { ModulesContainer } from '../injector';
export type LifecycleHook = 'onModuleInit' | 'onModuleDestroy' | 'onAppBootstrap' | 'onAppShutdown' | 'onChannelInit';
export type LifecycleComponentType = 'module' | 'controller' | 'channel';
export interface LifecycleComponent {
    instance: any;
    moduleToken: string;
    componentType: LifecycleComponentType;
    componentToken: string;
}
export declare class LifecycleScanner {
    private readonly modulesContainer;
    private readonly moduleComponentMap;
    private readonly logger?;
    constructor(modulesContainer: ModulesContainer, logger?: Logger);
    scanForHooks(): void;
    private scanModule;
    private scanComponentsForHooks;
    private getModuleInstance;
    private hasLifecycleHooks;
    private hasHook;
    runHook(hook: LifecycleHook, signal?: string): Promise<void>;
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    onAppBootstrap(): Promise<void>;
    onAppShutdown(signal?: string): Promise<void>;
    onChannelInit(): Promise<void>;
}
