Right now, the wallet API can be used either at high level (use the wallet both for tracking inputs, building transactions, choosing inputs, signing, broadcasting) or at a high level (do everything yourself, optionally use the input tracking and transaction building code).
It would be very useful to use the coin selection code of the wallet too but still have control over raw transactions. That’s why I propose a completerawtransaction RPC, which takes an unsigned partial raw transaction (with potentially more outputs than inputs), and adds inputs and change outputs as necessary to make it a fully policy compliant transaction. It doesn’t sign or broadcast, as that can be done through signrawtransaction
and sendrawtransaction
.