import { IEnterpriseGlossaryInformationSourceReadonly } from "@omnia/fx-models";
import { EnterpriseGlossaryInformationProviderId, EnterpriseGlossaryInformationSourceSettings } from "./EnterpriseGlossaryInformationSourceSettings";
import { EnterpriseGlossaryProvider } from "./EnterpriseGlossaryProvider";
export interface IEnterpriseGlossaryRegistrationApi {
    registerEnterpriseGlossaryProvider(provider: EnterpriseGlossaryProvider): void;
    getEnterpriseGlossaryProviders(): EnterpriseGlossaryProvider[];
}
export interface IEnterpriseGlossaryInformationApi {
    registerInformationProvider(register: EnterpriseGlossaryInformationProviderRegistration): void;
    getInformationProvider(typeId: EnterpriseGlossaryInformationProviderId): Promise<new () => IEnterpriseGlossaryInformationProvider>;
}
export interface IEnterpriseGlossaryInformationProvider<TInformationSource extends Object = Object, TInformationSourceSettings extends EnterpriseGlossaryInformationSourceSettings = EnterpriseGlossaryInformationSourceSettings> {
    triggered(sourceInformation: IEnterpriseGlossaryInformationSourceReadonly<TInformationSource>, providerInformationSourceSettings: TInformationSourceSettings): void | Promise<void>;
}
export declare class EnterpriseGlossaryInformationProviderRegistration {
    typeId: EnterpriseGlossaryInformationProviderId;
    provider: new () => IEnterpriseGlossaryInformationProvider;
    constructor(typeId: EnterpriseGlossaryInformationProviderId, provider: new () => IEnterpriseGlossaryInformationProvider);
}
declare module "../Extends" {
    interface IOmniaFxApi {
        enterpriseGlossary: {
            registrations: Promise<IEnterpriseGlossaryRegistrationApi>;
            providers: Promise<IEnterpriseGlossaryInformationApi>;
        };
    }
    interface IOmniaFxApiManifest {
        enterpriseGlossary: {
            registrations: ApiPath;
            providers: IExtendApiManifestWithConfiguration<EnterpriseGlossaryInformationProviderId>;
        };
    }
}
