@Override
  protected int[] getRemainingPromotionsPerType() {
    final var allTypes = TransactionType.values();
    final var remainingPromotionsPerType = new int[allTypes.length];
    for (int i = 0; i < allTypes.length; i++) {
      remainingPromotionsPerType[i] =
          poolConfig
                  .getMaxPrioritizedTransactionsByType()
                  .getOrDefault(allTypes[i], Integer.MAX_VALUE)
              - txCountByType[i];
    }
    return remainingPromotionsPerType;
  }
Here the max number of txs of a specific type that can be promoted, is defined by the
configuration, so we return the difference between the configured max and the current count of
txs for each type

@return an array containing the max amount of txs that can be promoted for each type
ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/layered/AbstractPrioritizedTransactions.java