import type { NotebookDocument, TextLine, Uri } from 'vscode';
import { Position, Range, Selection } from '../../../util/common/test/shims/vscodeTypesShim';
import { UriComponents } from '../../../util/vs/base/common/uri';
export interface INotebookDocumentSnapshotJSON {
    readonly type: 'notebook';
    readonly uri: UriComponents;
    readonly _text: string;
    readonly languageId: string;
    readonly version: number;
    readonly alternativeFormat: 'json' | 'xml' | 'text';
}
export declare function isNotebookDocumentSnapshotJSON(thing: any): thing is INotebookDocumentSnapshotJSON;
export declare class NotebookDocumentSnapshot {
    readonly alternativeFormat: 'json' | 'xml' | 'text';
    static create(doc: NotebookDocument, format: 'json' | 'xml' | 'text'): NotebookDocumentSnapshot;
    static fromJSON(doc: NotebookDocument, json: INotebookDocumentSnapshotJSON): NotebookDocumentSnapshot;
    readonly type = "notebook";
    readonly document: NotebookDocument;
    readonly _text: string;
    readonly uri: Uri;
    readonly version: number;
    readonly languageId: string;
    private _alternativeDocument;
    private constructor();
    getText(range?: Range): string;
    getSelection(): Selection;
    getWholeRange(): Range;
    get lines(): string[];
    get lineCount(): number;
    lineAt(line: number): TextLine;
    lineAt(position: Position): TextLine;
    offsetAt(position: Position): number;
    positionAt(offset: number): Position;
    validateRange(range: Range): Range;
    validatePosition(position: Position): Position;
    toJSON(): INotebookDocumentSnapshotJSON;
}
//# sourceMappingURL=notebookDocumentSnapshot.d.ts.map