@solvapay/react 2.4.0 → 2.5.0-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @solvapay/react changelog
2
2
 
3
+ ## 2.5.0-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65
4
+
5
+ ### Minor Changes
6
+
7
+ - bd029af: Limit checks no longer return `throttled`, `needsUpgrade`, or `upgraded`. `LimitOption.onExceed` is `block` or `top_up`; the API still accepts `charge` and stores it as `top_up`. Rollover options are gone from the plan types; the API drops them on input. Usage on a recurring plan is paid from prepaid credits, never billed to a card: `overage` (and `consequence: 'overage'`) now means access past the included cap paid from credits. The recurring checkout mandate no longer mentions usage past the included allowance.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [815f9a2]
12
+ - Updated dependencies [bd029af]
13
+ - @solvapay/mcp-core@0.4.6-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65
14
+
3
15
  ## 2.4.0
4
16
 
5
17
  ### Minor Changes
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { _ as UsageSnapshot } from './useUsage-zYGsspbH.cjs';
2
+ import { _ as UsageSnapshot } from './useUsage-6bFVuK7L.cjs';
3
3
 
4
4
  /**
5
5
  * `<UsageMeter>` compound primitive — renders the authenticated customer's
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { _ as UsageSnapshot } from './useUsage-B144Vck8.js';
2
+ import { _ as UsageSnapshot } from './useUsage-CNZPv3__.js';
3
3
 
4
4
  /**
5
5
  * `<UsageMeter>` compound primitive — renders the authenticated customer's
@@ -319,11 +319,8 @@ function createHttpTransport(config) {
319
319
  remaining: data.remaining,
320
320
  meterName: data.meterName ?? null,
321
321
  activationRequired: data.activationRequired ?? false,
322
- throttled: data.throttled,
323
322
  overage: data.overage,
324
323
  needsTopUp: data.needsTopUp,
325
- needsUpgrade: data.needsUpgrade,
326
- upgraded: data.upgraded,
327
324
  ...data.used !== void 0 ? { used: data.used } : {},
328
325
  ...data.limit !== void 0 ? { limit: data.limit } : {}
329
326
  };
@@ -375,7 +372,8 @@ var enCopy = {
375
372
  const period = intervalPhrase(ctx);
376
373
  const trial = trialPhrase(ctx);
377
374
  const every = period ? ` every ${period}` : "";
378
- return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time. Payments are processed by SolvaPay.${legalSentence(ctx)}`;
375
+ const savedCard = ctx.savesPaymentMethod ? ` You also authorize ${ctx.merchant.legalName} to save your card for renewals and failed-payment retries.` : "";
376
+ return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time.${savedCard} Payments are processed by SolvaPay.${legalSentence(ctx)}`;
379
377
  },
380
378
  oneTime: (ctx) => {
381
379
  const product = ctx.product?.name ? ` for ${ctx.product.name}` : "";
@@ -6738,11 +6736,8 @@ function useLimits(options) {
6738
6736
  withinLimits: data?.withinLimits ?? null,
6739
6737
  meterName: data?.meterName ?? null,
6740
6738
  activationRequired: data?.activationRequired ?? null,
6741
- throttled: data?.throttled ?? null,
6742
6739
  overage: data?.overage ?? null,
6743
6740
  needsTopUp: data?.needsTopUp ?? null,
6744
- needsUpgrade: data?.needsUpgrade ?? null,
6745
- upgraded: data?.upgraded ?? null,
6746
6741
  used: data?.used ?? null,
6747
6742
  limit: data?.limit ?? null,
6748
6743
  loading,
@@ -8,7 +8,7 @@ import {
8
8
  useOpenExternal,
9
9
  useSolvaPay,
10
10
  useTransport
11
- } from "./chunk-MMD6AOUR.js";
11
+ } from "./chunk-67GJCZZU.js";
12
12
 
13
13
  // src/hooks/usePaymentMethod.ts
14
14
  import { useCallback, useEffect, useState } from "react";
@@ -52,7 +52,7 @@ import {
52
52
  validateAutoRechargeForm,
53
53
  withPaymentElementDefaults,
54
54
  writeAutoRechargeCache
55
- } from "./chunk-MMD6AOUR.js";
55
+ } from "./chunk-67GJCZZU.js";
56
56
 
57
57
  // src/TopupForm.tsx
58
58
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { a4 as components, b as Plan, P as PaymentFormProps, a as PrefillCustomer, A as ActivationResult, s as UseTopupAmountSelectorReturn, a5 as AutoRechargeInput, u as AutoRechargeConfig, a6 as AutoRechargeDisplayBlock, E as CheckoutStep, O as SuccessMeta } from './useUsage-zYGsspbH.cjs';
1
+ import { a4 as components, b as Plan, P as PaymentFormProps, a as PrefillCustomer, A as ActivationResult, s as UseTopupAmountSelectorReturn, a5 as AutoRechargeInput, u as AutoRechargeConfig, a6 as AutoRechargeDisplayBlock, E as CheckoutStep, O as SuccessMeta } from './useUsage-6bFVuK7L.cjs';
2
2
  import React from 'react';
3
3
  import { PaymentElement, CardElement } from '@stripe/react-stripe-js';
4
4
  import { TaxBreakdown } from '@solvapay/core';
@@ -1,4 +1,4 @@
1
- import { a4 as components, b as Plan, P as PaymentFormProps, a as PrefillCustomer, A as ActivationResult, s as UseTopupAmountSelectorReturn, a5 as AutoRechargeInput, u as AutoRechargeConfig, a6 as AutoRechargeDisplayBlock, E as CheckoutStep, O as SuccessMeta } from './useUsage-B144Vck8.js';
1
+ import { a4 as components, b as Plan, P as PaymentFormProps, a as PrefillCustomer, A as ActivationResult, s as UseTopupAmountSelectorReturn, a5 as AutoRechargeInput, u as AutoRechargeConfig, a6 as AutoRechargeDisplayBlock, E as CheckoutStep, O as SuccessMeta } from './useUsage-CNZPv3__.js';
2
2
  import React from 'react';
3
3
  import { PaymentElement, CardElement } from '@stripe/react-stripe-js';
4
4
  import { TaxBreakdown } from '@solvapay/core';
package/dist/index.cjs CHANGED
@@ -563,11 +563,8 @@ function createHttpTransport(config) {
563
563
  remaining: data.remaining,
564
564
  meterName: data.meterName ?? null,
565
565
  activationRequired: data.activationRequired ?? false,
566
- throttled: data.throttled,
567
566
  overage: data.overage,
568
567
  needsTopUp: data.needsTopUp,
569
- needsUpgrade: data.needsUpgrade,
570
- upgraded: data.upgraded,
571
568
  ...data.used !== void 0 ? { used: data.used } : {},
572
569
  ...data.limit !== void 0 ? { limit: data.limit } : {}
573
570
  };
@@ -622,7 +619,8 @@ var enCopy = {
622
619
  const period = intervalPhrase(ctx);
623
620
  const trial = trialPhrase(ctx);
624
621
  const every = period ? ` every ${period}` : "";
625
- return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time. Payments are processed by SolvaPay.${legalSentence(ctx)}`;
622
+ const savedCard = ctx.savesPaymentMethod ? ` You also authorize ${ctx.merchant.legalName} to save your card for renewals and failed-payment retries.` : "";
623
+ return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time.${savedCard} Payments are processed by SolvaPay.${legalSentence(ctx)}`;
626
624
  },
627
625
  oneTime: (ctx) => {
628
626
  const product = ctx.product?.name ? ` for ${ctx.product.name}` : "";
@@ -8382,11 +8380,8 @@ function useLimits(options) {
8382
8380
  withinLimits: data?.withinLimits ?? null,
8383
8381
  meterName: data?.meterName ?? null,
8384
8382
  activationRequired: data?.activationRequired ?? null,
8385
- throttled: data?.throttled ?? null,
8386
8383
  overage: data?.overage ?? null,
8387
8384
  needsTopUp: data?.needsTopUp ?? null,
8388
- needsUpgrade: data?.needsUpgrade ?? null,
8389
- upgraded: data?.upgraded ?? null,
8390
8385
  used: data?.used ?? null,
8391
8386
  limit: data?.limit ?? null,
8392
8387
  loading,
package/dist/index.d.cts CHANGED
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { S as SolvaPayProviderProps, P as PaymentFormProps, a as PrefillCustomer, T as TopupFormProps, C as CheckoutResult, b as Plan, A as ActivationResult, B as BootstrapPlanLike, c as SaveAutoRechargeResponse, d as PurchaseStatus, e as SolvaPayContextValue, U as UsePlansOptions, f as UsePlansReturn, g as UsePlanOptions, h as UsePlanReturn, i as UseProductReturn, j as UseMerchantReturn, k as SolvaPayCopy, l as PurchaseStatusReturn, m as CancelResult, R as ReactivateResult, n as ActivatePlanResult, o as UseTopupOptions, p as UseTopupReturn, q as BalanceStatus, r as UseTopupAmountSelectorOptions, s as UseTopupAmountSelectorReturn, t as UsePaymentMethodReturn, u as AutoRechargeConfig, v as SaveAutoRechargeInput, w as SolvaPayTransport, x as PartialSolvaPayCopy, y as PurchaseInfo, z as Product, D as SolvaPayConfig } from './useUsage-zYGsspbH.cjs';
3
- export { E as CheckoutStep, F as CustomerPurchaseData, M as MandateContext, G as MandateTemplate, H as Merchant, I as PaymentError, J as PaymentIntentResult, K as PaymentMethodInfo, L as PaymentResult, N as PurchaseStatusValue, O as SuccessMeta, Q as TopupPaymentResult, V as TransportBalanceResult, W as TransportCheckoutSessionResult, X as TransportCustomerSessionResult, Y as TransportLimitsResult, Z as UnsupportedTransportMethodError, _ as UsageSnapshot, $ as UseUsageReturn, a0 as useUsage } from './useUsage-zYGsspbH.cjs';
4
- import { P as PaymentFormSummary, a as PaymentFormCustomerFields, b as PaymentFormPaymentElement, c as PaymentFormCardElement, d as PaymentFormMandateText, e as PaymentFormTermsCheckbox, f as PaymentFormSubmitButton, g as PaymentFormLoading, h as PaymentFormError, i as PaymentFormLegalFooter, j as PaymentFormBusinessDetails, k as PaymentFormTaxSummary, A as AutoRechargeInputPayload, l as PaywallStructuredContent, C as CheckoutVariant } from './index-BTZxR-Le.cjs';
5
- export { m as ActivationFlowStep, B as BalanceBadge, n as CancelPlanButton, o as CheckoutErrorPhase, p as CheckoutStatus, q as CheckoutSteps, r as CheckoutSummary, s as CheckoutSummaryProps, M as MandateText, t as MandateTextProps, u as PlanBadge, v as ProductBadge, w as PurchaseGate, U as UseCheckoutFlowOptions, x as UseCheckoutFlowReturn, y as configToAutoRechargeInput, z as deriveVariant, D as useCheckoutFlow, E as useCheckoutStepsContext } from './index-BTZxR-Le.cjs';
2
+ import { S as SolvaPayProviderProps, P as PaymentFormProps, a as PrefillCustomer, T as TopupFormProps, C as CheckoutResult, b as Plan, A as ActivationResult, B as BootstrapPlanLike, c as SaveAutoRechargeResponse, d as PurchaseStatus, e as SolvaPayContextValue, U as UsePlansOptions, f as UsePlansReturn, g as UsePlanOptions, h as UsePlanReturn, i as UseProductReturn, j as UseMerchantReturn, k as SolvaPayCopy, l as PurchaseStatusReturn, m as CancelResult, R as ReactivateResult, n as ActivatePlanResult, o as UseTopupOptions, p as UseTopupReturn, q as BalanceStatus, r as UseTopupAmountSelectorOptions, s as UseTopupAmountSelectorReturn, t as UsePaymentMethodReturn, u as AutoRechargeConfig, v as SaveAutoRechargeInput, w as SolvaPayTransport, x as PartialSolvaPayCopy, y as PurchaseInfo, z as Product, D as SolvaPayConfig } from './useUsage-6bFVuK7L.cjs';
3
+ export { E as CheckoutStep, F as CustomerPurchaseData, M as MandateContext, G as MandateTemplate, H as Merchant, I as PaymentError, J as PaymentIntentResult, K as PaymentMethodInfo, L as PaymentResult, N as PurchaseStatusValue, O as SuccessMeta, Q as TopupPaymentResult, V as TransportBalanceResult, W as TransportCheckoutSessionResult, X as TransportCustomerSessionResult, Y as TransportLimitsResult, Z as UnsupportedTransportMethodError, _ as UsageSnapshot, $ as UseUsageReturn, a0 as useUsage } from './useUsage-6bFVuK7L.cjs';
4
+ import { P as PaymentFormSummary, a as PaymentFormCustomerFields, b as PaymentFormPaymentElement, c as PaymentFormCardElement, d as PaymentFormMandateText, e as PaymentFormTermsCheckbox, f as PaymentFormSubmitButton, g as PaymentFormLoading, h as PaymentFormError, i as PaymentFormLegalFooter, j as PaymentFormBusinessDetails, k as PaymentFormTaxSummary, A as AutoRechargeInputPayload, l as PaywallStructuredContent, C as CheckoutVariant } from './index-CI48gWSF.cjs';
5
+ export { m as ActivationFlowStep, B as BalanceBadge, n as CancelPlanButton, o as CheckoutErrorPhase, p as CheckoutStatus, q as CheckoutSteps, r as CheckoutSummary, s as CheckoutSummaryProps, M as MandateText, t as MandateTextProps, u as PlanBadge, v as ProductBadge, w as PurchaseGate, U as UseCheckoutFlowOptions, x as UseCheckoutFlowReturn, y as configToAutoRechargeInput, z as deriveVariant, D as useCheckoutFlow, E as useCheckoutStepsContext } from './index-CI48gWSF.cjs';
6
6
  import { PaymentIntent, Stripe, StripeElements } from '@stripe/stripe-js';
7
7
  import { BusinessDetailsInput, TaxBreakdown } from '@solvapay/core';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -961,16 +961,10 @@ interface UseLimitsReturn {
961
961
  * should treat `true` as "needs the activation flow", not "exhausted".
962
962
  */
