/** * @Author: Rostislav Simonik * @Author: Erik Slovak * @Date: 2020-10-04T15:10:83+02:00 * @Copyright: Technology Studio **/ import type { Schema, AnyObject, Maybe, Message, Flags, MakePartial, setLocale } from 'yup'; type _ = T extends {} ? { [k in keyof T]: T[k]; } : T; type MakeKeysOptional = T extends AnyObject ? _> : T; declare module 'yup' { interface ObjectSchema, TContext = AnyObject, TDefault = any, TFlags extends Flags = ''> extends Schema, TContext, TDefault, TFlags> { requiredRelation: (idKey?: string) => this; atLeastOneRequired: (keys: string[]) => this; } interface StringSchema = string | undefined, TContext = AnyObject, TDefault = undefined, TFlags extends Flags = ''> extends Schema { decimal: () => StringSchema; numbersOnly: () => StringSchema; numeric: () => StringSchema; phoneNumber: () => StringSchema; equalsTo: () => StringSchema; } interface StringLocale { decimal?: Message; numbersOnly?: Message; numeric?: Message; phoneNumber?: Message; equalsTo?: Message; } interface DateLocale { required?: Message; } interface ObjectLocale { atLeastOneRequired?: Message; } } export type YupLocaleObject = Parameters[0]; export type StringLocale = YupLocaleObject['string'] & { decimal?: Message; numbersOnly?: Message; numeric?: Message; phoneNumber?: Message; equalsTo?: Message; }; export type DateLocale = YupLocaleObject['date'] & { required?: Message; }; export type ObjectLocale = YupLocaleObject['object'] & { atLeastOneRequired?: Message; }; export type LocaleObject = YupLocaleObject & { date?: DateLocale; string?: StringLocale; object?: ObjectLocale; }; export {};