@cedros/pay-react 1.1.22 → 1.1.24

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.
Files changed (115) hide show
  1. package/dist/{AISettingsSection-p3iikbSw.mjs → AISettingsSection-Dw0ZlxMf.mjs} +2 -2
  2. package/dist/{AISettingsSection-BtOxEweU.js → AISettingsSection-IXS1Wt_1.js} +1 -1
  3. package/dist/{AutosaveIndicator-CWbb-VXf.mjs → AutosaveIndicator-BJsg_kFZ.mjs} +1 -1
  4. package/dist/{AutosaveIndicator-C-CH-obR.js → AutosaveIndicator-CY_YHM1D.js} +1 -1
  5. package/dist/{CedrosContext-D-lnoEkR.js → CedrosContext-7dwmEeUY.js} +2 -2
  6. package/dist/{CedrosContext-BE6P5PQ0.mjs → CedrosContext-DQUbL8yP.mjs} +105 -88
  7. package/dist/{CryptoButton-Dy-g3bR0.js → CryptoButton-C1AAOOfj.js} +1 -1
  8. package/dist/{CryptoButton-CksMkZjL.mjs → CryptoButton-D1BCZBk4.mjs} +51 -51
  9. package/dist/{FAQSection-DQpF7hVx.js → FAQSection-BmgmzDN5.js} +1 -1
  10. package/dist/{FAQSection-byh7zfqI.mjs → FAQSection-C78MnK4k.mjs} +1 -1
  11. package/dist/{MessagingSection-B6EHvjDw.js → MessagingSection-CWLZcg11.js} +1 -1
  12. package/dist/{MessagingSection-CK208brx.mjs → MessagingSection-De3t8bSI.mjs} +2 -2
  13. package/dist/OrdersSection-BKOxsZw0.js +1 -0
  14. package/dist/OrdersSection-_xKVzjSZ.mjs +233 -0
  15. package/dist/{PaymentSettingsSection-Cmmuhmd4.js → PaymentSettingsSection-BTEn9Dxb.js} +1 -1
  16. package/dist/{PaymentSettingsSection-B9H253x1.mjs → PaymentSettingsSection-KjU_dN_d.mjs} +1 -1
  17. package/dist/{SettingsSection-DDLMaEPo.mjs → SettingsSection-8QHZB59k.mjs} +1 -1
  18. package/dist/{SettingsSection-DrzGdvHH.js → SettingsSection-cKF0tLnS.js} +1 -1
  19. package/dist/SingleCategorySettings--LK0TZW0.mjs +1006 -0
  20. package/dist/SingleCategorySettings-CRXTMTo5.js +3 -0
  21. package/dist/{StorefrontSection-DTpZ_GgO.js → StorefrontSection-C9DzCmOf.js} +1 -1
  22. package/dist/{StorefrontSection-Dr2ciBVg.mjs → StorefrontSection-CeCpr8hn.mjs} +2 -2
  23. package/dist/{SubscriptionsSection-CU3Ce8r9.mjs → SubscriptionsSection-C2xk8ApF.mjs} +1 -1
  24. package/dist/{SubscriptionsSection-CYJpArJ8.js → SubscriptionsSection-Dn5SY6S_.js} +1 -1
  25. package/dist/Token22Section-DUUl59dZ.js +1 -0
  26. package/dist/Token22Section-HygkDNtL.mjs +1685 -0
  27. package/dist/{WalletManager-QcfgQmap.js → WalletManager-Bwk3rgr1.js} +1 -1
  28. package/dist/{WalletManager-D78miaJ2.mjs → WalletManager-CXvQ0Zu9.mjs} +1 -1
  29. package/dist/bn-Bv2sKQMU.mjs +1185 -0
  30. package/dist/bn-CHyy7EgJ.js +1 -0
  31. package/dist/configApi-Ch0Rr7TD.mjs +554 -0
  32. package/dist/configApi-CxEbCAgG.js +1 -0
  33. package/dist/crypto-only.js +1 -1
  34. package/dist/crypto-only.mjs +54 -52
  35. package/dist/{index-CufXF9Yd.mjs → index-BHF82XBB.mjs} +6687 -5866
  36. package/dist/index-OaWkrl0G.js +84 -0
  37. package/dist/index.js +1 -1
  38. package/dist/index.mjs +34 -32
  39. package/dist/pay-react_false-CPX8Vyp9.mjs +5 -0
  40. package/dist/pay-react_false-DaeIe3_l.js +1 -0
  41. package/dist/{sections-CR7NRsjq.js → sections-8e5Y3ukY.js} +1 -1
  42. package/dist/sections-C1rb9YRh.mjs +9 -0
  43. package/dist/src/components/CreditsBalance.d.ts +24 -0
  44. package/dist/src/components/CreditsBalance.d.ts.map +1 -0
  45. package/dist/src/components/admin/AssetClassesTab.d.ts +20 -0
  46. package/dist/src/components/admin/AssetClassesTab.d.ts.map +1 -0
  47. package/dist/src/components/admin/AssetRedemptionManager.d.ts +21 -0
  48. package/dist/src/components/admin/AssetRedemptionManager.d.ts.map +1 -0
  49. package/dist/src/components/admin/CedrosPayAdminDashboard.d.ts +1 -1
  50. package/dist/src/components/admin/CedrosPayAdminDashboard.d.ts.map +1 -1
  51. package/dist/src/components/admin/GiftCardComplianceTab.d.ts +3 -0
  52. package/dist/src/components/admin/GiftCardComplianceTab.d.ts.map +1 -0
  53. package/dist/src/components/admin/LiquidityPoolTab.d.ts +11 -0
  54. package/dist/src/components/admin/LiquidityPoolTab.d.ts.map +1 -0
  55. package/dist/src/components/admin/OrdersSection.d.ts +3 -0
  56. package/dist/src/components/admin/OrdersSection.d.ts.map +1 -0
  57. package/dist/src/components/admin/ProductsSection.d.ts.map +1 -1
  58. package/dist/src/components/admin/RedemptionFormBuilder.d.ts +25 -0
  59. package/dist/src/components/admin/RedemptionFormBuilder.d.ts.map +1 -0
  60. package/dist/src/components/admin/Token22Section.d.ts +3 -0
  61. package/dist/src/components/admin/Token22Section.d.ts.map +1 -0
  62. package/dist/src/components/admin/configApi.d.ts.map +1 -1
  63. package/dist/src/components/admin/index.d.ts +3 -0
  64. package/dist/src/components/admin/index.d.ts.map +1 -1
  65. package/dist/src/ecommerce/adapters/mock/mockAdapter.d.ts.map +1 -1
  66. package/dist/src/ecommerce/adapters/paywall/paywallAdapter.d.ts.map +1 -1
  67. package/dist/src/ecommerce/components/catalog/AssetBadge.d.ts +13 -0
  68. package/dist/src/ecommerce/components/catalog/AssetBadge.d.ts.map +1 -0
  69. package/dist/src/ecommerce/components/catalog/ProductCard.d.ts.map +1 -1
  70. package/dist/src/ecommerce/components/checkout/CheckoutForm.d.ts.map +1 -1
  71. package/dist/src/ecommerce/components/checkout/CheckoutReceipt.d.ts +9 -2
  72. package/dist/src/ecommerce/components/checkout/CheckoutReceipt.d.ts.map +1 -1
  73. package/dist/src/ecommerce/components/checkout/CheckoutSuccessPage.d.ts +7 -1
  74. package/dist/src/ecommerce/components/checkout/CheckoutSuccessPage.d.ts.map +1 -1
  75. package/dist/src/ecommerce/components/checkout/RedemptionForm.d.ts +22 -0
  76. package/dist/src/ecommerce/components/checkout/RedemptionForm.d.ts.map +1 -0
  77. package/dist/src/ecommerce/components/gift-cards/GiftCardRedemptionPage.d.ts +36 -0
  78. package/dist/src/ecommerce/components/gift-cards/GiftCardRedemptionPage.d.ts.map +1 -0
  79. package/dist/src/ecommerce/components/orders/OrderCard.d.ts.map +1 -1
  80. package/dist/src/ecommerce/components/orders/OrderDetails.d.ts +5 -1
  81. package/dist/src/ecommerce/components/orders/OrderDetails.d.ts.map +1 -1
  82. package/dist/src/ecommerce/index.d.ts +6 -0
  83. package/dist/src/ecommerce/index.d.ts.map +1 -1
  84. package/dist/src/ecommerce/state/checkout/checkoutSchema.d.ts +1 -0
  85. package/dist/src/ecommerce/state/checkout/checkoutSchema.d.ts.map +1 -1
  86. package/dist/src/ecommerce/state/checkout/useCheckout.d.ts.map +1 -1
  87. package/dist/src/ecommerce/templates/ProductTemplate.d.ts.map +1 -1
  88. package/dist/src/ecommerce/templates/PurchaseHistoryTemplate.d.ts +5 -1
  89. package/dist/src/ecommerce/templates/PurchaseHistoryTemplate.d.ts.map +1 -1
  90. package/dist/src/ecommerce/types.d.ts +20 -0
  91. package/dist/src/ecommerce/types.d.ts.map +1 -1
  92. package/dist/src/ecommerce/utils/cartItemMetadata.d.ts.map +1 -1
  93. package/dist/src/ecommerce/utils/safeHref.d.ts +9 -0
  94. package/dist/src/ecommerce/utils/safeHref.d.ts.map +1 -0
  95. package/dist/src/hooks/useCreditsBalance.d.ts +32 -0
  96. package/dist/src/hooks/useCreditsBalance.d.ts.map +1 -0
  97. package/dist/src/index.d.ts +4 -0
  98. package/dist/src/index.d.ts.map +1 -1
  99. package/dist/src/managers/CreditsManager.d.ts +15 -0
  100. package/dist/src/managers/CreditsManager.d.ts.map +1 -1
  101. package/dist/src/managers/MeteoraPoolManager.d.ts +86 -0
  102. package/dist/src/managers/MeteoraPoolManager.d.ts.map +1 -0
  103. package/dist/stripe-only.js +1 -1
  104. package/dist/stripe-only.mjs +2 -2
  105. package/dist/{styles-BWrLnaUW.js → styles-21F1-oqx.js} +1 -1
  106. package/dist/{styles--eKKnfdj.mjs → styles-Ag-7ZvAB.mjs} +46 -46
  107. package/dist/testing/index.js +1 -1
  108. package/dist/testing/index.mjs +1 -1
  109. package/dist/{walletPool-DShNjCQ6.mjs → walletPool-C_0P4mTw.mjs} +1 -1
  110. package/dist/{walletPool-BqNfOhB0.js → walletPool-Ddv33tej.js} +1 -1
  111. package/package.json +10 -1
  112. package/dist/SingleCategorySettings-BU98SRFV.mjs +0 -1418
  113. package/dist/SingleCategorySettings-DqcXe-q4.js +0 -3
  114. package/dist/index-IZ4WcMd7.js +0 -84
  115. package/dist/sections-Bc6ARlND.mjs +0 -8
