import type { Types } from "effect"; import type * as FunctionSpec from "./FunctionSpec"; import type * as GroupSpec from "./GroupSpec"; import * as Ref from "./Ref"; import type * as Spec from "./Spec"; export type Refs = Types.Simplify, Predicate>>>; export interface FromSpec { public: Refs; internal: Refs; } type GroupRefs = Types.Simplify, Predicate>> & FilteredFunctions, Predicate>>; type OmitEmpty = { [K in keyof T as keyof T[K] extends never ? never : K]: T[K]; }; type FunctionSpecMatchesPredicate = Ref.Ref, FunctionSpec.GetFunctionVisibility, any, any> extends Predicate ? true : false; type FilteredFunctions = { [Name in FunctionSpec.Name as FunctionSpec.WithName extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps ? FunctionSpecMatchesPredicate extends true ? Name : never : never]: FunctionSpec.WithName extends infer F extends FunctionSpec.AnyWithProps ? Ref.FromFunctionSpec : never; }; type Helper = { [GroupName in GroupSpec.Name]: GroupSpec.WithName extends infer Group extends GroupSpec.AnyWithProps ? GroupRefs : never; }; export declare const make: (spec: Spec_) => FromSpec; export {}; //# sourceMappingURL=Refs.d.ts.map