code: def token_network_leave(
              self,
              registry_address: PaymentNetworkID,
              token_address: TokenAddress,
      ) -> List[NettingChannelState]:
          
          if not is_binary_address(registry_address):
              raise InvalidAddress('registry_address must be a valid address in binary')
          if not is_binary_address(token_address):
              raise InvalidAddress('token_address must be a valid address in binary')
  
          if token_address not in self.get_tokens_list(registry_address):
              raise UnknownTokenAddress('token_address unknown')
  
          token_network_identifier = views.get_token_network_identifier_by_token_address(
              chain_state=views.state_from_raiden(self.raiden),
              payment_network_id=registry_address,
              token_address=token_address,
          )
  
          connection_manager = self.raiden.connection_manager_for_token_network(
              token_network_identifier,
          )
  
          return connection_manager.leave(registry_address)
docs: Close all channels and wait for settlement.