import type { StringTree, TreeType } from '../parser/types'; import { AltMatcher, ManyMatcher, OpMatcher, SeqMatcher, SymMatcher } from './matchers'; import { CommentMatcher } from './matchers/comment-matcher'; import { NumMatcher } from './matchers/num-matcher'; import { StrContentMatcherHandler, StrNodeMatcher } from './matchers/str-matcher'; import { TreeMatcher } from './matchers/tree-matcher'; import type { CommentMatcherHandler, CommentMatcherOptions, CommentMatcherValue, Matcher, NodeHandler, NumMatcherHandler, NumMatcherOptions, NumMatcherValue, OpMatcherHandler, OpMatcherOptions, OpMatcherValue, QueryBuilder, SymMatcherHandler, SymMatcherOptions, SymMatcherValue, TreeOptionsBase } from './types'; declare abstract class AbstractBuilder implements QueryBuilder { abstract build(): Matcher; sym(): SeqBuilder; sym(value: SymMatcherValue): SeqBuilder; sym(handler: SymMatcherHandler): SeqBuilder; sym(value: SymMatcherValue, handler: SymMatcherHandler): SeqBuilder; sym(opts: SymMatcherOptions): SeqBuilder; op(): SeqBuilder; op(value: OpMatcherValue): SeqBuilder; op(handler: OpMatcherHandler): SeqBuilder; op(value: OpMatcherValue, handler: OpMatcherHandler): SeqBuilder; op(opts: OpMatcherOptions): SeqBuilder; comment(): SeqBuilder; comment(value: CommentMatcherValue): SeqBuilder; comment(handler: CommentMatcherHandler): SeqBuilder; comment(value: CommentMatcherValue, handler: CommentMatcherHandler): SeqBuilder; comment(opts: CommentMatcherOptions): SeqBuilder; num(): SeqBuilder; num(value: NumMatcherValue): SeqBuilder; num(handler: NumMatcherHandler): SeqBuilder; num(value: NumMatcherValue, handler: NumMatcherHandler): SeqBuilder; num(opts: NumMatcherOptions): SeqBuilder; many(builder: QueryBuilder): SeqBuilder; many(builder: QueryBuilder, min: number, max: number): SeqBuilder; opt(innerBuilder: QueryBuilder): SeqBuilder; alt(...alts: QueryBuilder[]): SeqBuilder; tree(): SeqBuilder; tree(type: TreeType): SeqBuilder; tree(opts: TreeBuilderOptions): SeqBuilder; str(): SeqBuilder; str(handler: StrContentMatcherHandler): SeqBuilder; str(exact: string, handler?: StrContentMatcherHandler): SeqBuilder; str(pattern: RegExp, handler?: StrContentMatcherHandler): SeqBuilder; str(opts: StrTreeBuilderOptions): SeqBuilder; } declare class SeqBuilder extends AbstractBuilder { private readonly builders; constructor(prev: QueryBuilder, next: QueryBuilder); build(): SeqMatcher; } declare class SymBuilder extends AbstractBuilder { private opts; constructor(opts: SymMatcherOptions); build(): SymMatcher; } export declare function sym(): SymBuilder; export declare function sym(value: SymMatcherValue): SymBuilder; export declare function sym(handler: SymMatcherHandler): SymBuilder; export declare function sym(value: SymMatcherValue, handler: SymMatcherHandler): SymBuilder; export declare function sym(opts: SymMatcherOptions): SymBuilder; declare class OpBuilder extends AbstractBuilder { private opts; constructor(opts: OpMatcherOptions); build(): OpMatcher; } export declare function op(): OpBuilder; export declare function op(value: OpMatcherValue): OpBuilder; export declare function op(handler: OpMatcherHandler): OpBuilder; export declare function op(value: OpMatcherValue, handler: OpMatcherHandler): OpBuilder; export declare function op(opts: OpMatcherOptions): OpBuilder; declare class CommentBuilder extends AbstractBuilder { private opts; constructor(opts: CommentMatcherOptions); build(): CommentMatcher; } export declare function comment(): CommentBuilder; export declare function comment(value: CommentMatcherValue): CommentBuilder; export declare function comment(handler: CommentMatcherHandler): CommentBuilder; export declare function comment(value: CommentMatcherValue, handler: CommentMatcherHandler): CommentBuilder; export declare function comment(opts: CommentMatcherOptions): CommentBuilder; declare class NumBuilder extends AbstractBuilder { private opts; constructor(opts: NumMatcherOptions); build(): NumMatcher; } export declare function num(): NumBuilder; export declare function num(value: NumMatcherValue): NumBuilder; export declare function num(handler: NumMatcherHandler): NumBuilder; export declare function num(value: NumMatcherValue, handler: NumMatcherHandler): NumBuilder; export declare function num(opts: NumMatcherOptions): NumBuilder; export interface ManyBuilderOpts { builder: QueryBuilder; min: number; max: number | null; } declare class ManyBuilder extends AbstractBuilder { private opts; constructor(opts: ManyBuilderOpts); build(): ManyMatcher; } export declare function many(builder: QueryBuilder): ManyBuilder; export declare function many(builder: QueryBuilder, min: number, max: number): ManyBuilder; export declare function opt(builder: QueryBuilder): ManyBuilder; declare class AltBuilder extends AbstractBuilder { private builders; constructor(builders: QueryBuilder[]); build(): AltMatcher; } export declare function alt(...builders: QueryBuilder[]): AltBuilder; export interface TreeBuilderOptions extends TreeOptionsBase { search?: QueryBuilder | null; } declare class TreeBuilder extends AbstractBuilder { private opts; constructor(opts: TreeBuilderOptions); build(): TreeMatcher; } export declare function tree(): TreeBuilder; export declare function tree(type: TreeType): TreeBuilder; export declare function tree(opts: TreeBuilderOptions): TreeBuilder; export interface StrContentBuilderOptionsBase { match?: string | RegExp | null; handler?: StrContentMatcherHandler | null; } export interface StrTreeBuilderOptionsBase { match?: (string | RegExp | QueryBuilder)[] | null; preHandler?: NodeHandler | null; postHandler?: NodeHandler | null; } export declare type StrBuilderOptionsBase = StrContentBuilderOptionsBase | StrTreeBuilderOptionsBase; export interface StrContentBuilderOptions extends StrContentBuilderOptionsBase { type: 'str-content'; } export interface StrTreeBuilderOptions extends StrTreeBuilderOptionsBase { type: 'str-tree'; } export declare type StrBuilderOptions = StrContentBuilderOptions | StrTreeBuilderOptions; declare class StrBuilder extends AbstractBuilder { private opts; constructor(opts: StrBuilderOptions); build(): StrNodeMatcher; } export declare function str(): StrBuilder; export declare function str(handler: StrContentMatcherHandler): StrBuilder; export declare function str(exact: string, handler?: StrContentMatcherHandler): StrBuilder; export declare function str(pattern: RegExp, handler?: StrContentMatcherHandler): StrBuilder; export declare function str(opts: StrTreeBuilderOptionsBase): StrBuilder; export declare function buildRoot(builder: QueryBuilder): Matcher; export {}; //# sourceMappingURL=builder.d.ts.map