import * as H from 'history';
import * as React from 'react';
import { Observable } from 'rxjs';
import { AbsoluteRepoFile, ParsedRepoURI } from '..';
import { ModeSpec } from '../../backend/features';
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 { RepoHeaderContributionsLifecycleProps } from '../RepoHeader';
export declare function fetchBlobCacheKey(parsed: ParsedRepoURI & {
    isLightTheme: boolean;
    disableTimeout: boolean;
}): string;
export declare const fetchBlob: (params: {
    repoPath: string;
    commitID: string;
    filePath: string;
    isLightTheme: boolean;
    disableTimeout: boolean;
}, force?: boolean | undefined) => Observable<GQL.IGitBlob>;
interface Props extends AbsoluteRepoFile, ModeSpec, RepoHeaderContributionsLifecycleProps, ConfigurationCascadeProps, ExtensionsProps, ExtensionsDocumentsProps, ExtensionsControllerProps {
    location: H.Location;
    history: H.History;
    isLightTheme: boolean;
    repoID: GQL.ID;
    user: GQL.IUser | null;
}
interface State {
    wrapCode: boolean;
    /**
     * The blob data or error that happened.
     * undefined while loading.
     */
    blobOrError?: GQL.IGitBlob | ErrorLike;
}
export declare class BlobPage extends React.PureComponent<Props, State> {
    private propsUpdates;
    private extendHighlightingTimeoutClicks;
    private subscriptions;
    constructor(props: Props);
    private logViewEvent;
    componentDidMount(): void;
    componentWillReceiveProps(newProps: Props): void;
    componentWillUnmount(): void;
    render(): React.ReactNode;
    private onDidUpdateLineWrap;
    private onExtendHighlightingTimeoutClick;
    private getPageTitle;
}
export {};
//# sourceMappingURL=BlobPage.d.ts.map