package com.xfestudio.xfeservermanager.api.command;

import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import java.util.Set;

/** Semantic facts extracted from an item stack argument. */
public record ItemFact(
        String argumentName,
        String itemId,
        Set<String> itemTags,
        int count,
        Set<String> dataKeys
) {
    public ItemFact {
        argumentName = ApiChecks.notBlank(argumentName, "argumentName");
        itemId = ApiChecks.lowerIdentifier(itemId, "itemId");
        itemTags = ApiChecks.immutableLowercaseSet(itemTags, "itemTags");
        if (count < 1) {
            throw new IllegalArgumentException("count must be positive");
        }
        dataKeys = ApiChecks.immutableLowercaseSet(dataKeys, "dataKeys");
    }
}
