import * as z from './base'; import { ZodTuple } from './tuple'; import { ZodUnknown } from './unknown'; export interface ZodFunctionDef = ZodTuple, Returns extends z.ZodTypeAny = z.ZodTypeAny> extends z.ZodTypeDef { t: z.ZodTypes.function; args: Args; returns: Returns; } export declare type OuterTypeOfFunction, Returns extends z.ZodTypeAny> = Args['_input'] extends Array ? (...args: Args['_input']) => Returns['_output'] : never; export declare type InnerTypeOfFunction, Returns extends z.ZodTypeAny> = Args['_output'] extends Array ? (...args: Args['_output']) => Returns['_input'] : never; export declare class ZodFunction, Returns extends z.ZodTypeAny> extends z.ZodType, ZodFunctionDef, InnerTypeOfFunction> { readonly _def: ZodFunctionDef; args: (...items: Items) => ZodFunction, Returns>; returns: >(returnType: NewReturnType) => ZodFunction; implement: >(func: F) => F; validate: >(func: F) => F; static create: = ZodTuple<[]>, U extends z.ZodTypeAny = ZodUnknown>(args?: T | undefined, returns?: U | undefined) => ZodFunction; toJSON: () => { t: z.ZodTypes.function; args: { t: z.ZodTypes.tuple; items: any[]; }; returns: object; }; }