import type * as core from "./core.js"; import * as schemas from "./schemas.js"; import { $ZodTuple } from "./schemas.js"; import type * as util from "./util.js"; export interface $ZodFunctionDef { type: "function"; input: In; output: Out; } export type $ZodFunctionArgs = schemas.$ZodType; export type $ZodFunctionIn = $ZodFunctionArgs; export type $ZodFunctionOut = schemas.$ZodType; export type $InferInnerFunctionType = (...args: $ZodFunctionIn extends Args ? never[] : core.output) => core.input; export type $InferInnerFunctionTypeAsync = (...args: $ZodFunctionIn extends Args ? never[] : core.output) => util.MaybeAsync>; export type $InferOuterFunctionType = (...args: $ZodFunctionIn extends Args ? never[] : core.input) => core.output; export type $InferOuterFunctionTypeAsync = (...args: $ZodFunctionIn extends Args ? never[] : core.input) => util.MaybeAsync>; export declare class $ZodFunction { def: $ZodFunctionDef; /** @deprecated */ _def: $ZodFunctionDef; _input: $InferInnerFunctionType; _output: $InferOuterFunctionType; constructor(def: $ZodFunctionDef); implement>(func: F): (...args: Parameters) => ReturnType extends ReturnType ? ReturnType : ReturnType; implementAsync>(func: F): F extends $InferOuterFunctionTypeAsync ? F : $InferOuterFunctionTypeAsync; input(args: Items, rest?: Rest): $ZodFunction, Returns>; input(args: NewArgs): $ZodFunction; output(output: NewReturns): $ZodFunction; } export interface $ZodFunctionParams { input?: I; output?: O; } declare function _function(): $ZodFunction; declare function _function = Array>(params: { input: In; }): $ZodFunction<$ZodTuple, $ZodFunctionOut>; declare function _function = Array, const Out extends $ZodFunctionOut = $ZodFunctionOut>(params: { input: In; output: Out; }): $ZodFunction<$ZodTuple, Out>; declare function _function(params: { input: In; }): $ZodFunction; declare function _function(params: { output: Out; }): $ZodFunction<$ZodFunctionIn, Out>; declare function _function(params?: { input: In; output: Out; }): $ZodFunction; export { _function as function };