import type { interfaces } from 'inversify';
import type { InversifyRegister } from './inversify';
import { Syringe } from './core';
export declare function toRegistryOption<P>(options: Syringe.InjectOption<P>): Syringe.FormattedInjectOption<P>;
export declare class Register<T> {
    static globalConfig: Syringe.InjectOption<any>;
    /**
     * 注册目标 token，合并 token 配置后基于配置注册
     */
    static resolveTarget<R>(register: InversifyRegister, target: Syringe.Token<R>, option?: Syringe.TargetOption<R>): void;
    /**
     * 基于配置注册
     */
    static resolveOption<R>(iRegister: InversifyRegister, baseOption: Syringe.InjectOption<R>): void;
    protected token: Syringe.UnionToken<T>;
    protected rawToken: Syringe.Token<T>;
    protected named?: Syringe.Named;
    /**
     * 兼容 inversify
     */
    protected generalToken: interfaces.ServiceIdentifier<T>;
    protected option: Syringe.FormattedInjectOption<T>;
    protected register: InversifyRegister;
    protected mutiple: boolean;
    constructor(register: InversifyRegister, token: Syringe.UnionToken<T>, option: Syringe.FormattedInjectOption<T>);
    /**
     * multi or mono register
     * mono bind 优先级 useValue > useDynamic > useFactory > useClass
     */
    resolve(): void;
    protected resolveMono(register: InversifyRegister): interfaces.BindingWhenOnSyntax<T> | undefined;
    protected resolveMutilple(register: InversifyRegister): void;
}
//# sourceMappingURL=register.d.ts.map