import type { FunctionType, FunctionVisibility, RegisteredAction, RegisteredMutation, RegisteredQuery } from "convex/server"; import type { Schema } from "effect"; import * as FunctionProvenance from "./FunctionProvenance"; import * as RuntimeAndFunctionType from "./RuntimeAndFunctionType"; export declare const TypeId = "@confect/core/FunctionSpec"; export type TypeId = typeof TypeId; export declare const isFunctionSpec: (u: unknown) => u is AnyWithProps; export interface FunctionSpec { readonly [TypeId]: TypeId; readonly runtimeAndFunctionType: RuntimeAndFunctionType_; readonly functionVisibility: FunctionVisibility_; readonly name: Name_; readonly functionProvenance: FunctionProvenance_; } export interface Any { readonly [TypeId]: TypeId; } export interface AnyWithProps extends FunctionSpec { } export interface AnyConfect extends FunctionSpec { } export interface AnyConvex extends FunctionSpec { } export interface AnyWithPropsWithRuntime extends FunctionSpec, FunctionVisibility, string, FunctionProvenance.FunctionProvenance> { } export interface AnyWithPropsWithFunctionType extends FunctionSpec { } export interface AnyWithPropsWithFunctionProvenance extends FunctionSpec { } export type GetRuntimeAndFunctionType = FunctionSpec_["runtimeAndFunctionType"]; export type GetFunctionVisibility = FunctionSpec_["functionVisibility"]; export type Name = FunctionSpec_["name"]; export type Args = FunctionSpec_ extends { functionProvenance: { _tag: "Confect"; args: infer ArgsSchema_ extends Schema.Schema.AnyNoContext; }; } ? ArgsSchema_["Type"] : FunctionSpec_ extends { functionProvenance: { _tag: "Convex"; _args: infer Args_; }; } ? Args_ : never; export type Returns = FunctionSpec_ extends { functionProvenance: { _tag: "Confect"; returns: infer ReturnsSchema_ extends Schema.Schema.AnyNoContext; }; } ? ReturnsSchema_["Type"] : FunctionSpec_ extends { functionProvenance: { _tag: "Convex"; _returns: infer Returns_; }; } ? Awaited : never; export type EncodedArgs = FunctionSpec_ extends { functionProvenance: { _tag: "Confect"; args: infer ArgsSchema_ extends Schema.Schema.AnyNoContext; }; } ? ArgsSchema_["Encoded"] : FunctionSpec_ extends { functionProvenance: { _tag: "Convex"; _args: infer Args_; }; } ? Args_ : never; export type EncodedReturns = FunctionSpec_ extends { functionProvenance: { _tag: "Confect"; returns: infer ReturnsSchema_ extends Schema.Schema.AnyNoContext; }; } ? ReturnsSchema_["Encoded"] : FunctionSpec_ extends { functionProvenance: { _tag: "Convex"; _returns: infer Returns_; }; } ? Returns_ : never; export type Error = FunctionSpec_ extends { functionProvenance: FunctionProvenance.Confect; } ? ErrorSchema_["Type"] : never; export type EncodedError = FunctionSpec_ extends { functionProvenance: FunctionProvenance.Confect; } ? ErrorSchema_["Encoded"] : never; export type WithName = Extract; export type WithRuntimeAndFunctionType = Extract; export type WithFunctionType = Extract; export type WithFunctionProvenance = Extract; export type WithoutName> = Exclude; export declare const publicQuery: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "query"; }, "public", Name_, FunctionProvenance.Confect>; export declare const internalQuery: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "query"; }, "internal", Name_, FunctionProvenance.Confect>; export declare const publicMutation: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "mutation"; }, "public", Name_, FunctionProvenance.Confect>; export declare const internalMutation: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "mutation"; }, "internal", Name_, FunctionProvenance.Confect>; export declare const publicAction: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "action"; }, "public", Name_, FunctionProvenance.Confect>; export declare const internalAction: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "action"; }, "internal", Name_, FunctionProvenance.Confect>; export declare const publicNodeAction: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Node"; readonly functionType: "action"; }, "public", Name_, FunctionProvenance.Confect>; export declare const internalNodeAction: ({ name, args, returns, error, }: { name: Name_; args: () => Args_; returns: () => Returns_; error?: () => Error_; }) => FunctionSpec<{ readonly runtime: "Node"; readonly functionType: "action"; }, "internal", Name_, FunctionProvenance.Confect>; type ExtractArgs = F extends RegisteredQuery ? A : F extends RegisteredMutation ? A : F extends RegisteredAction ? A : never; type ExtractReturns = F extends RegisteredQuery ? R : F extends RegisteredMutation ? R : F extends RegisteredAction ? R : never; export declare const convexPublicQuery: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "query"; }, "public", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexInternalQuery: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "query"; }, "internal", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexPublicMutation: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "mutation"; }, "public", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexInternalMutation: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "mutation"; }, "internal", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexPublicAction: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "action"; }, "public", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexInternalAction: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Convex"; readonly functionType: "action"; }, "internal", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexPublicNodeAction: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Node"; readonly functionType: "action"; }, "public", Name_, FunctionProvenance.Convex, ExtractReturns>>; export declare const convexInternalNodeAction: >() => (name: Name_) => FunctionSpec<{ readonly runtime: "Node"; readonly functionType: "action"; }, "internal", Name_, FunctionProvenance.Convex, ExtractReturns>>; export {}; //# sourceMappingURL=FunctionSpec.d.ts.map