import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import * as GQL from '../backend/graphqlschema';
import { ExtensionsDocumentsProps } from '../extensions/environment/ExtensionsEnvironment';
import { ConfigurationCascadeProps, ExtensionsControllerProps, ExtensionsProps } from '../extensions/ExtensionsClientCommonContext';
import { RouteDescriptor } from '../util/contributions';
import { ErrorLike } from '../util/errors';
import { ResolvedRev } from './backend';
import { RepoHeaderContributionsLifecycleProps } from './RepoHeader';
export interface RepoRevContainerContext extends RepoHeaderContributionsLifecycleProps, ConfigurationCascadeProps, ExtensionsControllerProps, ExtensionsDocumentsProps, ExtensionsProps {
    repo: GQL.IRepository;
    rev: string;
    user: GQL.IUser | null;
    resolvedRev: ResolvedRev;
    isLightTheme: boolean;
    routePrefix: string;
    onHelpPopoverToggle: () => void;
}
export interface RepoRevContainerRoute extends RouteDescriptor<RepoRevContainerContext> {
}
interface RepoRevContainerProps extends RouteComponentProps<{}>, RepoHeaderContributionsLifecycleProps, ConfigurationCascadeProps, ExtensionsProps, ExtensionsDocumentsProps, ExtensionsControllerProps {
    routes: ReadonlyArray<RepoRevContainerRoute>;
    repo: GQL.IRepository;
    rev: string;
    user: GQL.IUser | null;
    isLightTheme: boolean;
    onHelpPopoverToggle: () => void;
    routePrefix: string;
    /**
     * The resolved rev or an error if it could not be resolved. This value lives in RepoContainer (this
     * component's parent) but originates from this component.
     */
    resolvedRevOrError?: ResolvedRev | ErrorLike;
    /** Called when the resolvedRevOrError state in this component's parent should be updated. */
    onResolvedRevOrError: (v: ResolvedRev | ErrorLike | undefined) => void;
}
interface RepoRevContainerState {
    showSidebar: boolean;
}
/**
 * A container for a repository page that incorporates revisioned Git data. (For example,
 * blob and tree pages are revisioned, but the repository settings page is not.)
 */
export declare class RepoRevContainer extends React.PureComponent<RepoRevContainerProps, RepoRevContainerState> {
    state: RepoRevContainerState;
    private propsUpdates;
    private subscriptions;
    componentDidMount(): void;
    componentWillReceiveProps(props: RepoRevContainerProps): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
}
export {};
//# sourceMappingURL=RepoRevContainer.d.ts.map