import type { ActivityProvider } from '@atlaskit/activity-provider';
import type { EmojiProvider } from '@atlaskit/emoji/types';
import type { MentionProvider } from '@atlaskit/mention/types';
import type { TaskDecisionProvider } from '@atlaskit/task-decision/types';
import type { CollabEditProvider } from '../collab';
import type { ExtensionProvider } from '../extensions/types/extension-provider';
import type { AutoformattingProvider } from './autoformatting-provider';
import type { CardProvider } from './card-provider';
import type { ContextIdentifierProvider } from './context-identifier-provider';
import type { ImageUploadProvider } from './image-upload-provider';
import type { MacroProvider } from './macro-provider';
import type { MediaProvider } from './media-provider';
import type { ProfilecardProvider } from './profile-card-provider';
import type { QuickInsertProvider } from './quick-insert-provider';
import type { SearchProvider } from './search-provider';
export interface Providers {
    activityProvider?: Promise<ActivityProvider>;
    autoformattingProvider?: Promise<AutoformattingProvider>;
    cardProvider?: Promise<CardProvider>;
    collabEditProvider?: Promise<CollabEditProvider>;
    contextIdentifierProvider?: Promise<ContextIdentifierProvider>;
    emojiProvider?: Promise<EmojiProvider>;
    extensionProvider?: Promise<ExtensionProvider>;
    imageUploadProvider?: Promise<ImageUploadProvider>;
    macroProvider?: Promise<MacroProvider>;
    mediaProvider?: Promise<MediaProvider>;
    mentionProvider?: Promise<MentionProvider>;
    presenceProvider?: Promise<any>;
    profilecardProvider?: Promise<ProfilecardProvider>;
    quickInsertProvider?: Promise<QuickInsertProvider>;
    reactionsStore?: Promise<any>;
    searchProvider?: Promise<SearchProvider>;
    taskDecisionProvider?: Promise<TaskDecisionProvider>;
}
export type ProviderName = keyof Providers;
export type ProviderType<T> = T extends keyof Providers ? Providers[T] : Promise<any>;
export type ProviderHandler<T extends string = any> = (name: T, provider?: ProviderType<typeof name>) => void;
