A code snippet to demostrate how to generate the signature required when making offers

function encodeOffer_v3({
  expiry,
  lender,
  amount,
  repayment,
  nftAddress,
  tokenId,
  duration,
  erc20Address,
  itemType,
  size,
  counter,
  chainId,
  loanContractAddress
}) {
  try {
    const offerPack = ethers.utils.solidityPack(
      ['uint8', 'address', 'uint256', 'uint256', 'address', 'uint256', 'uint32', 'uint32', 'uint32'],
      [+itemType, erc20Address, amount, repayment, nftAddress, tokenId, duration, expiry, size])

    let message = null
    message = ethers.utils.solidityKeccak256(
      ['bytes', 'address', 'uint256', 'address', 'uint256'],
      [offerPack, loanContractAddress, chainId, lender, +counter])

    return message
  } catch (e) {
    logger.error('signature encode', e.message)
  }
  return ''
}