963
963
  activationRequired: boolean | null;
964
- /** Access granted under `onExceed: throttle` (legacy plans). `null` while loading. */
965
- throttled: boolean | null;
966
- /** Access granted and usage past the cap accrues overage. `null` while loading. */
964
+ /** Access granted past the included cap, paid from prepaid credits. `null` while loading. */
967
965
  overage: boolean | null;
968
966
  /** Access blocked pending a prepaid top-up. `null` while loading. */
969
967
  needsTopUp: boolean | null;
970
- /** Access blocked pending an auto-upgrade. `null` while loading. */
971
- needsUpgrade: boolean | null;
972
- /** The customer was auto-upgraded and access was restored. `null` while loading. */
973
- upgraded: boolean | null;
974
968
  /**
975
969
  * Consumed units this period. `null` while loading, when disabled, or
976
970
  * when the backend did not measure a finite cap.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { S as SolvaPayProviderProps, P as PaymentFormProps, a as PrefillCustomer, T as TopupFormProps, C as CheckoutResult, b as Plan, A as ActivationResult, B as BootstrapPlanLike, c as SaveAutoRechargeResponse, d as PurchaseStatus, e as SolvaPayContextValue, U as UsePlansOptions, f as UsePlansReturn, g as UsePlanOptions, h as UsePlanReturn, i as UseProductReturn, j as UseMerchantReturn, k as SolvaPayCopy, l as PurchaseStatusReturn, m as CancelResult, R as ReactivateResult, n as ActivatePlanResult, o as UseTopupOptions, p as UseTopupReturn, q as BalanceStatus, r as UseTopupAmountSelectorOptions, s as UseTopupAmountSelectorReturn, t as UsePaymentMethodReturn, u as AutoRechargeConfig, v as SaveAutoRechargeInput, w as SolvaPayTransport, x as PartialSolvaPayCopy, y as PurchaseInfo, z as Product, D as SolvaPayConfig } from './useUsage-B144Vck8.js';
3
- export { E as CheckoutStep, F as CustomerPurchaseData, M as MandateContext, G as MandateTemplate, H as Merchant, I as PaymentError, J as PaymentIntentResult, K as PaymentMethodInfo, L as PaymentResult, N as PurchaseStatusValue, O as SuccessMeta, Q as TopupPaymentResult, V as TransportBalanceResult, W as TransportCheckoutSessionResult, X as TransportCustomerSessionResult, Y as TransportLimitsResult, Z as UnsupportedTransportMethodError, _ as UsageSnapshot, $ as UseUsageReturn, a0 as useUsage } from './useUsage-B144Vck8.js';
4
- import { P as PaymentFormSummary, a as PaymentFormCustomerFields, b as PaymentFormPaymentElement, c as PaymentFormCardElement, d as PaymentFormMandateText, e as PaymentFormTermsCheckbox, f as PaymentFormSubmitButton, g as PaymentFormLoading, h as PaymentFormError, i as PaymentFormLegalFooter, j as PaymentFormBusinessDetails, k as PaymentFormTaxSummary, A as AutoRechargeInputPayload, l as PaywallStructuredContent, C as CheckoutVariant } from './index-BY4aA8T2.js';
5
- export { m as ActivationFlowStep, B as BalanceBadge, n as CancelPlanButton, o as CheckoutErrorPhase, p as CheckoutStatus, q as CheckoutSteps, r as CheckoutSummary, s as CheckoutSummaryProps, M as MandateText, t as MandateTextProps, u as PlanBadge, v as ProductBadge, w as PurchaseGate, U as UseCheckoutFlowOptions, x as UseCheckoutFlowReturn, y as configToAutoRechargeInput, z as deriveVariant, D as useCheckoutFlow, E as useCheckoutStepsContext } from './index-BY4aA8T2.js';
2
+ import { S as SolvaPayProviderProps, P as PaymentFormProps, a as PrefillCustomer, T as TopupFormProps, C as CheckoutResult, b as Plan, A as ActivationResult, B as BootstrapPlanLike, c as SaveAutoRechargeResponse, d as PurchaseStatus, e as SolvaPayContextValue, U as UsePlansOptions, f as UsePlansReturn, g as UsePlanOptions, h as UsePlanReturn, i as UseProductReturn, j as UseMerchantReturn, k as SolvaPayCopy, l as PurchaseStatusReturn, m as CancelResult, R as ReactivateResult, n as ActivatePlanResult, o as UseTopupOptions, p as UseTopupReturn, q as BalanceStatus, r as UseTopupAmountSelectorOptions, s as UseTopupAmountSelectorReturn, t as UsePaymentMethodReturn, u as AutoRechargeConfig, v as SaveAutoRechargeInput, w as SolvaPayTransport, x as PartialSolvaPayCopy, y as PurchaseInfo, z as Product, D as SolvaPayConfig } from './useUsage-CNZPv3__.js';
3
+ export { E as CheckoutStep, F as CustomerPurchaseData, M as MandateContext, G as MandateTemplate, H as Merchant, I as PaymentError, J as PaymentIntentResult, K as PaymentMethodInfo, L as PaymentResult, N as PurchaseStatusValue, O as SuccessMeta, Q as TopupPaymentResult, V as TransportBalanceResult, W as TransportCheckoutSessionResult, X as TransportCustomerSessionResult, Y as TransportLimitsResult, Z as UnsupportedTransportMethodError, _ as UsageSnapshot, $ as UseUsageReturn, a0 as useUsage } from './useUsage-CNZPv3__.js';
4
+ import { P as PaymentFormSummary, a as PaymentFormCustomerFields, b as PaymentFormPaymentElement, c as PaymentFormCardElement, d as PaymentFormMandateText, e as PaymentFormTermsCheckbox, f as PaymentFormSubmitButton, g as PaymentFormLoading, h as PaymentFormError, i as PaymentFormLegalFooter, j as PaymentFormBusinessDetails, k as PaymentFormTaxSummary, A as AutoRechargeInputPayload, l as PaywallStructuredContent, C as CheckoutVariant } from './index-DXCVbTGi.js';
5
+ export { m as ActivationFlowStep, B as BalanceBadge, n as CancelPlanButton, o as CheckoutErrorPhase, p as CheckoutStatus, q as CheckoutSteps, r as CheckoutSummary, s as CheckoutSummaryProps, M as MandateText, t as MandateTextProps, u as PlanBadge, v as ProductBadge, w as PurchaseGate, U as UseCheckoutFlowOptions, x as UseCheckoutFlowReturn, y as configToAutoRechargeInput, z as deriveVariant, D as useCheckoutFlow, E as useCheckoutStepsContext } from './index-DXCVbTGi.js';
6
6
  import { PaymentIntent, Stripe, StripeElements } from '@stripe/stripe-js';
7
7
  import { BusinessDetailsInput, TaxBreakdown } from '@solvapay/core';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -961,16 +961,10 @@ interface UseLimitsReturn {
961
961
  * should treat `true` as "needs the activation flow", not "exhausted".
962
962
  */
