import type { TAG_ID } from './html.js'; export declare enum TokenType { CHARACTER = 0, NULL_CHARACTER = 1, WHITESPACE_CHARACTER = 2, START_TAG = 3, END_TAG = 4, COMMENT = 5, DOCTYPE = 6, EOF = 7, HIBERNATION = 8 } export interface Location { /** One-based line index of the first character. */ startLine: number; /** One-based column index of the first character. */ startCol: number; /** Zero-based first character index. */ startOffset: number; /** One-based line index of the last character. */ endLine: number; /** One-based column index of the last character. Points directly *after* the last character. */ endCol: number; /** Zero-based last character index. Points directly *after* the last character. */ endOffset: number; } export interface LocationWithAttributes extends Location { /** Start tag attributes' location info. */ attrs?: Record; } export interface ElementLocation extends LocationWithAttributes { /** Element's start tag location info. */ startTag?: Location; /** * Element's end tag location info. * This property is undefined, if the element has no closing tag. */ endTag?: Location; } interface TokenBase { readonly type: TokenType; location: Location | null; } export interface DoctypeToken extends TokenBase { readonly type: TokenType.DOCTYPE; name: string | null; forceQuirks: boolean; publicId: string | null; systemId: string | null; } export interface Attribute { /** The name of the attribute. */ name: string; /** The namespace of the attribute. */ namespace?: string; /** The namespace-related prefix of the attribute. */ prefix?: string; /** The value of the attribute. */ value: string; } export interface TagToken extends TokenBase { readonly type: TokenType.START_TAG | TokenType.END_TAG; tagName: string; /** Used to cache the ID of the tag name. */ tagID: TAG_ID; selfClosing: boolean; ackSelfClosing: boolean; attrs: Attribute[]; location: LocationWithAttributes | null; } export declare function getTokenAttr(token: TagToken, attrName: string): string | null; export interface CommentToken extends TokenBase { readonly type: TokenType.COMMENT; data: string; } export interface EOFToken extends TokenBase { readonly type: TokenType.EOF; } export interface CharacterToken extends TokenBase { type: TokenType.CHARACTER | TokenType.NULL_CHARACTER | TokenType.WHITESPACE_CHARACTER; chars: string; } export declare type Token = DoctypeToken | TagToken | CommentToken | EOFToken | CharacterToken; export {}; //# sourceMappingURL=token.d.ts.map