import { Identifier, Newable, Container } from './Container'; export interface FinalBinder { transient(): void; } export interface ResolveBinder extends FinalBinder { to(dep: Newable): FinalBinder; toFactory(dep: (container: Container) => Promise | S): FinalBinder; toValue(value: any): void; } export interface Bind { (identifier: Identifier): ResolveBinder; } export interface InjectorMetaData { scope: 'transient' | 'singleton'; class?: Newable; factory?: (container: Container) => Promise | any; value?: any; } export declare function createBinder(addBinding: (identifier: Identifier, data: InjectorMetaData) => void, exists: (identifier: Identifier) => boolean): Bind;