import { HKT } from "@tsplus/stdlib/prelude/HKT"; type KindFromObj = HKT.Kind, HKT.Infer, HKT.Infer>; export interface MatchFn { , __: Extract) => HKT.Kind; }>(matcher: K): (_: X) => KindFromObj; }[keyof K]>; , __: Extract) => HKT.Kind; }>, Ret extends HKT.Kind>(matcher: K, def: (_: Exclude, __: Exclude) => Ret): (_: X) => KindFromObj any ? ReturnType : never; }[keyof K] | Ret>; } export interface MatchInFn { (): { , __: Extract) => HKT.Kind; }>(matcher: K): (_: X) => KindFromObj; }[keyof K]>; , __: Extract) => HKT.Kind; }>, Ret extends HKT.Kind>(matcher: K, def: (_: Exclude, __: Exclude) => Ret): (_: X) => KindFromObj any ? ReturnType : never; }[keyof K] | Ret>; }; } export interface MatchMorphFn { , __: Extract) => HKT.Kind; }>(matcher: K): (_: X) => KindFromObj; }[keyof K]>; , __: Extract) => HKT.Kind; }>, Ret extends HKT.Kind>(matcher: K, def: (_: Exclude, __: Exclude) => Ret): (_: X) => KindFromObj any ? ReturnType : never; }[keyof K] | Ret>; } /** * @tsplus static DSL matchers * @tsplus location "@tsplus/stdlib/prelude/DSL/matchers" */ export declare function matchers(): { match: (tag: N) => MatchFn; matchTag: MatchFn; matchIn: (tag: N_1) => MatchInFn; matchTagIn: MatchInFn; matchMorph: (MorphADT: { tag: N_2; _A: X; }) => MatchMorphFn; }; export {}; //# sourceMappingURL=matchers.d.ts.map