Hi there. My team also recently discussed something similar. But Its still in dev and we haven't gone live yet.
Anyways, our theory is to use two campaigns.
The first XT Activity will set up listeners on the buttons to trigger an mboxUpdate() call. This call will re-fire all campaigns running on that URL. We will also set an mbox param/cookie that the second campaign will trigger upon.
The second is an A/B test in which the Audience is only those who have a particular cookie set. This is what I remember from the whiteboard we had. I'm not completely sure about this. But I hope this helps.
So, to summarize, the second campaign will only fire when a particular cookie is set. This cookie is set by the first campaign, which only happens when a button is clicked.
Please note that there is one thing that can go wrong here. The first campaign may fire again when an mboxUpdate() is issued. This will again set listeners on the same buttons and your second campaign may fire again upon clicking those buttons. Maybe this is logically handled/filtered by Target, still I would suggest the first campaign's audience as those who do do not have the cookie set.
In DTM, update your direct call rule w/ non-synchronous js.
mbox.js: mboxUpdate("target-global-mbox", "button1");
at.js: How to use getOffer & applyOffer together: https://marketing.adobe.com/resources/help/en_US/target/ov2/r_target-atjs-getoffer.html
Once implementation is sound. Create a campaign w/ more granular audience targeting. custom > mboxName > equals > param value