import { HTMLDocument, Node, Position } from 'vscode-html-languageservice';
import { Document } from './Document';
/**
 * adopted from https://github.com/microsoft/vscode-html-languageservice/blob/10daf45dc16b4f4228987cf7cddf3a7dbbdc7570/src/parser/htmlParser.ts
 * differences:
 *
 * 1. parse expression tag in Whitespace state
 * 2. parse attribute with interpolation in AttributeValue state
 * 3. detect svelte blocks/tags in Content state
 */
export declare function parseHtml(text: string): HTMLDocument;
export interface AttributeContext {
    name: string;
    inValue: boolean;
    elementTag: Node;
    valueRange?: [number, number];
}
export declare function getAttributeContextAtPosition(document: Document, position: Position): AttributeContext | null;
/**
 * adopted from https://github.com/microsoft/vscode-html-languageservice/blob/10daf45dc16b4f4228987cf7cddf3a7dbbdc7570/src/parser/htmlParser.ts
 */
export declare class HTMLNode implements Node {
    start: number;
    end: number;
    children: HTMLNode[];
    parent?: HTMLNode | undefined;
    tag: string | undefined;
    closed: boolean;
    startTagEnd: number | undefined;
    endTagStart: number | undefined;
    attributes?: {
        [name: string]: string | null;
    } | undefined;
    get attributeNames(): string[];
    constructor(start: number, end: number, children: HTMLNode[], parent?: HTMLNode | undefined);
    isSameTag(tagInLowerCase: string | undefined): boolean;
    get firstChild(): Node | undefined;
    get lastChild(): Node | undefined;
    findNodeBefore(offset: number): Node;
    findNodeAt(offset: number): Node;
    private static findFirst;
}
export declare function scanCommentWithinTextOrComment(text: string, startOffset: number, endOffset: number): {
    start: number;
    end: number;
}[];
