@cedros/pay-react 1.1.15 → 1.1.17
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/dist/AISettingsSection--jn-BNmd.mjs +539 -0
- package/dist/AISettingsSection-BrXUD4l_.js +51 -0
- package/dist/AutosaveIndicator-B3T328jH.mjs +35 -0
- package/dist/AutosaveIndicator-BQkm3cn8.js +1 -0
- package/dist/{CedrosContext-D7nh5-Zh.mjs → CedrosContext-BnJ2Cf7R.mjs} +1179 -642
- package/dist/CedrosContext-C26DlvLF.js +6 -0
- package/dist/CryptoButton-B4-oJ8lF.js +1 -0
- package/dist/CryptoButton-Dhxnk9d7.mjs +542 -0
- package/dist/FAQSection-BB1wJRsR.mjs +366 -0
- package/dist/FAQSection-aoAz35MV.js +1 -0
- package/dist/MessagingSection-BG9O62ko.mjs +347 -0
- package/dist/MessagingSection-DId-WJdU.js +1 -0
- package/dist/PaymentSettingsSection-D92IO4xJ.js +1 -0
- package/dist/PaymentSettingsSection-c13RAUxn.mjs +94 -0
- package/dist/SettingsSection-DUxjXl2G.js +1 -0
- package/dist/SettingsSection-htem-WL3.mjs +57 -0
- package/dist/SingleCategorySettings-BIEs6s6Z.mjs +1421 -0
- package/dist/SingleCategorySettings-CQ-osdzb.js +3 -0
- package/dist/StorefrontSection-CKTQt255.mjs +765 -0
- package/dist/StorefrontSection-DcSoDx-k.js +1 -0
- package/dist/SubscriptionsSection-C0hYf7Hr.js +1 -0
- package/dist/SubscriptionsSection-CONwHhT4.mjs +616 -0
- package/dist/Toggle-CsPSF8Dr.js +1 -0
- package/dist/Toggle-DAxIdpY4.mjs +48 -0
- package/dist/WalletManager-D6BYTwXn.js +1 -0
- package/dist/{WalletManager-oEjZhaFk.mjs → WalletManager-HXXyARQ7.mjs} +36 -32
- package/dist/components/CedrosPay.d.ts.map +1 -1
- package/dist/components/CryptoSubscribeButton.d.ts.map +1 -1
- package/dist/components/PaymentModal.d.ts.map +1 -1
- package/dist/components/SubscriptionManagementPanel.d.ts.map +1 -1
- package/dist/components/admin/AISettingsSection.d.ts.map +1 -1
- package/dist/components/admin/AdminAuthManager.d.ts +2 -1
- package/dist/components/admin/AdminAuthManager.d.ts.map +1 -1
- package/dist/components/admin/AutosaveIndicator.d.ts +7 -0
- package/dist/components/admin/AutosaveIndicator.d.ts.map +1 -0
- package/dist/components/admin/CedrosPayAdminDashboard.d.ts.map +1 -1
- package/dist/components/admin/ConfigEditor.d.ts +0 -2
- package/dist/components/admin/ConfigEditor.d.ts.map +1 -1
- package/dist/components/admin/MessagingSection.d.ts.map +1 -1
- package/dist/components/admin/ProductsSection.d.ts.map +1 -1
- package/dist/components/admin/RefundsSection.d.ts.map +1 -1
- package/dist/components/admin/SecretArrayEditor.d.ts +16 -0
- package/dist/components/admin/SecretArrayEditor.d.ts.map +1 -0
- package/dist/components/admin/SingleCategorySettings.d.ts.map +1 -1
- package/dist/components/admin/StorefrontSection.d.ts.map +1 -1
- package/dist/components/admin/Toggle.d.ts +14 -0
- package/dist/components/admin/Toggle.d.ts.map +1 -0
- package/dist/components/admin/TokenMintSelector.d.ts +27 -0
- package/dist/components/admin/TokenMintSelector.d.ts.map +1 -0
- package/dist/components/admin/configApi.d.ts +5 -3
- package/dist/components/admin/configApi.d.ts.map +1 -1
- package/dist/components/admin/index.d.ts +8 -9
- package/dist/components/admin/index.d.ts.map +1 -1
- package/dist/components/admin/sections-more.d.ts +2 -9
- package/dist/components/admin/sections-more.d.ts.map +1 -1
- package/dist/context/CedrosContext.d.ts +1 -1
- package/dist/context/CedrosContext.d.ts.map +1 -1
- package/dist/crypto-only.js +1 -1
- package/dist/crypto-only.mjs +391 -380
- package/dist/ecommerce/__tests__/inventoryHooks.test.d.ts +2 -0
- package/dist/ecommerce/__tests__/inventoryHooks.test.d.ts.map +1 -0
- package/dist/ecommerce/__tests__/storage.test.d.ts +2 -0
- package/dist/ecommerce/__tests__/storage.test.d.ts.map +1 -0
- package/dist/ecommerce/adapters/CommerceAdapter.d.ts +5 -0
- package/dist/ecommerce/adapters/CommerceAdapter.d.ts.map +1 -1
- package/dist/ecommerce/adapters/mock/mockAdapter.d.ts.map +1 -1
- package/dist/ecommerce/adapters/paywall/paywallAdapter.d.ts.map +1 -1
- package/dist/ecommerce/adapters/paywall/paywallAdapter.test.d.ts +2 -0
- package/dist/ecommerce/adapters/paywall/paywallAdapter.test.d.ts.map +1 -0
- package/dist/ecommerce/components/catalog/ProductCard.d.ts.map +1 -1
- package/dist/ecommerce/components/catalog/QuickViewDialog.d.ts.map +1 -1
- package/dist/ecommerce/components/chat/ShopChatPanel.d.ts +4 -0
- package/dist/ecommerce/components/chat/ShopChatPanel.d.ts.map +1 -1
- package/dist/ecommerce/components/checkout/PaymentStep.d.ts.map +1 -1
- package/dist/ecommerce/components/faq/FAQItem.d.ts.map +1 -1
- package/dist/ecommerce/config/context.d.ts.map +1 -1
- package/dist/ecommerce/hooks/useAIRelatedProducts.d.ts.map +1 -1
- package/dist/ecommerce/hooks/useCartInventory.d.ts.map +1 -1
- package/dist/ecommerce/hooks/useHoldExpiry.d.ts.map +1 -1
- package/dist/ecommerce/hooks/useInventoryVerification.d.ts.map +1 -1
- package/dist/ecommerce/hooks/useProducts.d.ts.map +1 -1
- package/dist/ecommerce/index.d.ts +2 -0
- package/dist/ecommerce/index.d.ts.map +1 -1
- package/dist/ecommerce/integrations/cedros-pay/useCedrosPayCheckoutAdapter.d.ts.map +1 -1
- package/dist/ecommerce/state/cart/CartProvider.d.ts.map +1 -1
- package/dist/ecommerce/state/checkout/checkoutSchema.d.ts +1 -1
- package/dist/ecommerce/state/checkout/useCheckout.d.ts.map +1 -1
- package/dist/ecommerce/templates/ProductTemplate.d.ts.map +1 -1
- package/dist/ecommerce/utils/storage.d.ts +1 -1
- package/dist/ecommerce/utils/storage.d.ts.map +1 -1
- package/dist/hooks/useCreditsPayment.d.ts.map +1 -1
- package/dist/hooks/useCreditsSubscription.d.ts.map +1 -1
- package/dist/hooks/useCryptoSubscription.d.ts.map +1 -1
- package/dist/hooks/useRefundVerification.d.ts.map +1 -1
- package/dist/hooks/useStripeCheckout.d.ts +1 -1
- package/dist/hooks/useStripeCheckout.d.ts.map +1 -1
- package/dist/hooks/useSubscription.d.ts.map +1 -1
- package/dist/hooks/useSubscriptionManagement.d.ts.map +1 -1
- package/dist/hooks/useX402Payment.d.ts.map +1 -1
- package/dist/index-2N_CMVAv.js +84 -0
- package/dist/index-C1hbnxn0.mjs +22915 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +67 -72
- package/dist/managers/CreditsManager.d.ts +6 -0
- package/dist/managers/CreditsManager.d.ts.map +1 -1
- package/dist/managers/ManagerCache.d.ts.map +1 -1
- package/dist/managers/RouteDiscoveryManager.d.ts +3 -0
- package/dist/managers/RouteDiscoveryManager.d.ts.map +1 -1
- package/dist/managers/StripeManager.d.ts +15 -0
- package/dist/managers/StripeManager.d.ts.map +1 -1
- package/dist/managers/SubscriptionChangeManager.d.ts.map +1 -1
- package/dist/managers/SubscriptionManager.d.ts +7 -14
- package/dist/managers/SubscriptionManager.d.ts.map +1 -1
- package/dist/managers/WalletManager.d.ts +2 -1
- package/dist/managers/WalletManager.d.ts.map +1 -1
- package/dist/managers/X402Manager.d.ts.map +1 -1
- package/dist/{sections-DG4Ws13b.js → sections-D2GMJuKq.js} +1 -1
- package/dist/{sections-Dl8qjlql.mjs → sections-DICaHGhz.mjs} +1 -1
- package/dist/stripe-only.js +1 -1
- package/dist/stripe-only.mjs +67 -72
- package/dist/telemetry.js +1 -1
- package/dist/telemetry.mjs +23 -25
- package/dist/testing/index.js +1 -1
- package/dist/testing/index.mjs +1 -1
- package/dist/types/index.d.ts +13 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/useAutosave-B2p6iwh8.js +1 -0
- package/dist/useAutosave-YwMqRzqy.mjs +44 -0
- package/dist/utils/circuitBreaker.d.ts +3 -1
- package/dist/utils/circuitBreaker.d.ts.map +1 -1
- package/dist/utils/cspHelper.d.ts +6 -0
- package/dist/utils/cspHelper.d.ts.map +1 -1
- package/dist/utils/csvHelpers.d.ts +0 -41
- package/dist/utils/csvHelpers.d.ts.map +1 -1
- package/dist/utils/errorHandling.d.ts.map +1 -1
- package/dist/utils/exponentialBackoff.d.ts.map +1 -1
- package/dist/utils/requestDeduplication.d.ts.map +1 -1
- package/dist/utils/telemetry.d.ts.map +1 -1
- package/dist/utils/validateConfig.d.ts +1 -1
- package/dist/utils/validateConfig.d.ts.map +1 -1
- package/dist/walletDetection-JZR3UCOa.mjs +27 -0
- package/dist/walletDetection-bNmV5ItZ.js +1 -0
- package/dist/{walletPool-BR6etEiq.mjs → walletPool-BV_z1lEA.mjs} +1 -1
- package/dist/{walletPool-BZyAG4YS.js → walletPool-DjA7J3a9.js} +1 -1
- package/package.json +8 -7
- package/dist/CedrosContext-C2v_s8cc.js +0 -6
- package/dist/WalletManager-B5KLZK2D.js +0 -1
- package/dist/index-BjxGupjw.mjs +0 -27893
- package/dist/index-DW6XWuRP.js +0 -136
package/dist/crypto-only.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DW6XWuRP.js"),C=require("react/jsx-runtime"),i=require("react"),t=require("./CedrosContext-C2v_s8cc.js");require("@solana/web3.js");require("./index-WcOlBYZJ.js");const Q=require("@solana/wallet-adapter-react"),ne=require("@solana/wallet-adapter-base"),be=require("@solana/wallet-adapter-react-ui"),ae=require("./walletPool-BZyAG4YS.js");function se(){const{subscriptionManager:n,x402Manager:d,walletManager:f}=t.useCedrosContext(),{publicKey:c,signTransaction:T}=Q.useWallet(),[h,m]=i.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),[x,E]=i.useState(null),R=i.useCallback(()=>{if(!c){const l="Wallet not connected";return m(o=>({...o,status:"error",error:l})),{valid:!1,error:l}}if(!T){const l="Wallet does not support signing";return m(o=>({...o,status:"error",error:l})),{valid:!1,error:l}}return{valid:!0}},[c,T]),W=i.useCallback(async l=>{if(!c)return m(o=>({...o,status:"error",error:"Wallet not connected"})),null;m(o=>({...o,status:"checking",error:null}));try{const o=await n.checkSubscriptionStatus({resource:l,userId:c.toString()});return m(a=>({...a,status:o.active?"success":"idle",subscriptionStatus:o.status,expiresAt:o.expiresAt||o.currentPeriodEnd||null})),o}catch(o){const a=t.formatError(o,"Failed to check subscription status");return m(u=>({...u,status:"error",error:a})),null}},[c,n]),k=i.useCallback(async(l,o,a)=>{m(u=>({...u,status:"loading",error:null}));try{const u=await n.requestSubscriptionQuote(l,o,a);return E(u),m(b=>({...b,status:"idle"})),u}catch(u){const b=t.formatError(u,"Failed to get subscription quote");return m(s=>({...s,status:"error",error:b})),null}},[n]),I=i.useCallback(async(l,o,a)=>{const u=R();if(!u.valid)return{success:!1,error:u.error};m(b=>({...b,status:"loading",error:null}));try{const b=await n.requestSubscriptionQuote(l,o,a);E(b);const s=b.requirement;if(!d.validateRequirement(s))throw new Error("Invalid subscription quote received from server");const w=!!s.extra?.feePayer;let P;if(w){const{transaction:y,blockhash:v}=await d.buildGaslessTransaction({resourceId:l,userWallet:c.toString(),feePayer:s.extra.feePayer,couponCode:a?.couponCode}),_=f.deserializeTransaction(y),j=await f.partiallySignTransaction({transaction:_,signTransaction:T,blockhash:v});P=await d.submitGaslessTransaction({resource:l,partialTx:j,couponCode:a?.couponCode,resourceType:"regular",requirement:s})}else{const y=await f.buildTransaction({requirement:s,payerPublicKey:c}),v=await f.signTransaction({transaction:y,signTransaction:T}),_=f.buildPaymentPayload({requirement:s,signedTx:v,payerPublicKey:c});P=await d.submitPayment({resource:l,payload:_,couponCode:a?.couponCode,resourceType:"regular"})}if(P.success){const y=await n.checkSubscriptionStatus({resource:l,userId:c.toString()});m({status:"success",error:null,sessionId:P.transactionId||null,subscriptionStatus:y.status,expiresAt:y.expiresAt||y.currentPeriodEnd||null})}else m(y=>({...y,status:"error",error:P.error||"Subscription payment failed"}));return P}catch(b){const s=t.formatError(b,"Subscription payment failed");return m(w=>({...w,status:"error",error:s})),{success:!1,error:s}}},[R,n,d,f,c,T]),S=i.useCallback(()=>{m({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),E(null)},[]);return{...h,quote:x,checkStatus:W,requestQuote:k,processPayment:I,reset:S}}function Ce({resource:n,interval:d,intervalDays:f,couponCode:c,label:T,disabled:h=!1,onAttempt:m,onSuccess:x,onError:E,className:R="",testPageUrl:W,hideMessages:k=!1,autoCheckStatus:I=!0}){const{connected:S,connecting:l,connect:o,disconnect:a,select:u,wallets:b,wallet:s,publicKey:w}=Q.useWallet(),{status:P,error:y,subscriptionStatus:v,expiresAt:_,checkStatus:j,processPayment:O}=se(),g=t.useCedrosTheme(),{solanaError:L}=t.useCedrosContext(),{t:B,translations:F}=e.useTranslation(),ie=T||B("ui.subscribe_with_crypto"),U=i.useRef(O),G=i.useRef(j);i.useEffect(()=>{U.current=O,G.current=j},[O,j]);const le=y&&typeof y!="string"?y?.code??null:null,ce=L&&typeof L!="string"?L?.code??null:null,V=r=>{if(!r||!F)return"";const p=F.errors[r];return p?p.action?`${p.message} ${p.action}`:p.message:""},Y=y?typeof y=="string"?y:V(le):null,X=L?typeof L=="string"?L:V(ce):null,ue=i.useMemo(()=>b.map(r=>`${r.adapter.name}-${r.readyState}`).join(","),[b]),z=i.useMemo(()=>b.filter(({readyState:r})=>r===ne.WalletReadyState.Installed||r===ne.WalletReadyState.Loadable),[ue]);i.useEffect(()=>{I&&S&&w&&(t.getLogger().debug("[CryptoSubscribeButton] Auto-checking subscription status"),G.current(n))},[I,S,w,n]),i.useEffect(()=>{P==="success"&&v==="active"&&(e.emitPaymentSuccess("crypto","subscription-active",n),x&&x("subscription-active"))},[P,v,n,x]),i.useEffect(()=>{P==="error"&&y&&(e.emitPaymentError("crypto",y,n),E&&E(y))},[P,y,n,E]);const H=typeof window<"u"&&window.top!==window.self,[J,M]=i.useState(!1),[Z,K]=i.useState(!1),[ee,q]=i.useState(!1),A=L;i.useEffect(()=>{let r=!1;return r||(async()=>{if(Z&&s&&!S&&!l){t.getLogger().debug("[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",s.adapter.name),K(!1),e.emitWalletConnect(s.adapter.name);try{await o(),r||t.getLogger().debug("[CryptoSubscribeButton] Auto-connect successful")}catch($){if(!r){t.getLogger().error("[CryptoSubscribeButton] Auto-connect failed:",$);const fe=$ instanceof Error?$.message:"Failed to connect wallet";e.emitWalletError(fe,s.adapter.name),q(!1)}}}})(),()=>{r=!0}},[s,Z,S,l,o]),i.useEffect(()=>{S&&ee&&w&&s&&(e.emitWalletConnected(s.adapter.name,w.toString()),t.getLogger().debug("[CryptoSubscribeButton] Processing pending subscription payment"),q(!1),M(!1),e.emitPaymentProcessing("crypto",n),U.current(n,d,{couponCode:c,intervalDays:f}))},[S,ee,w,s,n,d,c,f]);const te=i.useCallback(async()=>{if(t.getLogger().debug("[CryptoSubscribeButton] executeSubscriptionFlow called",{connected:S,wallet:s?.adapter.name,resource:n,interval:d}),e.emitPaymentStart("crypto",n),m&&m("crypto"),A){t.getLogger().error("[CryptoSubscribeButton] Solana dependencies missing:",A),e.emitPaymentError("crypto",A,n),E&&E(A);return}if(H){const r=W||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(p){throw t.getLogger().error("[CryptoSubscribeButton] URL validation failed:",p),p}return}if(S)e.emitPaymentProcessing("crypto",n),await O(n,d,{couponCode:c,intervalDays:f});else{q(!0);try{if(s)t.getLogger().debug("[CryptoSubscribeButton] Wallet already selected, connecting:",s.adapter.name),e.emitWalletConnect(s.adapter.name),await o();else{if(t.getLogger().debug("[CryptoSubscribeButton] No wallet selected, showing selector"),z.length===0){q(!1);const r="No wallets available";throw e.emitWalletError(r),new Error(r)}M(!0)}}catch(r){q(!1);const p=r instanceof Error?r.message:"Failed to connect wallet";t.getLogger().error("[CryptoSubscribeButton] Connection error:",p),e.emitWalletError(p,s?.adapter.name)}}},[S,s,n,d,c,f,H,W,z,o,O,A,m,E]),re=i.useMemo(()=>`crypto-subscribe-${n}-${d}`,[n,d]),de=i.useMemo(()=>e.createDedupedClickHandler(re,te,{cooldownMs:200,deduplicationWindowMs:0}),[re,te]),oe=P==="loading"||P==="checking",N=v==="active"||v==="trialing",ge=h||oe||l||!!A||N;let D=ie;if(oe)D=B("ui.processing");else if(N&&_){const r=new Date(_).toLocaleDateString();D=`${B("ui.subscribed_until")} ${r}`}else N&&(D=B("ui.subscribed"));const pe=i.useCallback(async()=>{try{K(!1),S&&await a(),u(null),M(!0)}catch(r){t.getLogger().error("Failed to change wallet:",r)}},[S,a,u]),me=i.useCallback(r=>{t.getLogger().debug("[CryptoSubscribeButton] Wallet clicked:",r),M(!1),u(r),K(!0)},[u]),ye=i.useCallback(async()=>{try{if(await a(),q(!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)}},[a]);return C.jsxs("div",{className:g.unstyled?R:`${g.className} cedros-theme__crypto-button ${R||""}`,style:g.unstyled?{}:g.style,children:[C.jsx("button",{onClick:de,disabled:ge,className:g.unstyled?R:"cedros-theme__button cedros-theme__crypto",type:"button",children:D}),J&&!k&&C.jsx("div",{className:"cedros-modal-overlay",style:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:g.tokens.modalOverlay,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999,padding:"1rem"},onClick:()=>M(!1),children:C.jsxs("div",{className:"cedros-modal-content",style:{backgroundColor:g.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 ${g.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:g.tokens.surfaceText},children:B("wallet.select_wallet")}),C.jsx("button",{onClick:()=>M(!1),style:e.getModalCloseButtonStyles(g.tokens.surfaceText),"aria-label":"Close modal",type:"button",children:"×"})]}),C.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:z.map(r=>C.jsxs("button",{onClick:()=>me(r.adapter.name),style:{width:"100%",padding:"1rem",backgroundColor:g.tokens.surfaceBackground,border:`1px solid ${g.tokens.surfaceBorder}`,borderRadius:"0.5rem",cursor:"pointer",fontSize:"1rem",textAlign:"left",color:g.tokens.surfaceText,display:"flex",alignItems:"center",gap:"1rem",transition:"all 0.2s ease"},onMouseEnter:p=>{p.currentTarget.style.backgroundColor=g.tokens.modalBackground,p.currentTarget.style.borderColor=g.tokens.surfaceText,p.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:p=>{p.currentTarget.style.backgroundColor=g.tokens.surfaceBackground,p.currentTarget.style.borderColor=g.tokens.surfaceBorder,p.currentTarget.style.transform="translateY(0)"},type:"button",children:[C.jsx(be.WalletIcon,{wallet:r,style:{width:"24px",height:"24px"}}),C.jsx("span",{style:{fontWeight:500},children:r.adapter.name})]},r.adapter.name))})]})}),S&&!k&&!J&&C.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"0.5rem",fontSize:"0.75rem",color:g.tokens.surfaceText,opacity:.7},children:[C.jsx("button",{onClick:pe,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:B("wallet.change")}),C.jsx("button",{onClick:ye,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:B("ui.disconnect")})]}),!k&&X&&C.jsx("div",{className:g.unstyled?"":"cedros-theme__error",children:X}),!k&&Y&&C.jsx("div",{className:g.unstyled?"":"cedros-theme__error",children:Y}),!k&&N&&C.jsx("div",{className:g.unstyled?"":"cedros-theme__success",children:B("ui.subscription_active")})]})}function Se(){const{x402Manager:n,walletManager:d}=t.useCedrosContext(),{publicKey:f,signTransaction:c}=Q.useWallet(),[T,h]=i.useState({status:"idle",error:null,transactionId:null}),[m,x]=i.useState(null),[E,R]=i.useState(null),W=i.useCallback(async l=>{try{h(a=>({...a,status:"loading"}));const o=await n.requestQuote({resource:l});if(!n.validateRequirement(o))throw new Error("Invalid refund requirement received from server");return x(o),h(a=>({...a,status:"idle"})),o}catch(o){const a=t.formatError(o,"Failed to fetch refund requirement");throw h({status:"error",error:a,transactionId:null}),o}},[n]),k=i.useCallback(async(l,o)=>{if(!f||!c)throw new Error("Wallet not connected");try{h({status:"loading",error:null,transactionId:null});const a=await n.requestQuote({resource:l,couponCode:o});if(!n.validateRequirement(a))throw new Error("Invalid refund requirement received");x(a);const u=await d.buildTransaction({requirement:a,payerPublicKey:f}),b=await d.signTransaction({transaction:u,signTransaction:c}),s=d.buildPaymentPayload({requirement:a,signedTx:b,payerPublicKey:f}),w=await n.submitPayment({resource:l,payload:s,couponCode:o,metadata:void 0,resourceType:"refund"});return w.settlement&&R(w.settlement),h({status:"success",error:null,transactionId:w.transactionId||b.signature}),w}catch(a){const u=t.formatError(a,"Refund payment failed");throw h({status:"error",error:u,transactionId:null}),a}},[f,c,n,d]),I=i.useCallback(async l=>{if(!f||!c)throw new Error("Wallet not connected");try{h({status:"loading",error:null,transactionId:null});const o=await n.requestQuote({resource:l});if(!n.validateRequirement(o))throw new Error("Invalid refund requirement received");x(o);const{transaction:a}=await n.buildGaslessTransaction({resourceId:l,userWallet:f.toString(),feePayer:o.extra.feePayer}),u=d.deserializeTransaction(a),b=await d.partiallySignTransaction({transaction:u,signTransaction:c}),s=await n.submitGaslessTransaction({resource:l,partialTx:b,couponCode:void 0,metadata:void 0,resourceType:"refund",requirement:o});return s.settlement&&R(s.settlement),h({status:"success",error:null,transactionId:s.transactionId||"gasless-refund-tx"}),s}catch(o){const a=t.formatError(o,"Gasless refund payment failed");throw h({status:"error",error:a,transactionId:null}),o}},[f,c,n,d]),S=i.useCallback(()=>{h({status:"idle",error:null,transactionId:null}),x(null),R(null)},[]);return{state:T,requirement:m,settlement:E,fetchRefundQuote:W,processRefund:k,processGaslessRefund:I,reset:S}}exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CedrosPayAdminDashboard=e.CedrosPayAdminDashboard;exports.CreditsButton=e.CreditsButton;exports.CreditsSubscribeButton=e.CreditsSubscribeButton;exports.CryptoButton=e.CryptoButton;exports.ERROR_CATEGORIES=e.ERROR_CATEGORIES;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.cedrosPayPlugin=e.cedrosPayPlugin;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.ecommerce=e.index;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.useX402Payment=e.useX402Payment;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.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.WalletPool=ae.WalletPool;exports.createWalletPool=ae.createWalletPool;exports.CryptoSubscribeButton=Ce;exports.useCryptoSubscription=se;exports.useRefundVerification=Se;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-2N_CMVAv.js"),t=require("./CedrosContext-C26DlvLF.js"),ie=require("./CryptoButton-B4-oJ8lF.js"),C=require("react/jsx-runtime"),a=require("react"),Q=require("@solana/wallet-adapter-react"),se=require("@solana/wallet-adapter-base"),we=require("@solana/wallet-adapter-react-ui"),ce=require("./walletPool-DjA7J3a9.js");function le(){const{subscriptionManager:o,x402Manager:d,walletManager:f}=t.useCedrosContext(),{publicKey:u,signTransaction:T}=Q.useWallet(),[P,y]=a.useState({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),[k,R]=a.useState(null),x=a.useRef(!1),E=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]),I=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=E();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 w=!!l.extra?.feePayer;let b;if(w){const{transaction:h,blockhash:_}=await d.buildGaslessTransaction({resourceId:c,userWallet:u.toString(),feePayer:l.extra.feePayer,couponCode:s?.couponCode}),M=f.deserializeTransaction(h),q=await f.partiallySignTransaction({transaction:M,signTransaction:T,blockhash:_});b=await d.submitGaslessTransaction({resource:c,partialTx:q,couponCode:s?.couponCode,resourceType:"regular",requirement:l})}else{const h=await f.buildTransaction({requirement:l,payerPublicKey:u}),_=await f.signTransaction({transaction:h,signTransaction:T}),M=f.buildPaymentPayload({requirement:l,signedTx:_,payerPublicKey:u});b=await d.submitPayment({resource:c,payload:M,couponCode:s?.couponCode,resourceType:"regular"})}if(b.success){const h=await o.checkSubscriptionStatus({resource:c,userId:u.toString()});y({status:"success",error:null,sessionId:b.transactionId||null,subscriptionStatus:h.status,expiresAt:h.expiresAt||h.currentPeriodEnd||null})}else y(h=>({...h,status:"error",error:b.error||"Subscription payment failed"}));return b}catch(i){const l=t.formatError(i,"Subscription payment failed");return y(w=>({...w,status:"error",error:l})),{success:!1,error:l}}finally{x.current=!1}},[E,o,d,f,u,T]),L=a.useCallback(()=>{y({status:"idle",error:null,sessionId:null,subscriptionStatus:null,expiresAt:null}),R(null)},[]);return{...P,quote:k,checkStatus:B,requestQuote:I,processPayment:S,reset:L}}function Pe({resource:o,interval:d,intervalDays:f,couponCode:u,label:T,disabled:P=!1,onAttempt:y,onSuccess:k,onError:R,className:x="",testPageUrl:E,hideMessages:B=!1,autoCheckStatus:I=!0}){const{connected:S,connecting:L,connect:c,disconnect:n,select:s,wallets:g,wallet:i,publicKey:l}=Q.useWallet(),{status:w,error:b,subscriptionStatus:h,expiresAt:_,checkStatus:M,processPayment:q}=le(),p=t.useCedrosTheme(),{solanaError:W}=t.useCedrosContext(),{t:v,translations:F}=e.useTranslation(),ue=T||v("ui.subscribe_with_crypto"),U=a.useRef(k),G=a.useRef(R),V=a.useRef(q),Y=a.useRef(M);U.current=k,G.current=R,V.current=q,Y.current=M;const de=b&&typeof b!="string"?b?.code??null:null,ge=W&&typeof W!="string"?W?.code??null:null,X=r=>{if(!r||!F)return"";const m=F.errors[r];return m?m.action?`${m.message} ${m.action}`:m.message:""},H=b?typeof b=="string"?b:X(de):null,J=W?typeof W=="string"?W:X(ge):null,pe=a.useMemo(()=>g.map(r=>`${r.adapter.name}-${r.readyState}`).join(","),[g]),z=a.useMemo(()=>g.filter(({readyState:r})=>r===se.WalletReadyState.Installed||r===se.WalletReadyState.Loadable),[pe]);a.useEffect(()=>{I&&S&&l&&(t.getLogger().debug("[CryptoSubscribeButton] Auto-checking subscription status"),Y.current(o))},[I,S,l,o]),a.useEffect(()=>{w==="success"&&h==="active"&&(e.emitPaymentSuccess("crypto","subscription-active",o),U.current?.("subscription-active"))},[w,h,o]),a.useEffect(()=>{w==="error"&&b&&(e.emitPaymentError("crypto",b,o),G.current?.(b))},[w,b,o]);const Z=typeof window<"u"&&window.top!==window.self,[ee,A]=a.useState(!1),[te,K]=a.useState(!1),[re,j]=a.useState(!1),O=W;a.useEffect(()=>{let r=!1;return r||(async()=>{if(te&&i&&!S&&!L){t.getLogger().debug("[CryptoSubscribeButton] Wallet detected, attempting auto-connect:",i.adapter.name),K(!1),e.emitWalletConnect(i.adapter.name);try{await c(),r||t.getLogger().debug("[CryptoSubscribeButton] Auto-connect successful")}catch($){if(!r){t.getLogger().error("[CryptoSubscribeButton] Auto-connect failed:",$);const Se=$ instanceof Error?$.message:"Failed to connect wallet";e.emitWalletError(Se,i.adapter.name),j(!1)}}}})(),()=>{r=!0}},[i,te,S,L,c]),a.useEffect(()=>{S&&re&&l&&i&&(e.emitWalletConnected(i.adapter.name,l.toString()),t.getLogger().debug("[CryptoSubscribeButton] Processing pending subscription payment"),j(!1),A(!1),e.emitPaymentProcessing("crypto",o),V.current(o,d,{couponCode:u,intervalDays:f}))},[S,re,l,i,o,d,u,f]);const ne=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"),O){t.getLogger().error("[CryptoSubscribeButton] Solana dependencies missing:",O),e.emitPaymentError("crypto",O,o),R&&R(O);return}if(Z){const r=E||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 q(o,d,{couponCode:u,intervalDays:f});else{j(!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"),z.length===0){j(!1);const r="No wallets available";throw e.emitWalletError(r),new Error(r)}A(!0)}}catch(r){j(!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,Z,E,z,c,q,O,y,R]),oe=a.useMemo(()=>`crypto-subscribe-${o}-${d}`,[o,d]),me=a.useMemo(()=>e.createDedupedClickHandler(oe,ne,{cooldownMs:200,deduplicationWindowMs:0}),[oe,ne]),ae=w==="loading"||w==="checking",N=h==="active"||h==="trialing",ye=P||ae||L||!!O||N;let D=ue;if(ae)D=v("ui.processing");else if(N&&_){const r=new Date(_).toLocaleDateString();D=`${v("ui.subscribed_until")} ${r}`}else N&&(D=v("ui.subscribed"));const fe=a.useCallback(async()=>{try{K(!1),S&&await n(),s(null),A(!0)}catch(r){t.getLogger().error("Failed to change wallet:",r)}},[S,n,s]),be=a.useCallback(r=>{t.getLogger().debug("[CryptoSubscribeButton] Wallet clicked:",r),A(!1),s(r),K(!0)},[s]),Ce=a.useCallback(async()=>{try{if(await n(),j(!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:me,disabled:ye,className:p.unstyled?x:"cedros-theme__button cedros-theme__crypto",type:"button",children:D}),ee&&!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:v("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:z.map(r=>C.jsxs("button",{onClick:()=>be(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(we.WalletIcon,{wallet:r,style:{width:"24px",height:"24px"}}),C.jsx("span",{style:{fontWeight:500},children:r.adapter.name})]},r.adapter.name))})]})}),S&&!B&&!ee&&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:fe,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:v("wallet.change")}),C.jsx("button",{onClick:Ce,style:{background:"none",border:"none",padding:0,color:"inherit",textDecoration:"none",cursor:"pointer",fontSize:"inherit"},type:"button",children:v("ui.disconnect")})]}),!B&&J&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:J}),!B&&H&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__error",children:H}),!B&&N&&C.jsx("div",{className:p.unstyled?"":"cedros-theme__success",children:v("ui.subscription_active")})]})}function he(){const{x402Manager:o,walletManager:d}=t.useCedrosContext(),{publicKey:f,signTransaction:u}=Q.useWallet(),[T,P]=a.useState({status:"idle",error:null,transactionId:null}),[y,k]=a.useState(null),[R,x]=a.useState(null),E=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]),I=a.useCallback(async(c,n)=>{if(E.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");E.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}),w=await o.submitPayment({resource:c,payload:l,couponCode:n,metadata:void 0,resourceType:"refund"});return w.settlement&&x(w.settlement),P({status:"success",error:null,transactionId:w.transactionId||i.signature}),w}catch(s){const g=t.formatError(s,"Refund payment failed");throw P({status:"error",error:g,transactionId:null}),s}finally{E.current=!1}},[f,u,o,d]),S=a.useCallback(async c=>{if(E.current)throw new Error("Refund already in progress");if(!f||!u)throw new Error("Wallet not connected");E.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{E.current=!1}},[f,u,o,d]),L=a.useCallback(()=>{P({status:"idle",error:null,transactionId:null}),k(null),x(null)},[]);return{state:T,requirement:y,settlement:R,fetchRefundQuote:B,processRefund:I,processGaslessRefund:S,reset:L}}exports.CEDROS_EVENTS=e.CEDROS_EVENTS;exports.CSP_PRESETS=e.CSP_PRESETS;exports.CedrosPay=e.CedrosPay;exports.CedrosPayAdminDashboard=e.CedrosPayAdminDashboard;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.cedrosPayPlugin=e.cedrosPayPlugin;exports.createTranslator=e.createTranslator;exports.detectLocale=e.detectLocale;exports.ecommerce=e.index;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.CryptoButton=ie.CryptoButton;exports.useX402Payment=ie.useX402Payment;exports.WalletPool=ce.WalletPool;exports.createWalletPool=ce.createWalletPool;exports.CryptoSubscribeButton=Pe;exports.useCryptoSubscription=le;exports.useRefundVerification=he;
|