module 0x42::example { struct Coin { amount: u64 } struct Receipt { amount: u64 } public fun flash_loan(_user: &signer, amount:u64): (Coin, Receipt) { let (coin, fee) = withdraw(user, amount); (coin,Receipt { amount: amount + fee}) } public fun repay_flash_loan(rec: Receipt, coins: Coin) { let Receipt{ amount } = rec; assert!(coin::value(&coin) >= rec.amount, 0); deposit(coin); } }