PremiumPlans: {
    addonMetadata: {
        addonId: string;
        isActive: boolean;
        isBoolean: boolean;
        name: string;
        priceCents: number;
    }[];
    addons: {
        addonId: string;
        currency: string;
        isActive: boolean;
        name: string;
        priceCents: number;
        type: "guild" | "user";
    }[];
    featureCategories: {
        description: string;
        name: string;
    }[];
    features: PremiumFeature[];
    tiers: PremiumPlanType[];
}

Type declaration

  • addonMetadata: {
        addonId: string;
        isActive: boolean;
        isBoolean: boolean;
        name: string;
        priceCents: number;
    }[]
  • addons: {
        addonId: string;
        currency: string;
        isActive: boolean;
        name: string;
        priceCents: number;
        type: "guild" | "user";
    }[]
  • featureCategories: {
        description: string;
        name: string;
    }[]

    Categories in the order the page should render them, each with a blurb.

  • features: PremiumFeature[]

    The comparison table, resolved server-side.

    Previously the page had to decode each tier's raw bitfield through this package's hand-copied GuildFeatures, so it could only ever render features this copy happened to list - 17 shipped bits were invisible that way, with nothing failing. These rows arrive already decoded: title, description, category, launch status and the per-tier value. No bitfield work needed.

    Filtered to released, visible rows unless the request passes all.

  • tiers: PremiumPlanType[]