import type { SourceLocation, Range, PostCSSNode, PostCSSRule, PostCSSDeclaration, PostCSSAtRule, PostCSSSPNode, PostCSSSPTypeNode, PostCSSSPIDNode, PostCSSSPClassNameNode, PostCSSSPNestingNode, PostCSSSPUniversalNode, PostCSSSPAttributeNode, PostCSSSPPseudoNode, PostCSSSPCombinatorNode, PostCSSComment, PostCSSSPCommentNode, PostCSSRoot } from "../types";
type CopyProps = {
    node?: PostCSSNode | PostCSSSPNode;
    loc?: SourceLocation;
    start?: number;
    end?: number;
};
declare class Node<T extends string> {
    readonly type: T;
    readonly loc: SourceLocation;
    start: number;
    end: number;
    range: Range;
    readonly node: PostCSSNode | PostCSSSPNode;
    readonly lang: string;
    protected constructor(node: PostCSSNode | PostCSSSPNode, type: T, loc: SourceLocation, start: number, end: number, lang: string);
}
declare class HasParentNode<T extends string, P extends VCSSContainerNode | VCSSSelector | VCSSSelectorPseudo> extends Node<T> {
    readonly parent: P;
    protected constructor(node: PostCSSNode | PostCSSSPNode, type: T, loc: SourceLocation, start: number, end: number, props: {
        parent: P;
    });
}
export declare class VCSSParsingError extends Node<"VCSSParsingError"> {
    readonly message: string;
    constructor(node: PostCSSDeclaration, loc: SourceLocation, start: number, end: number, props: {
        lang: string;
        message: string;
    });
}
export declare class VCSSStyleSheet extends Node<"VCSSStyleSheet"> {
    nodes: VCSSNode[];
    comments: VCSSCommentNode[];
    readonly errors: VCSSParsingError[];
    constructor(node: PostCSSRoot, loc: SourceLocation, start: number, end: number, props: {
        nodes?: VCSSNode[];
        comments?: VCSSCommentNode[];
        errors?: VCSSParsingError[];
        lang: string;
    });
    copy(props?: CopyProps): VCSSStyleSheet;
}
export declare class VCSSStyleRule extends HasParentNode<"VCSSStyleRule", VCSSContainerNode> {
    nodes: VCSSNode[];
    readonly selectorText: string;
    readonly rawSelectorText: string;
    selectors: VCSSSelectorNode[];
    constructor(node: PostCSSRule, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSContainerNode;
        selectorText?: string;
        rawSelectorText: string | null;
        selectors?: VCSSSelectorNode[];
        nodes?: VCSSNode[];
    });
    copy(props?: CopyProps): VCSSStyleRule;
}
export declare class VCSSDeclarationProperty extends HasParentNode<"VCSSDeclarationProperty", VCSSContainerNode> {
    readonly property: string;
    readonly value: string;
    readonly important: boolean;
    constructor(node: PostCSSDeclaration, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSContainerNode;
        property?: string;
        important?: boolean;
        value?: string;
    });
    copy(props?: CopyProps): VCSSDeclarationProperty;
}
export declare class VCSSAtRule extends HasParentNode<"VCSSAtRule", VCSSContainerNode> {
    nodes: VCSSNode[];
    readonly name: string;
    readonly identifier: string;
    readonly paramsText: string;
    readonly rawParamsText: string;
    rawSelectorText?: string;
    selectors?: VCSSSelectorNode[];
    readonly node: PostCSSAtRule;
    constructor(node: PostCSSAtRule, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSContainerNode;
        identifier: string;
        paramsText?: string;
        rawParamsText: string | null;
        selectors?: VCSSSelectorNode[];
        nodes?: VCSSNode[];
    });
    copy(props?: CopyProps): VCSSAtRule;
}
export declare class VCSSUnknown extends HasParentNode<"VCSSUnknown", VCSSContainerNode> {
    nodes: VCSSNode[];
    unknownType?: string;
    constructor(node: PostCSSNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSContainerNode;
        nodes?: VCSSNode[];
        unknownType?: string;
    });
    copy(props?: CopyProps): VCSSUnknown;
}
export declare class VCSSSelector extends HasParentNode<"VCSSSelector", VCSSStyleRule | VCSSAtRule | VCSSSelectorPseudo> {
    nodes: VCSSSelectorValueNode[];
    parent: VCSSStyleRule | VCSSAtRule | VCSSSelectorPseudo;
    constructor(node: PostCSSSPNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSStyleRule | VCSSAtRule | VCSSSelectorPseudo;
        nodes?: VCSSSelectorValueNode[];
    });
    copy(props?: CopyProps): VCSSSelector;
    get selector(): string;
}
export declare class VCSSTypeSelector extends HasParentNode<"VCSSTypeSelector", VCSSSelector> {
    readonly value: string;
    readonly selector: string;
    constructor(node: PostCSSSPTypeNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSTypeSelector;
}
export declare class VCSSIDSelector extends HasParentNode<"VCSSIDSelector", VCSSSelector> {
    readonly value: string;
    readonly selector: string;
    constructor(node: PostCSSSPIDNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSIDSelector;
}
export declare class VCSSClassSelector extends HasParentNode<"VCSSClassSelector", VCSSSelector> {
    readonly value: string;
    readonly selector: string;
    constructor(node: PostCSSSPClassNameNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSClassSelector;
}
export declare class VCSSNestingSelector extends HasParentNode<"VCSSNestingSelector", VCSSSelector> {
    readonly value: string;
    readonly selector: string;
    constructor(node: PostCSSSPNestingNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSNestingSelector;
}
export declare class VCSSUniversalSelector extends HasParentNode<"VCSSUniversalSelector", VCSSSelector> {
    readonly value: string;
    readonly selector: string;
    constructor(node: PostCSSSPUniversalNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSUniversalSelector;
}
export declare class VCSSAttributeSelector extends HasParentNode<"VCSSAttributeSelector", VCSSSelector> {
    readonly value: string | null;
    readonly attribute: string;
    readonly operator: string | null;
    readonly quoteMark: string | null;
    readonly insensitiveFlag: string | null;
    readonly selector: string;
    constructor(node: PostCSSSPAttributeNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
        insensitiveFlag?: string;
    });
    private refreshSelector;
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSAttributeSelector;
}
export declare class VCSSSelectorPseudo extends HasParentNode<"VCSSSelectorPseudo", VCSSSelector> {
    readonly value: string;
    nodes: VCSSSelector[];
    constructor(node: PostCSSSPPseudoNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        nodes?: VCSSSelector[];
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSSelectorPseudo;
    get selector(): string;
}
export declare class VCSSSelectorCombinator extends HasParentNode<"VCSSSelectorCombinator", VCSSSelector> {
    value: string;
    selector: string;
    constructor(node: PostCSSSPCombinatorNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
        value?: string;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSSelectorCombinator;
}
export declare class VCSSUnknownSelector extends HasParentNode<"VCSSUnknownSelector", VCSSSelector> {
    readonly value: string;
    readonly selector: string;
    constructor(node: PostCSSSPNode, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSSelector;
    });
    copy(props?: CopyProps & {
        parent?: VCSSSelector;
        value?: string;
    }): VCSSUnknownSelector;
}
export declare class VCSSComment extends HasParentNode<"VCSSComment", VCSSContainerNode | VCSSSelector> {
    readonly node: PostCSSComment | PostCSSSPCommentNode;
    readonly text: string;
    constructor(node: PostCSSComment | PostCSSSPCommentNode, text: string, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSContainerNode | VCSSSelector;
    });
    copy(props?: CopyProps & {
        parent?: VCSSContainerNode | VCSSSelector;
        node?: PostCSSComment | PostCSSSPCommentNode;
        text?: string;
    }): VCSSComment;
}
export declare class VCSSInlineComment extends HasParentNode<"VCSSInlineComment", VCSSContainerNode | VCSSSelector> {
    readonly node: PostCSSComment | PostCSSSPCommentNode;
    readonly text: string;
    constructor(node: PostCSSComment | PostCSSSPCommentNode, text: string, loc: SourceLocation, start: number, end: number, props: {
        parent: VCSSContainerNode | VCSSSelector;
    });
    copy(props?: CopyProps & {
        parent?: VCSSContainerNode | VCSSSelector;
        node?: PostCSSComment | PostCSSSPCommentNode;
        text?: string;
    }): VCSSInlineComment;
}
export type VCSS = VCSSNode | VCSSSelectorNode;
export type VCSSNode = VCSSContainerNode | VCSSDeclarationProperty | VCSSCommentNode;
export type VCSSCommentNode = VCSSInlineComment | VCSSComment;
export type VCSSContainerNode = VCSSStyleSheet | VCSSStyleRule | VCSSAtRule | VCSSUnknown;
export type VCSSSelectorNode = VCSSSelector | VCSSTypeSelector | VCSSIDSelector | VCSSClassSelector | VCSSNestingSelector | VCSSUniversalSelector | VCSSAttributeSelector | VCSSSelectorPseudo | VCSSSelectorCombinator | VCSSUnknownSelector;
export type VCSSSelectorValueNode = VCSSTypeSelector | VCSSIDSelector | VCSSClassSelector | VCSSNestingSelector | VCSSUniversalSelector | VCSSAttributeSelector | VCSSSelectorPseudo | VCSSSelectorCombinator | VCSSUnknownSelector;
export {};
