import type { Aliases } from './aliases'; import type { Token } from './tokenize'; export declare abstract class Node { abstract lastToken(): [Token | null, boolean]; } export declare class CommandNode extends Node { readonly name: Token; readonly suffix: Token[]; readonly redirects?: RedirectNode[] | undefined; constructor(name: Token, suffix: Token[], redirects?: RedirectNode[] | undefined); lastToken(): [Token | null, boolean]; } export declare class PipeNode extends Node { readonly commands: CommandNode[]; constructor(commands: CommandNode[]); lastToken(): [Token | null, boolean]; } export declare class RedirectNode extends Node { readonly token: Token; readonly target: Token; constructor(token: Token, target: Token); lastToken(): [Token | null, boolean]; } export declare function parse(source: string, throwErrors?: boolean, aliases?: Aliases): Node[];