import { AsyncValidator, AsyncValidatorFn, ControlContainer, ControlValueAccessor, FormControl, NgControl, Validator, ValidatorFn } from '@angular/forms'; import { CrnkControl } from './crnk.expression.form.model.base'; export declare function normalizeValidator(validator: ValidatorFn | Validator): ValidatorFn; export declare function normalizeAsyncValidator(validator: AsyncValidatorFn | AsyncValidator): AsyncValidatorFn; export declare function looseIdentical(a: any, b: any): boolean; export declare function isPresent(obj: any): boolean; export declare function controlPath(name: string, parent: ControlContainer): string[]; export declare function setUpControl(control: FormControl, dir: CrnkControl): void; export declare function composeValidators(validators: Array): ValidatorFn; export declare function composeAsyncValidators(validators: Array): AsyncValidatorFn; export declare function isPropertyUpdated(changes: { [key: string]: any; }, viewModel: any): boolean; export declare function isBuiltInAccessor(valueAccessor: ControlValueAccessor): boolean; export declare function selectValueAccessor(dir: NgControl, valueAccessors: ControlValueAccessor[]): ControlValueAccessor; export declare class TemplateDrivenErrors { static modelParentException(): void; static formGroupNameException(): void; static missingNameException(): void; static modelGroupParentException(): void; }