import { TemplateRef } from '@angular/core'; import { AsyncValidatorFn, ValidatorFn, Validators } from '@angular/forms'; import { Observable } from 'rxjs'; import { DValidators } from './validators'; export type DValidationErrorStrategy = 'pristine' | 'dirty'; export type DFormControlStatus = 'error' | 'pending' | 'success'; export type DValidatorFn = (value: any) => boolean | string | { [key: string]: string; } | null; export type DAsyncValidatorFn = (value: any) => Observable; export interface DValidateRule { id?: string; validator?: DValidatorFn | ValidatorFn; message?: string | { [key: string]: string; } | TemplateRef; errorStrategy?: DValidationErrorStrategy; priority?: number; isNgValidator?: boolean; validateLevel?: 'error' | 'warning'; [id: string]: boolean | number | string | { [key: string]: string; } | RegExp | DValidatorFn | ValidatorFn | undefined | TemplateRef; } export interface DAsyncValidateRule { id?: string; validator?: DAsyncValidatorFn | AsyncValidatorFn; message?: string | { [key: string]: string; } | TemplateRef; errorStrategy?: DValidationErrorStrategy; priority?: number; isNgValidator?: boolean; validateLevel?: 'error' | 'warning'; [id: string]: boolean | number | string | { [key: string]: string; } | RegExp | DAsyncValidatorFn | AsyncValidatorFn | undefined | TemplateRef; } export type DValidateRules = { validators?: DValidateRule[]; asyncValidators?: DAsyncValidateRule[]; asyncDebounceTime?: number; errorStrategy?: DValidationErrorStrategy; message?: string | { [key: string]: string; } | TemplateRef; updateOn?: 'change' | 'blur' | 'submit'; messageShowType?: 'popover' | 'text' | 'none'; popPosition?: 'left' | 'right' | 'top' | 'bottom' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom' | ('left' | 'right' | 'top' | 'bottom' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom')[]; } | DValidateRule[]; export interface DValidateErrorStatus { errorMessage: string | { [key: string]: string; } | null; showError: boolean; errors: { [key: string]: any; }; } export declare const ruleReservedWords: string[]; export declare const dDefaultValidators: { required: typeof Validators.required; minlength: typeof Validators.minLength; maxlength: typeof Validators.maxLength; min: typeof Validators.min; max: typeof Validators.max; requiredTrue: typeof Validators.requiredTrue; email: typeof Validators.email; pattern: typeof Validators.pattern; whitespace: typeof DValidators.whiteSpace; }; export interface DPopConfig { popMaxWidth?: number; scrollElement?: Element; zIndex?: number; showAnimation?: boolean; }