You can use send_raw_message(cell msg, int mode)
within the smart contract to act as the deletion of the smart contract.
This is because mode 128 will "carry all the remaining balance of the current smart contract instead of the value originally indicated in the message", essentially removing all of the TON from the smart contract. Mode 32 will cause the "current account must be destroyed if its resulting balance is zero", which in conjunction with 128 will cause the smart contract to be deleted.
So using mode = 160
with send_raw_message
will essentially delete the smart contract.