import { type ValidationResult, type ValidateOptions } from './validate'; export interface ValidatableConstructor { readonly prototype: WithIndex['prototype'] & Pick, ResultProp>, 'validate'>; new (...args: ConstructorParameters): ValidatableObject, ResultProp>; } type Remap = { [P in keyof T as P extends '__prop_map__' ? T[P] : never]: V; }; export type ValidatableObject = T & Remap<{ __prop_map__: ResultProp; }, ValidationResult> & { validate(propName?: keyof T | undefined): boolean; }; export type Validatable = T extends AnyConstructor ? ValidatableConstructor : ValidatableObject; export type DefaultValidationResultProperty = 'validation'; export interface ValidatableOptions extends ValidateOptions { readonly resultProp?: RP | undefined; } export declare function validatable(target: /* T extends AnyConstructor ? T : */ T & ThisType>, { resultProp, ...rest }?: ValidatableOptions): Validatable; export {};