class GenericRowSerDe implements ValueSerdeFactory {

  @Override
  public Serde<GenericRow> create(
      final FormatInfo format,
      final PersistenceSchema schema,
      final KsqlConfig ksqlConfig,
      final Supplier<SchemaRegistryClient> srClientFactory,
      final String loggerNamePrefix,
      final ProcessingLogContext processingLogContext
  ) {
    final Serde<List<?>> formatSerde =
        innerFactory.createFormatSerde("Value", format, schema, ksqlConfig, srClientFactory);

    final Serde<GenericRow> genericRowSerde = toGenericRowSerde(formatSerde, schema);

    final Serde<GenericRow> loggingSerde = innerFactory
        .wrapInLoggingSerde(genericRowSerde, loggerNamePrefix, processingLogContext);

    loggingSerde.configure(Collections.emptyMap(), false);

    return loggingSerde;
  }

  public  GenericRowSerDe();
  @VisibleForTesting  GenericRowSerDe(final GenericSerdeFactory innerFactory);

}