import { Token } from './tokenizer'; import type { RegisterOptions } from '../argparser'; export declare type AstNode = Value | LongOption | ShortOption | ShortOptions | PositionalArgument | ForcePositional; declare type BaseAstNode = { type: Type; index: number; raw: string; }; export interface LongOption extends BaseAstNode<'longOption'> { key: string; value?: OptionValue; } interface Delimiter extends BaseAstNode<'delimiter'> { } interface Value extends BaseAstNode<'value'> { } interface OptionValue extends BaseAstNode<'optionValue'> { delimiter: Delimiter; node: Value; } export interface ShortOptions extends BaseAstNode<'shortOptions'> { options: ShortOption[]; } export interface ShortOption extends BaseAstNode<'shortOption'> { key: string; value?: OptionValue; } export interface PositionalArgument extends BaseAstNode<'positionalArgument'> { } interface ForcePositional extends BaseAstNode<'forcePositional'> { type: 'forcePositional'; } /** * Create an AST from a token list * * @param tokens A token list, coming from `tokenizer.ts` * @param forceFlag Keys to force as flag. {@see ForceFlag} to read more about it. */ export declare function parse(tokens: Token[], forceFlag: RegisterOptions): AstNode[]; export {};