import { ComponentId } from './component';
export interface AutowiredOption {
    id?: ComponentId;
    multi?: boolean;
    detached?: boolean;
}
export declare type IdOrAutowiredOption = ComponentId | AutowiredOption;
export declare type IdOrAutowiredOptionWithoutMulti = ComponentId | Omit<AutowiredOption, 'multi'>;
export declare const Autowired: (idOrOption?: IdOrAutowiredOption) => PropertyDecorator & ParameterDecorator;
export interface DoGetValue {
    (option: AutowiredOption, target: any, property: string): any;
}
export interface DoInject {
    (option: AutowiredOption, t: any, k: string, i?: number): any;
}
export declare function parseAutowiredOption(target: any, targetKey: string, index?: number, idOrOption?: IdOrAutowiredOption): {
    id?: string | symbol | import("inversify/lib/interfaces/interfaces").interfaces.Abstract<any> | undefined;
    multi?: boolean | undefined;
    detached?: boolean | undefined;
};
export declare function applyAutowiredDecorator(option: AutowiredOption, target: any, targetKey: string, index?: number, doInject?: DoInject, doGetValue?: DoGetValue): AutowiredOption;
export declare function createAutowiredProperty(option: AutowiredOption, doGetValue: DoGetValue, target: any, property: string): void;
//# sourceMappingURL=autowired.d.ts.map