@@ -0,0 +1 @@
1
+ "use strict";class o{constructor(e,t,i){this._serverUrl=e,this.auth=t,this.authManager=i}get serverUrl(){return this._serverUrl}async fetch(e,t={}){if(this.authManager?.isAuthenticated())return this.authManager.fetchWithAuth(e,t);throw this.auth?new Error("Legacy AdminAuth is no longer supported due to replay vulnerability. Use IAdminAuthManager instead."):new Error("Admin authentication required. Provide an IAdminAuthManager to ConfigApi.")}async listCategories(e=100){return this.fetch(`/admin/config?limit=${e}`)}async getConfig(e,t=!0){return this.fetch(`/admin/config/${e}?redact_secrets=${t}`)}async updateConfig(e,t,i){await this.fetch(`/admin/config/${e}`,{method:"PUT",body:JSON.stringify({config:t,description:i})})}async patchConfig(e,t,i){await this.fetch(`/admin/config/${e}`,{method:"PATCH",body:JSON.stringify({updates:t,description:i})})}async batchUpdate(e){await this.fetch("/admin/config/batch",{method:"POST",body:JSON.stringify({updates:e})})}async validateConfig(e,t){return this.fetch("/admin/config/validate",{method:"POST",body:JSON.stringify({category:e,config:t})})}async getHistory(e,t=50){const i=new URLSearchParams({limit:t.toString()});return e&&i.set("category",e),this.fetch(`/admin/config/history?${i}`)}}const r={server:{label:"Server",secrets:[],icon:"🖥️",fields:{admin_metrics_api_key:{hidden:!0},cors_allowed_origins:{hidden:!0}}},security:{label:"Security",description:"Configure CORS, rate limiting, and other security settings",secrets:[],icon:"🔒",fields:{cors_allowed_origins:{description:'List of allowed origins for CORS requests. Use ["*"] to allow all origins (not recommended for production).'}}},metrics:{label:"Metrics",description:"Configure metrics collection and API access",secrets:["admin_metrics_api_key"],icon:"📊",fields:{admin_metrics_api_key:{description:"API key for accessing the admin metrics endpoint. Keep this secret."}}},logging:{label:"Logging",secrets:[],icon:"📝",fields:{level:{type:"dropdown",options:["trace","debug","info","warn","error"]},format:{hidden:!0},environment:{hidden:!0}}},stripe:{label:"Stripe",secrets:["secret_key","webhook_secret"],icon:"💳",fields:{enabled:{hidden:!0},secret_key:{description:"Stripe Dashboard → Developers → API keys → Secret key. Use the test key (sk_test_...) for testing, or the live key (sk_live_...) for production."},publishable_key:{description:"Stripe Dashboard → Developers → API keys → Publishable key. Starts with pk_test_... or pk_live_..."},mode:{type:"dropdown",options:["test","live"],description:'Use "test" mode with test API keys during development, then switch to "live" with live keys for real payments.'},webhook_url:{description:"The full URL Stripe sends webhook events to. Default is your server URL + /webhook/stripe (e.g. https://example.com/webhook/stripe). Only change this if you've customized the route in your cedros-pay server."},webhook_secret:{description:`Stripe Dashboard → Developers → Webhooks → "Create an event destination" → select events: checkout.session.completed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.paid, invoice.payment_failed → Continue → choose "Webhook endpoint" → enter your server's webhook endpoint, e.g. https://example.com/webhook/stripe (your server URL + /webhook/stripe) → after creating, click the endpoint and "Click to reveal" the signing secret. Starts with whsec_...`},tax_rate_id:{description:`Stripe Dashboard → More → Product catalog → Tax rates → "+ New" → set the percentage, region, and whether tax is inclusive or exclusive → Save → copy the tax rate ID from the detail page (starts with txr_...). Leave empty if you don't collect tax.`},success_url:{hidden:!0},cancel_url:{hidden:!0}}},x402:{label:"X402 (Crypto)",secrets:["server_wallets"],icon:"⚡",fields:{enabled:{hidden:!0},payment_address:{type:"solana_address",description:"The Solana wallet address where payments are received. This is where customer funds are sent."},token_mint:{type:"token_mint",description:"The SPL token used for payments. Most commonly USDC."},token_decimals:{type:"number",description:"Number of decimal places for the token (e.g., USDC has 6 decimals).",hidden:!0},custom_token_symbol:{description:'Display symbol for your custom token (e.g., "MYTOKEN").',hidden:!0},custom_token_icon:{description:"URL to your token's icon image.",hidden:!0},rpc_url:{description:"Solana RPC endpoint URL. Required for crypto payment verification (e.g., from Helius, QuickNode, or Alchemy)."},gasless_enabled:{type:"toggle",description:"When enabled, your server pays transaction fees so customers don't need SOL."},server_wallets:{type:"secret_array",description:"Server keypair(s) used to sign and pay for transactions. Required for gasless payments.",showWhen:"gasless_enabled"},rounding_mode:{type:"dropdown",options:["nearest","up","down"],description:"How to round fractional token amounts: nearest (default), up (always round up), or down (always round down)."},network:{hidden:!0},ws_url:{hidden:!0},skip_preflight:{hidden:!0},commitment:{hidden:!0},compute_unit_limit:{hidden:!0},compute_unit_price:{hidden:!0}}},paywall:{label:"Paywall",secrets:[],icon:"🚪",fields:{product_cache_ttl:{type:"number",unit:"seconds"}}},coupons:{label:"Coupons",secrets:[],icon:"🎟️",fields:{cache_ttl:{type:"number",unit:"seconds"}}},subscriptions:{label:"Subscriptions",secrets:[],icon:"🔄",fields:{grace_period_hours:{type:"number",unit:"hours"}}},callbacks:{label:"Callbacks",secrets:["hmac_secret"],icon:"🔔"},email:{label:"Email",description:"Email receipts for customers after purchase",secrets:["smtp_password"],icon:"📧",fields:{enabled:{hidden:!0},provider:{type:"dropdown",options:["sendgrid","mailgun","postmark","ses","resend","custom"],description:"Email service provider."},smtp_host:{description:"SMTP server hostname.",showWhen:"provider"},smtp_port:{type:"number",description:"SMTP server port (typically 587 for TLS).",showWhen:"provider"},smtp_user:{description:"SMTP authentication username or API key name.",showWhen:"provider"},smtp_password:{description:"SMTP password or API key.",showWhen:"provider"},from_address:{description:"Sender email address (e.g., orders@yourstore.com)."},from_name:{description:'Sender display name (e.g., "Your Store").'}}},webhook:{label:"Webhook",description:"HTTP notifications when purchases occur",secrets:["secret"],icon:"🔔",fields:{enabled:{hidden:!0},url:{description:"URL to receive POST notifications (e.g., https://api.yoursite.com/webhooks/orders)."},secret:{description:"Shared secret for HMAC-SHA256 signature verification."},retry_attempts:{type:"number",description:"Number of retry attempts on failure (default: 3)."}}},messaging:{label:"Messaging",description:"Email and webhook notifications for purchases",secrets:["smtp_password","webhook_secret"],icon:"📬",fields:{email_enabled:{type:"boolean",description:"Send order confirmation emails to customers."},email_provider:{description:"Email service provider (mailgun, sendgrid, postmark, ses, resend, custom).",showWhen:"email_enabled"},smtp_host:{description:"SMTP server hostname.",showWhen:"email_enabled"},smtp_port:{type:"number",description:"SMTP server port (typically 587 for TLS).",showWhen:"email_enabled"},smtp_username:{description:"SMTP authentication username or API key.",showWhen:"email_enabled"},smtp_password:{description:"SMTP password or API key.",showWhen:"email_enabled"},from_email:{description:"Sender email address (e.g., orders@yourstore.com).",showWhen:"email_enabled"},from_name:{description:'Sender display name (e.g., "Your Store").',showWhen:"email_enabled"},webhook_enabled:{type:"boolean",description:"Send webhook notifications when purchases complete."},webhook_url:{description:"URL to receive POST notifications.",showWhen:"webhook_enabled"},webhook_secret:{description:"Shared secret for HMAC-SHA256 signature verification.",showWhen:"webhook_enabled"},webhook_timeout:{type:"number",description:"Request timeout in seconds (default: 30).",showWhen:"webhook_enabled"}}},monitoring:{label:"Monitoring",secrets:[],icon:"📊",fields:{check_interval:{type:"number",unit:"seconds"},low_balance_threshold:{type:"number",unit:"SOL"}}},rate_limit:{label:"Rate Limiting",secrets:[],icon:"⏱️"},circuit_breaker:{label:"Circuit Breaker",secrets:[],icon:"🔌"},admin:{label:"Admin Keys",secrets:[],icon:"👤"},api_keys:{label:"API Keys",secrets:[],icon:"🔐"},cedros_login:{label:"Cedros Login",secrets:["api_key"],icon:"🔑",fields:{enabled:{hidden:!0},credits_enabled:{hidden:!0},base_url:{hidden:!0},timeout:{hidden:!0},jwt_issuer:{hidden:!0},jwt_audience:{hidden:!0}}},gift_cards:{label:"Gift Cards",description:"Gift card issuance, expiry, and Token-22 secondary market settings",secrets:[],icon:"🎁",fields:{enabled:{hidden:!0},secondary_market_enabled:{type:"toggle",description:"Enable Token-22 secondary market for gift card store credit tokens."},transfer_fee_bps:{type:"number",description:"Transfer fee in basis points charged on secondary market trades (e.g. 250 = 2.5%)."},max_transfer_fee:{type:"number",description:"Maximum transfer fee in token atomic units (e.g. 500 = $5.00 with 2 decimals)."},treasury_address:{type:"solana_address",description:"Solana wallet address where collected transfer fees are sent."},token_name:{description:'Display name for the store credit token (e.g. "Store Credits USD").'},token_symbol:{description:'Token symbol for the store credit token (e.g. "storeUSD").'},token_decimals:{type:"number",description:"Number of decimal places for the token (default: 2 for cent precision)."},mint_address:{type:"solana_address",description:"Solana Token-22 mint address (auto-populated after initialization)."},business_state:{type:"dropdown",options:["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC","PR"],description:"US state where your business is registered. Determines applicable gift card regulations."},min_gift_card_value_cents:{type:"number",description:"Minimum gift card face value in cents. Auto-suggested based on state cash-out threshold."},max_gift_card_value_cents:{type:"number",description:"Maximum gift card face value in cents. Default $10,000 (AML compliance)."},liquidity_pool_address:{type:"solana_address",description:"Meteora DLMM pool address for gift card secondary market buyback."},buyback_rate_bps:{type:"number",description:"Buyback rate in basis points (8000 = 80 cents on the dollar)."},liquidity_usdc_amount:{type:"number",description:"USDC amount deposited into the liquidity pool (in atomic units).",hidden:!0},liquidity_deployed_at:{description:"ISO timestamp when the liquidity pool was deployed.",hidden:!0}}},tokenization:{label:"Asset Tokenization",description:"Settings for tokenized asset classes and on-chain minting",secrets:[],icon:"🪙",fields:{enabled:{type:"toggle",description:"Enable asset tokenization features."},default_transfer_fee_bps:{type:"number",description:"Default transfer fee in basis points for tokenized asset transfers (e.g. 250 = 2.5%)."},require_custody_proof:{type:"toggle",description:"Require a custody proof URL before an asset class can be activated."}}},shop:{label:"Storefront",description:"Product pages & display settings",secrets:[],icon:"🏪",fields:{enabled:{hidden:!0},"relatedProducts.mode":{type:"dropdown",options:["most_recent","by_category","manual","ai"]},"relatedProducts.maxItems":{type:"number"}}}};function n(s,e){return r[s]?.secrets.includes(e)??!1}const a="[REDACTED]";exports.CONFIG_CATEGORIES=r;exports.ConfigApiClient=o;exports.REDACTED_VALUE=a;exports.isSecretField=n;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./styles-BWrLnaUW.js"),t=require("./CedrosContext-D-lnoEkR.js"),N=require("./index-IZ4WcMd7.js"),ce=require("./CryptoButton-Dy-g3bR0.js"),S=require("react/jsx-runtime"),a=require("react"),$=require("@solana/wallet-adapter-react"),ie=require("@solana/wallet-adapter-base"),Pe=require("@solana/wallet-adapter-react-ui"),le=require("./walletPool-BqNfOhB0.js");function ue(){const{subscriptionManager:o,x402Manager:d,walletManager:f}=t.useCedrosContext(),{publicKey:u,signTransaction:T}=$.useWallet(),[P,y]=a.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),[k,R]=a.useState(null),x=a.useRef(!1),h=a.useCallback(()=>{if(!u){const c="Wallet not connected";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}if(!T){const c="Wallet does not support signing";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}return{valid:!0}},[u,T]),_=a.useCallback(async c=>{if(!u)return y(n=>({...n,status:"error",error:"Wallet not connected"})),null;y(n=>({...n,status:"checking",error:null}));try{const n=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});return y(s=>({...s,status:n.active?"success":"idle",subscriptionStatus:n.status,expiresAt:n.expiresAt||n.currentPeriodEnd||null})),n}catch(n){const s=t.formatError(n,"Failed to check subscription status");return y(g=>({...g,status:"error",error:s})),null}},[u,o]),L=a.useCallback(async(c,n,s)=>{y(g=>({...g,status:"loading",error:null}));try{const g=await o.requestSubscriptionQuote(c,n,s);return R(g),y(i=>({...i,status:"idle"})),g}catch(g){const i=t.formatError(g,"Failed to get subscription quote");return y(l=>({...l,status:"error",error:i})),null}},[o]),C=a.useCallback(async(c,n,s)=>{if(x.current)return{success:!1,error:"Payment already in progress"};const g=h();if(!g.valid)return{success:!1,error:g.error};x.current=!0,y(i=>({...i,status:"loading",error:null}));try{const i=await o.requestSubscriptionQuote(c,n,s);R(i);const l=i.requirement;if(!d.validateRequirement(l))throw new Error("Invalid subscription quote received from server");const E=!!l.extra?.feePayer;let b;if(E){const{transaction:w,blockhash:W}=await d.buildGaslessTransaction({resourceId:c,userWallet:u.toString(),feePayer:l.extra.feePayer,couponCode:s?.couponCode}),M=f.deserializeTransaction(w),q=await f.partiallySignTransaction({transaction:M,signTransaction:T,blockhash:W});b=await d.submitGaslessTransaction({resource:c,partialTx:q,couponCode:s?.couponCode,resourceType:"regular",requirement:l})}else{const w=await f.buildTransaction({requirement:l,payerPublicKey:u}),W=await f.signTransaction({transaction:w,signTransaction:T}),M=f.buildPaymentPayload({requirement:l,signedTx:W,payerPublicKey:u});b=await d.submitPayment({resource:c,payload:M,couponCode:s?.couponCode,resourceType:"regular"})}if(b.success){const w=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});y({status:"success",error:null,sessionId:b.transactionId||null,subscriptionStatus:w.status,expiresAt:w.expiresAt||w.currentPeriodEnd||null})}else y(w=>({...w,status:"error",error:b.error||"Subscription payment failed"}));return b}catch(i){const l=t.formatError(i,"Subscription payment failed");return y(E=>({...E,status:"error",error:l})),{success:!1,error:l}}finally{x.current=!1}},[h,o,d,f,u,T]),v=a.useCallback(()=>{y({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),R(null)},[]);return{...P,quote:k,checkStatus:_,requestQuote:L,processPayment:C,reset:v}}function we({resource:o,interval:d,intervalDays:f,couponCode:u,label:T,disabled:P=!1,onAttempt:y,onSuccess:k,onError:R,className:x="",testPageUrl:h,hideMessages:_=!1,autoCheckStatus:L=!0}){const{connected:C,connecting:v,connect:c,disconnect:n,select:s,wallets:g,wallet:i,publicKey:l}=$.useWallet(),{status:E,error:b,subscriptionStatus:w,expiresAt:W,checkStatus:M,processPayment:q}=ue(),p=t.useCedrosTheme(),{solanaError:I}=t.useCedrosContext(),{t:B,translations:G}=e.useTranslation(),de=T||B("ui.subscribe_with_crypto"),Q=a.useRef(k),F=a.useRef(R),V=a.useRef(q),X=a.useRef(M);Q.current=k,F.current=R,V.current=q,X.current=M;const ge=b&&typeof b!="string"?b?.code??null:null,pe=I&&typeof I!="string"?I?.code??null:null,H=r=>{if(!r||!G)return"";const m=G.errors[r];return m?m.action?`${m.message} ${m.action}`:m.message:""},J=b?typeof b=="string"?b:H(ge):null,Z=I?typeof I=="string"?I:H(pe):null,me=a.useMemo(()=>g.map(r=>`${r.adapter.name}-${r.readyState}`).join(","),[g]),K=a.useMemo(()=>g.filter(({readyState:r})=>r===ie.WalletReadyState.Installed||r===ie.WalletReadyState.Loadable),[me]);a.useEffect(()=>{L&&C&&l&&(t.getLogger().debug("[CryptoSubscribeButton] Auto-checking subscription status"),X.current(o))},[L,C,l,o]),a.useEffect(()=>{E==="success"&&w==="active"&&(e.emitPaymentSuccess("crypto","subscription-active",o),Q.current?.("subscription-active"))},[E,w,o]),a.useEffect(()=>{E==="error"&&b&&(e.emitPaymentError("crypto",b,o),F.current?.(b))},[E,b,o]);const ee=typeof window<"u"&&window.top!==window.self,[te,O]=a.useState(!1),[re,U]=a.useState(!1),[ne,A]=a.useState(!1),D=I;a.useEffect(()=>{let r=!1;return r||(async()=>{if(re&&i&&!C&&!v){t.getLogger().debug("[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",i.adapter.name),U(!1),e.emitWalletConnect(i.adapter.name);try{await c(),r||t.getLogger().debug("[CryptoSubscribeButton] Auto-connect successful")}catch(Y){if(!r){t.getLogger().error("[CryptoSubscribeButton] Auto-connect failed:",Y);const Ee=Y instanceof Error?Y.message:"Failed to connect wallet";e.emitWalletError(Ee,i.adapter.name),A(!1)}}}})(),()=>{r=!0}},[i,re,C,v,c]),a.useEffect(()=>{C&&ne&&l&&i&&(e.emitWalletConnected(i.adapter.name,l.toString()),t.getLogger().debug("[CryptoSubscribeButton] Processing pending subscription payment"),A(!1),O(!1),e.emitPaymentProcessing("crypto",o),V.current(o,d,{couponCode:u,intervalDays:f}))},[C,ne,l,i,o,d,u,f]);const oe=a.useCallback(async()=>{if(t.getLogger().debug("[CryptoSubscribeButton] executeSubscriptionFlow called",{connected:C,wallet:i?.adapter.name,resource:o,interval:d}),e.emitPaymentStart("crypto",o),y&&y("crypto"),D){t.getLogger().error("[CryptoSubscribeButton] Solana dependencies missing:",D),e.emitPaymentError("crypto",D,o),R&&R(D);return}if(ee){const r=h||window.location.href;try{if(new URL(r,window.location.origin).origin!==window.location.origin)throw t.getLogger().error("[CryptoSubscribeButton] Blocked attempt to open external URL:",r),new Error("Cannot open external URLs from embedded context");window.open(r,"_blank","noopener,noreferrer")}catch(m){throw t.getLogger().error("[CryptoSubscribeButton] URL validation failed:",m),m}return}if(C)e.emitPaymentProcessing("crypto",o),await q(o,d,{couponCode:u,intervalDays:f});else{A(!0);try{if(i)t.getLogger().debug("[CryptoSubscribeButton] Wallet already selected, connecting:",i.adapter.name),e.emitWalletConnect(i.adapter.name),await c();else{if(t.getLogger().debug("[CryptoSubscribeButton] No wallet selected, showing selector"),K.length===0){A(!1);const r="No wallets available";throw e.emitWalletError(r),new Error(r)}O(!0)}}catch(r){A(!1);const m=r instanceof Error?r.message:"Failed to connect wallet";t.getLogger().error("[CryptoSubscribeButton] Connection error:",m),e.emitWalletError(m,i?.adapter.name)}}},[C,i,o,d,u,f,ee,h,K,c,q,D,y,R]),ae=a.useMemo(()=>`crypto-subscribe-${o}-${d}`,[o,d]),ye=a.useMemo(()=>e.createDedupedClickHandler(ae,oe,{cooldownMs:200,deduplicationWindowMs:0}),[ae,oe]),se=E==="loading"||E==="checking",j=w==="active"||w==="trialing",fe=P||se||v||!!D||j;let z=de;if(se)z=B("ui.processing");else if(j&&W){const r=new Date(W).toLocaleDateString();z=`${B("ui.subscribed_until")} ${r}`}else j&&(z=B("ui.subscribed"));const be=a.useCallback(async()=>{try{U(!1),C&&await n(),s(null),O(!0)}catch(r){t.getLogger().error("Failed to change wallet:",r)}},[C,n,s]),Se=a.useCallback(r=>{t.getLogger().debug("[CryptoSubscribeButton] Wallet clicked:",r),O(!1),s(r),U(!0)},[s]),Ce=a.useCallback(async()=>{try{if(await n(),A(!1),typeof window<"u"&&window.localStorage)try{window.localStorage.removeItem("walletName")}catch(r){r instanceof Error&&r.name==="QuotaExceededError"?t.getLogger().warn("localStorage quota exceeded when removing wallet preference"):t.getLogger().error("Failed to clear wallet preference from localStorage:",r)}}catch(r){t.getLogger().error("Failed to disconnect wallet:",r)}},[n]);return S.jsxs("div",{className:p.unstyled?x:`${p.className} cedros-theme__crypto-button ${x||""}`,style:p.unstyled?{}:p.style,children:[S.jsx("button",{onClick:ye,disabled:fe,className:p.unstyled?x:"cedros-theme__button cedros-theme__crypto",type:"button",children:z}),te&&!_&&S.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:p.tokens.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:()=>O(!1),children:S.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:p.tokens.modalBackground,borderRadius:"12px",padding:"2rem",maxWidth:"400px",width:"100%",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",border:`1px solid ${p.tokens.modalBorder}`},onClick:r=>r.stopPropagation(),children:[S.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[S.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:p.tokens.surfaceText},children:B("wallet.select_wallet")}),S.jsx("button",{onClick:()=>O(!1),style:e.getModalCloseButtonStyles(p.tokens.surfaceText),"aria-label":"Close modal",type:"button",children:"×"})]}),S.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:K.map(r=>S.jsxs("button",{onClick:()=>Se(r.adapter.name),style:{width:"100%",padding:"1rem",backgroundColor:p.tokens.surfaceBackground,border:`1px solid ${p.tokens.surfaceBorder}`,borderRadius:"0.5rem",cursor:"pointer",fontSize:"1rem",textAlign:"left",color:p.tokens.surfaceText,display:"flex",alignItems:"center",gap:"1rem",transition:"all 0.2s ease"},onMouseEnter:m=>{m.currentTarget.style.backgroundColor=p.tokens.modalBackground,m.currentTarget.style.borderColor=p.tokens.surfaceText,m.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:m=>{m.currentTarget.style.backgroundColor=p.tokens.surfaceBackground,m.currentTarget.style.borderColor=p.tokens.surfaceBorder,m.currentTarget.style.transform="translateY(0)"},type:"button",children:[S.jsx(Pe.WalletIcon,{wallet:r,style:{width:"24px",height:"24px"}}),S.jsx("span",{style:{fontWeight:500},children:r.adapter.name})]},r.adapter.name))})]})}),C&&!_&&!te&&S.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"0.5rem",fontSize:"0.75rem",color:p.tokens.surfaceText,opacity:.7},children:[S.jsx("button",{onClick:be,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:B("wallet.change")}),S.jsx("button",{onClick:Ce,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:B("ui.disconnect")})]}),!_&&Z&&S.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:Z}),!_&&J&&S.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:J}),!_&&j&&S.jsx("div",{className:p.unstyled?"":"cedros-theme__success",children:B("ui.subscription_active")})]})}function he(){const{x402Manager:o,walletManager:d}=t.useCedrosContext(),{publicKey:f,signTransaction:u}=$.useWallet(),[T,P]=a.useState({status:"idle",error:null,transactionId:null}),[y,k]=a.useState(null),[R,x]=a.useState(null),h=a.useRef(!1),_=a.useCallback(async c=>{try{P(s=>({...s,status:"loading"}));const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received from server");return k(n),P(s=>({...s,status:"idle"})),n}catch(n){const s=t.formatError(n,"Failed to fetch refund requirement");throw P({status:"error",error:s,transactionId:null}),n}},[o]),L=a.useCallback(async(c,n)=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const s=await o.requestQuote({resource:c,couponCode:n});if(!o.validateRequirement(s))throw new Error("Invalid refund requirement received");k(s);const g=await d.buildTransaction({requirement:s,payerPublicKey:f}),i=await d.signTransaction({transaction:g,signTransaction:u}),l=d.buildPaymentPayload({requirement:s,signedTx:i,payerPublicKey:f}),E=await o.submitPayment({resource:c,payload:l,couponCode:n,metadata:void 0,resourceType:"refund"});return E.settlement&&x(E.settlement),P({status:"success",error:null,transactionId:E.transactionId||i.signature}),E}catch(s){const g=t.formatError(s,"Refund payment failed");throw P({status:"error",error:g,transactionId:null}),s}finally{h.current=!1}},[f,u,o,d]),C=a.useCallback(async c=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received");k(n);const{transaction:s}=await o.buildGaslessTransaction({resourceId:c,userWallet:f.toString(),feePayer:n.extra.feePayer}),g=d.deserializeTransaction(s),i=await d.partiallySignTransaction({transaction:g,signTransaction:u}),l=await o.submitGaslessTransaction({resource:c,partialTx:i,couponCode:void 0,metadata:void 0,resourceType:"refund",requirement:n});return l.settlement&&x(l.settlement),P({status:"success",error:null,transactionId:l.transactionId||"gasless-refund-tx"}),l}catch(n){const s=t.formatError(n,"Gasless refund payment failed");throw P({status:"error",error:s,transactionId:null}),n}finally{h.current=!1}},[f,u,o,d]),v=a.useCallback(()=>{P({status:"idle",error:null,transactionId:null}),k(null),x(null)},[]);return{state:T,requirement:y,settlement:R,fetchRefundQuote:_,processRefund:L,processGaslessRefund:C,reset:v}}exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CreditsButton=e.CreditsButton;exports.CreditsSubscribeButton=e.CreditsSubscribeButton;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.PurchaseButton=e.PurchaseButton;exports.RPC_PROVIDERS=e.RPC_PROVIDERS;exports.SECURITY_RECOMMENDATIONS=e.SECURITY_RECOMMENDATIONS;exports.StripeButton=e.StripeButton;exports.SubscribeButton=e.SubscribeButton;exports.SubscriptionManagementPanel=e.SubscriptionManagementPanel;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.emitWalletConnect=e.emitWalletConnect;exports.emitWalletConnected=e.emitWalletConnected;exports.emitWalletError=e.emitWalletError;exports.formatCSP=e.formatCSP;exports.formatCouponCodes=e.formatCouponCodes;exports.generateCSP=e.generateCSP;exports.generateCSPDirectives=e.generateCSPDirectives;exports.getAvailableLocales=e.getAvailableLocales;exports.getLocalizedError=e.getLocalizedError;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.loadLocale=e.loadLocale;exports.logSecurityReport=e.logSecurityReport;exports.parseCouponCodes=e.parseCouponCodes;exports.stackCheckoutCoupons=e.stackCheckoutCoupons;exports.useCreditsPayment=e.useCreditsPayment;exports.useCreditsSubscription=e.useCreditsSubscription;exports.useLocalizedError=e.useLocalizedError;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;exports.useSubscription=e.useSubscription;exports.useSubscriptionManagement=e.useSubscriptionManagement;exports.useTranslation=e.useTranslation;exports.validateSecurity=e.validateSecurity;exports.CIRCUIT_BREAKER_PRESETS=t.CIRCUIT_BREAKER_PRESETS;exports.CedrosProvider=t.CedrosProvider;exports.CircuitBreakerOpenError=t.CircuitBreakerOpenError;exports.CircuitState=t.CircuitState;exports.ERROR_CATEGORIES=t.ERROR_CATEGORIES;exports.KNOWN_STABLECOINS=t.KNOWN_STABLECOINS;exports.LogLevel=t.LogLevel;exports.Logger=t.Logger;exports.RATE_LIMITER_PRESETS=t.RATE_LIMITER_PRESETS;exports.RETRY_PRESETS=t.RETRY_PRESETS;exports.createCircuitBreaker=t.createCircuitBreaker;exports.createLogger=t.createLogger;exports.createRateLimiter=t.createRateLimiter;exports.getLogger=t.getLogger;exports.retryWithBackoff=t.retryWithBackoff;exports.useCedrosContext=t.useCedrosContext;exports.useCedrosTheme=t.useCedrosTheme;exports.validateConfig=t.validateConfig;exports.validateTokenMint=t.validateTokenMint;exports.CEDROS_PAY_GROUPS=N.CEDROS_PAY_GROUPS;exports.CEDROS_PAY_SECTIONS=N.CEDROS_PAY_SECTIONS;exports.CEDROS_PAY_SECTION_IDS=N.CEDROS_PAY_SECTION_IDS;exports.CedrosPayAdminDashboard=N.CedrosPayAdminDashboard;exports.cedrosPayPlugin=N.cedrosPayPlugin;exports.ecommerce=N.index;exports.CryptoButton=ce.CryptoButton;exports.useX402Payment=ce.useX402Payment;exports.WalletPool=le.WalletPool;exports.createWalletPool=le.createWalletPool;exports.CryptoSubscribeButton=we;exports.useCryptoSubscription=ue;exports.useRefundVerification=he;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./styles-21F1-oqx.js"),v=require("./index-OaWkrl0G.js"),t=require("./CedrosContext-7dwmEeUY.js"),ce=require("./CryptoButton-C1AAOOfj.js"),C=require("react/jsx-runtime"),a=require("react"),$=require("@solana/wallet-adapter-react"),ie=require("@solana/wallet-adapter-base"),Pe=require("@solana/wallet-adapter-react-ui"),le=require("./walletPool-Ddv33tej.js");function ue(){const{subscriptionManager:o,x402Manager:d,walletManager:f}=t.useCedrosContext(),{publicKey:u,signTransaction:T}=$.useWallet(),[P,y]=a.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),[k,R]=a.useState(null),x=a.useRef(!1),h=a.useCallback(()=>{if(!u){const c="Wallet not connected";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}if(!T){const c="Wallet does not support signing";return y(n=>({...n,status:"error",error:c})),{valid:!1,error:c}}return{valid:!0}},[u,T]),B=a.useCallback(async c=>{if(!u)return y(n=>({...n,status:"error",error:"Wallet not connected"})),null;y(n=>({...n,status:"checking",error:null}));try{const n=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});return y(s=>({...s,status:n.active?"success":"idle",subscriptionStatus:n.status,expiresAt:n.expiresAt||n.currentPeriodEnd||null})),n}catch(n){const s=t.formatError(n,"Failed to check subscription status");return y(g=>({...g,status:"error",error:s})),null}},[u,o]),W=a.useCallback(async(c,n,s)=>{y(g=>({...g,status:"loading",error:null}));try{const g=await o.requestSubscriptionQuote(c,n,s);return R(g),y(i=>({...i,status:"idle"})),g}catch(g){const i=t.formatError(g,"Failed to get subscription quote");return y(l=>({...l,status:"error",error:i})),null}},[o]),S=a.useCallback(async(c,n,s)=>{if(x.current)return{success:!1,error:"Payment already in progress"};const g=h();if(!g.valid)return{success:!1,error:g.error};x.current=!0,y(i=>({...i,status:"loading",error:null}));try{const i=await o.requestSubscriptionQuote(c,n,s);R(i);const l=i.requirement;if(!d.validateRequirement(l))throw new Error("Invalid subscription quote received from server");const E=!!l.extra?.feePayer;let b;if(E){const{transaction:w,blockhash:M}=await d.buildGaslessTransaction({resourceId:c,userWallet:u.toString(),feePayer:l.extra.feePayer,couponCode:s?.couponCode}),q=f.deserializeTransaction(w),O=await f.partiallySignTransaction({transaction:q,signTransaction:T,blockhash:M});b=await d.submitGaslessTransaction({resource:c,partialTx:O,couponCode:s?.couponCode,resourceType:"regular",requirement:l})}else{const w=await f.buildTransaction({requirement:l,payerPublicKey:u}),M=await f.signTransaction({transaction:w,signTransaction:T}),q=f.buildPaymentPayload({requirement:l,signedTx:M,payerPublicKey:u});b=await d.submitPayment({resource:c,payload:q,couponCode:s?.couponCode,resourceType:"regular"})}if(b.success){const w=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});y({status:"success",error:null,sessionId:b.transactionId||null,subscriptionStatus:w.status,expiresAt:w.expiresAt||w.currentPeriodEnd||null})}else y(w=>({...w,status:"error",error:b.error||"Subscription payment failed"}));return b}catch(i){const l=t.formatError(i,"Subscription payment failed");return y(E=>({...E,status:"error",error:l})),{success:!1,error:l}}finally{x.current=!1}},[h,o,d,f,u,T]),I=a.useCallback(()=>{y({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),R(null)},[]);return{...P,quote:k,checkStatus:B,requestQuote:W,processPayment:S,reset:I}}function we({resource:o,interval:d,intervalDays:f,couponCode:u,label:T,disabled:P=!1,onAttempt:y,onSuccess:k,onError:R,className:x="",testPageUrl:h,hideMessages:B=!1,autoCheckStatus:W=!0}){const{connected:S,connecting:I,connect:c,disconnect:n,select:s,wallets:g,wallet:i,publicKey:l}=$.useWallet(),{status:E,error:b,subscriptionStatus:w,expiresAt:M,checkStatus:q,processPayment:O}=ue(),p=t.useCedrosTheme(),{solanaError:L}=t.useCedrosContext(),{t:_,translations:G}=e.useTranslation(),de=T||_("ui.subscribe_with_crypto"),Q=a.useRef(k),F=a.useRef(R),V=a.useRef(O),X=a.useRef(q);Q.current=k,F.current=R,V.current=O,X.current=q;const ge=b&&typeof b!="string"?b?.code??null:null,pe=L&&typeof L!="string"?L?.code??null:null,H=r=>{if(!r||!G)return"";const m=G.errors[r];return m?m.action?`${m.message} ${m.action}`:m.message:""},J=b?typeof b=="string"?b:H(ge):null,Z=L?typeof L=="string"?L:H(pe):null,me=a.useMemo(()=>g.map(r=>`${r.adapter.name}-${r.readyState}`).join(","),[g]),K=a.useMemo(()=>g.filter(({readyState:r})=>r===ie.WalletReadyState.Installed||r===ie.WalletReadyState.Loadable),[me]);a.useEffect(()=>{W&&S&&l&&(t.getLogger().debug("[CryptoSubscribeButton] Auto-checking subscription status"),X.current(o))},[W,S,l,o]),a.useEffect(()=>{E==="success"&&w==="active"&&(e.emitPaymentSuccess("crypto","subscription-active",o),Q.current?.("subscription-active"))},[E,w,o]),a.useEffect(()=>{E==="error"&&b&&(e.emitPaymentError("crypto",b,o),F.current?.(b))},[E,b,o]);const ee=typeof window<"u"&&window.top!==window.self,[te,A]=a.useState(!1),[re,U]=a.useState(!1),[ne,D]=a.useState(!1),N=L;a.useEffect(()=>{let r=!1;return r||(async()=>{if(re&&i&&!S&&!I){t.getLogger().debug("[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",i.adapter.name),U(!1),e.emitWalletConnect(i.adapter.name);try{await c(),r||t.getLogger().debug("[CryptoSubscribeButton] Auto-connect successful")}catch(Y){if(!r){t.getLogger().error("[CryptoSubscribeButton] Auto-connect failed:",Y);const Ee=Y instanceof Error?Y.message:"Failed to connect wallet";e.emitWalletError(Ee,i.adapter.name),D(!1)}}}})(),()=>{r=!0}},[i,re,S,I,c]),a.useEffect(()=>{S&&ne&&l&&i&&(e.emitWalletConnected(i.adapter.name,l.toString()),t.getLogger().debug("[CryptoSubscribeButton] Processing pending subscription payment"),D(!1),A(!1),e.emitPaymentProcessing("crypto",o),V.current(o,d,{couponCode:u,intervalDays:f}))},[S,ne,l,i,o,d,u,f]);const oe=a.useCallback(async()=>{if(t.getLogger().debug("[CryptoSubscribeButton] executeSubscriptionFlow called",{connected:S,wallet:i?.adapter.name,resource:o,interval:d}),e.emitPaymentStart("crypto",o),y&&y("crypto"),N){t.getLogger().error("[CryptoSubscribeButton] Solana dependencies missing:",N),e.emitPaymentError("crypto",N,o),R&&R(N);return}if(ee){const r=h||window.location.href;try{if(new URL(r,window.location.origin).origin!==window.location.origin)throw t.getLogger().error("[CryptoSubscribeButton] Blocked attempt to open external URL:",r),new Error("Cannot open external URLs from embedded context");window.open(r,"_blank","noopener,noreferrer")}catch(m){throw t.getLogger().error("[CryptoSubscribeButton] URL validation failed:",m),m}return}if(S)e.emitPaymentProcessing("crypto",o),await O(o,d,{couponCode:u,intervalDays:f});else{D(!0);try{if(i)t.getLogger().debug("[CryptoSubscribeButton] Wallet already selected, connecting:",i.adapter.name),e.emitWalletConnect(i.adapter.name),await c();else{if(t.getLogger().debug("[CryptoSubscribeButton] No wallet selected, showing selector"),K.length===0){D(!1);const r="No wallets available";throw e.emitWalletError(r),new Error(r)}A(!0)}}catch(r){D(!1);const m=r instanceof Error?r.message:"Failed to connect wallet";t.getLogger().error("[CryptoSubscribeButton] Connection error:",m),e.emitWalletError(m,i?.adapter.name)}}},[S,i,o,d,u,f,ee,h,K,c,O,N,y,R]),ae=a.useMemo(()=>`crypto-subscribe-${o}-${d}`,[o,d]),ye=a.useMemo(()=>e.createDedupedClickHandler(ae,oe,{cooldownMs:200,deduplicationWindowMs:0}),[ae,oe]),se=E==="loading"||E==="checking",j=w==="active"||w==="trialing",fe=P||se||I||!!N||j;let z=de;if(se)z=_("ui.processing");else if(j&&M){const r=new Date(M).toLocaleDateString();z=`${_("ui.subscribed_until")} ${r}`}else j&&(z=_("ui.subscribed"));const be=a.useCallback(async()=>{try{U(!1),S&&await n(),s(null),A(!0)}catch(r){t.getLogger().error("Failed to change wallet:",r)}},[S,n,s]),Ce=a.useCallback(r=>{t.getLogger().debug("[CryptoSubscribeButton] Wallet clicked:",r),A(!1),s(r),U(!0)},[s]),Se=a.useCallback(async()=>{try{if(await n(),D(!1),typeof window<"u"&&window.localStorage)try{window.localStorage.removeItem("walletName")}catch(r){r instanceof Error&&r.name==="QuotaExceededError"?t.getLogger().warn("localStorage quota exceeded when removing wallet preference"):t.getLogger().error("Failed to clear wallet preference from localStorage:",r)}}catch(r){t.getLogger().error("Failed to disconnect wallet:",r)}},[n]);return C.jsxs("div",{className:p.unstyled?x:`${p.className} cedros-theme__crypto-button ${x||""}`,style:p.unstyled?{}:p.style,children:[C.jsx("button",{onClick:ye,disabled:fe,className:p.unstyled?x:"cedros-theme__button cedros-theme__crypto",type:"button",children:z}),te&&!B&&C.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:p.tokens.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:()=>A(!1),children:C.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:p.tokens.modalBackground,borderRadius:"12px",padding:"2rem",maxWidth:"400px",width:"100%",boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)",border:`1px solid ${p.tokens.modalBorder}`},onClick:r=>r.stopPropagation(),children:[C.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem"},children:[C.jsx("h3",{style:{margin:0,fontSize:"1.25rem",fontWeight:600,color:p.tokens.surfaceText},children:_("wallet.select_wallet")}),C.jsx("button",{onClick:()=>A(!1),style:e.getModalCloseButtonStyles(p.tokens.surfaceText),"aria-label":"Close modal",type:"button",children:"×"})]}),C.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:K.map(r=>C.jsxs("button",{onClick:()=>Ce(r.adapter.name),style:{width:"100%",padding:"1rem",backgroundColor:p.tokens.surfaceBackground,border:`1px solid ${p.tokens.surfaceBorder}`,borderRadius:"0.5rem",cursor:"pointer",fontSize:"1rem",textAlign:"left",color:p.tokens.surfaceText,display:"flex",alignItems:"center",gap:"1rem",transition:"all 0.2s ease"},onMouseEnter:m=>{m.currentTarget.style.backgroundColor=p.tokens.modalBackground,m.currentTarget.style.borderColor=p.tokens.surfaceText,m.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:m=>{m.currentTarget.style.backgroundColor=p.tokens.surfaceBackground,m.currentTarget.style.borderColor=p.tokens.surfaceBorder,m.currentTarget.style.transform="translateY(0)"},type:"button",children:[C.jsx(Pe.WalletIcon,{wallet:r,style:{width:"24px",height:"24px"}}),C.jsx("span",{style:{fontWeight:500},children:r.adapter.name})]},r.adapter.name))})]})}),S&&!B&&!te&&C.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"0.5rem",fontSize:"0.75rem",color:p.tokens.surfaceText,opacity:.7},children:[C.jsx("button",{onClick:be,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:_("wallet.change")}),C.jsx("button",{onClick:Se,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:_("ui.disconnect")})]}),!B&&Z&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:Z}),!B&&J&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:J}),!B&&j&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__success",children:_("ui.subscription_active")})]})}function he(){const{x402Manager:o,walletManager:d}=t.useCedrosContext(),{publicKey:f,signTransaction:u}=$.useWallet(),[T,P]=a.useState({status:"idle",error:null,transactionId:null}),[y,k]=a.useState(null),[R,x]=a.useState(null),h=a.useRef(!1),B=a.useCallback(async c=>{try{P(s=>({...s,status:"loading"}));const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received from server");return k(n),P(s=>({...s,status:"idle"})),n}catch(n){const s=t.formatError(n,"Failed to fetch refund requirement");throw P({status:"error",error:s,transactionId:null}),n}},[o]),W=a.useCallback(async(c,n)=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const s=await o.requestQuote({resource:c,couponCode:n});if(!o.validateRequirement(s))throw new Error("Invalid refund requirement received");k(s);const g=await d.buildTransaction({requirement:s,payerPublicKey:f}),i=await d.signTransaction({transaction:g,signTransaction:u}),l=d.buildPaymentPayload({requirement:s,signedTx:i,payerPublicKey:f}),E=await o.submitPayment({resource:c,payload:l,couponCode:n,metadata:void 0,resourceType:"refund"});return E.settlement&&x(E.settlement),P({status:"success",error:null,transactionId:E.transactionId||i.signature}),E}catch(s){const g=t.formatError(s,"Refund payment failed");throw P({status:"error",error:g,transactionId:null}),s}finally{h.current=!1}},[f,u,o,d]),S=a.useCallback(async c=>{if(h.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");h.current=!0;try{P({status:"loading",error:null,transactionId:null});const n=await o.requestQuote({resource:c});if(!o.validateRequirement(n))throw new Error("Invalid refund requirement received");k(n);const{transaction:s}=await o.buildGaslessTransaction({resourceId:c,userWallet:f.toString(),feePayer:n.extra.feePayer}),g=d.deserializeTransaction(s),i=await d.partiallySignTransaction({transaction:g,signTransaction:u}),l=await o.submitGaslessTransaction({resource:c,partialTx:i,couponCode:void 0,metadata:void 0,resourceType:"refund",requirement:n});return l.settlement&&x(l.settlement),P({status:"success",error:null,transactionId:l.transactionId||"gasless-refund-tx"}),l}catch(n){const s=t.formatError(n,"Gasless refund payment failed");throw P({status:"error",error:s,transactionId:null}),n}finally{h.current=!1}},[f,u,o,d]),I=a.useCallback(()=>{P({status:"idle",error:null,transactionId:null}),k(null),x(null)},[]);return{state:T,requirement:y,settlement:R,fetchRefundQuote:B,processRefund:W,processGaslessRefund:S,reset:I}}exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CreditsButton=e.CreditsButton;exports.CreditsSubscribeButton=e.CreditsSubscribeButton;exports.PaymentMethodBadge=e.PaymentMethodBadge;exports.PaymentModal=e.PaymentModal;exports.ProductPrice=e.ProductPrice;exports.PurchaseButton=e.PurchaseButton;exports.RPC_PROVIDERS=e.RPC_PROVIDERS;exports.SECURITY_RECOMMENDATIONS=e.SECURITY_RECOMMENDATIONS;exports.StripeButton=e.StripeButton;exports.SubscribeButton=e.SubscribeButton;exports.SubscriptionManagementPanel=e.SubscriptionManagementPanel;exports.calculateDiscountPercentage=e.calculateDiscountPercentage;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.emitPaymentError=e.emitPaymentError;exports.emitPaymentProcessing=e.emitPaymentProcessing;exports.emitPaymentStart=e.emitPaymentStart;exports.emitPaymentSuccess=e.emitPaymentSuccess;exports.emitWalletConnect=e.emitWalletConnect;exports.emitWalletConnected=e.emitWalletConnected;exports.emitWalletError=e.emitWalletError;exports.formatCSP=e.formatCSP;exports.formatCouponCodes=e.formatCouponCodes;exports.generateCSP=e.generateCSP;exports.generateCSPDirectives=e.generateCSPDirectives;exports.getAvailableLocales=e.getAvailableLocales;exports.getLocalizedError=e.getLocalizedError;exports.getUserErrorMessage=e.getUserErrorMessage;exports.isRetryableError=e.isRetryableError;exports.loadLocale=e.loadLocale;exports.logSecurityReport=e.logSecurityReport;exports.parseCouponCodes=e.parseCouponCodes;exports.stackCheckoutCoupons=e.stackCheckoutCoupons;exports.useCreditsPayment=e.useCreditsPayment;exports.useCreditsSubscription=e.useCreditsSubscription;exports.useLocalizedError=e.useLocalizedError;exports.usePaymentMode=e.usePaymentMode;exports.useStripeCheckout=e.useStripeCheckout;exports.useSubscription=e.useSubscription;exports.useSubscriptionManagement=e.useSubscriptionManagement;exports.useTranslation=e.useTranslation;exports.validateSecurity=e.validateSecurity;exports.CEDROS_PAY_GROUPS=v.CEDROS_PAY_GROUPS;exports.CEDROS_PAY_SECTIONS=v.CEDROS_PAY_SECTIONS;exports.CEDROS_PAY_SECTION_IDS=v.CEDROS_PAY_SECTION_IDS;exports.CedrosPayAdminDashboard=v.CedrosPayAdminDashboard;exports.CreditsBalance=v.CreditsBalance;exports.cedrosPayPlugin=v.cedrosPayPlugin;exports.ecommerce=v.index;exports.useCreditsBalance=v.useCreditsBalance;exports.CIRCUIT_BREAKER_PRESETS=t.CIRCUIT_BREAKER_PRESETS;exports.CedrosProvider=t.CedrosProvider;exports.CircuitBreakerOpenError=t.CircuitBreakerOpenError;exports.CircuitState=t.CircuitState;exports.ERROR_CATEGORIES=t.ERROR_CATEGORIES;exports.KNOWN_STABLECOINS=t.KNOWN_STABLECOINS;exports.LogLevel=t.LogLevel;exports.Logger=t.Logger;exports.RATE_LIMITER_PRESETS=t.RATE_LIMITER_PRESETS;exports.RETRY_PRESETS=t.RETRY_PRESETS;exports.createCircuitBreaker=t.createCircuitBreaker;exports.createLogger=t.createLogger;exports.createRateLimiter=t.createRateLimiter;exports.getLogger=t.getLogger;exports.retryWithBackoff=t.retryWithBackoff;exports.useCedrosContext=t.useCedrosContext;exports.useCedrosTheme=t.useCedrosTheme;exports.validateConfig=t.validateConfig;exports.validateTokenMint=t.validateTokenMint;exports.CryptoButton=ce.CryptoButton;exports.useX402Payment=ce.useX402Payment;exports.WalletPool=le.WalletPool;exports.createWalletPool=le.createWalletPool;exports.CryptoSubscribeButton=we;exports.useCryptoSubscription=ue;exports.useRefundVerification=he;
@@ -1,23 +1,23 @@
1
- import { O as ke, B as ve, D as fe, y as Ie, A as me, w as Be, x as ye, z as V, V as _e, W as We } from "./styles--eKKnfdj.mjs";
2
- import { v as Ue, t as Ye, C as Ve, a as He, f as Je, d as Xe, b as Ze, c as et, P as tt, R as rt, I as nt, S as at, e as st, g as ot, n as it, M as ct, J as lt, r as ut, m as dt, o as pt, q as ft, L as mt, N as yt, F as gt, E as bt, K as St, H as wt, p as ht, s as Ct, h as xt, k as Pt, Q as Et, i as Rt, u as Tt, j as kt, l as vt, G as It } from "./styles--eKKnfdj.mjs";
3
- import { u as H, m as z, a as qe, i as y } from "./CedrosContext-BE6P5PQ0.mjs";
4
- import { f as _t, C as Wt, e as qt, d as Mt, E as Lt, K as At, L as Dt, h as Ot, R as Nt, g as zt, b as Kt, j as Qt, c as $t, r as Ft, v as Gt, n as jt } from "./CedrosContext-BE6P5PQ0.mjs";
5
- import { d as Yt, a as Vt, b as Ht, C as Jt, c as Xt, i as Zt } from "./index-CufXF9Yd.mjs";
6
- import { C as tr, u as rr } from "./CryptoButton-CksMkZjL.mjs";
1
+ import { O as ke, q as ve, n as fe, s as Be, o as me, p as Ie, r as ye, t as V, V as _e, W as We } from "./styles-Ag-7ZvAB.mjs";
2
+ import { C as Ue, a as Ye, b as Ve, c as He, d as Je, P as Xe, e as Ze, f as et, g as tt, R as rt, S as nt, h as at, i as st, j as ot, k as it, l as ct, m as lt, u as ut, v as dt, w as pt, x as ft, y as mt, z as yt, A as gt, B as bt, D as St, E as wt, F as ht, G as Ct, H as xt, I as Pt, J as Et, K as Rt, L as Tt, M as kt, N as vt, Q as Bt } from "./styles-Ag-7ZvAB.mjs";
3
+ import { C as _t, a as Wt, b as qt, c as Mt, d as Lt, e as At, i as Dt, u as Ot } from "./index-BHF82XBB.mjs";
4
+ import { u as H, m as z, j as qe, i as y } from "./CedrosContext-DQUbL8yP.mjs";
5
+ import { C as zt, a as Kt, b as Qt, c as $t, E as Ft, K as Gt, L as jt, d as Ut, R as Yt, e as Vt, f as Ht, g as Jt, h as Xt, r as Zt, v as er, n as tr } from "./CedrosContext-DQUbL8yP.mjs";
6
+ import { C as nr, u as ar } from "./CryptoButton-D1BCZBk4.mjs";
7
7
  import { jsxs as K, jsx as x } from "react/jsx-runtime";
