import type { Syringe } from '../core';
declare type TokenOrOption<T> = Syringe.Token<T> | Syringe.InjectOption<T>;
export declare class SyringeModule implements Syringe.Module {
    static moduleId: number;
    /**
     * @readonly
     * module unique id
     */
    readonly id: number;
    protected baseRegistry?: Syringe.Registry;
    protected optionCollection?: (Syringe.Token<any> | Syringe.InjectOption<any>)[];
    /**
     * Exposed registration function
     */
    get registry(): Syringe.Registry;
    constructor(registry?: Syringe.Registry);
    protected get options(): (Syringe.Token<any> | Syringe.InjectOption<any>)[];
    register(...options: TokenOrOption<any>[]): this;
    contribution(...tokens: Syringe.DefinedToken[]): this;
}
export {};
