import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import { ParsedRepoRev } from '.';
import * as GQL from '../backend/graphqlschema';
import { ExtensionsDocumentsProps } from '../extensions/environment/ExtensionsEnvironment';
import { ConfigurationCascadeProps, ExtensionsControllerProps, ExtensionsProps } from '../extensions/ExtensionsClientCommonContext';
import { ErrorLike } from '../util/errors';
import { ResolvedRev } from './backend';
import { RepoHeaderActionButton, RepoHeaderContributionsLifecycleProps } from './RepoHeader';
import { RepoRevContainerRoute } from './RepoRevContainer';
export interface RepoContainerProps extends RouteComponentProps<{
    repoRevAndRest: string;
}>, ConfigurationCascadeProps, ExtensionsProps, ExtensionsDocumentsProps, ExtensionsControllerProps {
    repoRevContainerRoutes: ReadonlyArray<RepoRevContainerRoute>;
    repoHeaderActionButtons: ReadonlyArray<RepoHeaderActionButton>;
    user: GQL.IUser | null;
    onHelpPopoverToggle: () => void;
    isLightTheme: boolean;
}
interface RepoRevContainerState extends ParsedRepoRev {
    filePath?: string;
    rest?: string;
    /**
     * The fetched repository or an error if occurred.
     * `undefined` while loading.
     */
    repoOrError?: GQL.IRepository | ErrorLike;
    /**
     * The resolved rev or an error if it could not be resolved. `undefined` while loading. This value comes from
     * this component's child RepoRevContainer, but it lives here because it's used by other children than just
     * RepoRevContainer.
     */
    resolvedRevOrError?: ResolvedRev | ErrorLike;
    /** The external links to show in the repository header, if any. */
    externalLinks?: GQL.IExternalLink[];
    repoHeaderContributionsLifecycleProps?: RepoHeaderContributionsLifecycleProps;
}
/**
 * Renders a horizontal bar and content for a repository page.
 */
export declare class RepoContainer extends React.Component<RepoContainerProps, RepoRevContainerState> {
    private routeMatchChanges;
    private repositoryUpdates;
    private repositoryAdds;
    private subscriptions;
    constructor(props: RepoContainerProps);
    componentDidMount(): void;
    componentWillReceiveProps(props: RepoContainerProps): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
    private onDidUpdateRepository;
    private onDidAddRepository;
    private onDidUpdateExternalLinks;
    private onResolvedRevOrError;
    private onRepoHeaderContributionsLifecyclePropsChange;
}
export {};
//# sourceMappingURL=RepoContainer.d.ts.map