963
963
  activationRequired: boolean | null;
964
- /** Access granted under `onExceed: throttle` (legacy plans). `null` while loading. */
965
- throttled: boolean | null;
966
- /** Access granted and usage past the cap accrues overage. `null` while loading. */
964
+ /** Access granted past the included cap, paid from prepaid credits. `null` while loading. */
967
965
  overage: boolean | null;
968
966
  /** Access blocked pending a prepaid top-up. `null` while loading. */
969
967
  needsTopUp: boolean | null;
970
- /** Access blocked pending an auto-upgrade. `null` while loading. */
971
- needsUpgrade: boolean | null;
972
- /** The customer was auto-upgraded and access was restored. `null` while loading. */
973
- upgraded: boolean | null;
974
968
  /**
975
969
  * Consumed units this period. `null` while loading, when disabled, or
976
970
  * when the backend did not measure a finite cap.
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  LaunchCustomerPortalButton,
6
6
  usePaymentMethod
7
- } from "./chunk-P4PPMKIK.js";
7
+ } from "./chunk-BI5MJT24.js";
8
8
  import {
9
9
  ActivationFlow,
10
10
  AutoRecharge,
@@ -20,7 +20,7 @@ import {
20
20
  useCheckoutSteps,
21
21
  useCreditGate,
22
22
  usePaywallResolver
23
- } from "./chunk-BPF5NFWF.js";
23
+ } from "./chunk-IZPE4LKU.js";
24
24
  import {
25
25
  AmountPicker,
26
26
  BalanceBadge,
@@ -100,7 +100,7 @@ import {
100
100
  useTopupAmountSelector,
101
101
  useTransport,
102
102
  useUsage
103
- } from "./chunk-MMD6AOUR.js";
103
+ } from "./chunk-67GJCZZU.js";
104
104
  import {
105
105
  createAnonymousAuthAdapter,
106
106
  defaultAuthAdapter,
@@ -1185,11 +1185,8 @@ function createHttpTransport(config) {
1185
1185
  remaining: data.remaining,
1186
1186
  meterName: data.meterName ?? null,
1187
1187
  activationRequired: data.activationRequired ?? false,
1188
- throttled: data.throttled,
1189
1188
  overage: data.overage,
1190
1189
  needsTopUp: data.needsTopUp,
1191
- needsUpgrade: data.needsUpgrade,
1192
- upgraded: data.upgraded,
1193
1190
  ...data.used !== void 0 ? { used: data.used } : {},
1194
1191
  ...data.limit !== void 0 ? { limit: data.limit } : {}
1195
1192
  };
@@ -1244,7 +1241,8 @@ var enCopy = {
1244
1241
  const period = intervalPhrase(ctx);
1245
1242
  const trial = trialPhrase(ctx);
1246
1243
  const every = period ? ` every ${period}` : "";
1247
- return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time. Payments are processed by SolvaPay.${legalSentence(ctx)}`;
1244
+ const savedCard = ctx.savesPaymentMethod ? ` You also authorize ${ctx.merchant.legalName} to save your card for renewals and failed-payment retries.` : "";
1245
+ return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time.${savedCard} Payments are processed by SolvaPay.${legalSentence(ctx)}`;
1248
1246
  },
1249
1247
  oneTime: (ctx) => {
1250
1248
  const product = ctx.product?.name ? ` for ${ctx.product.name}` : "";
@@ -2824,11 +2822,8 @@ function useLimits(options) {
2824
2822
  withinLimits: data?.withinLimits ?? null,
2825
2823
  meterName: data?.meterName ?? null,
2826
2824
  activationRequired: data?.activationRequired ?? null,
2827
- throttled: data?.throttled ?? null,
2828
2825
  overage: data?.overage ?? null,
2829
2826
  needsTopUp: data?.needsTopUp ?? null,
2830
- needsUpgrade: data?.needsUpgrade ?? null,
2831
- upgraded: data?.upgraded ?? null,
2832
2827
  used: data?.used ?? null,
2833
2828
  limit: data?.limit ?? null,
2834
2829
  loading,
@@ -2961,11 +2956,8 @@ function toTransportLimits(limits) {
2961
2956
  remaining: limits.remaining,
2962
2957
  meterName: limits.meterName ?? null,
2963
2958
  activationRequired: limits.activationRequired === true,
2964
- ...limits.throttled !== void 0 ? { throttled: limits.throttled } : {},
2965
2959
  ...limits.overage !== void 0 ? { overage: limits.overage } : {},
2966
2960
  ...limits.needsTopUp !== void 0 ? { needsTopUp: limits.needsTopUp } : {},
2967
- ...limits.needsUpgrade !== void 0 ? { needsUpgrade: limits.needsUpgrade } : {},
2968
- ...limits.upgraded !== void 0 ? { upgraded: limits.upgraded } : {},
2969
2961
  ...limits.used !== void 0 ? { used: limits.used } : {},
2970
2962
  ...limits.limit !== void 0 ? { limit: limits.limit } : {}
2971
2963
  };
@@ -6049,9 +6041,7 @@ function McpAccountView({
6049
6041
  withinLimits: limits.withinLimits,
6050
6042
  activationRequired: limits.activationRequired,
6051
6043
  overage: limits.overage,
6052
- needsTopUp: limits.needsTopUp,
6053
- needsUpgrade: limits.needsUpgrade,
6054
- throttled: limits.throttled
6044
+ needsTopUp: limits.needsTopUp
6055
6045
  } : null;
6056
6046
  const accountState = resolveAccountState({
6057
6047
  loading: loading || Boolean(productRef && limits.loading),
@@ -11142,7 +11132,7 @@ var RecurringPaymentStep = (0, import_react49.memo)(function RecurringPaymentSte
11142
11132
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PaymentForm.BusinessDetails.Root, { className: cx2.businessDetails, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PaymentForm.BusinessDetails.Fields, {}) }),
11143
11133
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PaymentForm.Error, { className: cx2.error }),
11144
11134
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PaymentForm.SubmitButton, { className: cx2.button, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(RecurringChargeCta, { amountMinor, currency, cycle }) }),
11145
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PaymentForm.MandateText, {})
11135
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(PaymentForm.MandateText, { savesPaymentMethod: true })
11146
11136
  ] })
11147
11137
  ] })
11148
11138
  }
@@ -1,10 +1,10 @@
1
- import { w as SolvaPayTransport, a1 as SolvaPayProviderInitial, D as SolvaPayConfig, B as BootstrapPlanLike, y as PurchaseInfo, a2 as CreditActivityType, a3 as CreditActivityEntry, H as Merchant } from '../useUsage-zYGsspbH.cjs';
1
+ import { w as SolvaPayTransport, a1 as SolvaPayProviderInitial, D as SolvaPayConfig, B as BootstrapPlanLike, y as PurchaseInfo, a2 as CreditActivityType, a3 as CreditActivityEntry, H as Merchant } from '../useUsage-6bFVuK7L.cjs';
2
2
  import { TOOL_FOR_VIEW, SolvaPayMcpViewKind, BootstrapMerchant, BootstrapProduct, BootstrapPlan, BootstrapCustomer } from '@solvapay/mcp-core';
3
3
  export { MCP_TOOL_NAMES, McpToolName } from '@solvapay/mcp-core';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import React from 'react';
6
6
  import { PricingOptionLike, PricedLike, BalancePegLike } from '@solvapay/core';
7
- import { U as UsageMeterRootProps } from '../UsageMeter-DUeL64V4.cjs';
7
+ import { U as UsageMeterRootProps } from '../UsageMeter-D2KW08uB.cjs';
8
8
  import '@stripe/stripe-js';
9
9
  import '../adapters/auth.cjs';
10
10
 
@@ -1113,8 +1113,6 @@ interface AccountLimitsLike {
1113
1113
  activationRequired: boolean | null;
1114
1114
  overage: boolean | null;
1115
1115
  needsTopUp: boolean | null;
1116
- needsUpgrade: boolean | null;
1117
- throttled: boolean | null;
1118
1116
  }
1119
1117
  interface AccountPurchaseLike {
1120
1118
  planSnapshot?: PlanLike | null;
@@ -1145,7 +1143,7 @@ interface AccountStateInput {
1145
1143
  * I `overage` (outranks `withinLimits` → not F)
1146
1144
  * D `needsTopUp` or a usage-based plan that is out of limits
1147
1145
  * F allowance plan at cap
1148
- * B / C / E running plan-shape (`throttled` / `needsUpgrade` land here)
1146
+ * B / C / E running plan-shape
1149
1147
  * A no plan
1150
1148
  */
