import RuleContract from './rules/ruleContract'; import BaseRule from './rules/baseRule'; import replaceAttributePayload from './payloads/replaceAttributePayload'; export interface GenericObject { [key: string]: any; } export type InitialRule = string | ValidationCallback | RuleContract | BaseRule; export type Rule = string | RuleContract; export interface InitialRules extends GenericObject { [key: string]: InitialRule | InitialRule[]; } export interface Rules extends GenericObject { [key: string]: Rule[]; } export interface ImplicitAttributes { [key: string]: string[]; } export interface CustomMesages extends GenericObject { } export interface CustomAttributes extends GenericObject { } export interface ErrorMessage { error_type?: string; message: string; } export interface Errors { [key: string]: ErrorMessage[]; } export interface Messages { [key: string]: string[]; } export interface CustomErrors { [key: string]: string | string[]; } export interface ValidationRuleParserInterface { explodeRules: (rules: Rules, data: object) => { rules: Rules; implicitAttributes: ImplicitAttributes; }; explodeWildCardRules: (results: object, attribute: string, data: object, implicitAttributes: ImplicitAttributes) => object; explodeExplicitRules: (rule: string | InitialRule[]) => Rule[]; prepareRule: (rule: InitialRule) => Rule; mergeRulesForAttribute: (results: object, attribute: string, rules: string | string[]) => object; parse: (rule: Rule) => [Rule, string[]]; parseStringRule: (rule: string) => [string, string[]]; getRule: (attribute: string, searchRules: string | string[], availableRules: Rules) => Partial<[string, string[]]>; hasRule: (attrtibute: string, searchRules: string | string[], availableRules: Rules) => boolean; } export interface ValidationDataInterface { initializeAndGatherData: (attribute: string, masterData: object) => object; initializeAttributeOnData: (attribute: string, masterData: object) => object; extractValuesFromWildCards: (masterData: object, data: object, attribute: string) => object; getLeadingExplicitAttributePath: (attribute: string) => string; extractDataFromPath: (path: string, masterData: object) => object; } export interface ReplaceAttribueInterface { replaceAcceptedIf: (payload: replaceAttributePayload) => string; replaceBefore: (payload: replaceAttributePayload) => string; replaceBeforeOrEqual: (payload: replaceAttributePayload) => string; replaceAfter: (payload: replaceAttributePayload) => string; replaceAfterOrEqual: (payload: replaceAttributePayload) => string; replaceBetween: (payload: replaceAttributePayload) => string; replaceDateEquals: (payload: replaceAttributePayload) => string; replaceDeclinedIf: (payload: replaceAttributePayload) => string; replaceDigits: (payload: replaceAttributePayload) => string; replaceDigitsBetween: (payload: replaceAttributePayload) => string; replaceDifferent: (payload: replaceAttributePayload) => string; replaceEndsWith: (payload: replaceAttributePayload) => string; replaceIn: (payload: replaceAttributePayload) => string; replaceMin: (payload: replaceAttributePayload) => string; replaceMax: (payload: replaceAttributePayload) => string; replaceRequiredWith: (payload: replaceAttributePayload) => string; replaceRequiredWithAll: (payload: replaceAttributePayload) => string; replaceRequiredWithout: (payload: replaceAttributePayload) => string; replaceRequiredWithoutAll: (payload: replaceAttributePayload) => string; replaceGt: (payload: replaceAttributePayload) => string; replaceLt: (payload: replaceAttributePayload) => string; replaceGte: (payload: replaceAttributePayload) => string; replaceLte: (payload: replaceAttributePayload) => string; replaceRequiredIf: (payload: replaceAttributePayload) => string; replaceStartsWith: (payload: replaceAttributePayload) => string; replaceRequiredUnless: (payload: replaceAttributePayload) => string; replaceSame: (payload: replaceAttributePayload) => string; replaceSize: (payload: replaceAttributePayload) => string; } export interface LangInterface { defaultLang: string; fallbackLang: string; existingLangs: string[]; translations: object; messages: object; defaultMessages: object; fallbackMessages: object; get: (lang: string) => object; setTranslationObject: (translations: object) => void; setDefaultLang: (lang: string) => void; setFallbackLang: (lang: string) => void; getDefaultLang: () => string; load: (lang: string) => void; } export type ValidationCallback = (value: any, fail: (message: string) => void, attribute: any) => void;