Event to find out swapping in Attended transfer

When I perform swapping between the transferee and destination during attended transfer is there a way to identify this?
I require this for reporting purpose.

If you are doing this phone side then the only way to know is to notice a specific device going on hold/off hold between two channels. Asterisk has no idea it’s an attended transfer until the attended transfer is completed.

But monitoring of Hold and UnHold event can lead to discrepancy in the scenario when User has actually holded the call and when asterisk has holded the call during swapping.

How is the attended transfer being done?

I have used feature.conf file.
Below is the code snippet:

atxferthreeway = *8            ; complete the attended transfer, but stay in the call. This will turn the call into a multi-party bridge
atxferswap = *7                ; swap to the other party. Once an attended transfer has begun, this options may be used multiple times
; Note that the DTMF features listed below only work when two channels have answered and are bridged together.
; They can not be used while the remote party is ringing or in progress. If you require this feature you can use
; chan_local in combination with Answer to accomplish it.
blindxfer => *5                ; Blind transfer  (default is #) -- Make sure to set the T and/or t option in the Dial() or Queue() app call!