ZHA custom radio support


I’m developing a custom radio board (ZigBee + BT LE + Z-Wave) which probably will be connected to the main device by SPI. The first element which I would like to implement for testing is zigbee communication. From my research, it appears that I must create a custom radio module (library) based on zigpy library to support my device in ZHA. And I have a few problems with this because I can’t find these things in any documentation:

  1. What methods and functionalities my library must have or override to successfully cooperate with ZHA ?
  2. What type of data ZHA (or zigpy) request from the radio module (raw frames, an array of decoded data, or something else)?
  3. Which methods are responsible for sending, receiving, and passing through data to ZHA ? (I could then make reverse engineering of existing radio modules)

I would be really thankful for the help because zigpy uses so many inheritances and external values, that is really hard to follow and understand code by own.