import "../Operator/index.js"; import type { Tuple } from "../Collections/Immutable/Tuple/index.js"; import type { _A, _E, _R } from "../Effect/index.js"; import type { Either } from "../Either/core.js"; import type { Tag } from "../Has/index.js"; import type { Option } from "../Option/index.js"; import type { Sync } from "../Sync/index.js"; export declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export declare type EnforceNonEmptyRecord = keyof R extends never ? never : R; export declare function intersect(...as: AS): UnionToIntersection<{ [k in keyof AS]: AS[k]; }[number]>; export declare const pattern: (n: N) => { , __: Extract) => any; }>(_: K): (m: X) => ReturnType; , __: Extract) => any; }>, H>(_: K & { [k in X[N]]?: (_: Extract, __: Extract) => any; }, __: (_: Exclude, __: Exclude) => H): (m: X) => { [k in keyof K]: ReturnType>; }[keyof K] | H; }; export declare const matchTag: { , __: Extract) => any; }>(_: K): (m: X) => ReturnType; , __: Extract) => any; }>, H>(_: K_1 & { [k_2 in X_1["_tag"]]?: ((_: Extract, __: Extract) => any) | undefined; }, __: (_: Exclude, __: Exclude) => H): (m: X_1) => H | { [k_3 in keyof K_1]: ReturnType>; }[keyof K_1]; }; export declare const pattern_: (n: N) => { , __: Extract) => any; }>(m: X, _: K): ReturnType; , __: Extract) => any; }>, H>(m: X, _: K & { [k in X[N]]?: (_: Extract, __: Extract) => any; }, __: (_: Exclude, __: Exclude) => H): { [k in keyof K]: ReturnType>; }[keyof K] | H; }; export declare const matchTag_: { , __: Extract) => any; }>(m: X, _: K): ReturnType; , __: Extract) => any; }>, H>(m: X_1, _: K_1 & { [k_2 in X_1["_tag"]]?: ((_: Extract, __: Extract) => any) | undefined; }, __: (_: Exclude, __: Exclude) => H): H | { [k_3 in keyof K_1]: ReturnType>; }[keyof K_1]; }; export declare const patternFor: (n: N) => () => { , __: Extract) => any; }>(_: K): (m: X) => ReturnType; , __: Extract) => any; }>, H>(_: K & { [k in X[N]]?: (_: Extract, __: Extract) => any; }, __: (_: Exclude, __: Exclude) => H): (m: X) => { [k in keyof K]: ReturnType>; }[keyof K] | H; }; export declare const matchTagFor: () => { , __: Extract) => any; }>(_: K): (m: X) => ReturnType; , __: Extract) => any; }>, H>(_: K_1 & { [k_2 in X["_tag"]]?: ((_: Extract, __: Extract) => any) | undefined; }, __: (_: Exclude, __: Exclude) => H): (m: X) => H | { [k_3 in keyof K_1]: ReturnType>; }[keyof K_1]; }; export declare type RefinementWithIndex = (i: I, a: A) => a is B; export declare type PredicateWithIndex = (i: I, a: A) => boolean; export declare type Erase = R & K extends K & infer R1 ? R1 : R; export declare type _A = [T] extends [{ [k in typeof _A]: () => infer A; }] ? A : never; export declare type _R = [T] extends [{ [k in typeof _R]: (_: infer R) => void; }] ? R : never; export declare type _E = [T] extends [{ [k in typeof _E]: () => infer E; }] ? E : never; export * from "./tool.js"; export declare function isEither(u: unknown): u is Either; export declare function isOption(u: unknown): u is Option; export declare function isTag(u: unknown): u is Tag; export declare function isSync(u: unknown): u is Sync; export declare function isAdtElement(tag: K): (adt: A) => adt is Extract; export declare function isGenericAdtElement(_t: T): (tag: K) => (adt: A) => adt is Extract; export declare function onAdtElement(tag: K, f: (_: Extract) => B): (adt: A) => Option; export declare function onGenericAdtElement(_t: T): (tag: K, f: (_: Extract) => B) => (adt: A) => Option; export declare type ForcedTuple = A extends unknown[] ? Tuple : never; export declare type ForcedArray = A extends readonly any[] ? A : []; export interface UnifiableIndexed { } export * from "./lazy.js"; export * from "./union.js"; export * from "./equal.js"; export * from "./unification.js"; //# sourceMappingURL=index.d.ts.map