import * as postcss from "postcss";
import { CSSSelectorParser } from "./selector/css-selector-parser";
import type { VCSSCommentNode, VCSSNode, VCSSContainerNode } from "../ast";
import { VCSSStyleSheet } from "../ast";
import type { SourceCode, LineAndColumnData, PostCSSNode, PostCSSRoot, SourceLocation, PostCSSRule, PostCSSAtRule, PostCSSDeclaration, PostCSSComment } from "../../types";
export declare class CSSParser {
    protected readonly sourceCode: SourceCode;
    protected commentContainer: VCSSCommentNode[];
    private _selectorParser;
    private readonly lang;
    private anyErrors;
    constructor(sourceCode: SourceCode, lang: string);
    parse(css: string, offsetLocation: LineAndColumnData): VCSSStyleSheet;
    private addError;
    private collectErrors;
    protected get selectorParser(): CSSSelectorParser;
    private _postcssNodeToASTNode;
    protected parseInternal(css: string): postcss.Root;
    protected createSelectorParser(): CSSSelectorParser;
    protected convertRootNode(node: PostCSSRoot, loc: SourceLocation, start: number, end: number): VCSSNode | null;
    protected convertRuleNode(node: PostCSSRule, loc: SourceLocation, start: number, end: number, parent: VCSSContainerNode): VCSSNode | null;
    protected parseRuleRawsBetween(node: PostCSSRule, astNode: VCSSNode): void;
    protected convertAtruleNode(node: PostCSSAtRule, loc: SourceLocation, start: number, end: number, parent: VCSSContainerNode): VCSSNode | null;
    private parseAtruleRawsAfterName;
    private parseAtruleRawsBetween;
    protected convertDeclNode(node: PostCSSDeclaration, loc: SourceLocation, start: number, end: number, parent: VCSSContainerNode): VCSSNode | null;
    protected convertCommentNode(node: PostCSSComment, loc: SourceLocation, start: number, end: number, parent: VCSSContainerNode): VCSSNode | null;
    protected convertUnknownTypeNode(node: PostCSSNode, loc: SourceLocation, start: number, end: number, parent: VCSSContainerNode): VCSSNode | null;
    protected getRaw<N extends PostCSSNode, K extends keyof N["raws"] & string>(node: N, keyName: K): N["raws"][K];
}
