import React from 'react';

/**
 *
 * The DeleteArchiveModal component is designed to facilitate the deletion of an
 *
 * entity, emphasizing the irreversible nature of this action through a
 *
 * confirmation checkbox. Additionally, it provides an option to archive the entity
 *
 * instead of deleting it.
 *
 * @example 
 *
 * import DeleteArchiveModal from "@bigbinary/neeto-molecules/DeleteArchiveModal";
 * 
 * import { deleteProject, archiveProject } from "apis/projectApi.js";
 * 
 * const App = ({ project }) => {
 *   const [isDeleting, setIsDeleting] = useState(false);
 *   const [isArchiving, setIsArchiving] = useState(false);
 *   const [showModal, setShowModal] = useState(false);
 * 
 *   return (
 *     <DeleteArchiveModal
 *       checkboxLabel="Yes, delete <Form_Name>"
 *       description={`The selected form <Form_Name> and all associated responses will be permanently deleted.
 * 
 *         Since, we won't be able to recover the deleted form we suggest you to archive the form.`}
 *       isArchiving={isArchiving}
 *       isDeleting={isDeleting}
 *       isOpen={showModal}
 *       title="Delete form?"
 *       onClose={() => setShowModal(false)}
 *       onDelete={async () => {
 *         setIsDeleting(true);
 *         await deleteProject(project.name);
 *         setShowModal(false);
 *         setIsDeleting(false);
 *       }}
 *       onArchive={async () => {
 *         setIsArchiving(true);
 *         await archiveProject(project.name);
 *         setShowModal(false);
 *         setIsArchiving(false);
 *       }}
 *     />
 *   );
 * };
 * @endexample
*/
declare const DeleteArchiveModal: React.FC<{
  checkboxLabel: string;
  className: string;
  description: string;
  isArchiving: boolean;
  isDeleting: boolean;
  isOpen: boolean;
  onArchive: Function;
  onClose: Function;
  onDelete: Function;
  title: string;
}>;

export { DeleteArchiveModal as default };
