import React, { Component } from 'react';
import { StyleProp, TextStyle, ViewStyle } from 'react-native';
import { ButtonProps } from './Button';
import { Form } from './Form';
export interface CMSFeedbackType {
    vid?: string;
    referrer?: string;
    feedback?: string;
}
export interface CMSFeedbackProps {
    propertyId: string;
    modalContainerStyle?: StyleProp<ViewStyle>;
    modalTitle?: string;
    modalTitleStyle?: StyleProp<TextStyle>;
    renderModalTitle?: () => React.ReactNode;
    renderModalBody?: () => React.ReactNode;
    successMessage?: string;
    successMessageStyle?: StyleProp<TextStyle>;
    renderSuccessMessage?: () => React.ReactNode;
    errorMessage?: string;
    errorMessageStyle?: StyleProp<TextStyle>;
    renderErrorMessage?: () => React.ReactNode;
    fieldOptions?: any;
    closeButtonProps?: ButtonProps;
    openButtonProps?: ButtonProps;
    submitButtonProps?: ButtonProps;
    vid?: string;
    referrer?: string;
    onSubmit?: (data: CMSFeedbackType) => void;
}
export interface CMSFeedbackState {
    modalVisible: boolean;
    formVisible: boolean;
    successVisible: boolean;
    errorVisible: boolean;
}
export declare class CMSFeedback extends Component<CMSFeedbackProps, CMSFeedbackState> {
    form?: Form;
    state: CMSFeedbackState;
    submitReview: () => void;
    showSuccess: () => void;
    renderSuccessMessage(): React.ReactNode;
    showError: () => void;
    renderErrorMessage(): React.ReactNode;
    openModal: () => void;
    closeModal: () => void;
    renderModalHeader(): React.ReactNode;
    renderModalBody(): React.ReactNode;
    fieldOptions: () => any;
    setForm: (ref: Form) => void;
    renderModalForm(): React.ReactNode;
    renderSubmitButton(): React.ReactNode;
    renderCloseButton(): JSX.Element;
    renderModal(): JSX.Element;
    renderOpenModalButton(): JSX.Element;
    render(): JSX.Element;
}
