import { Infer } from '../types.js'; import XVType from '../XVType.js'; type Func[], R extends XVType, Async extends boolean = false> = Async extends true ? (...args: { [K in keyof A]: Infer; }) => Promise> : (...args: { [K in keyof A]: Infer; }) => Infer; type XVFunctionOptions[], R extends XVType> = { args: A; returns: R; async?: boolean; }; declare class XVFunction[], R extends XVType, Async extends boolean = false> extends XVType> { readonly func_args: A; readonly func_return: R; readonly is_async: Async; constructor(options: XVFunctionOptions); protected check(value: unknown): Func; parse(fn: unknown): Func | undefined | null; } export { XVFunction as default }; export type { XVFunctionOptions };