import type { Disposable } from '@difizen/mana-common';
import { Emitter } from '@difizen/mana-common';
import { DisposableCollection } from '@difizen/mana-common';
import type { Syringe } from '../core';
import { type Option, type Provider } from './contribution-protocol';
export declare class DefaultContributionProvider<T extends Record<string, any>> implements Provider<T>, Disposable {
    protected onChangedEmitter: Emitter<void>;
    get onChanged(): import("@difizen/mana-common").Event<void>;
    protected option: Option;
    protected services: T[] | undefined;
    protected readonly serviceIdentifier: Syringe.Token<T>;
    protected readonly container: Syringe.Container;
    protected toDispose: DisposableCollection;
    constructor(serviceIdentifier: Syringe.Token<T>, container: Syringe.Container, option?: Option);
    disposed?: boolean | undefined;
    dispose(): void;
    protected onCtxChanged: () => void;
    protected setServices(recursive: boolean): T[];
    getContributions(option?: Option): T[];
}
//# sourceMappingURL=contribution-provider.d.ts.map