import * as Yup from "yup";
import type { TypeOfAbolishOrInstance } from "../src/Abolish";
import type { ValidateOptions } from "yup";
export type YupSchemaOption<T extends Yup.AnySchema> = {
    schema: T;
    options?: ValidateOptions;
};
type YupHelper<T> = (y: typeof Yup) => T;
declare module "../src/validator" {
    namespace AvailableValidators {
        interface Options {
            $yup: Yup.AnySchema | YupSchemaOption<any>;
            $yupAsync: Yup.AnySchema | YupSchemaOption<any>;
        }
    }
}
/**
 * $yup Schema Helper
 */
export declare function $yup<T extends Yup.AnySchema>(schema: YupHelper<T>, options?: ValidateOptions): Record<"$yup", YupSchemaOption<T>>;
export declare function $yup<T extends Yup.AnySchema>(schema: T, options?: ValidateOptions): Record<"$yup", YupSchemaOption<T>>;
/**
 * $yup Async Helper
 */
export declare function $yupAsync<T extends Yup.AnySchema>(schema: YupHelper<T>, options?: ValidateOptions): Record<"$yupAsync", YupSchemaOption<T>>;
export declare function $yupAsync<T extends Yup.AnySchema>(schema: T, options?: ValidateOptions): Record<"$yupAsync", YupSchemaOption<T>>;
export declare function useYup(abolish: TypeOfAbolishOrInstance): void;
export {};
