import type { Base, Infer, Kind, URIS } from "../HKT/index.js"; declare type KindFromObj = Kind, Infer, Infer, Infer, Infer, Infer, Infer, Infer, Infer>; export interface MatchFn { , __: Extract) => Kind; }>(matcher: K): (_: X) => KindFromObj; }[keyof K]>; , __: Extract) => Kind; }>, Ret extends Kind>(matcher: K, def: (_: Exclude, __: Exclude) => Ret): (_: X) => KindFromObj any ? ReturnType : never; }[keyof K] | Ret>; } export interface MatchInFn { (): { , __: Extract) => Kind; }>(matcher: K): (_: X) => KindFromObj; }[keyof K]>; , __: Extract) => Kind; }>, Ret extends Kind>(matcher: K, def: (_: Exclude, __: Exclude) => Ret): (_: X) => KindFromObj any ? ReturnType : never; }[keyof K] | Ret>; }; } export interface MatchMorphFn { , __: Extract) => Kind; }>(matcher: K): (_: X) => KindFromObj; }[keyof K]>; , __: Extract) => Kind; }>, Ret extends Kind>(matcher: K, def: (_: Exclude, __: Exclude) => Ret): (_: X) => KindFromObj any ? ReturnType : never; }[keyof K] | Ret>; } export declare function matchers(_: Base): { 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