import { CSSToken, TokenFunction } from '@csstools/css-tokenizer'; import { Context } from '../interfaces/context'; import { ComponentValueType } from '../util/component-value-type'; export type ContainerNode = FunctionNode | SimpleBlockNode; export type ComponentValue = FunctionNode | SimpleBlockNode | WhitespaceNode | CommentNode | TokenNode; export declare function consumeComponentValue(ctx: Context, tokens: Array): { advance: number; node: ComponentValue; }; export declare class FunctionNode { type: ComponentValueType; name: TokenFunction; endToken: CSSToken; value: Array; constructor(name: TokenFunction, endToken: CSSToken, value: Array); getName(): string; /** * Normalize the current Function: * - if the "endToken" is EOF, replace with a ")-token" */ normalize(): void; tokens(): Array; toString(): string; indexOf(item: ComponentValue): number | string; at(index: number | string): ComponentValue | undefined; walk>(cb: (entry: { node: ComponentValue; parent: ContainerNode; state?: T; }, index: number | string) => boolean | void, state?: T): false | undefined; toJSON(): unknown; isFunctionNode(): this is FunctionNode; static isFunctionNode(x: unknown): x is FunctionNode; } export declare function consumeFunction(ctx: Context, tokens: Array): { advance: number; node: FunctionNode; }; export declare class SimpleBlockNode { type: ComponentValueType; startToken: CSSToken; endToken: CSSToken; value: Array; constructor(startToken: CSSToken, endToken: CSSToken, value: Array); /** * Normalize the current Simple Block: * - if the "endToken" is EOF, replace with the mirror token of the "startToken" */ normalize(): void; tokens(): Array; toString(): string; indexOf(item: ComponentValue): number | string; at(index: number | string): ComponentValue | undefined; walk>(cb: (entry: { node: ComponentValue; parent: ContainerNode; state?: T; }, index: number | string) => boolean | void, state?: T): false | undefined; toJSON(): unknown; isSimpleBlockNode(): this is SimpleBlockNode; static isSimpleBlockNode(x: unknown): x is SimpleBlockNode; } /** https://www.w3.org/TR/css-syntax-3/#consume-simple-block */ export declare function consumeSimpleBlock(ctx: Context, tokens: Array): { advance: number; node: SimpleBlockNode; }; export declare class WhitespaceNode { type: ComponentValueType; value: Array; constructor(value: Array); tokens(): Array; toString(): string; toJSON(): { type: ComponentValueType; tokens: CSSToken[]; }; isWhitespaceNode(): this is WhitespaceNode; static isWhitespaceNode(x: unknown): x is WhitespaceNode; } export declare function consumeWhitespace(ctx: Context, tokens: Array): { advance: number; node: WhitespaceNode; }; export declare class CommentNode { type: ComponentValueType; value: CSSToken; constructor(value: CSSToken); tokens(): Array; toString(): string; toJSON(): { type: ComponentValueType; tokens: CSSToken[]; }; isCommentNode(): this is CommentNode; static isCommentNode(x: unknown): x is CommentNode; } export declare function consumeComment(ctx: Context, tokens: Array): { advance: number; node: CommentNode; }; export declare function consumeAllCommentsAndWhitespace(ctx: Context, tokens: Array): { advance: number; nodes: Array; }; export declare class TokenNode { type: ComponentValueType; value: CSSToken; constructor(value: CSSToken); tokens(): Array; toString(): string; toJSON(): { type: ComponentValueType; tokens: CSSToken[]; }; isTokenNode(): this is TokenNode; static isTokenNode(x: unknown): x is TokenNode; }