import { BoxedValue } from "boxm"; import { Rule } from "./rules"; export interface Field extends BoxedValue, Rule { model: Model; error: string[]; } export declare class ValidationError { message: string; errors: string[]; constructor(errors: string[] | string); } export interface Adaptor { render(model: Model): View; parse(view: View): Model; } export interface FieldBuilder { also(outer: Adaptor): FieldBuilder; check(check: Check): FieldBuilder; create(value: Model, label?: string): Field; use(box: BoxedValue, label?: string): Field; } export declare function field(inner: Adaptor): FieldBuilder; export declare function numberAsString(decimalPlaces?: number): { render: (value: number) => string; parse: (str: string) => number; }; export declare type Check = (val: T) => string | string[] | undefined; export declare function identity(): { render(value: T): T; parse(value: T): T; }; export declare function checker(check: Check): { render(value: T): T; parse(value: T): T; }; export declare function numberLimits(min: number, max: number): { render(value: number): number; parse(value: number): number; }; export declare function stringLimits(minLength: number, maxLength: number): { render(value: string): string; parse(value: string): string; };