I was thinking about how to improve pure SDK usage for contract calls and I think the JS-SDK is doing this quite will right now. it is converting the Sophia types.
Example calls that should be possible using the SDK:
deploy(txOptions: ContractTxOptions)
call(contractId: String, entrypoint: String, txOptions: ContractTxOptions) (for stateful and payable calls)
callReadOnly(contractId: String, entrypoint: String) (for read-only dry-run calls)
I see following tasks in this issue: