code: def detail(
              self,
              participant1: Address,
              participant2: Address,
              block_identifier: BlockSpecification,
              channel_identifier: ChannelID = None,
      ) -> ChannelDetails:
          
          if self.node_address not in (participant1, participant2):
              raise ValueError('One participant must be the node address')
  
          if self.node_address == participant2:
              participant1, participant2 = participant2, participant1
  
          channel_data = self._detail_channel(
              participant1=participant1,
              participant2=participant2,
              block_identifier=block_identifier,
              channel_identifier=channel_identifier,
          )
          participants_data = self.detail_participants(
              participant1=participant1,
              participant2=participant2,
              block_identifier=block_identifier,
              channel_identifier=channel_data.channel_identifier,
          )
          chain_id = self.proxy.contract.functions.chain_id().call()
  
          return ChannelDetails(
              chain_id=chain_id,
              channel_data=channel_data,
              participants_data=participants_data,
          )
docs: Returns a ChannelDetails instance with all the details of the
              channel and the channel participants.
  
          Note:
              For now one of the participants has to be the node_address