code: def next_channel_from_routes(
          available_routes: List['RouteState'],
          channelidentifiers_to_channels: Dict,
          transfer_amount: PaymentWithFeeAmount,
          lock_timeout: BlockTimeout,
  ) -> Optional[NettingChannelState]:
      
      for route in available_routes:
          channel_state = channelidentifiers_to_channels.get(route.channel_identifier)
  
          if not channel_state:
              continue
  
          if is_channel_usable(channel_state, transfer_amount, lock_timeout):
              return channel_state
  
      return None
docs: Returns the first route that may be used to mediated the transfer.
      The routing service can race with local changes, so the recommended routes
      must be validated.
      Args:
          available_routes: Current available routes that may be used, it's
              assumed that the available_routes list is ordered from best to
              worst.
          channelidentifiers_to_channels: Mapping from channel identifier
              to NettingChannelState.
          transfer_amount: The amount of tokens that will be transferred
              through the given route.
          lock_timeout: Number of blocks until the lock expires, used to filter
              out channels that have a smaller settlement window.
      Returns:
          The next route.