import type { DefaultFunctionArgs } from "convex/server"; import type { Schema } from "effect"; import * as Data from "effect/Data"; export type FunctionProvenance = Data.TaggedEnum<{ Confect: { args: Schema.Schema.AnyNoContext; returns: Schema.Schema.AnyNoContext; error?: Schema.Schema.AnyNoContext; }; Convex: {}; }>; export interface Confect { readonly _tag: "Confect"; readonly args: Args; readonly returns: Returns; readonly error?: Error; } export interface AnyConfect extends Confect { } export interface Convex { readonly _tag: "Convex"; readonly _args: Args; readonly _returns: Returns; } export interface AnyConvex extends Convex { } export declare const FunctionProvenance: { readonly Confect: Data.Case.Constructor<{ readonly _tag: "Confect"; readonly args: Schema.Schema.AnyNoContext; readonly returns: Schema.Schema.AnyNoContext; readonly error?: Schema.Schema.AnyNoContext; }, "_tag">; readonly Convex: Data.Case.Constructor<{ readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }, "_tag">; readonly $is: (tag: Tag) => (u: unknown) => u is Extract<{ readonly _tag: "Confect"; readonly args: Schema.Schema.AnyNoContext; readonly returns: Schema.Schema.AnyNoContext; readonly error?: Schema.Schema.AnyNoContext; }, { readonly _tag: Tag; }> | Extract<{ readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }, { readonly _tag: Tag; }>; readonly $match: { any; readonly Convex: (args: { readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }) => any; }>(cases: Cases & { [K in Exclude]: never; }): (value: { readonly _tag: "Confect"; readonly args: Schema.Schema.AnyNoContext; readonly returns: Schema.Schema.AnyNoContext; readonly error?: Schema.Schema.AnyNoContext; } | { readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }) => import("effect/Unify").Unify>; any; readonly Convex: (args: { readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }) => any; }>(value: { readonly _tag: "Confect"; readonly args: Schema.Schema.AnyNoContext; readonly returns: Schema.Schema.AnyNoContext; readonly error?: Schema.Schema.AnyNoContext; } | { readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }, cases: Cases & { [K in Exclude]: never; }): import("effect/Unify").Unify>; }; }; /** * Build a `Confect` provenance from lazy schema thunks. `args`, `returns`, * and `error` are exposed as sync lazy memoised getters (via {@link Lazy.defineProperty}) * that only evaluate their thunk on first access, mirroring how `Table` * defers `Fields`/`Doc`/`tableDefinition`. This keeps importing the assembled * `_generated/spec.ts` cheap — no `Schema.Struct(...)` / `Schema.Array(...)` * work runs at module load; it is deferred to the first invocation that * actually compiles validators or runs a codec. * * The object is built by hand rather than through `FunctionProvenance.Confect` * because the `Data` constructor copies its input with `Object.assign`, which * would force the getters at construction time and defeat the laziness. * `error` is only installed when an `errorThunk` is provided, so its absence * is observable via `"error" in provenance` without forcing anything; nothing * relies on `Data`'s structural `Equal`/`Hash` for provenance values. */ export declare const Confect: (args: () => Args, returns: () => Returns, error?: () => Error) => Confect; export declare const Convex: <_Args extends DefaultFunctionArgs, _Returns>() => { readonly _tag: "Convex"; readonly _args: DefaultFunctionArgs; readonly _returns: any; }; //# sourceMappingURL=FunctionProvenance.d.ts.map