import type { VueNode } from '../typing';
import type { InferPropType, PropConstructor, PropOptions, ValidatorFunction, VueProp, VueTypeDef, VueTypeShape } from './types';
export declare const anyType: <T = any>() => import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare const vNodeType: <T = VueNode>() => import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare function funcType<T extends (...args: any[]) => any>(): import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare function boolType<T extends boolean>(): import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare function stringType<T extends string = string>(): import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare function numberType<T extends number = number>(): import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare function arrayType<T>(): import("./types").VueTypeValidateDef<T[], ValidatorFunction<T[]>>;
export declare function arrayOf<T extends VueProp<any> | PropConstructor<any>>(type: T): VueTypeDef<InferPropType<T>[]>;
export declare function objectType<T extends Record<string, any>>(): import("./types").VueTypeValidateDef<T, ValidatorFunction<T>>;
export declare function objectOf<T extends VueProp<any> | PropConstructor<any>>(type: T): VueTypeDef<Record<string, InferPropType<T>>>;
export declare function symbol(): VueTypeDef<symbol>;
export declare function nullable(): PropOptions<null>;
export declare function custom<T>(validatorFn: ValidatorFunction<T>, warnMsg?: string): VueTypeDef<T>;
export declare function oneOf<D, T extends readonly D[] = readonly D[]>(arr: T): VueTypeDef<T[number]>;
export declare function shape<T extends Record<string, unknown>>(obj: {
    [K in keyof T]: PropConstructor<T[K]> | VueProp<T[K]>;
}): VueTypeShape<T>;
export declare function oneOfType<D extends V, U extends VueProp<any> | PropConstructor<any> = any, V = InferPropType<U>>(arr: U[]): VueTypeDef<D>;