1151
1149
  declare function resolveAccountState(input: AccountStateInput): AccountState;
@@ -1,10 +1,10 @@
1
- import { w as SolvaPayTransport, a1 as SolvaPayProviderInitial, D as SolvaPayConfig, B as BootstrapPlanLike, y as PurchaseInfo, a2 as CreditActivityType, a3 as CreditActivityEntry, H as Merchant } from '../useUsage-B144Vck8.js';
1
+ import { w as SolvaPayTransport, a1 as SolvaPayProviderInitial, D as SolvaPayConfig, B as BootstrapPlanLike, y as PurchaseInfo, a2 as CreditActivityType, a3 as CreditActivityEntry, H as Merchant } from '../useUsage-CNZPv3__.js';
2
2
  import { TOOL_FOR_VIEW, SolvaPayMcpViewKind, BootstrapMerchant, BootstrapProduct, BootstrapPlan, BootstrapCustomer } from '@solvapay/mcp-core';
3
3
  export { MCP_TOOL_NAMES, McpToolName } from '@solvapay/mcp-core';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import React from 'react';
6
6
  import { PricingOptionLike, PricedLike, BalancePegLike } from '@solvapay/core';
7
- import { U as UsageMeterRootProps } from '../UsageMeter-iI9fukd0.js';
7
+ import { U as UsageMeterRootProps } from '../UsageMeter-D54b_WOn.js';
8
8
  import '@stripe/stripe-js';
9
9
  import '../adapters/auth.js';
10
10
 
@@ -1113,8 +1113,6 @@ interface AccountLimitsLike {
1113
1113
  activationRequired: boolean | null;
1114
1114
  overage: boolean | null;
1115
1115
  needsTopUp: boolean | null;
1116
- needsUpgrade: boolean | null;
1117
- throttled: boolean | null;
1118
1116
  }
1119
1117
  interface AccountPurchaseLike {
1120
1118
  planSnapshot?: PlanLike | null;
@@ -1145,7 +1143,7 @@ interface AccountStateInput {
1145
1143
  * I `overage` (outranks `withinLimits` → not F)
1146
1144
  * D `needsTopUp` or a usage-based plan that is out of limits
1147
1145
  * F allowance plan at cap
1148
- * B / C / E running plan-shape (`throttled` / `needsUpgrade` land here)
1146
+ * B / C / E running plan-shape
1149
1147
  * A no plan
1150
1148
  */
1151
1149
  declare function resolveAccountState(input: AccountStateInput): AccountState;
package/dist/mcp/index.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  ExternalLinkGlyph,
3
3
  LaunchCustomerPortalButton,
4
4
  paymentMethodCache
5
- } from "../chunk-P4PPMKIK.js";
5
+ } from "../chunk-BI5MJT24.js";
6
6
  import {
7
7
  AmountPicker,
8
8
  BalanceBadge,
@@ -57,7 +57,7 @@ import {
57
57
  useTransport,
58
58
  useUsage,
59
59
  validateAutoRechargeForm
60
- } from "../chunk-MMD6AOUR.js";
60
+ } from "../chunk-67GJCZZU.js";
61
61
  import "../chunk-UMXOAUW7.js";
62
62
  import "../chunk-MLKGABMK.js";
63
63
 
@@ -642,11 +642,8 @@ function toTransportLimits(limits) {
642
642
  remaining: limits.remaining,
643
643
  meterName: limits.meterName ?? null,
644
644
  activationRequired: limits.activationRequired === true,
645
- ...limits.throttled !== void 0 ? { throttled: limits.throttled } : {},
646
645
  ...limits.overage !== void 0 ? { overage: limits.overage } : {},
647
646
  ...limits.needsTopUp !== void 0 ? { needsTopUp: limits.needsTopUp } : {},
648
- ...limits.needsUpgrade !== void 0 ? { needsUpgrade: limits.needsUpgrade } : {},
649
- ...limits.upgraded !== void 0 ? { upgraded: limits.upgraded } : {},
650
647
  ...limits.used !== void 0 ? { used: limits.used } : {},
651
648
  ...limits.limit !== void 0 ? { limit: limits.limit } : {}
652
649
  };
@@ -2715,9 +2712,7 @@ function McpAccountView({
2715
2712
  withinLimits: limits.withinLimits,
2716
2713
  activationRequired: limits.activationRequired,
2717
2714
  overage: limits.overage,
2718
- needsTopUp: limits.needsTopUp,
2719
- needsUpgrade: limits.needsUpgrade,
2720
- throttled: limits.throttled
2715
+ needsTopUp: limits.needsTopUp
2721
2716
  } : null;
2722
2717
  const accountState = resolveAccountState({
2723
2718
  loading: loading || Boolean(productRef && limits.loading),
@@ -3422,7 +3417,7 @@ var RecurringPaymentStep = memo4(function RecurringPaymentStep2({
3422
3417
  /* @__PURE__ */ jsx23(PaymentForm.BusinessDetails.Root, { className: cx2.businessDetails, children: /* @__PURE__ */ jsx23(PaymentForm.BusinessDetails.Fields, {}) }),
3423
3418
  /* @__PURE__ */ jsx23(PaymentForm.Error, { className: cx2.error }),
3424
3419
  /* @__PURE__ */ jsx23(PaymentForm.SubmitButton, { className: cx2.button, children: /* @__PURE__ */ jsx23(RecurringChargeCta, { amountMinor, currency, cycle }) }),
3425
- /* @__PURE__ */ jsx23(PaymentForm.MandateText, {})
3420
+ /* @__PURE__ */ jsx23(PaymentForm.MandateText, { savesPaymentMethod: true })
3426
3421
  ] })
3427
3422
  ] })
3428
3423
  }
@@ -681,11 +681,8 @@ function createHttpTransport(config) {
681
681
  remaining: data.remaining,
682
682
  meterName: data.meterName ?? null,
683
683
  activationRequired: data.activationRequired ?? false,
684
- throttled: data.throttled,
685
684
  overage: data.overage,
686
685
  needsTopUp: data.needsTopUp,
687
- needsUpgrade: data.needsUpgrade,
688
- upgraded: data.upgraded,
689
686
  ...data.used !== void 0 ? { used: data.used } : {},
690
687
  ...data.limit !== void 0 ? { limit: data.limit } : {}
691
688
  };
