import { Subject } from 'rxjs';
import { ToastCustomIcon, IMultilineMessage, ToastKind } from '../components/Toast';

export declare enum WebformActions {
    RELOAD = "reload",
    RECOMPUTE = "recompute"
}
export declare enum DatasourcesActions {
    RENAME = "rename",
    TYPE_CHANGE = "type-change"
}
export type TDatasourceRenameSubject = {
    action: DatasourcesActions.RENAME;
    /**
     * previous ID of the renamed datasource
     */
    old_reference: string;
    /**
     * New ID of the renamed datasource.
     */
    new_reference: string;
    /**
     * indicates if the datasource is shared
     */
    is_shared: boolean;
    /**
     * will be used in case the renamed datasource is a local datasource.
     */
    path: string;
};
export type TDatasourceTypeChangeSubject = {
    action: DatasourcesActions.TYPE_CHANGE;
    /**
     * the datasource to be changed
     */
    datasource: {
        id: string;
        namespace: string;
    };
    /**
     * previous Type of the datasource
     */
    old_type: string;
    /**
     * new Type of the datasource
     */
    new_type: string;
    /**
     * indicates if the datasource is shared
     */
    is_shared: boolean;
    /**
     * will be used in case the renamed datasource is a local datasource.
     */
    path: string;
};
export declare const datasourcesSubject: Subject<TDatasourceRenameSubject | TDatasourceTypeChangeSubject>;
export declare const webformSubject: Subject<{
    path: string;
    action: WebformActions;
    payload: any;
}>;
export declare const toastSubject: Subject<{
    kind: ToastKind;
    message: string | IMultilineMessage[];
    markdown?: boolean | undefined;
    customIcon?: ToastCustomIcon | undefined;
}>;
export declare enum TabEventsActions {
    SAVE_ALL = "save-all"
}
export declare const tabEventsSubject: Subject<{
    action: TabEventsActions;
    payload?: any;
}>;
export declare enum LspActions {
    WILL_SAVE = "will-save",
    DID_SAVE = "did-save",
    WILL_CREATE = "will-create",
    WILL_RENAME = "will-rename",
    WILL_DELETE = "will-delete",
    DID_CREATE = "did-create",
    DID_RENAME = "did-rename",
    DID_DELETE = "did-delete",
    DIAGNOSTIC_REFRESH = "diagnostic-refresh"
}
export declare const lspSubject: Subject<{
    action: LspActions;
    payload: any;
}>;
export declare enum DebuggerActions {
    RESEND_BREAKPOINTS = "resend-breakpoints"
}
export declare const debuggerSubject: Subject<{
    action: DebuggerActions;
    payload?: any;
}>;
type TTaskType = 'i18n';
export interface ITaskPayload {
    name?: string;
    date?: string;
    duration?: number;
    progress?: number;
    status?: 'ongoing' | 'finished' | 'canceled' | 'error';
    time?: string;
    errorMessage?: string;
}
export interface ISingleTask {
    id: string;
    type: TTaskType;
    action: 'add' | 'update' | 'cancel' | 'error';
    payload: ITaskPayload;
}
export declare const tasksManagerSubject: Subject<ISingleTask>;
export {};
