import { VNode } from '../stencil-public-runtime'; import { Constraint, NestedRecord, ValidationResult } from './FormDefinition'; export interface Option { name: string; value: string | Record | File; } export interface FieldWrapperOptions { canEnterEmptyString?: boolean; canShowClientsideValidationErrors?: boolean; canShowServersideValidationErrors?: boolean; } export type FieldWrapperFn = (content: VNode | VNode[], input: InputState, fieldWrapOptions?: FieldWrapperOptions) => VNode | VNode[]; export interface InputState { name: string; label?: string; disabled?: boolean; value?: string | number | File; valueChanged: (newValue?: string) => void | any; internalState?: any; internalStateChanged?: (newValue?: any) => void | any; additionalSettings?: { streamType?: 'readAsArrayBuffer' | 'readAsBinaryString' | 'readAsDataURL' | 'readAsText'; options?: Option[]; dateFormat?: string; autocompleteUrl?: string; imageUrl?: string; forcedValue?: any; }; allowsNull?: boolean; emptyStringAllowed?: boolean; required?: boolean; optional?: boolean; validationResult: ValidationResult; serverValidationError: NestedRecord; renderInfo: RenderInfo; currentFieldWrapper: FieldWrapperFn; touched?: boolean; onTouched: () => void; } export interface FormGroupState { name: string; label?: string; value?: string | number | Record | File; } export interface FormListRowState { mappingKey: string | number; isMap: boolean; onRowRemove?: () => void; } export interface FormListRowAddState { mappingKey: string | number; isMap: boolean; disabled: boolean; label: string; onRowAdd: () => void; } export interface SubmitButtonState { disabled: boolean; label: string; } export type SingleInputRender = (input: InputState) => VNode | VNode[]; export declare function toSingleError(error: NestedRecord | string | undefined | null, value: any, initialValue: any): NestedRecord; export declare class RenderInfo { protected parent: RenderInfo | null; protected singleInputRenderers: Record; constructor(parent?: RenderInfo | null); getAvailabeInputTypes(): Set; createFieldWrapper(): FieldWrapperFn; private getSingleInputRenderer; renderSingleInput(types: Array, input: InputState): VNode | VNode[]; renderSubmitButton(state: SubmitButtonState): VNode | VNode[]; renderFormGroup(state: FormGroupState, subElements: VNode[], key?: number | string | null): VNode | VNode[]; renderValidationError(state: Constraint, value: any): VNode | VNode[]; renderUnmappedErrors(unmapped: Set, validationErrors: NestedRecord | string): VNode | VNode[]; renderListOrMapRow(state: FormListRowState, subElement: VNode): VNode | VNode[]; renderAddItemToList(state: FormListRowAddState): VNode | VNode[]; renderAddItemToMap(keyField: VNode | VNode[], button: VNode | VNode[]): VNode | VNode[]; }