@amirza
The first thing you'll need to do is create a custom permission level that does not allow for deletion. Then, use that custom permission level instead of contribute or edit in your library.
Then, add a check box to the library called something like "Request Deletion"
Create a Flow that checks the value of the check box - if it is checked, start an approval process. You might use a filter trigger here. If approved, delete the file. Otherwise, clear the check box and send an email saying that the document was not approved for deletion.
Get started with the information above and let me know if you need more help once you get started.