package com.sigmaflare.binancej.entities; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import lombok.NonNull; // The "property" here refers to an identifying feature of the JSON that will be used to // match to a @JsonTypeName @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "filterType") @JsonSubTypes({ @JsonSubTypes.Type(value = PriceFilter.class, name = "PRICE_FILTER"), @JsonSubTypes.Type(value = LotSizeFilter.class, name = "LOT_SIZE"), @JsonSubTypes.Type(value = MinNotionalFilter.class, name = "MIN_NOTIONAL") }) public abstract class SymbolFilter { // This seems like an enum, but the entire space of values is not enumerated // so it is left as a string for now @NonNull @JsonProperty("filterType") private String filterType; }