Your question is slightly ambiguous but I'll attempt to answer using my own interpretation of the question "how can contracts be designed to use gas refunds". The answer is they can't; they can't because refunds are always returned to the ORIGIN (i.e. the initial executor). Contract don't have access to this refund pool and renders it therefore useless (apart from the ability to make execution cheaper).
the gas refund is not converted to ether and refunded to the sender's account.
Refunds are actually converted to ether (go-ethereum/core/state_transition.go):
sender, _ := self.from() // err already checked
remaining := new(big.Int).Mul(self.gas, self.gasPrice)
sender.AddBalance(remaining)
What happens during the state transition:
- Reserve
tx.gas and make sure tx.sender has enough funds;
- Reduce
tx_fee of 21.000;
- Reduce execution gas (amount of gas required for the execution);
- Add refund to
tx.sender (R * tx.gasPrice where R is gas refund)