code: func (w *Worker) ClientPreChannelTopUp(job *data.Job) error {
  	logger := w.logger.Add("method", "ClientPreChannelTopUp", "job", job)
  
  	ch, err := w.relatedChannel(logger, job, data.JobClientPreChannelTopUp)
  	if err != nil {
  		return err
  	}
  
  	offer, err := w.offering(logger, ch.Offering)
  	if err != nil {
  		return err
  	}
  
  	acc, err := w.account(logger, ch.Client)
  	if err != nil {
  		return err
  	}
  
  	logger = logger.Add("channel", ch, "offering", offer)
  
  	var jdata data.JobTopUpChannelData
  	if err := w.unmarshalDataTo(logger, job.Data, &jdata); err != nil {
  		return err
  	}
  
  	if err := w.checkDeposit(logger, acc, offer, jdata.Deposit); err != nil {
  		return err
  	}
  
  	return w.clientPreChannelTopUpSaveTx(logger, job, ch, acc, offer,
  		jdata.GasPrice, uint64(jdata.Deposit))
  }
docs: // ClientPreChannelTopUp checks client balance and creates transaction
  // for increase the channel deposit.