import type { Syringe } from '../core';
import type { interfaces } from 'inversify';
import { ContainerModule } from 'inversify';
declare type TokenOrOption<T> = Syringe.Token<T> | Syringe.InjectOption<T>;
export declare class SyringeModule implements Syringe.Module {
    /**
     * @readonly
     * module unique id
     */
    readonly id: number;
    readonly inversifyModule: ContainerModule;
    protected baseRegistry?: Syringe.Registry;
    protected optionCollection?: (Syringe.Token<any> | Syringe.InjectOption<any>)[];
    constructor(registry?: Syringe.Registry);
    protected inversifyRegister: (bind: interfaces.Bind, unbind: interfaces.Unbind, isBound: interfaces.IsBound, rebind: interfaces.Rebind) => void;
    protected get options(): (Syringe.Token<any> | Syringe.InjectOption<any>)[];
    register(...options: TokenOrOption<any>[]): this;
    contribution(...tokens: Syringe.DefinedToken[]): this;
}
export declare function isSyringeModule(data: Syringe.Module): data is SyringeModule;
export {};
//# sourceMappingURL=syringe-module.d.ts.map