import { SlotRegistry } from '@teambit/harmony';
import LegacyScope from '../../scope/scope';
import { PersistOptions } from '../../scope/types';
import { BitIds as ComponentsIds, BitId } from '../../bit-id';
import { Component, ComponentID } from '../component';
declare type TagRegistry = SlotRegistry<OnTag>;
export declare type OnTag = (ids: BitId[]) => Promise<any>;
export declare class ScopeExtension {
    readonly legacyScope: LegacyScope;
    private tagRegistry;
    static id: string;
    constructor(legacyScope: LegacyScope, tagRegistry: TagRegistry);
    onTag(tagFn: OnTag): void;
    fetch(ids: ComponentsIds): void;
    persist(components: Component[], options: PersistOptions): void;
    get(id: string | ComponentID): Promise<Component | undefined>;
    static slots: ((registerFn: () => string) => SlotRegistry<OnTag>)[];
    static provider(deps: any, config: any, [tagSlot]: [TagRegistry]): Promise<ScopeExtension | undefined>;
}
export {};
