import React from 'react';
import { WithTheme } from '@mui/styles';
import { Theme } from '@mui/material/styles';
import { ISplitsData, ISplitItem } from '../client';
declare type IProps = WithTheme<Theme>;
export interface IDefaultState {
    splitsData?: ISplitsData;
    errorMessage?: string;
    width: string | number;
    height: string | number;
}
interface DefaultViewerSettings {
    show_num_next_splits: number;
    show_num_prev_splits: number;
}
export declare class DefaultAppImpl extends React.Component<IProps, IDefaultState> {
    state: IDefaultState;
    private client?;
    constructor(props: IProps);
    getUserDefinedDimension(num: string): string;
    splitsUpdated(splitsData: ISplitsData): void;
    componentDidMount(): Promise<void>;
    componentWillUnmount(): Promise<void>;
    private s;
    renderSplitDuration(id: number): JSX.Element | null | undefined;
    getViewerSettings(): DefaultViewerSettings;
    renderSplits(): (JSX.Element | null)[] | null;
    renderAttemptDuration(): JSX.Element | null;
    renderHeaderRow(): JSX.Element;
    renderSplitsRow(splitStep: ISplitItem, afterCurrentSplit: boolean): JSX.Element | null;
    renderFooterRow(): JSX.Element | null;
    renderTable(): JSX.Element | null | undefined;
    renderProgressBar(): JSX.Element | null;
    render(): JSX.Element | null;
}
export declare const DefaultApp: React.JSXElementConstructor<Omit<IProps, "theme"> & Partial<WithTheme<Theme>> & import("@mui/styles").ThemedComponentProps>;
export {};
