export interface IFullBeanConfig {
	scope?: "prototype" | "singleton";
	isPublic?: boolean;
}
export interface IInternalCatContext {
	config: any;
	getBean<T>(beanName: string): T;
	getBeans(): Record<string, any>;
	___postConstruct(): void;
	___beforeDestruct(): void;
}
export declare type TBeanName = string;
export declare type TLifecycle = "post-construct" | "before-destruct";
export declare type TLifecycleConfiguration = Record<TLifecycle, TBeanName[]>;
export declare abstract class InternalCatContext implements IInternalCatContext {
	private contextName;
	private beanConfigurationRecord;
	private lifecycleConfiguration;
	[beanName: string]: any;
	constructor(contextName: string, beanConfigurationRecord: Record<TBeanName, IFullBeanConfig>, lifecycleConfiguration: TLifecycleConfiguration);
	___postConstruct(): void;
	___beforeDestruct(): void;
	private singletonMap;
	private notInitializedConfigMarker;
	private _config;
	get config(): any;
	set config(config: any);
	getBean<T>(beanName: TBeanName): T;
	protected getPrivateBean<T>(beanName: TBeanName): T;
	private getBeanConfiguration;
	getBeans(): Record<string, any>;
}

export {};
