import { Component, FC } from 'react';
import type { IExtensionImportType, IPipe } from '@mtbird/shared';
import { ContributesKeys, IContributeManifest, IContribute } from '@mtbird/shared';
export interface IState {
    extensions: IExtensionImportType[];
    extensionComponents?: Map<string, Component | FC> | null;
    extensionModalVisible?: IContribute | null;
    extensionContributes: Map<ContributesKeys, IContributeManifest[]>;
    extensionLoadStatus: string;
    extensionPipes: Map<string, IPipe>;
}
export interface IAction {
    init: (context: IContext) => Promise<void>;
    appendContributes: (type: string, contributes: IContribute) => void;
    registerFeature: (key: string, feature: any) => void;
    toggleModal: (key: string, params: any) => void;
}
export interface IContext {
    state: IState;
    actions: IAction;
}
export default IContext;
