import type { TypeInstance } from './type.js'; type MatcherData = { type: Type; data: Data; }; export declare class MatcherCreator { createMatcher(type: Type, data: Data): { type: Type; data: Data; }; } export declare class Matcher { private readonly list; private readonly _match; constructor(list: MatcherData[], _match?: (type: Type, target: TypeInstance) => boolean); all(): MatcherData[]; allMatched(type: TypeInstance): MatcherData[]; allMatchedData(type: TypeInstance): Data[]; find(f: (data: MatcherData) => boolean): MatcherData | undefined; findData(f: (data: Data) => boolean): Data | undefined; isMatched(type: Type, target: TypeInstance): boolean; match(type: TypeInstance): Data | undefined; } export declare class Matcher_ { private readonly list; private readonly getType; private readonly matchFunc; constructor(list: Value[], getType: (value: Value) => Type, matchFunc?: (type: Type, target: TypeInstance) => boolean); all(): Value[]; allMatched(type: TypeInstance): Value[]; find(f: (data: Value) => boolean): Value | undefined; isMatched(type: Type, target: TypeInstance): boolean; match(type: TypeInstance): Value | undefined; } export {}; //# sourceMappingURL=matcher.d.ts.map