@polmiro I haven’t run into someone using dry-transaction with objects like yours before. I’d really recommend against setting your input as state via the initializer, because that means your objects become stateful, non-reusable, and you effectively have to throw them away after #call-ing them once.
the kind of object that dry-transaction is designed to work with is one that receives static things in its initializer (config or collaborating objects, i.e. things that never need to change), and then #call is receives the variable input.
This means you can have the same object and #call on it many times over.