Post

The pattern that makes it broadly useful: typed proxies.
Add .typed(MyProxy) mid-chain, and you get compile-time argument checking on a call to another contract.
self.tx()
.to(&counter_contract)
.typed(CounterProxy)
.get_count()
.returns(ReturnsResult)
.sync_call();
The proxy is auto-generated from the target contract's ABI. The arguments you pass and the result you receive are typed end-to-end.
English