8
- import { useState as I, useRef as N, useCallback as h, useMemo as G, useEffect as Q } from "react";
8
+ import { useState as B, useRef as N, useCallback as h, useMemo as G, useEffect as Q } from "react";
9
9
  import { useWallet as J } from "@solana/wallet-adapter-react";
10
10
  import { WalletReadyState as ge } from "@solana/wallet-adapter-base";
11
11
  import { WalletIcon as Me } from "@solana/wallet-adapter-react-ui";
12
- import { WalletPool as ar, createWalletPool as sr } from "./walletPool-DShNjCQ6.mjs";
12
+ import { WalletPool as or, createWalletPool as ir } from "./walletPool-C_0P4mTw.mjs";
13
13
  function Le() {
14
- const { subscriptionManager: r, x402Manager: c, walletManager: f } = H(), { publicKey: i, signTransaction: R } = J(), [S, p] = I({
14
+ const { subscriptionManager: r, x402Manager: c, walletManager: f } = H(), { publicKey: i, signTransaction: R } = J(), [S, p] = B({
15
15
  status: "idle",
16
16
  error: null,
17
17
  sessionId: null,
18
18
  subscriptionStatus: null,
19
19
  expiresAt: null
20
- }), [T, P] = I(null), E = N(!1), C = h(() => {
20
+ }), [T, P] = B(null), E = N(!1), C = h(() => {
21
21
  if (!i) {
22
22
  const s = "Wallet not connected";
23
23
  return p((t) => ({ ...t, status: "error", error: s })), { valid: !1, error: s };
@@ -187,7 +187,7 @@ function Le() {
187
187
  i,
188
188
  R
189
189
  ]
190
- ), B = h(() => {
190
+ ), I = h(() => {
191
191
  p({
192
192
  status: "idle",
193
193
  error: null,
@@ -202,7 +202,7 @@ function Le() {
202
202
  checkStatus: k,
203
203
  requestQuote: W,
204
204
  processPayment: g,
205
- reset: B
205
+ reset: I
206
206
  };
207
207
  }
208
208
  function $e({
@@ -222,7 +222,7 @@ function $e({
222
222
  }) {
223
223
  const {
224
224
  connected: g,
225
- connecting: B,
225
+ connecting: I,
226
226
  connect: s,
227
227
  disconnect: t,
228
228
  select: n,
@@ -259,11 +259,11 @@ function $e({
259
259
  }, [b, w, r]), Q(() => {
260
260
  b === "error" && m && (fe("crypto", m, r), ee.current?.(m));
261
261
  }, [b, m, r]);
262
- const oe = typeof window < "u" && window.top !== window.self, [ie, A] = I(!1), [ce, U] = I(!1), [le, D] = I(!1), O = _;
262
+ const oe = typeof window < "u" && window.top !== window.self, [ie, A] = B(!1), [ce, U] = B(!1), [le, D] = B(!1), O = _;
263
263
  Q(() => {
264
264
  let e = !1;
265
265
  return e || (async () => {
266
- if (ce && a && !g && !B) {
266
+ if (ce && a && !g && !I) {
267
267
  y().debug(
268
268
  "[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",
269
269
  a.adapter.name
@@ -281,8 +281,8 @@ function $e({
281
281
  })(), () => {
282
282
  e = !0;
283
283
  };
284
- }, [a, ce, g, B, s]), Q(() => {
285
- g && le && o && a && (Ie(a.adapter.name, o.toString()), y().debug("[CryptoSubscribeButton] Processing pending subscription payment"), D(!1), A(!1), me("crypto", r), te.current(r, c, { couponCode: i, intervalDays: f }));
284
+ }, [a, ce, g, I, s]), Q(() => {
285
+ g && le && o && a && (Be(a.adapter.name, o.toString()), y().debug("[CryptoSubscribeButton] Processing pending subscription payment"), D(!1), A(!1), me("crypto", r), te.current(r, c, { couponCode: i, intervalDays: f }));
286
286
  }, [g, le, o, a, r, c, i, f]);
287
287
  const ue = h(async () => {
288
288
  if (y().debug("[CryptoSubscribeButton] executeSubscriptionFlow called", {
@@ -290,7 +290,7 @@ function $e({
290
290
  wallet: a?.adapter.name,
291
291
  resource: r,
292
292
  interval: c
293
- }), Be("crypto", r), p && p("crypto"), O) {
293
+ }), Ie("crypto", r), p && p("crypto"), O) {
294
294
  y().error("[CryptoSubscribeButton] Solana dependencies missing:", O), fe("crypto", O, r), P && P(O);
295
295
  return;
296
296
  }
@@ -350,7 +350,7 @@ function $e({
350
350
  deduplicationWindowMs: 0
351
351
  }),
352
352
  [de, ue]
353
- ), pe = b === "loading" || b === "checking", $ = w === "active" || w === "trialing", xe = S || pe || B || !!O || $;
353
+ ), pe = b === "loading" || b === "checking", $ = w === "active" || w === "trialing", xe = S || pe || I || !!O || $;
354
354
  let F = be;
355
355
  if (pe)
356
356
  F = v("ui.processing");
@@ -560,11 +560,11 @@ function $e({
560
560
  );
561
561
  }
562
562
  function Fe() {
563
- const { x402Manager: r, walletManager: c } = H(), { publicKey: f, signTransaction: i } = J(), [R, S] = I({
563
+ const { x402Manager: r, walletManager: c } = H(), { publicKey: f, signTransaction: i } = J(), [R, S] = B({
564
564
  status: "idle",
565
565
  error: null,
566
566
  transactionId: null
567
- }), [p, T] = I(null), [P, E] = I(null), C = N(!1), k = h(
567
+ }), [p, T] = B(null), [P, E] = B(null), C = N(!1), k = h(
568
568
  async (s) => {
569
569
  try {
570
570
  S((n) => ({ ...n, status: "loading" }));
@@ -685,7 +685,7 @@ function Fe() {
685
685
  }
686
686
  },
687
687
  [f, i, r, c]
688
- ), B = h(() => {
688
+ ), I = h(() => {
689
689
  S({
690
690
  status: "idle",
691
691
  error: null,
@@ -699,56 +699,57 @@ function Fe() {
699
699
  fetchRefundQuote: k,
700
700
  processRefund: W,
701
701
  processGaslessRefund: g,
702
- reset: B
702
+ reset: I
703
703
  };
704
704
  }
705
705
  export {
706
706
  Ue as CEDROS_EVENTS,
707
- Yt as CEDROS_PAY_GROUPS,
708
- Vt as CEDROS_PAY_SECTIONS,
709
- Ht as CEDROS_PAY_SECTION_IDS,
710
- _t as CIRCUIT_BREAKER_PRESETS,
707
+ _t as CEDROS_PAY_GROUPS,
708
+ Wt as CEDROS_PAY_SECTIONS,
709
+ qt as CEDROS_PAY_SECTION_IDS,
710
+ zt as CIRCUIT_BREAKER_PRESETS,
711
711
  Ye as CSP_PRESETS,
712
712
  Ve as CedrosPay,
713
- Jt as CedrosPayAdminDashboard,
714
- Wt as CedrosProvider,
715
- qt as CircuitBreakerOpenError,
716
- Mt as CircuitState,
713
+ Mt as CedrosPayAdminDashboard,
714
+ Kt as CedrosProvider,
715
+ Qt as CircuitBreakerOpenError,
716
+ $t as CircuitState,
717
+ Lt as CreditsBalance,
717
718
  He as CreditsButton,
718
719
  Je as CreditsSubscribeButton,
719
- tr as CryptoButton,
720
+ nr as CryptoButton,
720
721
  $e as CryptoSubscribeButton,
721
- Lt as ERROR_CATEGORIES,
722
- At as KNOWN_STABLECOINS,
723
- Dt as LogLevel,
724
- Ot as Logger,
722
+ Ft as ERROR_CATEGORIES,
723
+ Gt as KNOWN_STABLECOINS,
724
+ jt as LogLevel,
725
+ Ut as Logger,
725
726
  Xe as PaymentMethodBadge,
726
727
  Ze as PaymentModal,
727
728
  et as ProductPrice,
728
729
  tt as PurchaseButton,
729
- Nt as RATE_LIMITER_PRESETS,
730
- zt as RETRY_PRESETS,
730
+ Yt as RATE_LIMITER_PRESETS,
731
+ Vt as RETRY_PRESETS,
731
732
  rt as RPC_PROVIDERS,
732
733
  nt as SECURITY_RECOMMENDATIONS,
733
734
  at as StripeButton,
734
735
  st as SubscribeButton,
735
736
  ot as SubscriptionManagementPanel,
736
- ar as WalletPool,
737
+ or as WalletPool,
737
738
  it as calculateDiscountPercentage,
738
- Xt as cedrosPayPlugin,
739
- Kt as createCircuitBreaker,
740
- Qt as createLogger,
741
- $t as createRateLimiter,
739
+ At as cedrosPayPlugin,
740
+ Ht as createCircuitBreaker,
741
+ Jt as createLogger,
742
+ Xt as createRateLimiter,
742
743
  ct as createTranslator,
743
- sr as createWalletPool,
744
+ ir as createWalletPool,
744
745
  lt as detectLocale,
745
- Zt as ecommerce,
746
+ Dt as ecommerce,
746
747
  fe as emitPaymentError,
747
748
  me as emitPaymentProcessing,
748
- Be as emitPaymentStart,
749
+ Ie as emitPaymentStart,
749
750
  ve as emitPaymentSuccess,
750
751
  ye as emitWalletConnect,
751
- Ie as emitWalletConnected,
752
+ Be as emitWalletConnected,
752
753
  V as emitWalletError,
753
754
  ut as formatCSP,
754
755
  dt as formatCouponCodes,
@@ -762,10 +763,11 @@ export {
762
763
  St as loadLocale,
763
764
  wt as logSecurityReport,
764
765
  ht as parseCouponCodes,
765
- Ft as retryWithBackoff,
766
+ Zt as retryWithBackoff,
766
767
  Ct as stackCheckoutCoupons,
767
768
  H as useCedrosContext,
768
769
  qe as useCedrosTheme,
770
+ Ot as useCreditsBalance,
769
771
  xt as useCreditsPayment,
770
772
  Pt as useCreditsSubscription,
771
773
  Le as useCryptoSubscription,
@@ -776,8 +778,8 @@ export {
776
778
  kt as useSubscription,
777
779
  vt as useSubscriptionManagement,
778
780
  ke as useTranslation,
779
- rr as useX402Payment,
780
- Gt as validateConfig,
781
- It as validateSecurity,
782
- jt as validateTokenMint
781
+ ar as useX402Payment,
782
+ er as validateConfig,
783
+ Bt as validateSecurity,
784
+ tr as validateTokenMint
783
785
  };