import type { IBindingResolver, ServiceIdentifier } from './explicit-binding';
import type { IContributionProvider } from '../interface';
export declare const ContributionProvider: unique symbol;
declare class ContributionProviderCache<T> implements IContributionProvider<T> {
    protected caches?: T[];
    protected serviceIdentifier: ServiceIdentifier<T>;
    protected container: IBindingResolver & {
        isBound: (serviceIdentifier: ServiceIdentifier<T>) => boolean;
    };
    constructor(serviceIdentifier: ServiceIdentifier<T>, container: IBindingResolver & {
        isBound: (serviceIdentifier: ServiceIdentifier<T>) => boolean;
    });
    getContributions(): T[];
    refresh(): void;
}
export declare function createContributionProvider<T>(serviceIdentifier: ServiceIdentifier<T>, container: IBindingResolver & {
    isBound: (serviceIdentifier: ServiceIdentifier<T>) => boolean;
}): IContributionProvider<T>;
export declare function bindContributionProvider(bind: any, id: ServiceIdentifier): void;
export declare function bindContributionProviderNoSingletonScope(bind: any, id: ServiceIdentifier): void;
export declare class ContributionStore {
    static store: Map<ServiceIdentifier<any>, Set<ContributionProviderCache<any>>>;
    static getStore(id: ServiceIdentifier<any>): ContributionProviderCache<any> | undefined;
    static setStore(id: ServiceIdentifier<any>, cache: ContributionProviderCache<any>): void;
    static refreshAllContributions(): void;
}
export { CONTRIBUTION_STORE_STATE_SYMBOL, getContributionStoreState } from './contribution-store-state';
export type { IContributionStoreState } from './contribution-store-state';
