use crate::{
prelude::{Id, System},
solana_program::{account_info::AccountInfo, system_program},
Result,
};
pub(crate) fn close<'info>(
info: &AccountInfo<'info>,
sol_destination: &AccountInfo<'info>,
) -> Result<()> {
let dest_starting_lamports = sol_destination.lamports();
**sol_destination.lamports.borrow_mut() =
dest_starting_lamports.checked_add(info.lamports()).unwrap();
**info.lamports.borrow_mut() = 0;
info.assign(&system_program::ID);
info.resize(0).map_err(Into::into)
}
pub fn is_closed(info: &AccountInfo) -> bool {
info.owner == &System::id() && info.data_is_empty()
}