Currently model.py uses google.cloud.spanner_v1.transaction.Transaction for all the transaction parameters, but I think the read-only methods are designed to work with google.cloud.spanner_v1.snapshot.Snapshot too. Snapshot is available through the Spanner ORM API in spanner_orm.api.SpannerReadApi.run_read_only() and spanner_orm.decorator.transactional_read(), so we really should support using correct type annotations for Snapshot. Another thing to consider is whether there should be any support for google.cloud.spanner_v1.batch.Batch in write-only Model methods.