import { WidgetAnnotation, GcProps, AnnotationTypeCode } from "../Annotations/AnnotationTypes";
import { FormFillerSettings, FormFieldMapping } from "../ViewerOptions";
/**
 * Field validation result.
 **/
export type FieldValidationResult = {
    valid: boolean;
    invalidLabel?: string;
};
/**
 * Validation caller name.
 **/
export type ValidationCallerType = 'form-filler' | 'annotation-layer' | 'user-code' | 'unknown';
export type FormFillerDialogModel = {
    enabled: boolean;
    showModal: boolean;
    fields: {
        pageNumber: number;
        annotation: WidgetAnnotation;
    }[] | null;
    isChanged: boolean;
};
export type FormFillerDialogProps = {};
export type FormFillerModel = {
    fields: (WidgetAnnotation | FieldMappingStub)[];
    dirtyHash: {
        [fieldId: string]: WidgetAnnotation | undefined;
    };
    failedValidationHash: {
        [fieldId: string]: FieldValidationResult | undefined;
    };
    anyFieldChanged: boolean;
};
export type FormFillerProps = {
    fields: {
        pageNumber: number;
        annotation: WidgetAnnotation;
    }[];
    enabled: boolean;
    settings?: FormFillerSettings;
    in17n: any;
    onChanged: (dirtyHash: {
        [fieldId: string]: WidgetAnnotation | undefined;
    }) => void;
};
export type FieldMappingStub = {
    id: string;
    fieldName: string;
    fieldValue: string;
    fieldType: 'custom-content';
    mapping: FormFieldMapping;
    gcProps: GcProps;
    annotationType: AnnotationTypeCode;
};
