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