Expect mature clients to abstract this complexity down to 2 (maker/taker).
Then, drive the protocol sequence and optional features based on declarative options and terms set by the maker, using logical defaults if not over-ridden by the maker.
Takers simply let makers compete, and don't have much wiggle room to negotiate. Makers can optionally list choices or flexibility in their terms.
4 Roles