export type AtomMatcher = SegmentMatcher | TrueMatcher; export type ExpressionMatcherType = NegateMatcher | GroupMatcher | PathMatcher; export type CompositeMatcherType = GroupMatcher | NegateMatcher | GroupMatcher | PathMatcher; export type ParsedMatcher = (PathMatcher | CompositeMatcher | OrMatcher | AndMatcher | NegateMatcher); export type CompositeOperator = '|' | '&' | '-'; export type GroupPrefix = 'L' | 'R' | 'B'; export type SegmentMatch = [string[], string[]]; export type PrefixMatch = [GroupPrefix, ':']; export declare class SegmentMatcher { segment: string; constructor(segments: SegmentMatch); matches(scope: string): boolean; getPrefix(_: string): void; } export declare class TrueMatcher { matches(_: string): boolean; getPrefix(_: string): void; } export declare class ScopeMatcher { segments: AtomMatcher[]; constructor(first: AtomMatcher, others: Array<[[], AtomMatcher]>); matches(scope: string): boolean; getPrefix(_: string): void; } export declare class GroupMatcher { prefix?: GroupPrefix; selector: ScopeMatcher; constructor(prefix: PrefixMatch | null | undefined, selector: ScopeMatcher); matches(scopes: string): boolean; getPrefix(scopes: string): GroupPrefix | void; } export declare class PathMatcher { prefix?: GroupPrefix; matchers: ScopeMatcher[]; constructor(prefix: PrefixMatch | null | void, first: ScopeMatcher, others: Array<[[], ScopeMatcher]>); matches(scopes: string[]): boolean; getPrefix(scopes: string[]): GroupPrefix | void; } export declare class OrMatcher { left: ParsedMatcher; right: ParsedMatcher; constructor(left1: ParsedMatcher, right1: ParsedMatcher); matches(scopes: string[]): boolean; getPrefix(scopes: string[]): GroupPrefix | void; } export declare class AndMatcher { left: PathMatcher; right: PathMatcher | NegateMatcher; constructor(left: PathMatcher, right: PathMatcher | NegateMatcher); matches(scopes: string[]): boolean; getPrefix(scopes: string[]): GroupPrefix | void; } export declare class NegateMatcher { matcher: PathMatcher; constructor(matcher: PathMatcher); matches(scopes: string[]): boolean; getPrefix(_: string[]): void; } export declare class CompositeMatcher { matcher: OrMatcher | AndMatcher; constructor(left: PathMatcher, operator: CompositeOperator, right: PathMatcher); matches(scopes: string[]): boolean; getPrefix(scopes: string[]): GroupPrefix | void; }