@@ -740,7 +737,8 @@ var enCopy = {
740
737
  const period = intervalPhrase(ctx);
741
738
  const trial = trialPhrase(ctx);
742
739
  const every = period ? ` every ${period}` : "";
743
- return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time. Payments are processed by SolvaPay.${legalSentence(ctx)}`;
740
+ const savedCard = ctx.savesPaymentMethod ? ` You also authorize ${ctx.merchant.legalName} to save your card for renewals and failed-payment retries.` : "";
741
+ return `By subscribing, you authorize ${ctx.merchant.legalName} to charge ${ctx.amountFormatted}${every}${trial} until you cancel. You can cancel any time.${savedCard} Payments are processed by SolvaPay.${legalSentence(ctx)}`;
744
742
  },
745
743
  oneTime: (ctx) => {
746
744
  const product = ctx.product?.name ? ` for ${ctx.product.name}` : "";
@@ -9913,11 +9911,8 @@ function useLimits(options) {
9913
9911
  withinLimits: data?.withinLimits ?? null,
9914
9912
  meterName: data?.meterName ?? null,
9915
9913
  activationRequired: data?.activationRequired ?? null,
9916
- throttled: data?.throttled ?? null,
9917
9914
  overage: data?.overage ?? null,
9918
9915
  needsTopUp: data?.needsTopUp ?? null,
9919
- needsUpgrade: data?.needsUpgrade ?? null,
9920
- upgraded: data?.upgraded ?? null,
9921
9916
  used: data?.used ?? null,
9922
9917
  limit: data?.limit ?? null,
9923
9918
  loading,
@@ -1,13 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React, { Ref } from 'react';
3
- import { b as Plan, z as Product, s as UseTopupAmountSelectorReturn, y as PurchaseInfo, T as TopupFormProps, c as SaveAutoRechargeResponse, u as AutoRechargeConfig } from '../useUsage-zYGsspbH.cjs';
4
- export { B as BootstrapPlanLike, E as CheckoutStep, O as SuccessMeta } from '../useUsage-zYGsspbH.cjs';
3
+ import { b as Plan, z as Product, s as UseTopupAmountSelectorReturn, y as PurchaseInfo, T as TopupFormProps, c as SaveAutoRechargeResponse, u as AutoRechargeConfig } from '../useUsage-6bFVuK7L.cjs';
4
+ export { B as BootstrapPlanLike, E as CheckoutStep, O as SuccessMeta } from '../useUsage-6bFVuK7L.cjs';
5
5
  import { TaxBreakdown, BusinessDetailsInput } from '@solvapay/core';
6
- import { A as AutoRechargeInputPayload, F as AmountInputUnit, G as AutoRechargeFormState, l as PaywallStructuredContent } from '../index-BTZxR-Le.cjs';
7
- export { H as ActivationFlow, I as ActivationFlowActivateButton, J as ActivationFlowActivated, K as ActivationFlowAmountPicker, L as ActivationFlowContinueButton, N as ActivationFlowError, O as ActivationFlowLoading, Q as ActivationFlowRetrying, R as ActivationFlowRoot, m as ActivationFlowStep, S as ActivationFlowSummary, B as BalanceBadge, n as CancelPlanButton, p as CheckoutStatus, q as CheckoutSteps, T as CheckoutStepsAmountContinueButton, V as CheckoutStepsAmountPicker, W as CheckoutStepsBackLink, X as CheckoutStepsIfStep, Y as CheckoutStepsPayment, Z as CheckoutStepsPlanContinueButton, _ as CheckoutStepsPlanGrid, $ as CheckoutStepsRoot, a0 as CheckoutStepsStepHeading, a1 as CheckoutStepsStepMessage, a2 as CheckoutStepsSuccess, M as MandateText, t as MandateTextProps, a3 as PaymentForm, j as PaymentFormBusinessDetails, c as PaymentFormCardElement, a as PaymentFormCustomerFields, h as PaymentFormError, i as PaymentFormLegalFooter, g as PaymentFormLoading, d as PaymentFormMandateText, b as PaymentFormPaymentElement, a4 as PaymentFormRoot, f as PaymentFormSubmitButton, P as PaymentFormSummary, k as PaymentFormTaxSummary, e as PaymentFormTermsCheckbox, u as PlanBadge, v as ProductBadge, w as PurchaseGate, a5 as PurchaseGateAllowed, a6 as PurchaseGateBlocked, a7 as PurchaseGateError, a8 as PurchaseGateLoading, a9 as PurchaseGateRoot, aa as useActivationFlow, E as useCheckoutStepsContext, ab as usePurchaseGate } from '../index-BTZxR-Le.cjs';
6
+ import { A as AutoRechargeInputPayload, F as AmountInputUnit, G as AutoRechargeFormState, l as PaywallStructuredContent } from '../index-CI48gWSF.cjs';
7
+ export { H as ActivationFlow, I as ActivationFlowActivateButton, J as ActivationFlowActivated, K as ActivationFlowAmountPicker, L as ActivationFlowContinueButton, N as ActivationFlowError, O as ActivationFlowLoading, Q as ActivationFlowRetrying, R as ActivationFlowRoot, m as ActivationFlowStep, S as ActivationFlowSummary, B as BalanceBadge, n as CancelPlanButton, p as CheckoutStatus, q as CheckoutSteps, T as CheckoutStepsAmountContinueButton, V as CheckoutStepsAmountPicker, W as CheckoutStepsBackLink, X as CheckoutStepsIfStep, Y as CheckoutStepsPayment, Z as CheckoutStepsPlanContinueButton, _ as CheckoutStepsPlanGrid, $ as CheckoutStepsRoot, a0 as CheckoutStepsStepHeading, a1 as CheckoutStepsStepMessage, a2 as CheckoutStepsSuccess, M as MandateText, t as MandateTextProps, a3 as PaymentForm, j as PaymentFormBusinessDetails, c as PaymentFormCardElement, a as PaymentFormCustomerFields, h as PaymentFormError, i as PaymentFormLegalFooter, g as PaymentFormLoading, d as PaymentFormMandateText, b as PaymentFormPaymentElement, a4 as PaymentFormRoot, f as PaymentFormSubmitButton, P as PaymentFormSummary, k as PaymentFormTaxSummary, e as PaymentFormTermsCheckbox, u as PlanBadge, v as ProductBadge, w as PurchaseGate, a5 as PurchaseGateAllowed, a6 as PurchaseGateBlocked, a7 as PurchaseGateError, a8 as PurchaseGateLoading, a9 as PurchaseGateRoot, aa as useActivationFlow, E as useCheckoutStepsContext, ab as usePurchaseGate } from '../index-CI48gWSF.cjs';
8
8
  import { PaymentElement } from '@stripe/react-stripe-js';
9
9
  import { Stripe, StripeElements } from '@stripe/stripe-js';
10
- export { a as UsageMeter, B as UsageMeterBar, b as UsageMeterClassNames, E as UsageMeterEmpty, L as UsageMeterLabel, c as UsageMeterLoading, P as UsageMeterPercentage, R as UsageMeterResetsIn, d as UsageMeterRoot, U as UsageMeterRootProps, u as useUsageMeter } from '../UsageMeter-DUeL64V4.cjs';
10
+ export { a as UsageMeter, B as UsageMeterBar, b as UsageMeterClassNames, E as UsageMeterEmpty, L as UsageMeterLabel, c as UsageMeterLoading, P as UsageMeterPercentage, R as UsageMeterResetsIn, d as UsageMeterRoot, U as UsageMeterRootProps, u as useUsageMeter } from '../UsageMeter-D2KW08uB.cjs';
11
11
  import '../adapters/auth.cjs';
12
12
 
13
13
  type PlanPricingOption = {
@@ -1,13 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React, { Ref } from 'react';
3
- import { b as Plan, z as Product, s as UseTopupAmountSelectorReturn, y as PurchaseInfo, T as TopupFormProps, c as SaveAutoRechargeResponse, u as AutoRechargeConfig } from '../useUsage-B144Vck8.js';
4
- export { B as BootstrapPlanLike, E as CheckoutStep, O as SuccessMeta } from '../useUsage-B144Vck8.js';
3
+ import { b as Plan, z as Product, s as UseTopupAmountSelectorReturn, y as PurchaseInfo, T as TopupFormProps, c as SaveAutoRechargeResponse, u as AutoRechargeConfig } from '../useUsage-CNZPv3__.js';
4
+ export { B as BootstrapPlanLike, E as CheckoutStep, O as SuccessMeta } from '../useUsage-CNZPv3__.js';
5
5
  import { TaxBreakdown, BusinessDetailsInput } from '@solvapay/core';
6
- import { A as AutoRechargeInputPayload, F as AmountInputUnit, G as AutoRechargeFormState, l as PaywallStructuredContent } from '../index-BY4aA8T2.js';
7
- export { H as ActivationFlow, I as ActivationFlowActivateButton, J as ActivationFlowActivated, K as ActivationFlowAmountPicker, L as ActivationFlowContinueButton, N as ActivationFlowError, O as ActivationFlowLoading, Q as ActivationFlowRetrying, R as ActivationFlowRoot, m as ActivationFlowStep, S as ActivationFlowSummary, B as BalanceBadge, n as CancelPlanButton, p as CheckoutStatus, q as CheckoutSteps, T as CheckoutStepsAmountContinueButton, V as CheckoutStepsAmountPicker, W as CheckoutStepsBackLink, X as CheckoutStepsIfStep, Y as CheckoutStepsPayment, Z as CheckoutStepsPlanContinueButton, _ as CheckoutStepsPlanGrid, $ as CheckoutStepsRoot, a0 as CheckoutStepsStepHeading, a1 as CheckoutStepsStepMessage, a2 as CheckoutStepsSuccess, M as MandateText, t as MandateTextProps, a3 as PaymentForm, j as PaymentFormBusinessDetails, c as PaymentFormCardElement, a as PaymentFormCustomerFields, h as PaymentFormError, i as PaymentFormLegalFooter, g as PaymentFormLoading, d as PaymentFormMandateText, b as PaymentFormPaymentElement, a4 as PaymentFormRoot, f as PaymentFormSubmitButton, P as PaymentFormSummary, k as PaymentFormTaxSummary, e as PaymentFormTermsCheckbox, u as PlanBadge, v as ProductBadge, w as PurchaseGate, a5 as PurchaseGateAllowed, a6 as PurchaseGateBlocked, a7 as PurchaseGateError, a8 as PurchaseGateLoading, a9 as PurchaseGateRoot, aa as useActivationFlow, E as useCheckoutStepsContext, ab as usePurchaseGate } from '../index-BY4aA8T2.js';
6
+ import { A as AutoRechargeInputPayload, F as AmountInputUnit, G as AutoRechargeFormState, l as PaywallStructuredContent } from '../index-DXCVbTGi.js';
7
+ export { H as ActivationFlow, I as ActivationFlowActivateButton, J as ActivationFlowActivated, K as ActivationFlowAmountPicker, L as ActivationFlowContinueButton, N as ActivationFlowError, O as ActivationFlowLoading, Q as ActivationFlowRetrying, R as ActivationFlowRoot, m as ActivationFlowStep, S as ActivationFlowSummary, B as BalanceBadge, n as CancelPlanButton, p as CheckoutStatus, q as CheckoutSteps, T as CheckoutStepsAmountContinueButton, V as CheckoutStepsAmountPicker, W as CheckoutStepsBackLink, X as CheckoutStepsIfStep, Y as CheckoutStepsPayment, Z as CheckoutStepsPlanContinueButton, _ as CheckoutStepsPlanGrid, $ as CheckoutStepsRoot, a0 as CheckoutStepsStepHeading, a1 as CheckoutStepsStepMessage, a2 as CheckoutStepsSuccess, M as MandateText, t as MandateTextProps, a3 as PaymentForm, j as PaymentFormBusinessDetails, c as PaymentFormCardElement, a as PaymentFormCustomerFields, h as PaymentFormError, i as PaymentFormLegalFooter, g as PaymentFormLoading, d as PaymentFormMandateText, b as PaymentFormPaymentElement, a4 as PaymentFormRoot, f as PaymentFormSubmitButton, P as PaymentFormSummary, k as PaymentFormTaxSummary, e as PaymentFormTermsCheckbox, u as PlanBadge, v as ProductBadge, w as PurchaseGate, a5 as PurchaseGateAllowed, a6 as PurchaseGateBlocked, a7 as PurchaseGateError, a8 as PurchaseGateLoading, a9 as PurchaseGateRoot, aa as useActivationFlow, E as useCheckoutStepsContext, ab as usePurchaseGate } from '../index-DXCVbTGi.js';
8
8
  import { PaymentElement } from '@stripe/react-stripe-js';
9
9
  import { Stripe, StripeElements } from '@stripe/stripe-js';
10
- export { a as UsageMeter, B as UsageMeterBar, b as UsageMeterClassNames, E as UsageMeterEmpty, L as UsageMeterLabel, c as UsageMeterLoading, P as UsageMeterPercentage, R as UsageMeterResetsIn, d as UsageMeterRoot, U as UsageMeterRootProps, u as useUsageMeter } from '../UsageMeter-iI9fukd0.js';
10
+ export { a as UsageMeter, B as UsageMeterBar, b as UsageMeterClassNames, E as UsageMeterEmpty, L as UsageMeterLabel, c as UsageMeterLoading, P as UsageMeterPercentage, R as UsageMeterResetsIn, d as UsageMeterRoot, U as UsageMeterRootProps, u as useUsageMeter } from '../UsageMeter-D54b_WOn.js';
11
11
  import '../adapters/auth.js';
12
12
 
13
13
  type PlanPricingOption = {
@@ -89,7 +89,7 @@ import {
89
89
  useCreditGate,
90
90
  usePaywallNotice,
91
91
  usePurchaseGate
92
- } from "../chunk-BPF5NFWF.js";
92
+ } from "../chunk-IZPE4LKU.js";
93
93
  import {
94
94
  AmountPicker,
95
95
  AmountPickerConfirm,
@@ -175,7 +175,7 @@ import {
175
175
  usePlanSelector,
176
176
  useTopupForm,
177
177
  useUsageMeter
178
- } from "../chunk-MMD6AOUR.js";
178
+ } from "../chunk-67GJCZZU.js";
179
179
  import "../chunk-UMXOAUW7.js";
180
180
  import "../chunk-MLKGABMK.js";
181
181
  export {
@@ -323,12 +323,9 @@ interface components {
323
323
  label?: string;
324
324
  meter: string;
325
325
  /** @enum {string} */
326
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
327
- onExceedPricingId?: string;
326
+ onExceed: 'block' | 'top_up';
328
327
  /** @enum {string} */
329
328
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
330
- /** @enum {string} */
331
- uiHint?: 'upgrade_prompt' | 'soft_warning';
332
329
  windowDays?: number;
333
330
  } | {
334
331
  feature: string;
@@ -339,12 +336,11 @@ interface components {
339
336
  value: boolean | number | string;
340
337
  } | {
341
338
  days: number;
342
- downgradeToPricingId?: string;
343
339
  /** @enum {string} */
344
340
  kind: 'trial';
345
341
  label?: string;
346
342
  /** @enum {string} */
347
- onEnd: 'convert' | 'cancel' | 'downgrade';
343
+ onEnd: 'convert' | 'cancel';
348
344
  } | {
349
345
  /** @enum {string} */
350
346
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -358,17 +354,6 @@ interface components {
358
354
  /** @enum {string} */
359
355
  mode: 'percentage' | 'fixed';
360
356
  value: number;
361
- } | {
362
- capUnits?: number;
363
- currency?: string;
364
- /** @enum {string} */
365
- kind: 'rollover';
366
- label?: string;
367
- maxCycles?: number;
368
- meter: string;
369
- rateMinor?: number;
370
- /** @enum {string} */
371
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
372
357
  } | {
373
358
  /** @enum {string} */
374
359
  kind: 'autoAssigned';
@@ -519,12 +504,9 @@ interface components {
519
504
  label?: string;
520
505
  meter: string;
521
506
  /** @enum {string} */
522
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
523
- onExceedPricingId?: string;
507
+ onExceed: 'block' | 'top_up';
524
508
  /** @enum {string} */
525
509
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
526
- /** @enum {string} */
527
- uiHint?: 'upgrade_prompt' | 'soft_warning';
528
510
  windowDays?: number;
529
511
  } | {
530
512
  feature: string;
@@ -535,12 +517,11 @@ interface components {
535
517
  value: boolean | number | string;
536
518
  } | {
537
519
  days: number;
538
- downgradeToPricingId?: string;
539
520
  /** @enum {string} */
540
521
  kind: 'trial';
541
522
  label?: string;
542
523
  /** @enum {string} */
543
- onEnd: 'convert' | 'cancel' | 'downgrade';
524
+ onEnd: 'convert' | 'cancel';
544
525
  } | {
545
526
  /** @enum {string} */
546
527
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -554,17 +535,6 @@ interface components {
554
535
  /** @enum {string} */
555
536
  mode: 'percentage' | 'fixed';
556
537
  value: number;
557
- } | {
558
- capUnits?: number;
559
- currency?: string;
560
- /** @enum {string} */
561
- kind: 'rollover';
562
- label?: string;
563
- maxCycles?: number;
564
- meter: string;
565
- rateMinor?: number;
566
- /** @enum {string} */
567
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
568
538
  } | {
569
539
  /** @enum {string} */
570
540
  kind: 'autoAssigned';
@@ -667,7 +637,7 @@ interface components {
667
637
  * @example duplicate
668
638
  * @enum {string}
669
639
  */
670
- reason: 'duplicate' | 'no_product_ref' | 'customer_not_found' | 'no_active_purchase' | 'plan_not_credit_based' | 'plan_billed_at_period_end';
640
+ reason: 'duplicate' | 'no_product_ref' | 'customer_not_found' | 'no_active_purchase' | 'plan_not_credit_based' | 'not_credit_drawn' | 'within_included';
671
641
  };
672
642
  CreditDebitSuccessResponse: {
673
643
  /**
@@ -911,11 +881,9 @@ interface components {
911
881
  * @example requests
912
882
  */
913
883
  meterName?: string;
914
- /** @description Access is blocked pending an auto-recharge top-up of the prepaid balance — `onExceed: top_up`. */
884
+ /** @description Access is blocked until prepaid credits cover the next unit — past an included cap with `onExceed: top_up`, or from the first unit on a recurring meter with no limit. */
915
885
  needsTopUp?: boolean;
916
- /** @description Access is blocked pending a plan switch to the limit's target pricing — `onExceed: auto_upgrade`. */
917
- needsUpgrade?: boolean;
918
- /** @description Access is granted and usage beyond the included cap accrues an overage charge — `onExceed: charge`. */
886
+ /** @description Access is granted past the included cap and the usage is paid from prepaid credits — `onExceed: top_up`. */
919
887
  overage?: boolean;
920
888
  /**
921
889
  * Authoritative paywall classification shared with Managed MCP. Present on denial responses only.
@@ -937,10 +905,6 @@ interface components {
937
905
  * @example 997
938
906
  */
939
907
  remaining: number;
940
- /** @description Access is granted but the caller should degrade/throttle service — the limit was exceeded with `onExceed: throttle`. */
941
- throttled?: boolean;
942
- /** @description The customer was auto-upgraded to the target pricing to restore access — `onExceed: auto_upgrade` succeeded. */
943
- upgraded?: boolean;
944
908
  /** @description Consumed usage units this period. Present only when the backend measured a finite cap. */
945
909
  used?: number;
946
910
  /**
@@ -1008,12 +972,9 @@ interface components {
1008
972
  label?: string;
1009
973
  meter: string;
1010
974
  /** @enum {string} */
1011
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
1012
- onExceedPricingId?: string;
975
+ onExceed: 'block' | 'top_up';
1013
976
  /** @enum {string} */
1014
977
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
1015
- /** @enum {string} */
1016
- uiHint?: 'upgrade_prompt' | 'soft_warning';
1017
978
  windowDays?: number;
1018
979
  } | {
1019
980
  feature: string;
@@ -1024,12 +985,11 @@ interface components {
1024
985
  value: boolean | number | string;
1025
986
  } | {
1026
987
  days: number;
1027
- downgradeToPricingId?: string;
1028
988
  /** @enum {string} */
1029
989
  kind: 'trial';
1030
990
  label?: string;
1031
991
  /** @enum {string} */
1032
- onEnd: 'convert' | 'cancel' | 'downgrade';
992
+ onEnd: 'convert' | 'cancel';
1033
993
  } | {
1034
994
  /** @enum {string} */
1035
995
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -1043,17 +1003,6 @@ interface components {
1043
1003
  /** @enum {string} */
1044
1004
  mode: 'percentage' | 'fixed';
1045
1005
  value: number;
1046
- } | {
1047
- capUnits?: number;
1048
- currency?: string;
1049
- /** @enum {string} */
1050
- kind: 'rollover';
1051
- label?: string;
1052
- maxCycles?: number;
1053
- meter: string;
1054
- rateMinor?: number;
1055
- /** @enum {string} */
1056
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
1057
1006
  } | {
1058
1007
  /** @enum {string} */
1059
1008
  kind: 'autoAssigned';
@@ -1924,12 +1873,9 @@ interface components {
1924
1873
  label?: string;
1925
1874
  meter: string;
1926
1875
  /** @enum {string} */
1927
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
1928
- onExceedPricingId?: string;
1876
+ onExceed: 'block' | 'top_up';
1929
1877
  /** @enum {string} */
1930
1878
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
1931
- /** @enum {string} */
1932
- uiHint?: 'upgrade_prompt' | 'soft_warning';
1933
1879
  windowDays?: number;
1934
1880
  } | {
1935
1881
  feature: string;
@@ -1940,12 +1886,11 @@ interface components {
1940
1886
  value: boolean | number | string;
1941
1887
  } | {
1942
1888
  days: number;
1943
- downgradeToPricingId?: string;
1944
1889
  /** @enum {string} */
1945
1890
  kind: 'trial';
1946
1891
  label?: string;
1947
1892
  /** @enum {string} */
1948
- onEnd: 'convert' | 'cancel' | 'downgrade';
1893
+ onEnd: 'convert' | 'cancel';
1949
1894
  } | {
1950
1895
  /** @enum {string} */
1951
1896
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -1959,17 +1904,6 @@ interface components {
1959
1904
  /** @enum {string} */
1960
1905
  mode: 'percentage' | 'fixed';
1961
1906
  value: number;
1962
- } | {
1963
- capUnits?: number;
1964
- currency?: string;
1965
- /** @enum {string} */
1966
- kind: 'rollover';
1967
- label?: string;
1968
- maxCycles?: number;
1969
- meter: string;
1970
- rateMinor?: number;
1971
- /** @enum {string} */
1972
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
1973
1907
  } | {
1974
1908
  /** @enum {string} */
1975
1909
  kind: 'autoAssigned';
@@ -3879,12 +3813,11 @@ type PurchaseInfo = components['schemas']['SdkPurchaseResponse'];
3879
3813
  /**
3880
3814
  * `LimitResponse` plus a deprecated SDK-only `plan` alias.
3881
3815
  *
3882
- * The backend `LimitResponse` now natively carries the `onExceed` outcome flags
3883
- * (`throttled` / `overage` / `needsTopUp` / `needsUpgrade` / `upgraded`, resolved
3884
- * by `decideLimit`), so they flow through from `generated.ts`. `throttled` /
3885
- * `overage` ride the allow path (`withinLimits: true`) so a protected handler
3886
- * can read them from `decision.limits` and degrade service or note overage; the
3887
- * others accompany a gate outcome.
3816
+ * The backend `LimitResponse` carries the `onExceed` outcome flags
3817
+ * (`overage` / `needsTopUp`, resolved by `decideLimit`), so they flow
3818
+ * through from `generated.ts`. `overage` rides the allow path
3819
+ * (`withinLimits: true`) so a protected handler can read it from
3820
+ * `decision.limits`; `needsTopUp` accompanies a gate outcome.
3888
3821
  *
3889
3822
  * Read `planRef` for the active plan. `plan` is never populated by the
3890
3823
  * backend — it remains optional so older fixtures and callers still type-check.
@@ -4632,16 +4565,10 @@ interface TransportLimitsResult {
4632
4565
  * auto-allocated.
4633
4566
  */
4634
4567
  activationRequired: boolean;
4635
- /** Access granted under `onExceed: throttle` (legacy plans). */
4636
- throttled?: boolean;
4637
- /** Access granted and usage past the cap accrues overage. */
4568
+ /** Access granted past the included cap, paid from prepaid credits. */
4638
4569
  overage?: boolean;
4639
4570
  /** Access blocked pending a prepaid top-up. */
4640
4571
  needsTopUp?: boolean;
4641
- /** Access blocked pending an auto-upgrade to the target plan. */
4642
- needsUpgrade?: boolean;
4643
- /** The customer was auto-upgraded and access was restored. */
4644
- upgraded?: boolean;
4645
4572
  /**
4646
4573
  * Consumed units this period. Present only when the backend measured
4647
4574
  * a finite cap. Authoritative — do not reconstruct from
@@ -5290,7 +5217,7 @@ interface Plan {
5290
5217
  measures?: string;
5291
5218
  /** @deprecated Not sent by the API. Use the `limit` option's `cap`. */
5292
5219
  limit?: number;
5293
- /** @deprecated Not sent by the API. Use the presence of a `rollover` option. */
5220
+ /** @deprecated Not sent by the API. Rollover is not a plan option. */
5294
5221
  rolloverUnusedUnits?: boolean;
5295
5222
  limits?: Record<string, unknown>;
5296
5223
  features?: Record<string, unknown> | string[];
@@ -323,12 +323,9 @@ interface components {
323
323
  label?: string;
324
324
  meter: string;
325
325
  /** @enum {string} */
326
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
327
- onExceedPricingId?: string;
326
+ onExceed: 'block' | 'top_up';
328
327
  /** @enum {string} */
329
328
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
330
- /** @enum {string} */
331
- uiHint?: 'upgrade_prompt' | 'soft_warning';
332
329
  windowDays?: number;
333
330
  } | {
334
331
  feature: string;
@@ -339,12 +336,11 @@ interface components {
339
336
  value: boolean | number | string;
340
337
  } | {
341
338
  days: number;
342
- downgradeToPricingId?: string;
343
339
  /** @enum {string} */
344
340
  kind: 'trial';
345
341
  label?: string;
346
342
  /** @enum {string} */
347
- onEnd: 'convert' | 'cancel' | 'downgrade';
343
+ onEnd: 'convert' | 'cancel';
348
344
  } | {
349
345
  /** @enum {string} */
350
346
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -358,17 +354,6 @@ interface components {
358
354
  /** @enum {string} */
359
355
  mode: 'percentage' | 'fixed';
360
356
  value: number;
361
- } | {
362
- capUnits?: number;
363
- currency?: string;
364
- /** @enum {string} */
365
- kind: 'rollover';
366
- label?: string;
367
- maxCycles?: number;
368
- meter: string;
369
- rateMinor?: number;
370
- /** @enum {string} */
371
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
372
357
  } | {
373
358
  /** @enum {string} */
374
359
  kind: 'autoAssigned';
@@ -519,12 +504,9 @@ interface components {
519
504
  label?: string;
520
505
  meter: string;
521
506
  /** @enum {string} */
522
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
523
- onExceedPricingId?: string;
507
+ onExceed: 'block' | 'top_up';
524
508
  /** @enum {string} */
525
509
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
526
- /** @enum {string} */
527
- uiHint?: 'upgrade_prompt' | 'soft_warning';
528
510
  windowDays?: number;
529
511
  } | {
530
512
  feature: string;
@@ -535,12 +517,11 @@ interface components {
535
517
  value: boolean | number | string;
536
518
  } | {
537
519
  days: number;
538
- downgradeToPricingId?: string;
539
520
  /** @enum {string} */
540
521
  kind: 'trial';
541
522
  label?: string;
542
523
  /** @enum {string} */
543
- onEnd: 'convert' | 'cancel' | 'downgrade';
524
+ onEnd: 'convert' | 'cancel';
544
525
  } | {
545
526
  /** @enum {string} */
546
527
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -554,17 +535,6 @@ interface components {
554
535
  /** @enum {string} */
555
536
  mode: 'percentage' | 'fixed';
556
537
  value: number;
557
- } | {
558
- capUnits?: number;
559
- currency?: string;
560
- /** @enum {string} */
561
- kind: 'rollover';
562
- label?: string;
563
- maxCycles?: number;
564
- meter: string;
565
- rateMinor?: number;
566
- /** @enum {string} */
567
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
568
538
  } | {
569
539
  /** @enum {string} */
570
540
  kind: 'autoAssigned';
@@ -667,7 +637,7 @@ interface components {
667
637
  * @example duplicate
668
638
  * @enum {string}
669
639
  */
670
- reason: 'duplicate' | 'no_product_ref' | 'customer_not_found' | 'no_active_purchase' | 'plan_not_credit_based' | 'plan_billed_at_period_end';
640
+ reason: 'duplicate' | 'no_product_ref' | 'customer_not_found' | 'no_active_purchase' | 'plan_not_credit_based' | 'not_credit_drawn' | 'within_included';
671
641
  };
672
642
  CreditDebitSuccessResponse: {
673
643
  /**
@@ -911,11 +881,9 @@ interface components {
911
881
  * @example requests
912
882
  */
913
883
  meterName?: string;
914
- /** @description Access is blocked pending an auto-recharge top-up of the prepaid balance — `onExceed: top_up`. */
884
+ /** @description Access is blocked until prepaid credits cover the next unit — past an included cap with `onExceed: top_up`, or from the first unit on a recurring meter with no limit. */
915
885
  needsTopUp?: boolean;
916
- /** @description Access is blocked pending a plan switch to the limit's target pricing — `onExceed: auto_upgrade`. */
917
- needsUpgrade?: boolean;
918
- /** @description Access is granted and usage beyond the included cap accrues an overage charge — `onExceed: charge`. */
886
+ /** @description Access is granted past the included cap and the usage is paid from prepaid credits — `onExceed: top_up`. */
919
887
  overage?: boolean;
920
888
  /**
921
889
  * Authoritative paywall classification shared with Managed MCP. Present on denial responses only.
@@ -937,10 +905,6 @@ interface components {
937
905
  * @example 997
938
906
  */
939
907
  remaining: number;
940
- /** @description Access is granted but the caller should degrade/throttle service — the limit was exceeded with `onExceed: throttle`. */
941
- throttled?: boolean;
942
- /** @description The customer was auto-upgraded to the target pricing to restore access — `onExceed: auto_upgrade` succeeded. */
943
- upgraded?: boolean;
944
908
  /** @description Consumed usage units this period. Present only when the backend measured a finite cap. */
945
909
  used?: number;
946
910
  /**
@@ -1008,12 +972,9 @@ interface components {
1008
972
  label?: string;
1009
973
  meter: string;
1010
974
  /** @enum {string} */
1011
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
1012
- onExceedPricingId?: string;
975
+ onExceed: 'block' | 'top_up';
1013
976
  /** @enum {string} */
1014
977
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
1015
- /** @enum {string} */
1016
- uiHint?: 'upgrade_prompt' | 'soft_warning';
1017
978
  windowDays?: number;
1018
979
  } | {
1019
980
  feature: string;
@@ -1024,12 +985,11 @@ interface components {
1024
985
  value: boolean | number | string;
1025
986
  } | {
1026
987
  days: number;
1027
- downgradeToPricingId?: string;
1028
988
  /** @enum {string} */
1029
989
  kind: 'trial';
1030
990
  label?: string;
1031
991
  /** @enum {string} */
1032
- onEnd: 'convert' | 'cancel' | 'downgrade';
992
+ onEnd: 'convert' | 'cancel';
1033
993
  } | {
1034
994
  /** @enum {string} */
1035
995
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -1043,17 +1003,6 @@ interface components {
1043
1003
  /** @enum {string} */
1044
1004
  mode: 'percentage' | 'fixed';
1045
1005
  value: number;
1046
- } | {
1047
- capUnits?: number;
1048
- currency?: string;
1049
- /** @enum {string} */
1050
- kind: 'rollover';
1051
- label?: string;
1052
- maxCycles?: number;
1053
- meter: string;
1054
- rateMinor?: number;
1055
- /** @enum {string} */
1056
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
1057
1006
  } | {
1058
1007
  /** @enum {string} */
1059
1008
  kind: 'autoAssigned';
@@ -1924,12 +1873,9 @@ interface components {
1924
1873
  label?: string;
1925
1874
  meter: string;
1926
1875
  /** @enum {string} */
1927
- onExceed: 'block' | 'throttle' | 'charge' | 'notify' | 'top_up' | 'auto_upgrade';
1928
- onExceedPricingId?: string;
1876
+ onExceed: 'block' | 'top_up';
1929
1877
  /** @enum {string} */
1930
1878
  scope: 'billing_period' | 'lifetime' | 'rolling_window';
1931
- /** @enum {string} */
1932
- uiHint?: 'upgrade_prompt' | 'soft_warning';
1933
1879
  windowDays?: number;
1934
1880
  } | {
1935
1881
  feature: string;
@@ -1940,12 +1886,11 @@ interface components {
1940
1886
  value: boolean | number | string;
1941
1887
  } | {
1942
1888
  days: number;
1943
- downgradeToPricingId?: string;
1944
1889
  /** @enum {string} */
1945
1890
  kind: 'trial';
1946
1891
  label?: string;
1947
1892
  /** @enum {string} */
1948
- onEnd: 'convert' | 'cancel' | 'downgrade';
1893
+ onEnd: 'convert' | 'cancel';
1949
1894
  } | {
1950
1895
  /** @enum {string} */
1951
1896
  appliesTo?: 'recurring' | 'setup' | 'usage' | 'all';
@@ -1959,17 +1904,6 @@ interface components {
1959
1904
  /** @enum {string} */
1960
1905
  mode: 'percentage' | 'fixed';
1961
1906
  value: number;
1962
- } | {
1963
- capUnits?: number;
1964
- currency?: string;
1965
- /** @enum {string} */
1966
- kind: 'rollover';
1967
- label?: string;
1968
- maxCycles?: number;
1969
- meter: string;
1970
- rateMinor?: number;
1971
- /** @enum {string} */
1972
- treatment: 'forfeit' | 'carry_forward' | 'credit_units' | 'credit_money';
1973
1907
  } | {
1974
1908
  /** @enum {string} */
1975
1909
  kind: 'autoAssigned';
@@ -3879,12 +3813,11 @@ type PurchaseInfo = components['schemas']['SdkPurchaseResponse'];
3879
3813
  /**
3880
3814
  * `LimitResponse` plus a deprecated SDK-only `plan` alias.
3881
3815
  *
3882
- * The backend `LimitResponse` now natively carries the `onExceed` outcome flags
3883
- * (`throttled` / `overage` / `needsTopUp` / `needsUpgrade` / `upgraded`, resolved
3884
- * by `decideLimit`), so they flow through from `generated.ts`. `throttled` /
3885
- * `overage` ride the allow path (`withinLimits: true`) so a protected handler
3886
- * can read them from `decision.limits` and degrade service or note overage; the
3887
- * others accompany a gate outcome.
3816
+ * The backend `LimitResponse` carries the `onExceed` outcome flags
3817
+ * (`overage` / `needsTopUp`, resolved by `decideLimit`), so they flow
3818
+ * through from `generated.ts`. `overage` rides the allow path
3819
+ * (`withinLimits: true`) so a protected handler can read it from
3820
+ * `decision.limits`; `needsTopUp` accompanies a gate outcome.
3888
3821
  *
3889
3822
  * Read `planRef` for the active plan. `plan` is never populated by the
3890
3823
  * backend — it remains optional so older fixtures and callers still type-check.
@@ -4632,16 +4565,10 @@ interface TransportLimitsResult {
4632
4565
  * auto-allocated.
4633
4566
  */
4634
4567
  activationRequired: boolean;
4635
- /** Access granted under `onExceed: throttle` (legacy plans). */
4636
- throttled?: boolean;
4637
- /** Access granted and usage past the cap accrues overage. */
4568
+ /** Access granted past the included cap, paid from prepaid credits. */
4638
4569
  overage?: boolean;
4639
4570
  /** Access blocked pending a prepaid top-up. */
4640
4571
  needsTopUp?: boolean;
4641
- /** Access blocked pending an auto-upgrade to the target plan. */
4642
- needsUpgrade?: boolean;
4643
- /** The customer was auto-upgraded and access was restored. */
4644
- upgraded?: boolean;
4645
4572
  /**
4646
4573
  * Consumed units this period. Present only when the backend measured
4647
4574
  * a finite cap. Authoritative — do not reconstruct from
@@ -5290,7 +5217,7 @@ interface Plan {
5290
5217
  measures?: string;
5291
5218
  /** @deprecated Not sent by the API. Use the `limit` option's `cap`. */
5292
5219
  limit?: number;
5293
- /** @deprecated Not sent by the API. Use the presence of a `rollover` option. */
5220
+ /** @deprecated Not sent by the API. Rollover is not a plan option. */
5294
5221
  rolloverUnusedUnits?: boolean;
5295
5222
  limits?: Record<string, unknown>;
5296
5223
  features?: Record<string, unknown> | string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solvapay/react",
3
- "version": "2.4.0",
3
+ "version": "2.5.0-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -57,7 +57,7 @@
57
57
  "directory": "packages/react"
58
58
  },
59
59
  "peerDependencies": {
60
- "@solvapay/mcp-core": "^0.2.8 || ^0.3.0 || ^0.4.0",
60
+ "@solvapay/mcp-core": "0.4.6-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65",
61
61
  "react": "^18.2.0 || ^19.0.0",
62
62
  "react-dom": "^18.2.0 || ^19.0.0"
63
63
  },
@@ -85,8 +85,8 @@
85
85
  "react-dom": "^19.2.5",
86
86
  "typescript": "^5.9.3",
87
87
  "vitest": "^4.1.2",
88
- "@solvapay/mcp-core": "0.4.5",
89
- "@solvapay/server": "2.8.0",
88
+ "@solvapay/mcp-core": "0.4.6-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65",
89
+ "@solvapay/server": "2.9.0-preview-0b7998345be4ea7f15666fa77c72ea02a914ea65",
90
90
  "@solvapay/test-utils": "0.0.0"
91
91
  },
92
92
  "scripts": {