import React, { Component } from 'react';
import PropTypes from 'prop-types';
import type { Shell as ShellType } from '@mongosh/browser-repl';
import type { WorkerRuntime } from '@mongosh/node-runtime-worker-thread';
import type { HistoryStorage } from '../../modules/history-storage';
export interface CompassShellProps {
    emitShellPluginOpened?: () => void;
    runtime: WorkerRuntime | null;
    shellOutput?: ShellOutputEntry[];
    historyStorage?: HistoryStorage;
    enableShell: boolean;
}
interface CompassShellState {
    height: number;
    prevHeight: number;
    initialHistory: string[] | null;
    isOperationInProgress: boolean;
    showInfoModal: boolean;
}
type ShellOutputEntry = ShellType['state']['output'][number];
export declare class CompassShell extends Component<CompassShellProps, CompassShellState> {
    static propTypes: {
        emitShellPluginOpened: PropTypes.Requireable<(...args: any[]) => any>;
        runtime: PropTypes.Requireable<object>;
        shellOutput: PropTypes.Requireable<any[]>;
        historyStorage: PropTypes.Requireable<object>;
        enableShell: PropTypes.Requireable<boolean>;
    };
    shellRef: React.RefObject<ShellType>;
    shellOutput: readonly ShellOutputEntry[];
    static defaultProps: {
        emitShellPluginOpened: () => void;
        runtime: null;
    };
    constructor(props: CompassShellProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: CompassShellProps, prevState: CompassShellState): void;
    componentWillUnmount(): void;
    onShellOutputChanged: (output: readonly ShellOutputEntry[]) => void;
    onOperationStarted: () => void;
    onOperationEnd: () => void;
    terminateRuntime: () => void;
    saveHistory: (history: readonly string[]) => void;
    loadHistory: () => Promise<void>;
    updateHeight(height: number): void;
    hideInfoModal(): void;
    focusEditor(): void;
    render(): JSX.Element;
}
declare const _default: import("react-redux").ConnectedComponent<(props: Omit<CompassShellProps, "enableShell"> & Partial<Pick<CompassShellProps, "enableShell">>) => React.ReactElement<{}, string | React.JSXElementConstructor<any>>, {
    enableShell?: boolean | undefined;
    shellOutput?: import("@mongosh/browser-repl/lib/components/shell-output-line").ShellOutputEntry[] | undefined;
    historyStorage?: HistoryStorage | undefined;
    context?: React.Context<import("react-redux").ReactReduxContextValue<any, import("redux").AnyAction>> | undefined;
    store?: import("redux").Store<any, import("redux").AnyAction> | undefined;
}>;
export default _default;
//# sourceMappingURL=compass-shell.d.ts.map