import * as React from 'react';
import { UiSchema, AjvError, ErrorListProps } from '@rjsf/core';
import { Step, NavActionEnum, StatusEnum, FormSchema } from './types';
export interface IFormData {
    [key: string]: {
        included?: boolean;
        [key: string]: any;
    };
}
export declare type SynapseFormProps = {
    schema: FormSchema;
    uiSchema: UiSchema;
    navSchema: {
        steps: any[];
    };
    formData: IFormData;
    onSubmit: Function;
    onSave: Function;
    formTitle: string;
    formClass?: string;
    isWizardMode?: boolean;
    callbackStatus?: StatusEnum;
    isSubmitted?: boolean;
};
declare type SynapseFormState = {
    formData: IFormData;
    currentStep: Step;
    nextStep?: Step;
    steps: Step[];
    previousStepIds: string[];
    hasValidated?: boolean;
    doShowErrors: boolean;
    doShowHelp: boolean;
    modalContext?: {
        action: Function;
        arguments: any[];
    };
    hasUnsavedChanges: boolean;
    isSubmitted?: boolean;
    isLoadingSaved: boolean;
};
export interface SummaryFormat {
    label: string;
    value: string;
}
export default class SynapseForm extends React.Component<SynapseFormProps, SynapseFormState> {
    excludeWarningText: JSX.Element;
    excludeWarningHeader: string;
    unsavedDataWarning: string;
    formRef: any;
    formDivRef: any;
    navAction: NavActionEnum;
    uiSchema: {};
    nextStep: Step | undefined;
    extraErrors: AjvError[];
    isNewForm: (formData: IFormData) => boolean;
    getFirstStep: (steps: Step[], formData: IFormData) => Step;
    constructor(props: SynapseFormProps);
    onUnload: (ev: any) => string | undefined;
    setupBeforeUnloadListener: () => void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: SynapseFormProps): void;
    _setIncludedPropInFormDataNonWizard: (currentState: SynapseFormState, schemaScreens: any) => IFormData;
    _setIncludedPropInFormDataWizard: (currentState: SynapseFormState) => IFormData;
    componentDidMount(): void;
    getSchema: ({ id, final }: Step) => FormSchema;
    getNextStepId: (currentStep: Step, formData: any, nextStepId?: string | undefined) => Promise<string>;
    moveStep: (formData: any, nextStepId: string | undefined, isError: boolean, previousStack?: string[]) => Promise<void>;
    saveStepState: (previousStepIds: string[], steps: Step[], currentStep: Step, formData: any) => void;
    goPrevious: (formData: any, isError: boolean) => Promise<void>;
    triggerAction: (navAction: NavActionEnum) => Promise<any>;
    triggerStepChange: (step: Step) => void;
    onError: (args: any) => void;
    setStepStatusForFailedValidation: (errors: AjvError[], steps: Step[], isWizard: boolean, formData: IFormData, currentSchemaProperties: any) => Step[];
    handleOnChange({ formData }: any): void;
    performAction(navAction: NavActionEnum, hasError: boolean): Promise<void> | undefined;
    onSubmit: () => any;
    isSubmitScreen: () => boolean;
    showExcludeStateWarningModal: (stepId: string, isUpdateFlattenedData?: boolean) => void;
    toggleExcludeStep: (stepId: string, isExclude: boolean) => void;
    private renderNotification;
    private renderTextForStaticScreen;
    renderOptionalFormSubheader: (isWizard?: boolean) => JSX.Element;
    renderHelpToggle: (currentStep: Step, showHelp: boolean, callbackFn: Function) => JSX.Element;
    runCustomValidation: (formData: IFormData, currentStep: Step, allSteps: Step[]) => Promise<AjvError[]>;
    transformErrors: (errors: AjvError[]) => AjvError[];
    renderErrorListTemplate: (props: ErrorListProps) => JSX.Element;
    render(): JSX.Element;
}
export {};
