declare interface Arg extends AstNode { openBrace: string; closeBrace: string; } declare namespace ArgSpecAst { export { Ast, Node_2 as Node, LeadingWhitespace, DefaultArgument, DefaultArguments, Embellishment, Group } } export { ArgSpecAst } declare type Ast = Node_2[] | Node_2; declare interface AstNode { type: string; } declare interface Body_2 extends AstNode { type: "body"; } declare interface DefaultArgument { defaultArg?: string; } declare interface DefaultArguments { defaultArg?: string[]; } declare interface Embellishment extends DefaultArguments, AstNode { type: "embellishment"; embellishmentTokens: string[]; } declare interface Group extends AstNode { type: "group"; content: (Group | string)[]; } declare interface LeadingWhitespace { noLeadingWhitespace: boolean | undefined; } declare interface Mandatory extends LeadingWhitespace, DefaultArgument, Arg { type: "mandatory"; } declare type Node_2 = Optional | Mandatory | Verbatim | Body_2 | Group | Until; declare type Optional = OptionalArg | OptionalStar | OptionalToken | Embellishment; declare interface OptionalArg extends LeadingWhitespace, DefaultArgument, Arg { type: "optional"; } declare interface OptionalStar extends LeadingWhitespace, AstNode { type: "optionalStar"; } declare interface OptionalToken extends LeadingWhitespace, AstNode { type: "optionalToken"; token: string; } /** * Parse an `xparse` argument specification string to an AST. * This function caches results. Don't mutate the returned AST! * * @param {string} [str=""] - LaTeX string input * @returns - AST for LaTeX string */ export declare function parse(str?: string): ArgSpecAst.Node[]; /** * Print an `xparse` argument specification AST * to a string. */ export declare function printRaw(node: ArgSpecAst.Node | string | (ArgSpecAst.Node | string)[], root?: boolean): string; declare interface Until extends AstNode { type: "until"; stopTokens: string[]; } declare interface Verbatim extends Arg { type: "verbatim"; } export { }