import { Context } from '../Context';
import { Logger } from '../../log/LogManager';
import { Lifecycle } from './../Lifecycle';
export declare abstract class ObjectDefinition<T> extends Lifecycle {
    context: Context;
    autowireCandidate: boolean;
    instance: T;
    lazyLoading: boolean;
    clazz: Function;
    constructor(clazz: Function, name: string, logger: Logger);
    withLazyLoading(lazyLoading: boolean): ObjectDefinition<T>;
    setAutowireCandidate(autowireCandidate: boolean): ObjectDefinition<T>;
    setContext(context: Context): void;
    getContext(): Context;
    abstract getInstance(): Promise<T>;
    getProducedClass(): any;
    isLazy(): boolean;
    isAutowireCandidate(): boolean;
    copy(): ObjectDefinition<T>;
    protected copyInternalProperties(copyTo: any): void;
    protected abstract getCopyInstance(): ObjectDefinition<T>;
}
