@ic-pay/icpay-widget 1.2.114 → 1.2.119

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.
@@ -1144,7 +1144,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1144
1144
  `}
1145
1145
  </div>
1146
1146
  </div>
1147
- `}import{LitElement as vt,html as de,css as wt}from"lit";import{customElement as bt,property as Et,state as $}from"lit/decorators.js";import{html as ne}from"lit";var Fe=new Set(["metamask","walletconnect","coinbase","brave","rainbow","rabby","okx","trust"]),st=new Set(["phantom","backpack"]);function q(r){return r?Fe.has(String(r).toLowerCase()):!1}function ot(r){return r&&(r.id||r.provider||r.key)||""}function ct(r){return r&&(r.label||r.name||r.title||r.id)||"Wallet"}function lt(r){return r&&(r.icon||r.logo||r.image)||null}function V(r){return(r||[]).map(l=>({id:ot(l),label:ct(l),icon:lt(l)}))}async function X(r,l){try{let e=l?.provider||(typeof window<"u"?window.ethereum:null);if(!e||r===void 0||r===null)return!0;let t=typeof r=="number"?r:String(r).startsWith("0x")?parseInt(String(r),16):parseInt(String(r),10);if(!Number.isFinite(t))return!0;let n=await e.request({method:"eth_chainId"});if(parseInt(n,16)===t)return!0;let i="0x"+t.toString(16);return await e.request({method:"wallet_switchEthereumChain",params:[{chainId:i}]}),!0}catch{try{let t=l?.provider||(typeof window<"u"?window.ethereum:null);if(!t||r===void 0||r===null)return!1;let n=typeof r=="number"?r:String(r).startsWith("0x")?parseInt(String(r),16):parseInt(String(r),10),a="0x"+n.toString(16),i=l?.chainName||`Network ${n}`,o=(l?.rpcUrlPublic?[l.rpcUrlPublic]:[]).filter(Boolean),c={name:l?.nativeSymbol||"ETH",symbol:l?.nativeSymbol||"ETH",decimals:typeof l?.decimals=="number"&&isFinite(l.decimals)?l.decimals:18};return await t.request({method:"wallet_addEthereumChain",params:[{chainId:a,chainName:i,rpcUrls:o,nativeCurrency:c}]}),!0}catch{return!1}}}async function Y(r){let{sdk:l,lastWalletId:e,connectedWallet:t,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o}=r,c,d=(e||"").toLowerCase(),p=(t?.owner||t?.principal||"").toString();try{d&&Fe.has(d)?c=await l?.client?.getExternalWalletBalances?.({network:"evm",address:p,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o}):d&&st.has(d)?c=await l?.client?.getExternalWalletBalances?.({network:"sol",address:p,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o}):c=await l?.client?.getExternalWalletBalances?.({network:"ic",principal:p,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o})}catch{c={balances:[],totalBalancesUSD:0,lastUpdated:new Date}}return{balances:(c?.balances||[]).map(h=>({ledgerId:h.ledgerId,ledgerName:h.ledgerName,ledgerSymbol:h.ledgerSymbol,tokenShortcode:h.tokenShortcode??h.shortcode??null,canisterId:h.canisterId,eip3009Version:h?.eip3009Version??null,x402Accepts:h?.x402Accepts!=null?!!h.x402Accepts:void 0,balance:h.balance,formattedBalance:h.formattedBalance,decimals:h.decimals,currentPrice:h.currentPrice,lastPriceUpdate:h.lastPriceUpdate?new Date(h.lastPriceUpdate):void 0,lastUpdated:h.lastUpdated?new Date(h.lastUpdated):new Date,chainId:typeof h.chainId=="string"?h.chainId:typeof h.chainId=="number"?String(h.chainId):void 0,chainName:h.chainName||h.chain&&(h.chain.name||h.chain.chainName)||h.networkName||void 0,rpcUrlPublic:h.rpcUrlPublic,chainUuid:h.chainUuid,requiredAmount:h.requiredAmount,requiredAmountFormatted:h.requiredAmountFormatted,hasSufficientBalance:h.hasSufficientBalance,logoUrl:h.logoUrl??null})),totalBalancesUSD:c?.totalBalancesUSD,lastUpdated:c?.lastUpdated?new Date(c.lastUpdated):new Date}}function Pe(r){let l=Number(r);if(!isFinite(l)||l===0)return"0";if(Math.abs(l)<1e-5)return"< 0.00001";let t=1e5;return(Math.trunc(l*t)/t).toFixed(5).replace(/\.0+$/,"").replace(/(\.[0-9]*?)0+$/,"$1")}import{html as G}from"lit";function Ue(r){let l=parseFloat(String(r.formattedBalance||"0")),e=Number(r.currentPrice??0),t=(isFinite(l)?l:0)*(isFinite(e)?e:0);return isFinite(t)?t:0}var De=(r,l)=>Ue(l)-Ue(r);function Te(){return G`<style>
1147
+ `}import{LitElement as vt,html as de,css as wt}from"lit";import{customElement as bt,property as Et,state as $}from"lit/decorators.js";import{html as ne}from"lit";var Fe=new Set(["metamask","walletconnect","coinbase","brave","rainbow","rabby","okx","trust"]),st=new Set(["phantom","solflare","backpack"]);function q(r){return r?Fe.has(String(r).toLowerCase()):!1}function ot(r){return r&&(r.id||r.provider||r.key)||""}function ct(r){return r&&(r.label||r.name||r.title||r.id)||"Wallet"}function lt(r){return r&&(r.icon||r.logo||r.image)||null}function V(r){return(r||[]).map(l=>({id:ot(l),label:ct(l),icon:lt(l)}))}async function X(r,l){try{let e=l?.provider||(typeof window<"u"?window.ethereum:null);if(!e||r===void 0||r===null)return!0;let t=typeof r=="number"?r:String(r).startsWith("0x")?parseInt(String(r),16):parseInt(String(r),10);if(!Number.isFinite(t))return!0;let n=await e.request({method:"eth_chainId"});if(parseInt(n,16)===t)return!0;let i="0x"+t.toString(16);return await e.request({method:"wallet_switchEthereumChain",params:[{chainId:i}]}),!0}catch{try{let t=l?.provider||(typeof window<"u"?window.ethereum:null);if(!t||r===void 0||r===null)return!1;let n=typeof r=="number"?r:String(r).startsWith("0x")?parseInt(String(r),16):parseInt(String(r),10),a="0x"+n.toString(16),i=l?.chainName||`Network ${n}`,o=(l?.rpcUrlPublic?[l.rpcUrlPublic]:[]).filter(Boolean),c={name:l?.nativeSymbol||"ETH",symbol:l?.nativeSymbol||"ETH",decimals:typeof l?.decimals=="number"&&isFinite(l.decimals)?l.decimals:18};return await t.request({method:"wallet_addEthereumChain",params:[{chainId:a,chainName:i,rpcUrls:o,nativeCurrency:c}]}),!0}catch{return!1}}}async function Y(r){let{sdk:l,lastWalletId:e,connectedWallet:t,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o}=r,c,d=(e||"").toLowerCase(),p=(t?.owner||t?.principal||"").toString();try{d&&Fe.has(d)?c=await l?.client?.getExternalWalletBalances?.({network:"evm",address:p,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o}):d&&st.has(d)?c=await l?.client?.getExternalWalletBalances?.({network:"sol",address:p,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o}):c=await l?.client?.getExternalWalletBalances?.({network:"ic",principal:p,amountUsd:n,fiatCurrency:a,chainShortcodes:i,tokenShortcodes:o})}catch{c={balances:[],totalBalancesUSD:0,lastUpdated:new Date}}return{balances:(c?.balances||[]).map(h=>({ledgerId:h.ledgerId,ledgerName:h.ledgerName,ledgerSymbol:h.ledgerSymbol,tokenShortcode:h.tokenShortcode??h.shortcode??null,canisterId:h.canisterId,eip3009Version:h?.eip3009Version??null,x402Accepts:h?.x402Accepts!=null?!!h.x402Accepts:void 0,balance:h.balance,formattedBalance:h.formattedBalance,decimals:h.decimals,currentPrice:h.currentPrice,lastPriceUpdate:h.lastPriceUpdate?new Date(h.lastPriceUpdate):void 0,lastUpdated:h.lastUpdated?new Date(h.lastUpdated):new Date,chainId:typeof h.chainId=="string"?h.chainId:typeof h.chainId=="number"?String(h.chainId):void 0,chainName:h.chainName||h.chain&&(h.chain.name||h.chain.chainName)||h.networkName||void 0,rpcUrlPublic:h.rpcUrlPublic,chainUuid:h.chainUuid,requiredAmount:h.requiredAmount,requiredAmountFormatted:h.requiredAmountFormatted,hasSufficientBalance:h.hasSufficientBalance,logoUrl:h.logoUrl??null})),totalBalancesUSD:c?.totalBalancesUSD,lastUpdated:c?.lastUpdated?new Date(c.lastUpdated):new Date}}function Pe(r){let l=Number(r);if(!isFinite(l)||l===0)return"0";if(Math.abs(l)<1e-5)return"< 0.00001";let t=1e5;return(Math.trunc(l*t)/t).toFixed(5).replace(/\.0+$/,"").replace(/(\.[0-9]*?)0+$/,"$1")}import{html as G}from"lit";function Ue(r){let l=parseFloat(String(r.formattedBalance||"0")),e=Number(r.currentPrice??0),t=(isFinite(l)?l:0)*(isFinite(e)?e:0);return isFinite(t)?t:0}var De=(r,l)=>Ue(l)-Ue(r);function Te(){return G`<style>
1148
1148
  /* Theme-aware color variables - Light mode defaults */
1149
1149
  .modal {
1150
1150
  --icpay-background: #ffffff;
@@ -1343,28 +1343,28 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1343
1343
  justify-content: stretch;
1344
1344
  padding: 0;
1345
1345
  }
1346
- .modal {
1347
- max-width:100%;
1348
- width:100%;
1346
+ .modal {
1347
+ max-width:100%;
1348
+ width:100%;
1349
1349
  height:auto;
1350
- max-height:50vh;
1351
- border-radius:24px 24px 0 0;
1352
- margin:0;
1350
+ max-height:50vh;
1351
+ border-radius:24px 24px 0 0;
1352
+ margin:0;
1353
1353
  padding:16px;
1354
- transform:translateY(100%);
1355
- overflow:hidden;
1356
- display:flex;
1354
+ transform:translateY(100%);
1355
+ overflow:hidden;
1356
+ display:flex;
1357
1357
  flex-direction:column;
1358
1358
  transition:transform 0.3s cubic-bezier(0.32, 0.72, 0, 1);
1359
1359
  align-self: flex-end;
1360
1360
  }
1361
- .icpay-modal-overlay:not([style*="display: none"]) .modal {
1362
- transform:translateY(0);
1361
+ .icpay-modal-overlay:not([style*="display: none"]) .modal {
1362
+ transform:translateY(0);
1363
1363
  }
1364
- .wallet-list {
1365
- overflow-y:auto;
1366
- flex:1;
1367
- min-height:0;
1364
+ .wallet-list {
1365
+ overflow-y:auto;
1366
+ flex:1;
1367
+ min-height:0;
1368
1368
  max-height:calc(50vh - 120px); /* Account for header, footer, and padding */
1369
1369
  }
1370
1370
  }
@@ -1373,7 +1373,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1373
1373
  .close-button:hover { opacity:1; }
1374
1374
  .title { font-size:20px; font-weight:600; text-align:center; margin:0; }
1375
1375
  .wallet-list { display:flex; flex-direction:column; gap:0; overflow-y:auto; flex:1; padding-right:8px; padding-top:4px; scrollbar-gutter: stable; }
1376
- .wallet-item { display:flex; align-items:center; padding:16px 12px; cursor:pointer; transition:background-color 0.2s; border-radius:12px; }
1376
+ .wallet-item { display:flex; align-items:center; padding:14px 12px; cursor:pointer; transition:background-color 0.2s; border-radius:12px; }
1377
1377
  .wallet-item:hover { background-color:var(--icpay-accent); }
1378
1378
  .wallet-icon { width:48px; height:48px; border-radius:12px; margin-right:16px; display:flex; align-items:center; justify-content:center; font-size:24px; overflow:hidden; }
1379
1379
  .oisy-icon { background-color:var(--icpay-primary); }
@@ -1409,7 +1409,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1409
1409
  </div>
1410
1410
  <div class="divider"></div>
1411
1411
  `:null}
1412
- ${(()=>{let y=[],h=null;return c.forEach(u=>{let m=(u.id||"").toLowerCase(),j=ht(u.id,u.label),Me=q(m),We=m==="phantom"||m==="backpack"?"sol":Me?"evm":"ic";h!==null&&We!==h&&y.push(ne`<div class="divider"></div>`);let _e=m==="oisy"||m==="plug"||m==="nfid"||m==="ii"?"Internet Computer":m==="phantom"||m==="backpack"?"Solana":Me?"Ethereum-compatible":"";y.push(ne`
1412
+ ${(()=>{let y=[],h=null;return c.forEach(u=>{let m=(u.id||"").toLowerCase(),j=ht(u.id,u.label),Me=q(m),We=m==="phantom"||m==="solflare"||m==="backpack"?"sol":Me?"evm":"ic";h!==null&&We!==h&&y.push(ne`<div class="divider"></div>`);let _e=m==="oisy"||m==="plug"||m==="nfid"||m==="ii"?"Internet Computer":m==="phantom"||m==="solflare"||m==="backpack"?"Solana":Me?"Ethereum-compatible":"";y.push(ne`
1413
1413
  <div class="wallet-item" style="opacity:${n?.6:1}" @click=${()=>e(u.id)}>
1414
1414
  <div class="wallet-icon">
1415
1415
  ${u.icon?ne`<img src="${pt(u.icon)}" alt="${j} logo" class="icpay-w-8 icpay-h-8" style="object-fit:contain" />`:ne`<span>${j.charAt(0)}</span>`}
@@ -1488,7 +1488,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1488
1488
  ${Le({isLoading:r.isLoading,error:r.error,balances:r.balances,onBack:r.onClose,onSelect:r.onSelect})}
1489
1489
  </div>
1490
1490
  </div>
1491
- `}function J(r){if(!r||String(r).toLowerCase()!=="coinbase")return!1;try{let l=typeof navigator<"u"?String(navigator.userAgent||"").toLowerCase():"";return l.includes("iphone")||l.includes("ipad")}catch{return!1}}function I(r){try{let l=r||{};l.adapters=l.adapters||{};let e=l.adapters.oisy||{},t=e.config||{},n={...t.transport||{},windowOpenerFeatures:"",detectNonClickEstablishment:!1};return l.adapters.oisy={...e,config:{...t,transport:n}},l}catch{return r}}function x(r,l){try{let e=l&&(l.owner||l.principal)||null,t=r&&r.account&&(r.account.owner||r.account.principal)||null,n=i=>typeof i=="string"?i:i&&typeof i.toString=="function"?i.toString():null,a=n(e)||n(t)||null;return a?{owner:a,principal:a}:l||{owner:null}}catch{return l||{owner:null}}}async function ae(r){try{let l=typeof r?.getEnabledWallets=="function"?r.getEnabledWallets.bind(r):null;if(!l)return null;let t=(l()||[]).find(c=>(c?.id||"").toLowerCase()==="oisy");if(!t||!t.adapter)return null;let n=t.adapter,a=new n({config:r?.config||{}});if(!await a.isConnected())return null;let o=await a.getPrincipal();return o&&o!=="2vxsx-fae"?o:null}catch{return null}}function gt(){try{typeof window<"u"&&window.dispatchEvent(new CustomEvent("icpay-payment-reset"))}catch{}}function mt(r){let l=r;if(!l||typeof l!="object")return;let e=l.onrampNotifyController;if(e){try{e.stop()}catch{}l.onrampNotifyController=null}let t=l.onrampPollTimer;if(t!=null){try{clearTimeout(t)}catch{}l.onrampPollTimer=null}"onrampPollingActive"in l&&(l.onrampPollingActive=!1)}function ft(r){let l=r;if(!l||typeof l!="object")return;let e=l.config,t=l.pnp;if(!(e?.useOwnWallet||!t||!e)){try{t.disconnect?.()}catch{}l.config={...e,actorProvider:void 0,connectedWallet:void 0}}}function ee(r,l){let e=r??{};if(typeof e!="object")return;let t=!!l.keepWalletConnected;gt(),e.errorMessage=null,e.errorSeverity=null,e.errorAction=null,e.processing=!1,e.showBalanceModal=!1,e.selectedSymbol=null,e.pendingAction=l.pendingAction,e.oisyReadyToPay=!1,e.showOnrampModal=!1,e.onrampUrl=null,e.onrampPaymentIntentId=null,e.onrampErrorMessage=null,t||(e.showWalletModal=!0,e.walletModalStep="connect",e.lastWalletId=null,e.walletConnected=!1),"succeeded"in e&&(e.succeeded=!1),"skipDisconnectOnce"in e&&(e.skipDisconnectOnce=!1),"oisySignerPreopened"in e&&(e.oisySignerPreopened=!1),"showProviderPicker"in e&&(e.showProviderPicker=!1),"selectedOnrampProvider"in e&&(e.selectedOnrampProvider=null),mt(r),t||ft(r);let n=r.requestUpdate;typeof n=="function"&&n.call(r)}var ze=typeof window<"u",ie=null;function Ee(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var T=class extends vt{constructor(){super(...arguments);this.selectedSymbol=null;this.unlocked=!1;this.succeeded=!1;this.processing=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.sdk=null;this.onTransactionCompleted=null;this.onUnlock=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="pay",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.config?.priceUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;this.showBalanceModal=!1,this.showWalletModal=!1,X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.config?.priceUsd??0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"premium:x402"}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency});return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}});return}this.showBalanceModal=!1,this.showWalletModal=!1;let n=this.pendingAction;if(this.pendingAction=null,n==="pay")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.config?.priceUsd??0),c=String(a?.chainName||a?.ledgerName||"").toLowerCase(),d=c.includes("sol"),p=this.config?.recipientAddresses||{},y=d&&p.sol||p.ic,h=c.includes("ic");if(a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":h?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"premium:x402"}},recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;ie||(ie=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let n={...this.config?.plugNPlay||{}};try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new ie(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}async getOrCreatePnp(){if(this.pnp)return this.pnp;ie||(ie=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new ie(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!ze){Ee(this.config?.debug||!1,"Premium content connected",{config:this.config}),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.showBalanceModal=!1,this.requestUpdate()}))}catch{}this.onTransactionCompleted=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1;try{window.dispatchEvent(new CustomEvent("icpay-unlock",{detail:{amount:this.config?.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.requestUpdate()});try{window.addEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}this.onUnlock=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1,this.requestUpdate()});try{window.addEventListener("icpay-unlock",this.onUnlock)}catch{}}}disconnectedCallback(){super.disconnectedCallback();try{window.removeEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}if(this.onTransactionCompleted)try{window.removeEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}if(this.onUnlock)try{window.removeEventListener("icpay-unlock",this.onUnlock)}catch{}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="pay"&&this.onPay()},0))}}resetPaymentFlow(){ee(this,{pendingAction:"pay"})}async onPay(){if(ze&&!this.unlocked){this.resetPaymentFlow(),Ee(this.config?.debug||!1,"Premium content payment started",{priceUsd:this.config.priceUsd,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:this.config.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="pay",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){Ee(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{ie||(ie=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new ie(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.onPay();return}}catch{}let n=this.pnp.getEnabledWallets();if(Ee(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="pay",this.showWalletModal=!0;return}catch(e){Ee(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,await this.fetchAndShowBalances("pay");return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.config.priceUsd,void 0,{context:"premium:onramp",onrampPayment:!0,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}select(e){this.selectedSymbol=e}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances("pay")}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(e){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let t=E(this.config),{balances:n}=await Y({sdk:t,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.config?.priceUsd??0),fiatCurrency:this.config?.fiat_currency});this.walletBalances=n,this.pendingAction=e}catch(t){this.walletBalances=[],this.balancesError=t&&(t.message||String(t))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?de`
1491
+ `}function J(r){if(!r||String(r).toLowerCase()!=="coinbase")return!1;try{let l=typeof navigator<"u"?String(navigator.userAgent||"").toLowerCase():"";return l.includes("iphone")||l.includes("ipad")}catch{return!1}}function I(r){try{let l=r||{};l.adapters=l.adapters||{};let e=l.adapters.oisy||{},t=e.config||{},n={...t.transport||{},windowOpenerFeatures:"",detectNonClickEstablishment:!1};return l.adapters.oisy={...e,config:{...t,transport:n}},l}catch{return r}}function x(r,l){try{let e=l&&(l.owner||l.principal)||null,t=r&&r.account&&(r.account.owner||r.account.principal)||null,n=i=>typeof i=="string"?i:i&&typeof i.toString=="function"?i.toString():null,a=n(e)||n(t)||null;return a?{owner:a,principal:a}:l||{owner:null}}catch{return l||{owner:null}}}async function ae(r){try{let l=typeof r?.getEnabledWallets=="function"?r.getEnabledWallets.bind(r):null;if(!l)return null;let t=(l()||[]).find(c=>(c?.id||"").toLowerCase()==="oisy");if(!t||!t.adapter)return null;let n=t.adapter,a=new n({config:r?.config||{}});if(!await a.isConnected())return null;let o=await a.getPrincipal();return o&&o!=="2vxsx-fae"?o:null}catch{return null}}function gt(){try{typeof window<"u"&&window.dispatchEvent(new CustomEvent("icpay-payment-reset"))}catch{}}function mt(r){let l=r;if(!l||typeof l!="object")return;let e=l.onrampNotifyController;if(e){try{e.stop()}catch{}l.onrampNotifyController=null}let t=l.onrampPollTimer;if(t!=null){try{clearTimeout(t)}catch{}l.onrampPollTimer=null}"onrampPollingActive"in l&&(l.onrampPollingActive=!1)}function ft(r){let l=r;if(!l||typeof l!="object")return;let e=l.config,t=l.pnp;if(!(e?.useOwnWallet||!t||!e)){try{t.disconnect?.()}catch{}l.config={...e,actorProvider:void 0,connectedWallet:void 0}}}function ee(r,l){let e=r??{};if(typeof e!="object")return;let t=!!l.keepWalletConnected;gt(),e.errorMessage=null,e.errorSeverity=null,e.errorAction=null,e.processing=!1,e.showBalanceModal=!1,e.selectedSymbol=null,e.pendingAction=l.pendingAction,e.oisyReadyToPay=!1,e.showOnrampModal=!1,e.onrampUrl=null,e.onrampPaymentIntentId=null,e.onrampErrorMessage=null,t||(e.showWalletModal=!0,e.walletModalStep="connect",e.lastWalletId=null,e.walletConnected=!1),"succeeded"in e&&(e.succeeded=!1),"skipDisconnectOnce"in e&&(e.skipDisconnectOnce=!1),"oisySignerPreopened"in e&&(e.oisySignerPreopened=!1),"showProviderPicker"in e&&(e.showProviderPicker=!1),"selectedOnrampProvider"in e&&(e.selectedOnrampProvider=null),mt(r),t||ft(r);let n=r.requestUpdate;typeof n=="function"&&n.call(r)}var ze=typeof window<"u",ie=null;function Ee(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var T=class extends vt{constructor(){super(...arguments);this.selectedSymbol=null;this.unlocked=!1;this.succeeded=!1;this.processing=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.sdk=null;this.onTransactionCompleted=null;this.onUnlock=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="pay",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.config?.priceUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;this.showBalanceModal=!1,this.showWalletModal=!1,X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.config?.priceUsd??0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"premium:x402"}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency});return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}});return}this.showBalanceModal=!1,this.showWalletModal=!1;let n=this.pendingAction;if(this.pendingAction=null,n==="pay")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.config?.priceUsd??0),c=String(a?.chainName||a?.ledgerName||"").toLowerCase(),d=c.includes("sol"),p=this.config?.recipientAddresses||{},y=d&&p.sol||p.ic,h=c.includes("ic");if(a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":h?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"premium:x402"}},recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;ie||(ie=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let n={...this.config?.plugNPlay||{}};try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new ie(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}async getOrCreatePnp(){if(this.pnp)return this.pnp;ie||(ie=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new ie(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!ze){Ee(this.config?.debug||!1,"Premium content connected",{config:this.config}),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.showBalanceModal=!1,this.requestUpdate()}))}catch{}this.onTransactionCompleted=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1;try{window.dispatchEvent(new CustomEvent("icpay-unlock",{detail:{amount:this.config?.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.requestUpdate()});try{window.addEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}this.onUnlock=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1,this.requestUpdate()});try{window.addEventListener("icpay-unlock",this.onUnlock)}catch{}}}disconnectedCallback(){super.disconnectedCallback();try{window.removeEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}if(this.onTransactionCompleted)try{window.removeEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}if(this.onUnlock)try{window.removeEventListener("icpay-unlock",this.onUnlock)}catch{}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="pay"&&this.onPay()},0))}}resetPaymentFlow(){ee(this,{pendingAction:"pay"})}async onPay(){if(ze&&!this.unlocked){this.resetPaymentFlow(),Ee(this.config?.debug||!1,"Premium content payment started",{priceUsd:this.config.priceUsd,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:this.config.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="pay",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){Ee(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{ie||(ie=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new ie(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.onPay();return}}catch{}let n=this.pnp.getEnabledWallets();if(Ee(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="pay",this.showWalletModal=!0;return}catch(e){Ee(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,await this.fetchAndShowBalances("pay");return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.config.priceUsd,void 0,{context:"premium:onramp",onrampPayment:!0,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}select(e){this.selectedSymbol=e}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances("pay")}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(e){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let t=E(this.config),{balances:n}=await Y({sdk:t,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.config?.priceUsd??0),fiatCurrency:this.config?.fiat_currency});this.walletBalances=n,this.pendingAction=e}catch(t){this.walletBalances=[],this.balancesError=t&&(t.message||String(t))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?de`
1492
1492
  <div class="icpay-card icpay-section icpay-widget-base">
1493
1493
  ${this.config?.progressBar?.enabled!==!1?de`
1494
1494
  <icpay-progress-bar
@@ -1586,7 +1586,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1586
1586
  border-color: var(--icpay-error-border);
1587
1587
  color: var(--icpay-error-text);
1588
1588
  }
1589
- `],s([Et({type:Object})],T.prototype,"config",2),s([$()],T.prototype,"selectedSymbol",2),s([$()],T.prototype,"unlocked",2),s([$()],T.prototype,"succeeded",2),s([$()],T.prototype,"processing",2),s([$()],T.prototype,"errorMessage",2),s([$()],T.prototype,"errorSeverity",2),s([$()],T.prototype,"errorAction",2),s([$()],T.prototype,"walletConnected",2),s([$()],T.prototype,"pendingAction",2),s([$()],T.prototype,"showWalletModal",2),s([$()],T.prototype,"walletModalStep",2),s([$()],T.prototype,"oisyReadyToPay",2),s([$()],T.prototype,"lastWalletId",2),s([$()],T.prototype,"showOnrampModal",2),s([$()],T.prototype,"onrampUrl",2),s([$()],T.prototype,"onrampPaymentIntentId",2),s([$()],T.prototype,"onrampErrorMessage",2),s([$()],T.prototype,"showBalanceModal",2),s([$()],T.prototype,"balancesLoading",2),s([$()],T.prototype,"balancesError",2),s([$()],T.prototype,"walletBalances",2),T=s([bt("icpay-premium-content")],T);import{LitElement as xt,html as pe,css as kt}from"lit";import{customElement as St,property as Ct,state as U}from"lit/decorators.js";var qe=typeof window<"u",re=null;function xe(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var W=class extends xt{constructor(){super(...arguments);this.selectedAmount=1;this.selectedSymbol=null;this.total=0;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.sdk=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="tip",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.selectedAmount||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"tip",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.selectedAmount||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"tip:x402"}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="tip")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.selectedAmount||0),c=String(a?.ledgerName||a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=c.includes("ic"),y=this.config?.recipientAddresses||{},h=d&&y.sol||y.ic;if(a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":p?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"tip:x402"}},recipientAddress:h||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:h||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;re||(re=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let n=I({...this.config?.plugNPlay||{}});try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new re(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}get amounts(){return this.config?.amountsUsd||[1,5,10]}async getOrCreatePnp(){if(this.pnp)return this.pnp;re||(re=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new re(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!qe){xe(this.config?.debug||!1,"Tip jar connected",{config:this.config}),this.config&&this.config.defaultAmountUsd&&(this.selectedAmount=this.config.defaultAmountUsd),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="tip"&&this.tip()},0))}}selectAmount(e){this.selectedAmount=e}selectSymbol(e){this.selectedSymbol=e}get fillPercentage(){return Math.min(this.total/50*100,100)}resetPaymentFlow(){ee(this,{pendingAction:"tip"})}async tip(){if(qe){this.resetPaymentFlow(),xe(this.config?.debug||!1,"Tip button clicked!",{config:this.config,processing:this.processing});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"tip",type:"sendUsd",amount:this.selectedAmount,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="tip",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){xe(this.config?.debug||!1,"Connecting to wallet via wallet");try{re||(re=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new re(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.tip();return}}catch{}let n=this.pnp.getEnabledWallets();if(xe(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="tip",this.showWalletModal=!0;return}catch(e){xe(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.selectedAmount,void 0,{context:"tip:onramp",onrampPayment:!0,onrampProvider:this?.selectedOnrampProvider||"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.selectedAmount||0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?pe`
1589
+ `],s([Et({type:Object})],T.prototype,"config",2),s([$()],T.prototype,"selectedSymbol",2),s([$()],T.prototype,"unlocked",2),s([$()],T.prototype,"succeeded",2),s([$()],T.prototype,"processing",2),s([$()],T.prototype,"errorMessage",2),s([$()],T.prototype,"errorSeverity",2),s([$()],T.prototype,"errorAction",2),s([$()],T.prototype,"walletConnected",2),s([$()],T.prototype,"pendingAction",2),s([$()],T.prototype,"showWalletModal",2),s([$()],T.prototype,"walletModalStep",2),s([$()],T.prototype,"oisyReadyToPay",2),s([$()],T.prototype,"lastWalletId",2),s([$()],T.prototype,"showOnrampModal",2),s([$()],T.prototype,"onrampUrl",2),s([$()],T.prototype,"onrampPaymentIntentId",2),s([$()],T.prototype,"onrampErrorMessage",2),s([$()],T.prototype,"showBalanceModal",2),s([$()],T.prototype,"balancesLoading",2),s([$()],T.prototype,"balancesError",2),s([$()],T.prototype,"walletBalances",2),T=s([bt("icpay-premium-content")],T);import{LitElement as xt,html as pe,css as kt}from"lit";import{customElement as St,property as Ct,state as U}from"lit/decorators.js";var qe=typeof window<"u",re=null;function xe(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var W=class extends xt{constructor(){super(...arguments);this.selectedAmount=1;this.selectedSymbol=null;this.total=0;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.sdk=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="tip",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.selectedAmount||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"tip",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.selectedAmount||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"tip:x402"}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="tip")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.selectedAmount||0),c=String(a?.ledgerName||a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=c.includes("ic"),y=this.config?.recipientAddresses||{},h=d&&y.sol||y.ic;if(a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":p?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"tip:x402"}},recipientAddress:h||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:h||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;re||(re=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let n=I({...this.config?.plugNPlay||{}});try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new re(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}get amounts(){return this.config?.amountsUsd||[1,5,10]}async getOrCreatePnp(){if(this.pnp)return this.pnp;re||(re=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new re(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!qe){xe(this.config?.debug||!1,"Tip jar connected",{config:this.config}),this.config&&this.config.defaultAmountUsd&&(this.selectedAmount=this.config.defaultAmountUsd),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="tip"&&this.tip()},0))}}selectAmount(e){this.selectedAmount=e}selectSymbol(e){this.selectedSymbol=e}get fillPercentage(){return Math.min(this.total/50*100,100)}resetPaymentFlow(){ee(this,{pendingAction:"tip"})}async tip(){if(qe){this.resetPaymentFlow(),xe(this.config?.debug||!1,"Tip button clicked!",{config:this.config,processing:this.processing});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"tip",type:"sendUsd",amount:this.selectedAmount,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="tip",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){xe(this.config?.debug||!1,"Connecting to wallet via wallet");try{re||(re=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new re(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.tip();return}}catch{}let n=this.pnp.getEnabledWallets();if(xe(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="tip",this.showWalletModal=!0;return}catch(e){xe(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.selectedAmount,void 0,{context:"tip:onramp",onrampPayment:!0,onrampProvider:this?.selectedOnrampProvider||"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.selectedAmount||0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?pe`
1590
1590
  <div class="icpay-card icpay-section icpay-widget-base" style="text-align:center;">
1591
1591
  ${this.config?.progressBar?.enabled!==!1?pe`
1592
1592
  <icpay-progress-bar
@@ -1664,7 +1664,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1664
1664
  border-color: var(--icpay-error-border);
1665
1665
  color: var(--icpay-error-text);
1666
1666
  }
1667
- `],s([Ct({type:Object})],W.prototype,"config",2),s([U()],W.prototype,"selectedAmount",2),s([U()],W.prototype,"selectedSymbol",2),s([U()],W.prototype,"total",2),s([U()],W.prototype,"processing",2),s([U()],W.prototype,"succeeded",2),s([U()],W.prototype,"errorMessage",2),s([U()],W.prototype,"errorSeverity",2),s([U()],W.prototype,"errorAction",2),s([U()],W.prototype,"walletConnected",2),s([U()],W.prototype,"pendingAction",2),s([U()],W.prototype,"showWalletModal",2),s([U()],W.prototype,"walletModalStep",2),s([U()],W.prototype,"oisyReadyToPay",2),s([U()],W.prototype,"lastWalletId",2),s([U()],W.prototype,"showOnrampModal",2),s([U()],W.prototype,"onrampUrl",2),s([U()],W.prototype,"onrampPaymentIntentId",2),s([U()],W.prototype,"onrampErrorMessage",2),s([U()],W.prototype,"showBalanceModal",2),s([U()],W.prototype,"balancesLoading",2),s([U()],W.prototype,"balancesError",2),s([U()],W.prototype,"walletBalances",2),W=s([St("icpay-tip-jar")],W);import{LitElement as Mt,html as ve,css as Wt}from"lit";import{customElement as At,property as Oe,state as B}from"lit/decorators.js";var je=typeof window<"u",se=null;function ke(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var C=class extends Mt{constructor(){super(...arguments);this.title="Article Title";this.preview="";this.lockedContent="";this.selectedSymbol=null;this.unlocked=!1;this.succeeded=!1;this.processing=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.sdk=null;this.onTransactionCompleted=null;this.onUnlock=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="unlock",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.config?.priceUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"unlock",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;this.showBalanceModal=!1,this.showWalletModal=!1,X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.config?.priceUsd??0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"article:x402"}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency});return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}});return}this.showBalanceModal=!1,this.showWalletModal=!1;let n=this.pendingAction;if(this.pendingAction=null,n==="unlock")try{let a=(this.walletBalances||[]).find(h=>h?.tokenShortcode===e),i=E(this.config),o=Number(this.config?.priceUsd??0),d=String(a?.ledgerName||a?.chainName||"").toLowerCase().includes("sol"),p=this.config?.recipientAddresses||{},y=d&&p.sol||p.ic;if(d&&a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"sol",icpay_ledger_id:a?.ledgerId,icpay_context:"article:x402"}},recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(h){f(h,{onError:u=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:u,bubbles:!0})),v(u)&&(this.errorMessage=g(u),this.errorSeverity=b(u),this.errorAction=w(u))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(h=>{throw h})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}get obfuscatedLockedContent(){try{return(this.lockedContent||"").replace(/[^\s]/g,"x")}catch{return"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;se||(se=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let n={...this.config?.plugNPlay||{}};try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new se(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}async getOrCreatePnp(){if(this.pnp)return this.pnp;se||(se=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new se(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.config.priceUsd,void 0,{context:"article:onramp",onrampPayment:!0,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}connectedCallback(){if(super.connectedCallback(),!!je){ke(this.config?.debug||!1,"Article paywall connected",{config:this.config}),this.config&&(typeof this.config.title=="string"&&(this.title=this.config.title),typeof this.config.preview=="string"&&(this.preview=this.config.preview),typeof this.config.lockedContent=="string"&&(this.lockedContent=this.config.lockedContent)),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.showBalanceModal=!1,this.requestUpdate()}))}catch{}this.onTransactionCompleted=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1;try{window.dispatchEvent(new CustomEvent("icpay-unlock",{detail:{amount:this.config?.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.requestUpdate()});try{window.addEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}this.onUnlock=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1,this.requestUpdate()});try{window.addEventListener("icpay-unlock",this.onUnlock)}catch{}}}disconnectedCallback(){super.disconnectedCallback();try{window.removeEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}if(this.onTransactionCompleted)try{window.removeEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}if(this.onUnlock)try{window.removeEventListener("icpay-unlock",this.onUnlock)}catch{}}updated(e){if(e.has("config")&&this.config&&(typeof this.config.title=="string"&&(this.title=this.config.title),typeof this.config.preview=="string"&&(this.preview=this.config.preview),typeof this.config.lockedContent=="string"&&(this.lockedContent=this.config.lockedContent)),e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="unlock"&&this.unlock()},0))}}selectSymbol(e){this.selectedSymbol=e}resetPaymentFlow(){ee(this,{pendingAction:"unlock"})}async unlock(){if(je&&!this.unlocked){this.resetPaymentFlow(),ke(this.config?.debug||!1,"Article paywall unlock started",{priceUsd:this.config.priceUsd,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"unlock",type:"sendUsd",amount:this.config.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="unlock",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){ke(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{se||(se=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new se(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.unlock();return}}catch{}let n=this.pnp.getEnabledWallets();if(ke(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="unlock",this.showWalletModal=!0;return}catch(e){ke(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.showWalletModal=!1,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.config?.priceUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?ve`
1667
+ `],s([Ct({type:Object})],W.prototype,"config",2),s([U()],W.prototype,"selectedAmount",2),s([U()],W.prototype,"selectedSymbol",2),s([U()],W.prototype,"total",2),s([U()],W.prototype,"processing",2),s([U()],W.prototype,"succeeded",2),s([U()],W.prototype,"errorMessage",2),s([U()],W.prototype,"errorSeverity",2),s([U()],W.prototype,"errorAction",2),s([U()],W.prototype,"walletConnected",2),s([U()],W.prototype,"pendingAction",2),s([U()],W.prototype,"showWalletModal",2),s([U()],W.prototype,"walletModalStep",2),s([U()],W.prototype,"oisyReadyToPay",2),s([U()],W.prototype,"lastWalletId",2),s([U()],W.prototype,"showOnrampModal",2),s([U()],W.prototype,"onrampUrl",2),s([U()],W.prototype,"onrampPaymentIntentId",2),s([U()],W.prototype,"onrampErrorMessage",2),s([U()],W.prototype,"showBalanceModal",2),s([U()],W.prototype,"balancesLoading",2),s([U()],W.prototype,"balancesError",2),s([U()],W.prototype,"walletBalances",2),W=s([St("icpay-tip-jar")],W);import{LitElement as Mt,html as ve,css as Wt}from"lit";import{customElement as At,property as Oe,state as B}from"lit/decorators.js";var je=typeof window<"u",se=null;function ke(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var C=class extends Mt{constructor(){super(...arguments);this.title="Article Title";this.preview="";this.lockedContent="";this.selectedSymbol=null;this.unlocked=!1;this.succeeded=!1;this.processing=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.sdk=null;this.onTransactionCompleted=null;this.onUnlock=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="unlock",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.config?.priceUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"unlock",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;this.showBalanceModal=!1,this.showWalletModal=!1,X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.config?.priceUsd??0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"article:x402"}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency});return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}});return}this.showBalanceModal=!1,this.showWalletModal=!1;let n=this.pendingAction;if(this.pendingAction=null,n==="unlock")try{let a=(this.walletBalances||[]).find(h=>h?.tokenShortcode===e),i=E(this.config),o=Number(this.config?.priceUsd??0),d=String(a?.ledgerName||a?.chainName||"").toLowerCase().includes("sol"),p=this.config?.recipientAddresses||{},y=d&&p.sol||p.ic;if(d&&a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"sol",icpay_ledger_id:a?.ledgerId,icpay_context:"article:x402"}},recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(h){f(h,{onError:u=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:u,bubbles:!0})),v(u)&&(this.errorMessage=g(u),this.errorSeverity=b(u),this.errorAction=w(u))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(h=>{throw h})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}get obfuscatedLockedContent(){try{return(this.lockedContent||"").replace(/[^\s]/g,"x")}catch{return"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;se||(se=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let n={...this.config?.plugNPlay||{}};try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new se(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}async getOrCreatePnp(){if(this.pnp)return this.pnp;se||(se=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new se(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.config.priceUsd,void 0,{context:"article:onramp",onrampPayment:!0,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}connectedCallback(){if(super.connectedCallback(),!!je){ke(this.config?.debug||!1,"Article paywall connected",{config:this.config}),this.config&&(typeof this.config.title=="string"&&(this.title=this.config.title),typeof this.config.preview=="string"&&(this.preview=this.config.preview),typeof this.config.lockedContent=="string"&&(this.lockedContent=this.config.lockedContent)),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.showBalanceModal=!1,this.requestUpdate()}))}catch{}this.onTransactionCompleted=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1;try{window.dispatchEvent(new CustomEvent("icpay-unlock",{detail:{amount:this.config?.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.requestUpdate()});try{window.addEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}this.onUnlock=(()=>{this.unlocked=!0,this.succeeded=!0,this.processing=!1,this.requestUpdate()});try{window.addEventListener("icpay-unlock",this.onUnlock)}catch{}}}disconnectedCallback(){super.disconnectedCallback();try{window.removeEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}if(this.onTransactionCompleted)try{window.removeEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}if(this.onUnlock)try{window.removeEventListener("icpay-unlock",this.onUnlock)}catch{}}updated(e){if(e.has("config")&&this.config&&(typeof this.config.title=="string"&&(this.title=this.config.title),typeof this.config.preview=="string"&&(this.preview=this.config.preview),typeof this.config.lockedContent=="string"&&(this.lockedContent=this.config.lockedContent)),e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="unlock"&&this.unlock()},0))}}selectSymbol(e){this.selectedSymbol=e}resetPaymentFlow(){ee(this,{pendingAction:"unlock"})}async unlock(){if(je&&!this.unlocked){this.resetPaymentFlow(),ke(this.config?.debug||!1,"Article paywall unlock started",{priceUsd:this.config.priceUsd,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"unlock",type:"sendUsd",amount:this.config.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="unlock",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){ke(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{se||(se=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new se(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.unlock();return}}catch{}let n=this.pnp.getEnabledWallets();if(ke(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="unlock",this.showWalletModal=!0;return}catch(e){ke(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.showWalletModal=!1,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.config?.priceUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?ve`
1668
1668
  <div class="icpay-card icpay-section icpay-widget-base">
1669
1669
  ${this.config?.progressBar?.enabled!==!1?ve`
1670
1670
  <icpay-progress-bar
@@ -1737,7 +1737,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1737
1737
  border-color: var(--icpay-error-border);
1738
1738
  color: var(--icpay-error-text);
1739
1739
  }
1740
- `],s([Oe({type:Object})],C.prototype,"config",2),s([Oe({type:String})],C.prototype,"title",2),s([Oe({type:String})],C.prototype,"preview",2),s([Oe({type:String})],C.prototype,"lockedContent",2),s([B()],C.prototype,"selectedSymbol",2),s([B()],C.prototype,"unlocked",2),s([B()],C.prototype,"succeeded",2),s([B()],C.prototype,"processing",2),s([B()],C.prototype,"errorMessage",2),s([B()],C.prototype,"errorSeverity",2),s([B()],C.prototype,"errorAction",2),s([B()],C.prototype,"walletConnected",2),s([B()],C.prototype,"pendingAction",2),s([B()],C.prototype,"showWalletModal",2),s([B()],C.prototype,"walletModalStep",2),s([B()],C.prototype,"oisyReadyToPay",2),s([B()],C.prototype,"lastWalletId",2),s([B()],C.prototype,"showOnrampModal",2),s([B()],C.prototype,"onrampUrl",2),s([B()],C.prototype,"onrampPaymentIntentId",2),s([B()],C.prototype,"onrampErrorMessage",2),s([B()],C.prototype,"showBalanceModal",2),s([B()],C.prototype,"balancesLoading",2),s([B()],C.prototype,"balancesError",2),s([B()],C.prototype,"walletBalances",2),C=s([At("icpay-article-paywall")],C);import{LitElement as Pt,html as he,css as Tt}from"lit";import{customElement as Lt,property as Ot,state as F}from"lit/decorators.js";var Ke=typeof window<"u",we=null;function Se(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var L=class extends Pt{constructor(){super(...arguments);this.selectedIndex=0;this.selectedSymbol=null;this.processing=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.sdk=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="order",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.selectedItem?.priceUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"order",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.selectedItem?.priceUsd||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"coffee:x402",item:this.selectedItem?.name}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,item:this.selectedItem?.name}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="order")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.selectedItem?.priceUsd||0),c=String(a?.ledgerName||a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=c.includes("ic"),y=this.config?.recipientAddresses||{},h=d&&y.sol||y.ic;if(a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":p?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"coffee:x402",item:this.selectedItem?.name}},recipientAddress:h||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId,item:this.selectedItem?.name}},recipientAddress:h||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}connectedCallback(){if(super.connectedCallback(),!!Ke){Se(this.config?.debug||!1,"Coffee shop connected",{config:this.config}),this.config&&typeof this.config.defaultItemIndex=="number"&&(this.selectedIndex=this.config.defaultItemIndex);try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="order"&&this.order()},0))}}selectItem(e){this.selectedIndex=e}selectSymbol(e){this.selectedSymbol=e}get selectedItem(){return this.config?.items?.[this.selectedIndex]||{name:"Loading...",priceUsd:0}}async getOrCreatePnp(){if(this.pnp)return this.pnp;we||(we=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new we(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}resetPaymentFlow(){ee(this,{pendingAction:"order"})}async order(){if(Ke){this.resetPaymentFlow(),Se(this.config?.debug||!1,"Coffee order started",{selectedItem:this.selectedItem,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"order",type:"sendUsd",amount:this.selectedItem.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="order",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){Se(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{we||(we=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}this.pnp=new we(t);try{let i=await ae(this.pnp);if(i){this.walletConnected=!0;let o=x(this.pnp,{owner:i,principal:i,connected:!0}),c=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.order();return}}catch{}let a=this.pnp.getEnabledWallets();if(Se(this.config?.debug||!1,"Available wallets",a),!a?.length)throw new Error("No wallets available");this.pendingAction="order",this.showWalletModal=!0;return}catch(e){Se(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.pendingAction="order",this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.selectedItem.priceUsd,void 0,{context:"coffee:onramp",onrampPayment:!0,item:this.selectedItem.name,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.selectedItem?.priceUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?he`
1740
+ `],s([Oe({type:Object})],C.prototype,"config",2),s([Oe({type:String})],C.prototype,"title",2),s([Oe({type:String})],C.prototype,"preview",2),s([Oe({type:String})],C.prototype,"lockedContent",2),s([B()],C.prototype,"selectedSymbol",2),s([B()],C.prototype,"unlocked",2),s([B()],C.prototype,"succeeded",2),s([B()],C.prototype,"processing",2),s([B()],C.prototype,"errorMessage",2),s([B()],C.prototype,"errorSeverity",2),s([B()],C.prototype,"errorAction",2),s([B()],C.prototype,"walletConnected",2),s([B()],C.prototype,"pendingAction",2),s([B()],C.prototype,"showWalletModal",2),s([B()],C.prototype,"walletModalStep",2),s([B()],C.prototype,"oisyReadyToPay",2),s([B()],C.prototype,"lastWalletId",2),s([B()],C.prototype,"showOnrampModal",2),s([B()],C.prototype,"onrampUrl",2),s([B()],C.prototype,"onrampPaymentIntentId",2),s([B()],C.prototype,"onrampErrorMessage",2),s([B()],C.prototype,"showBalanceModal",2),s([B()],C.prototype,"balancesLoading",2),s([B()],C.prototype,"balancesError",2),s([B()],C.prototype,"walletBalances",2),C=s([At("icpay-article-paywall")],C);import{LitElement as Pt,html as he,css as Tt}from"lit";import{customElement as Lt,property as Ot,state as F}from"lit/decorators.js";var Ke=typeof window<"u",we=null;function Se(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var L=class extends Pt{constructor(){super(...arguments);this.selectedIndex=0;this.selectedSymbol=null;this.processing=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.sdk=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="order",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.selectedItem?.priceUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"order",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.selectedItem?.priceUsd||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"coffee:x402",item:this.selectedItem?.name}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:a?.ledgerId,item:this.selectedItem?.name}},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="order")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.selectedItem?.priceUsd||0),c=String(a?.ledgerName||a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=c.includes("ic"),y=this.config?.recipientAddresses||{},h=d&&y.sol||y.ic;if(a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":p?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"coffee:x402",item:this.selectedItem?.name}},recipientAddress:h||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId,item:this.selectedItem?.name}},recipientAddress:h||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}connectedCallback(){if(super.connectedCallback(),!!Ke){Se(this.config?.debug||!1,"Coffee shop connected",{config:this.config}),this.config&&typeof this.config.defaultItemIndex=="number"&&(this.selectedIndex=this.config.defaultItemIndex);try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="order"&&this.order()},0))}}selectItem(e){this.selectedIndex=e}selectSymbol(e){this.selectedSymbol=e}get selectedItem(){return this.config?.items?.[this.selectedIndex]||{name:"Loading...",priceUsd:0}}async getOrCreatePnp(){if(this.pnp)return this.pnp;we||(we=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new we(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}resetPaymentFlow(){ee(this,{pendingAction:"order"})}async order(){if(Ke){this.resetPaymentFlow(),Se(this.config?.debug||!1,"Coffee order started",{selectedItem:this.selectedItem,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"order",type:"sendUsd",amount:this.selectedItem.priceUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="order",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){Se(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{we||(we=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}this.pnp=new we(t);try{let i=await ae(this.pnp);if(i){this.walletConnected=!0;let o=x(this.pnp,{owner:i,principal:i,connected:!0}),c=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.order();return}}catch{}let a=this.pnp.getEnabledWallets();if(Se(this.config?.debug||!1,"Available wallets",a),!a?.length)throw new Error("No wallets available");this.pendingAction="order",this.showWalletModal=!0;return}catch(e){Se(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.pendingAction="order",this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.selectedItem.priceUsd,void 0,{context:"coffee:onramp",onrampPayment:!0,item:this.selectedItem.name,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.selectedItem?.priceUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?he`
1741
1741
  <div class="icpay-card icpay-section icpay-widget-base">
1742
1742
  ${this.config?.progressBar?.enabled!==!1?he`
1743
1743
  <icpay-progress-bar
@@ -1816,7 +1816,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
1816
1816
  border-color: var(--icpay-error-border);
1817
1817
  color: var(--icpay-error-text);
1818
1818
  }
1819
- `],s([Ot({type:Object})],L.prototype,"config",2),s([F()],L.prototype,"selectedIndex",2),s([F()],L.prototype,"selectedSymbol",2),s([F()],L.prototype,"processing",2),s([F()],L.prototype,"errorMessage",2),s([F()],L.prototype,"errorSeverity",2),s([F()],L.prototype,"errorAction",2),s([F()],L.prototype,"walletConnected",2),s([F()],L.prototype,"pendingAction",2),s([F()],L.prototype,"showWalletModal",2),s([F()],L.prototype,"walletModalStep",2),s([F()],L.prototype,"oisyReadyToPay",2),s([F()],L.prototype,"lastWalletId",2),s([F()],L.prototype,"showOnrampModal",2),s([F()],L.prototype,"onrampUrl",2),s([F()],L.prototype,"onrampPaymentIntentId",2),s([F()],L.prototype,"onrampErrorMessage",2),s([F()],L.prototype,"showBalanceModal",2),s([F()],L.prototype,"balancesLoading",2),s([F()],L.prototype,"balancesError",2),s([F()],L.prototype,"walletBalances",2),L=s([Lt("icpay-coffee-shop")],L);import{LitElement as It,html as ye,css as Ut}from"lit";import{customElement as Nt,property as _t,state as N}from"lit/decorators.js";var He=typeof window<"u",oe=null;function Ce(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var A=class extends It{constructor(){super(...arguments);this.selectedAmount=10;this.selectedSymbol=null;this.raised=0;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.sdk=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="donate",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.selectedAmount||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"donate",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.selectedAmount||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"donation:x402"},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="donate")try{let a=(this.walletBalances||[]).find(h=>h?.tokenShortcode===e),i=E(this.config),o=Number(this.selectedAmount||0),d=String(a?.ledgerName||a?.chainName||"").toLowerCase().includes("sol"),p=this.config?.recipientAddresses||{},y=d&&p.sol||p.ic;if(d&&a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"sol",icpay_ledger_id:a?.ledgerId,icpay_context:"donation:x402"}},recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(h){f(h,{onError:u=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:u,bubbles:!0})),v(u)&&(this.errorMessage=g(u),this.errorSeverity=b(u),this.errorAction=w(u))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(h=>{throw h})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;oe||(oe=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let n=I({...this.config?.plugNPlay||{}});try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new oe(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}get amounts(){return this.config?.amountsUsd||[10,25,50,100,250,500]}async getOrCreatePnp(){if(this.pnp)return this.pnp;oe||(oe=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new oe(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!He){Ce(this.config?.debug||!1,"Donation thermometer connected",{config:this.config}),this.config&&typeof this.config.defaultAmountUsd=="number"&&(this.selectedAmount=this.config.defaultAmountUsd),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="donate"&&this.donate()},0))}}selectAmount(e){this.selectedAmount=e}selectSymbol(e){this.selectedSymbol=e}get fillPercentage(){let e=Number(this.config?.goalUsd??1e3),t=e>0?e:1e3;return Math.min(this.raised/t*100,100)}resetPaymentFlow(){ee(this,{pendingAction:"donate"})}async donate(){if(He){this.resetPaymentFlow(),Ce(this.config?.debug||!1,"Donation started",{amount:this.selectedAmount,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"donate",type:"sendUsd",amount:this.selectedAmount,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="donate",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){Ce(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{oe||(oe=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new oe(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.donate();return}}catch{}let n=this.pnp.getEnabledWallets();if(Ce(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="donate",this.showWalletModal=!0;return}catch(e){Ce(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.selectedAmount,void 0,{context:"donation:onramp",onrampPayment:!0,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.selectedAmount||0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?ye`
1819
+ `],s([Ot({type:Object})],L.prototype,"config",2),s([F()],L.prototype,"selectedIndex",2),s([F()],L.prototype,"selectedSymbol",2),s([F()],L.prototype,"processing",2),s([F()],L.prototype,"errorMessage",2),s([F()],L.prototype,"errorSeverity",2),s([F()],L.prototype,"errorAction",2),s([F()],L.prototype,"walletConnected",2),s([F()],L.prototype,"pendingAction",2),s([F()],L.prototype,"showWalletModal",2),s([F()],L.prototype,"walletModalStep",2),s([F()],L.prototype,"oisyReadyToPay",2),s([F()],L.prototype,"lastWalletId",2),s([F()],L.prototype,"showOnrampModal",2),s([F()],L.prototype,"onrampUrl",2),s([F()],L.prototype,"onrampPaymentIntentId",2),s([F()],L.prototype,"onrampErrorMessage",2),s([F()],L.prototype,"showBalanceModal",2),s([F()],L.prototype,"balancesLoading",2),s([F()],L.prototype,"balancesError",2),s([F()],L.prototype,"walletBalances",2),L=s([Lt("icpay-coffee-shop")],L);import{LitElement as It,html as ye,css as Ut}from"lit";import{customElement as Nt,property as _t,state as N}from"lit/decorators.js";var He=typeof window<"u",oe=null;function Ce(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var A=class extends It{constructor(){super(...arguments);this.selectedAmount=10;this.selectedSymbol=null;this.raised=0;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.sdk=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="donate",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.selectedAmount||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"donate",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.selectedAmount||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"donation:x402"},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="donate")try{let a=(this.walletBalances||[]).find(h=>h?.tokenShortcode===e),i=E(this.config),o=Number(this.selectedAmount||0),d=String(a?.ledgerName||a?.chainName||"").toLowerCase().includes("sol"),p=this.config?.recipientAddresses||{},y=d&&p.sol||p.ic;if(d&&a?.x402Accepts)try{await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"sol",icpay_ledger_id:a?.ledgerId,icpay_context:"donation:x402"}},recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(h){f(h,{onError:u=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:u,bubbles:!0})),v(u)&&(this.errorMessage=g(u),this.errorSeverity=b(u),this.errorAction=w(u))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(h=>{throw h})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}async tryAutoConnectPNP(){try{if(!this.config||this.config?.useOwnWallet)return;let e=localStorage.getItem("icpay:pnp");if(!e)return;let t=JSON.parse(e);if(!t?.provider||!t?.principal)return;oe||(oe=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let n=I({...this.config?.plugNPlay||{}});try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");n.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}let a=new oe(n);this.walletConnected=!1,this.config={...this.config,connectedWallet:{owner:t.principal,principal:t.principal,connected:!1}}}catch{}}get amounts(){return this.config?.amountsUsd||[10,25,50,100,250,500]}async getOrCreatePnp(){if(this.pnp)return this.pnp;oe||(oe=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new oe(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!He){Ce(this.config?.debug||!1,"Donation thermometer connected",{config:this.config}),this.config&&typeof this.config.defaultAmountUsd=="number"&&(this.selectedAmount=this.config.defaultAmountUsd),this.tryAutoConnectPNP();try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="donate"&&this.donate()},0))}}selectAmount(e){this.selectedAmount=e}selectSymbol(e){this.selectedSymbol=e}get fillPercentage(){let e=Number(this.config?.goalUsd??1e3),t=e>0?e:1e3;return Math.min(this.raised/t*100,100)}resetPaymentFlow(){ee(this,{pendingAction:"donate"})}async donate(){if(He){this.resetPaymentFlow(),Ce(this.config?.debug||!1,"Donation started",{amount:this.selectedAmount,selectedSymbol:this.selectedSymbol,useOwnWallet:this.config.useOwnWallet});try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"donate",type:"sendUsd",amount:this.selectedAmount,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(this.config.useOwnWallet){if(!this.config.actorProvider){this.pendingAction="donate",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0}));return}}else if(!this.walletConnected){Ce(this.config?.debug||!1,"Connecting to wallet via Plug N Play");try{oe||(oe=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let t=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab)?I({...this.config?.plugNPlay||{}}):{...this.config?.plugNPlay||{}};this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);try{if(typeof window<"u"){let{resolveDerivationOrigin:a}=await import("./origin-44ZEXSX4.js");t.derivationOrigin=this.config?.derivationOrigin||a()}}catch{}this.pnp=new oe(t);try{let a=await ae(this.pnp);if(a){this.walletConnected=!0;let i=x(this.pnp,{owner:a,principal:a,connected:!0}),o=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}this.donate();return}}catch{}let n=this.pnp.getEnabledWallets();if(Ce(this.config?.debug||!1,"Available wallets",n),!n?.length)throw new Error("No wallets available");this.pendingAction="donate",this.showWalletModal=!0;return}catch(e){Ce(this.config?.debug||!1,"Wallet connection error:",e),this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error";return}}this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let t=await E(this.config).startOnrampUsd(this.selectedAmount,void 0,{context:"donation:onramp",onrampPayment:!0,onrampProvider:"coinbase"}),n=t?.metadata?.onramp?.url||t?.onramp?.url||t?.metadata?.icpay_onramp?.url||t?.paymentIntent?.metadata?.icpay?.onrampUrl||t?.metadata?.icpay?.onrampUrl||null,a=t?.metadata?.icpay_payment_intent_id||t?.metadata?.paymentIntentId||t?.paymentIntentId||null,i=t?.metadata?.icpay_onramp?.errorMessage||t?.metadata?.onramp?.errorMessage||t?.paymentIntent?.metadata?.icpay?.onrampError||t?.paymentIntent?.metadata?.icpay?.errorMessage||t?.metadata?.icpay?.onrampError||t?.metadata?.icpay?.errorMessage||null;if(this.onrampPaymentIntentId=a,n){this.onrampUrl=n,this.onrampErrorMessage=null;try{window.open(n,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:n}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=i||"Failed to obtain onramp URL",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp URL",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.selectedAmount||0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}render(){return this.config?ye`
1820
1820
  <div class="icpay-card icpay-section icpay-widget-base" style="text-align:center;">
1821
1821
  ${this.config?.progressBar?.enabled!==!1?ye`
1822
1822
  <icpay-progress-bar
@@ -2000,7 +2000,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
2000
2000
  </div>
2001
2001
  </div>
2002
2002
  </div>
2003
- `}var Bt=typeof window<"u";async function Xe(r,l,e,t=!1){if(!Bt||!e||!l)return null;let a=`${(r||"https://api.icpay.org").replace(/\/$/,"")}/sdk/public/payments/intents/${encodeURIComponent(e)}`;try{t&&console.log("[ICPay Widget] Fetching payment intent",{intentId:e,url:a.replace(l,"***")});let i=await fetch(a,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`}});if(!i.ok)return t&&console.log("[ICPay Widget] Fetch payment intent failed",i.status,await i.text()),null;let o=await i.json();return o?.paymentIntent?.id?o:null}catch(i){return t&&console.log("[ICPay Widget] Fetch payment intent error",i),null}}function Ye(r){if(!r)return!1;let l=String(r).toLowerCase();return l==="succeeded"||l==="completed"}var Ge=typeof window<"u",ce=null;function R(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var k=class extends Rt{constructor(){super(...arguments);this.selectedSymbol=null;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.showProviderPicker=!1;this.selectedOnrampProvider=null;this.oisyReadyToPay=!1;this.oisySignerPreopened=!1;this.skipDisconnectOnce=!1;this.lastWalletId=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.loadedPaymentIntent=null;this.paymentIntentLoading=!1;this.onrampPollTimer=null;this.pnp=null;this.oisyConnectRetriedNewTab=!1;this.sdk=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.onTransactionCompleted=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="pay",this.walletModalStep="connect",this.showWalletModal=!0,this.oisyReadyToPay=!1,this.lastWalletId=null,this.requestUpdate();try{let t=Number(this.config?.amountUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){R(this.config?.debug||!1,"EVM selection made",{selectedSymbol:this.selectedSymbol,selPresent:!!t,selSnapshot:t?{ledgerId:t?.ledgerId,ledgerSymbol:t?.ledgerSymbol,ledgerName:t?.ledgerName,chainUuid:t?.chainUuid,chainId:t?.chainId,chainName:t?.chainName,x402Accepts:t?.x402Accepts,requiredAmount:t?.requiredAmount,hasSufficientBalance:t?.hasSufficientBalance}:null});let a=t?.chainId;X(a,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:t?.chainName,rpcUrlPublic:t?.rpcUrlPublic,nativeSymbol:t?.ledgerSymbol,decimals:t?.decimals}).then(async()=>{try{let i=this.getSdk(),o=Number(this.config?.amountUsd??0),c=t?.ledgerSymbol,d=J(this.lastWalletId),p=!!(t&&t.x402Accepts)&&!d;if(R(this.config?.debug||!1,"EVM post-ensure chain snapshot",{targetChain:a,amountUsd:o,symbolNow:c,tryX402:p,skipX402BaseIos:d,x402Accepts:t?.x402Accepts}),p)try{let h=this.config?.recipientAddresses?.evm||"0x0000000000000000000000000000000000000000";R(this.config?.debug||!1,"Using recipientAddress (x402)",{recipientAddress:h});let u={...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:t?.ledgerId,icpay_context:"pay-button:x402"}};R(this.config?.debug||!1,"Attempting X402 flow (EVM selection)",{amountUsd:o,tokenShortcode:t?.tokenShortcode,x402Accepts:t?.x402Accepts}),await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:t?.tokenShortcode,metadata:u,recipientAddress:h,fiat_currency:this.config?.fiat_currency});return}catch(h){R(this.config?.debug||!1,"X402 payment failed (EVM selection), falling back",{message:h?.message,code:h?.code,data:h?.details||h?.data})}else R(this.config?.debug||!1,"Skipping X402 path",{reason:t?t.x402Accepts?"unknown":"x402Accepts false":"no selection",selPresent:!!t,x402Accepts:t?.x402Accepts});R(this.config?.debug||!1,"Falling back to normal EVM wallet flow",{amountUsd:o,tokenShortcode:t?.tokenShortcode});let y=this.config?.recipientAddresses?.evm||"0x0000000000000000000000000000000000000000";R(this.config?.debug||!1,"Using recipientAddress (normal)",{recipientAddress:y}),await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:t?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:t?.ledgerId}},recipientAddress:y}).catch(h=>{throw h})}catch(i){f(i,{onError:o=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:o,bubbles:!0})),v(o)&&(this.errorMessage=g(o),this.errorSeverity=b(o),this.errorAction=w(o))}})}});return}let n=this.pendingAction;if(this.pendingAction=null,n==="pay")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=this.getSdk(),o=Number(this.config?.amountUsd??0);R(this.config?.debug||!1,"IC selection made",{selectedSymbol:this.selectedSymbol,selPresent:!!a,selSnapshot:a?{ledgerId:a?.ledgerId,ledgerSymbol:a?.ledgerSymbol,ledgerName:a?.ledgerName,requiredAmount:a?.requiredAmount,hasSufficientBalance:a?.hasSufficientBalance,tokenShortcode:a?.tokenShortcode}:null});let c=String(a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=this.config?.recipientAddresses||{},y=d?p.sol||p.ic||this.config?.recipientAddress:p.ic||this.config?.recipientAddress,h=c.includes("ic");if(a?.x402Accepts)try{let u={...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":h?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"pay-button:x402"}};await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:u,recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(u){R(this.config?.debug||!1,"X402 payment failed (SOL selection), falling back",{message:u?.message,code:u?.code,data:u?.details||u?.data});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}getSdk(){if(!this.sdk){let e=this.config;if((this.lastWalletId==="walletconnect"||this.lastWalletId==="coinbase")&&this.pnp){let n=this.pnp.getEvmProvider?.();n&&(e={...e,evmProvider:n})}this.loadedPaymentIntent?.paymentIntent?e={...e,paymentIntent:this.loadedPaymentIntent.paymentIntent}:this.config?.paymentIntent!=null&&typeof this.config.paymentIntent=="object"&&(e={...e,paymentIntent:this.config.paymentIntent}),!e.paymentIntent&&(this.loadedPaymentIntent?.paymentIntentId??this.config?.paymentIntentId)&&(e={...e,paymentIntentId:this.loadedPaymentIntent?.paymentIntentId??this.config.paymentIntentId}),this.sdk=E(e)}return this.sdk}async getOrCreatePnp(){if(this.pnp)return this.pnp;ce||(ce=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new ce(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!Ge){R(this.config?.debug||!1,"Pay button connected",{config:this.config}),this.config?.theme&&ge(this,this.config.theme);try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(e=>{R(this.config?.debug||!1,"SDK transaction created",{detail:e?.detail}),this.showWalletModal=!1,this.showBalanceModal=!1,this.requestUpdate()}))}catch{}this.onTransactionCompleted=()=>{this.succeeded=!0,this.processing=!1,this.requestUpdate()};try{window.addEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}this.loadPaymentIntentIfNeeded()}}disconnectedCallback(){if(super.disconnectedCallback(),this.onTransactionCompleted)try{window.removeEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}}async loadPaymentIntentIfNeeded(){let e=this.config?.paymentIntentId;if(!e||typeof e!="string"||e.trim()===""||this.loadedPaymentIntent!=null)return;let t=this.config?.publishableKey,n=this.config?.apiUrl||"https://api.icpay.org";if(t){this.paymentIntentLoading=!0,this.requestUpdate();try{let a=await Xe(n,t,e.trim(),!!this.config?.debug);if(this.loadedPaymentIntent=a??null,a?.paymentIntent)if(Ye(a.paymentIntent.status))this.succeeded=!0,this.requestUpdate();else{let i=a.paymentIntent;this.config={...this.config,paymentIntent:i,amountUsd:typeof i.amountUsd=="number"?i.amountUsd:this.config?.amountUsd??0,fiat_currency:i.fiatCurrencyCode??this.config?.fiat_currency??void 0},this.sdk=null,this.requestUpdate()}}catch(a){R(this.config?.debug||!1,"Load payment intent error",a)}finally{this.paymentIntentLoading=!1,this.requestUpdate()}}}updated(e){if(e.has("config")&&this.config?.theme&&ge(this,this.config.theme),e.has("config")){let t=this.config?.paymentIntentId;this.loadedPaymentIntent&&this.loadedPaymentIntent.paymentIntentId!==t&&(this.loadedPaymentIntent=null,this.sdk=null),t&&this.loadedPaymentIntent==null&&!this.paymentIntentLoading&&this.loadPaymentIntentIfNeeded()}if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="pay"&&this.pay()},0))}e.has("config")&&(this.sdk=null)}selectSymbol(e){this.selectedSymbol=e}async ensureWallet(){if(this.config.useOwnWallet)return this.config.actorProvider?!0:(this.pendingAction="pay",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0})),!1);if(this.walletConnected)return!0;try{ce||(ce=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let o=[];n.ic&&o.push("ic"),n.evm&&o.push("evm"),n.sol&&o.push("sol"),o.length&&(t.chainTypes=o)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:o}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||o()}}catch{}this.pnp=new ce(a);let i=this.pnp.getEnabledWallets();if(R(this.config?.debug||!1,"Available wallets",i),!i?.length)throw new Error("No wallets available");return this.pendingAction="pay",this.showWalletModal=!0,!1}catch(e){return this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error",!1}}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.lastWalletId==="oisy"&&(this.oisyConnectRetriedNewTab=!1),this.pnp.connect(e).then(n=>{if(R(this.config?.debug||!1,"Wallet connect result",n),!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.fetchAndShowBalances("pay")}).catch(n=>{R(this.config?.debug||!1,"Wallet connection error",n);let a=(e||"").toLowerCase()==="oisy",i=n&&(n.message||String(n))||"";if(a&&!this.oisyConnectRetriedNewTab&&(i.includes("Signer window could not be opened")||i.includes("Communication channel could not be established"))){this.oisyConnectRetriedNewTab=!0,(async()=>{try{ce||(ce=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let c={...this.config?.plugNPlay||{}},d=this.config?.recipientAddresses;if(d&&(d.ic||d.evm||d.sol)){let h=[];d.ic&&h.push("ic"),d.evm&&h.push("evm"),d.sol&&h.push("sol"),h.length&&(c.chainTypes=h)}else this.config?.chainTypes&&(c.chainTypes=this.config.chainTypes);let p=I(c);try{if(typeof window<"u"){let{resolveDerivationOrigin:h}=await import("./origin-44ZEXSX4.js");p.derivationOrigin=this.config?.derivationOrigin||h()}}catch{}this.pnp=new ce(p),this.pnp.connect("oisy").then(h=>{if(!!!(h&&(h.connected===!0||h.principal||h.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}let m=x(this.pnp,h),j=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:m,actorProvider:(Me,We)=>this.pnp.getActor({canisterId:Me,idl:We,requiresSigning:!0,anon:!1}),...j?{evmProvider:j}:{}},this.sdk=null,this.walletModalStep="balances",this.fetchAndShowBalances("pay")}).catch(h=>{R(this.config?.debug||!1,"Oisy retry connect (new tab) failed",h),this.errorMessage=h instanceof Error?h.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(c){R(this.config?.debug||!1,"Oisy new-tab init failed",c),this.errorMessage=c instanceof Error?c.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}})();return}this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){R(this.config?.debug||!1,"Wallet connection error (sync)",t),this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(e){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let t=this.getSdk(),{balances:n}=await Y({sdk:t,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.config?.amountUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=n,this.pendingAction=e}catch(t){this.walletBalances=[],this.balancesError=t&&(t.message||String(t))||"Failed to load balances"}finally{this.balancesLoading=!1}}renderWalletModal(){if(!this.showWalletModal||!this.pnp)return null;let e=this.pnp.getEnabledWallets()||[],t=V(e),n=this.config?.onramp?.enabled===!0&&this.config?.onrampDisabled!==!0,a=2,i=Number(this.config?.amountUsd??0),o=n&&i>0&&i<a,c=Math.max(0,a-i),d=o?`Note: Minimum card amount is $${a}. You will pay about $${c.toFixed(2)} more.`:null,p=this.config?.theme?typeof this.config.theme=="string"?this.config.theme:this.config.theme.mode||"light":void 0;return Q({visible:this.showWalletModal,wallets:t,isConnecting:!1,onSwitchAccount:()=>this.onSwitchAccount(null),step:this.walletModalStep,balances:this.walletModalStep==="balances"?this.walletBalances||[]:[],balancesLoading:this.walletModalStep==="balances"?this.balancesLoading:!1,balancesError:this.walletModalStep==="balances"?this.balancesError:null,onSelectBalance:y=>this.onSelectBalanceSymbol(y),onBack:()=>{this.walletModalStep="connect"},onSelect:y=>{this.connectWithWallet(y)},onClose:()=>{this.showWalletModal=!1,this.oisyReadyToPay=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-cancelled",{detail:{reason:"user_cancelled"}}))}catch{}},onDismiss:()=>{this.showWalletModal=!1,this.oisyReadyToPay=!1},onCreditCard:n?()=>this.startOnramp():void 0,creditCardLabel:this.config?.onramp?.creditCardLabel||"Pay with credit card",showCreditCard:n,creditCardTooltip:d,oisyReadyToPay:this.oisyReadyToPay,onOisyPay:()=>{this.showWalletModal=!1,this.skipDisconnectOnce=!0,this.oisyReadyToPay=!1,this.pay()},theme:p})}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1;let e=Array.isArray(this.config?.onramp?.providers)?this.config.onramp.providers.filter(n=>n&&n.enabled!==!1):[],t=e.length?e:[{slug:"coinbase",name:"Coinbase",enabled:!0}];t.length>1?this.showProviderPicker=!0:(this.selectedOnrampProvider=t[0]?.slug||"coinbase",setTimeout(()=>this.createOnrampIntent(),0))}async createOnrampIntent(){try{let e=Number(this.config?.amountUsd??0),t=this.getSdk();this.selectedSymbol||(this.selectedSymbol="ICP");let n=await t.startOnrampUsd(e,void 0,{context:"pay-button:onramp",onrampPayment:!0,onrampProvider:this.selectedOnrampProvider||"coinbase"}),a=n?.metadata?.onramp?.url||n?.onramp?.url||n?.metadata?.icpay_onramp?.url||n?.paymentIntent?.metadata?.icpay?.onrampUrl||n?.metadata?.icpay?.onrampUrl||null,i=n?.metadata?.icpay_onramp?.errorMessage||n?.metadata?.onramp?.errorMessage||n?.paymentIntent?.metadata?.icpay?.onrampError||n?.paymentIntent?.metadata?.icpay?.errorMessage||n?.metadata?.icpay?.onrampError||n?.metadata?.icpay?.errorMessage||null;this.onrampErrorMessage=i||null;let o=n?.metadata?.icpay_payment_intent_id||n?.metadata?.paymentIntentId||n?.paymentIntentId||null;if(this.onrampPaymentIntentId=o,a){this.onrampUrl=a;try{window.open(a,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:a}}))}catch{}}catch{}this.startOnrampPolling(void 0)}else this.onrampUrl=null,this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||null,this.showOnrampModal=!0,f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}})}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=this.getSdk(),a=()=>{if(this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1},i=o=>{a()};try{window.addEventListener("icpay-sdk-transaction-completed",i,{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}resetPaymentFlow(e=!1){ee(this,{pendingAction:"pay",keepWalletConnected:e})}async pay(){if(Ge){this.resetPaymentFlow(this.walletConnected);try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:this.config?.amountUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(!await this.ensureWallet())return;let t=this.getSdk();try{let n=this.config?.connectedWallet,a=this?.pnp?.account;R(this.config?.debug||!1,"Wallet state before payment",{connectedWallet:n,pnpAccount:a,principal:n?.owner||n?.principal||a?.owner||a?.principal||null})}catch{}this.walletModalStep="balances",this.showWalletModal=!0,await this.fetchAndShowBalances("pay");return}catch(e){R(this.config?.debug||!1,"Payment error",{message:e?.message,code:e?.code,details:e?.details,stack:e?.stack}),f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}render(){if(!this.config)return ue`<div class="icpay-card icpay-section">Loading...</div>`;if(this.paymentIntentLoading&&this.config?.paymentIntentId)return ue`<div class="icpay-card icpay-section">Loading payment...</div>`;let e=this.selectedSymbol||"ICP",t=typeof this.config?.amountUsd=="number"?this.config.amountUsd:this.loadedPaymentIntent?.paymentIntent?.amountUsd!=null?Number(this.loadedPaymentIntent.paymentIntent.amountUsd):void 0,n=typeof t=="number"?`${Number(t).toFixed(2)}`:"",i=(this.config?.buttonLabel||(typeof t=="number"?"Pay with crypto":"Pay with {symbol}")).replace("{amount}",n||"$0.00").replace("{symbol}",e),c=this.config?.progressBar?.enabled!==!1,d=this.showWalletModal||this.showBalanceModal;return ue`
2003
+ `}var Bt=typeof window<"u";async function Xe(r,l,e,t=!1){if(!Bt||!e||!l)return null;let a=`${(r||"https://api.icpay.org").replace(/\/$/,"")}/sdk/public/payments/intents/${encodeURIComponent(e)}`;try{t&&console.log("[ICPay Widget] Fetching payment intent",{intentId:e,url:a.replace(l,"***")});let i=await fetch(a,{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`}});if(!i.ok)return t&&console.log("[ICPay Widget] Fetch payment intent failed",i.status,await i.text()),null;let o=await i.json();return o?.paymentIntent?.id?o:null}catch(i){return t&&console.log("[ICPay Widget] Fetch payment intent error",i),null}}function Ye(r){if(!r)return!1;let l=String(r).toLowerCase();return l==="succeeded"||l==="completed"}var Ge=typeof window<"u",ce=null;function R(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var k=class extends Rt{constructor(){super(...arguments);this.selectedSymbol=null;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.showProviderPicker=!1;this.selectedOnrampProvider=null;this.oisyReadyToPay=!1;this.oisySignerPreopened=!1;this.skipDisconnectOnce=!1;this.lastWalletId=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.loadedPaymentIntent=null;this.paymentIntentLoading=!1;this.onrampPollTimer=null;this.pnp=null;this.oisyConnectRetriedNewTab=!1;this.sdk=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.onTransactionCompleted=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="pay",this.walletModalStep="connect",this.showWalletModal=!0,this.oisyReadyToPay=!1,this.lastWalletId=null,this.requestUpdate();try{let t=Number(this.config?.amountUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){R(this.config?.debug||!1,"EVM selection made",{selectedSymbol:this.selectedSymbol,selPresent:!!t,selSnapshot:t?{ledgerId:t?.ledgerId,ledgerSymbol:t?.ledgerSymbol,ledgerName:t?.ledgerName,chainUuid:t?.chainUuid,chainId:t?.chainId,chainName:t?.chainName,x402Accepts:t?.x402Accepts,requiredAmount:t?.requiredAmount,hasSufficientBalance:t?.hasSufficientBalance}:null});let a=t?.chainId;X(a,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:t?.chainName,rpcUrlPublic:t?.rpcUrlPublic,nativeSymbol:t?.ledgerSymbol,decimals:t?.decimals}).then(async()=>{try{let i=this.getSdk(),o=Number(this.config?.amountUsd??0),c=t?.ledgerSymbol,d=J(this.lastWalletId),p=!!(t&&t.x402Accepts)&&!d;if(R(this.config?.debug||!1,"EVM post-ensure chain snapshot",{targetChain:a,amountUsd:o,symbolNow:c,tryX402:p,skipX402BaseIos:d,x402Accepts:t?.x402Accepts}),p)try{let h=this.config?.recipientAddresses?.evm||"0x0000000000000000000000000000000000000000";R(this.config?.debug||!1,"Using recipientAddress (x402)",{recipientAddress:h});let u={...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:t?.ledgerId,icpay_context:"pay-button:x402"}};R(this.config?.debug||!1,"Attempting X402 flow (EVM selection)",{amountUsd:o,tokenShortcode:t?.tokenShortcode,x402Accepts:t?.x402Accepts}),await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:t?.tokenShortcode,metadata:u,recipientAddress:h,fiat_currency:this.config?.fiat_currency});return}catch(h){R(this.config?.debug||!1,"X402 payment failed (EVM selection), falling back",{message:h?.message,code:h?.code,data:h?.details||h?.data})}else R(this.config?.debug||!1,"Skipping X402 path",{reason:t?t.x402Accepts?"unknown":"x402Accepts false":"no selection",selPresent:!!t,x402Accepts:t?.x402Accepts});R(this.config?.debug||!1,"Falling back to normal EVM wallet flow",{amountUsd:o,tokenShortcode:t?.tokenShortcode});let y=this.config?.recipientAddresses?.evm||"0x0000000000000000000000000000000000000000";R(this.config?.debug||!1,"Using recipientAddress (normal)",{recipientAddress:y}),await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:t?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"evm",icpay_ledger_id:t?.ledgerId}},recipientAddress:y}).catch(h=>{throw h})}catch(i){f(i,{onError:o=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:o,bubbles:!0})),v(o)&&(this.errorMessage=g(o),this.errorSeverity=b(o),this.errorAction=w(o))}})}});return}let n=this.pendingAction;if(this.pendingAction=null,n==="pay")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=this.getSdk(),o=Number(this.config?.amountUsd??0);R(this.config?.debug||!1,"IC selection made",{selectedSymbol:this.selectedSymbol,selPresent:!!a,selSnapshot:a?{ledgerId:a?.ledgerId,ledgerSymbol:a?.ledgerSymbol,ledgerName:a?.ledgerName,requiredAmount:a?.requiredAmount,hasSufficientBalance:a?.hasSufficientBalance,tokenShortcode:a?.tokenShortcode}:null});let c=String(a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=this.config?.recipientAddresses||{},y=d?p.sol||p.ic||this.config?.recipientAddress:p.ic||this.config?.recipientAddress,h=c.includes("ic");if(a?.x402Accepts)try{let u={...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":h?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"pay-button:x402"}};await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:u,recipientAddress:y||"",fiat_currency:this.config?.fiat_currency});return}catch(u){R(this.config?.debug||!1,"X402 payment failed (SOL selection), falling back",{message:u?.message,code:u?.code,data:u?.details||u?.data});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:y||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}getSdk(){if(!this.sdk){let e=this.config;if((this.lastWalletId==="walletconnect"||this.lastWalletId==="coinbase")&&this.pnp){let n=this.pnp.getEvmProvider?.();n&&(e={...e,evmProvider:n})}this.loadedPaymentIntent?.paymentIntent?e={...e,paymentIntent:this.loadedPaymentIntent.paymentIntent}:this.config?.paymentIntent!=null&&typeof this.config.paymentIntent=="object"&&(e={...e,paymentIntent:this.config.paymentIntent}),!e.paymentIntent&&(this.loadedPaymentIntent?.paymentIntentId??this.config?.paymentIntentId)&&(e={...e,paymentIntentId:this.loadedPaymentIntent?.paymentIntentId??this.config.paymentIntentId}),this.sdk=E(e)}return this.sdk}async getOrCreatePnp(){if(this.pnp)return this.pnp;ce||(ce=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new ce(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}connectedCallback(){if(super.connectedCallback(),!!Ge){R(this.config?.debug||!1,"Pay button connected",{config:this.config}),this.config?.theme&&ge(this,this.config.theme);try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(e=>{R(this.config?.debug||!1,"SDK transaction created",{detail:e?.detail}),this.showWalletModal=!1,this.showBalanceModal=!1,this.requestUpdate()}))}catch{}this.onTransactionCompleted=()=>{this.succeeded=!0,this.processing=!1,this.requestUpdate()};try{window.addEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}this.loadPaymentIntentIfNeeded()}}disconnectedCallback(){if(super.disconnectedCallback(),this.onTransactionCompleted)try{window.removeEventListener("icpay-sdk-transaction-completed",this.onTransactionCompleted)}catch{}}async loadPaymentIntentIfNeeded(){let e=this.config?.paymentIntentId;if(!e||typeof e!="string"||e.trim()===""||this.loadedPaymentIntent!=null)return;let t=this.config?.publishableKey,n=this.config?.apiUrl||"https://api.icpay.org";if(t){this.paymentIntentLoading=!0,this.requestUpdate();try{let a=await Xe(n,t,e.trim(),!!this.config?.debug);if(this.loadedPaymentIntent=a??null,a?.paymentIntent)if(Ye(a.paymentIntent.status))this.succeeded=!0,this.requestUpdate();else{let i=a.paymentIntent;this.config={...this.config,paymentIntent:i,amountUsd:typeof i.amountUsd=="number"?i.amountUsd:this.config?.amountUsd??0,fiat_currency:i.fiatCurrencyCode??this.config?.fiat_currency??void 0},this.sdk=null,this.requestUpdate()}}catch(a){R(this.config?.debug||!1,"Load payment intent error",a)}finally{this.paymentIntentLoading=!1,this.requestUpdate()}}}updated(e){if(e.has("config")&&this.config?.theme&&ge(this,this.config.theme),e.has("config")){let t=this.config?.paymentIntentId;this.loadedPaymentIntent&&this.loadedPaymentIntent.paymentIntentId!==t&&(this.loadedPaymentIntent=null,this.sdk=null),t&&this.loadedPaymentIntent==null&&!this.paymentIntentLoading&&this.loadPaymentIntentIfNeeded()}if(e.has("config")&&this.pendingAction&&this.config?.actorProvider){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&!this.oisyReadyToPay&&(this.pendingAction=null,setTimeout(()=>{t==="pay"&&this.pay()},0))}e.has("config")&&(this.sdk=null)}selectSymbol(e){this.selectedSymbol=e}async ensureWallet(){if(this.config.useOwnWallet)return this.config.actorProvider?!0:(this.pendingAction="pay",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0})),!1);if(this.walletConnected)return!0;try{ce||(ce=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let o=[];n.ic&&o.push("ic"),n.evm&&o.push("evm"),n.sol&&o.push("sol"),o.length&&(t.chainTypes=o)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:o}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||o()}}catch{}this.pnp=new ce(a);let i=this.pnp.getEnabledWallets();if(R(this.config?.debug||!1,"Available wallets",i),!i?.length)throw new Error("No wallets available");return this.pendingAction="pay",this.showWalletModal=!0,!1}catch(e){return this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error",!1}}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.lastWalletId==="oisy"&&(this.oisyConnectRetriedNewTab=!1),this.pnp.connect(e).then(n=>{if(R(this.config?.debug||!1,"Wallet connect result",n),!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.fetchAndShowBalances("pay")}).catch(n=>{R(this.config?.debug||!1,"Wallet connection error",n);let a=(e||"").toLowerCase()==="oisy",i=n&&(n.message||String(n))||"";if(a&&!this.oisyConnectRetriedNewTab&&(i.includes("Signer window could not be opened")||i.includes("Communication channel could not be established"))){this.oisyConnectRetriedNewTab=!0,(async()=>{try{ce||(ce=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let c={...this.config?.plugNPlay||{}},d=this.config?.recipientAddresses;if(d&&(d.ic||d.evm||d.sol)){let h=[];d.ic&&h.push("ic"),d.evm&&h.push("evm"),d.sol&&h.push("sol"),h.length&&(c.chainTypes=h)}else this.config?.chainTypes&&(c.chainTypes=this.config.chainTypes);let p=I(c);try{if(typeof window<"u"){let{resolveDerivationOrigin:h}=await import("./origin-44ZEXSX4.js");p.derivationOrigin=this.config?.derivationOrigin||h()}}catch{}this.pnp=new ce(p),this.pnp.connect("oisy").then(h=>{if(!!!(h&&(h.connected===!0||h.principal||h.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"oisy"}}))}catch{}let m=x(this.pnp,h),j=this.pnp?.getEvmProvider?.();this.config={...this.config,connectedWallet:m,actorProvider:(Me,We)=>this.pnp.getActor({canisterId:Me,idl:We,requiresSigning:!0,anon:!1}),...j?{evmProvider:j}:{}},this.sdk=null,this.walletModalStep="balances",this.fetchAndShowBalances("pay")}).catch(h=>{R(this.config?.debug||!1,"Oisy retry connect (new tab) failed",h),this.errorMessage=h instanceof Error?h.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(c){R(this.config?.debug||!1,"Oisy new-tab init failed",c),this.errorMessage=c instanceof Error?c.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}})();return}this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){R(this.config?.debug||!1,"Wallet connection error (sync)",t),this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(e){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let t=this.getSdk(),{balances:n}=await Y({sdk:t,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.config?.amountUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=n,this.pendingAction=e}catch(t){this.walletBalances=[],this.balancesError=t&&(t.message||String(t))||"Failed to load balances"}finally{this.balancesLoading=!1}}renderWalletModal(){if(!this.showWalletModal||!this.pnp)return null;let e=this.pnp.getEnabledWallets()||[],t=V(e),n=this.config?.onramp?.enabled===!0&&this.config?.onrampDisabled!==!0,a=2,i=Number(this.config?.amountUsd??0),o=n&&i>0&&i<a,c=Math.max(0,a-i),d=o?`Note: Minimum card amount is $${a}. You will pay about $${c.toFixed(2)} more.`:null,p=this.config?.theme?typeof this.config.theme=="string"?this.config.theme:this.config.theme.mode||"light":void 0;return Q({visible:this.showWalletModal,wallets:t,isConnecting:!1,onSwitchAccount:()=>this.onSwitchAccount(null),step:this.walletModalStep,balances:this.walletModalStep==="balances"?this.walletBalances||[]:[],balancesLoading:this.walletModalStep==="balances"?this.balancesLoading:!1,balancesError:this.walletModalStep==="balances"?this.balancesError:null,onSelectBalance:y=>this.onSelectBalanceSymbol(y),onBack:()=>{this.walletModalStep="connect"},onSelect:y=>{this.connectWithWallet(y)},onClose:()=>{this.showWalletModal=!1,this.oisyReadyToPay=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-cancelled",{detail:{reason:"user_cancelled"}}))}catch{}},onDismiss:()=>{this.showWalletModal=!1,this.oisyReadyToPay=!1},onCreditCard:n?()=>this.startOnramp():void 0,creditCardLabel:this.config?.onramp?.creditCardLabel||"Pay with credit card",showCreditCard:n,creditCardTooltip:d,oisyReadyToPay:this.oisyReadyToPay,onOisyPay:()=>{this.showWalletModal=!1,this.skipDisconnectOnce=!0,this.oisyReadyToPay=!1,this.pay()},theme:p})}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1;let e=Array.isArray(this.config?.onramp?.providers)?this.config.onramp.providers.filter(n=>n&&n.enabled!==!1):[],t=e.length?e:[{slug:"coinbase",name:"Coinbase",enabled:!0}];t.length>1?this.showProviderPicker=!0:(this.selectedOnrampProvider=t[0]?.slug||"coinbase",setTimeout(()=>this.createOnrampIntent(),0))}async createOnrampIntent(){try{let e=Number(this.config?.amountUsd??0),t=this.getSdk();this.selectedSymbol||(this.selectedSymbol="ICP");let n=await t.startOnrampUsd(e,void 0,{context:"pay-button:onramp",onrampPayment:!0,onrampProvider:this.selectedOnrampProvider||"coinbase"}),a=n?.metadata?.onramp?.url||n?.onramp?.url||n?.metadata?.icpay_onramp?.url||n?.paymentIntent?.metadata?.icpay?.onrampUrl||n?.metadata?.icpay?.onrampUrl||null,i=n?.metadata?.icpay_onramp?.errorMessage||n?.metadata?.onramp?.errorMessage||n?.paymentIntent?.metadata?.icpay?.onrampError||n?.paymentIntent?.metadata?.icpay?.errorMessage||n?.metadata?.icpay?.onrampError||n?.metadata?.icpay?.errorMessage||null;this.onrampErrorMessage=i||null;let o=n?.metadata?.icpay_payment_intent_id||n?.metadata?.paymentIntentId||n?.paymentIntentId||null;if(this.onrampPaymentIntentId=o,a){this.onrampUrl=a;try{window.open(a,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:a}}))}catch{}}catch{}this.startOnrampPolling(void 0)}else this.onrampUrl=null,this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||null,this.showOnrampModal=!0,f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}})}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=this.getSdk(),a=()=>{if(this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1},i=o=>{a()};try{window.addEventListener("icpay-sdk-transaction-completed",i,{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}resetPaymentFlow(e=!1){ee(this,{pendingAction:"pay",keepWalletConnected:e})}async pay(){if(Ge){this.resetPaymentFlow(this.walletConnected);try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:this.config?.amountUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(!await this.ensureWallet())return;let t=this.getSdk();try{let n=this.config?.connectedWallet,a=this?.pnp?.account;R(this.config?.debug||!1,"Wallet state before payment",{connectedWallet:n,pnpAccount:a,principal:n?.owner||n?.principal||a?.owner||a?.principal||null})}catch{}this.walletModalStep="balances",this.showWalletModal=!0,await this.fetchAndShowBalances("pay");return}catch(e){R(this.config?.debug||!1,"Payment error",{message:e?.message,code:e?.code,details:e?.details,stack:e?.stack}),f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}render(){if(!this.config)return ue`<div class="icpay-card icpay-section">Loading...</div>`;if(this.paymentIntentLoading&&this.config?.paymentIntentId)return ue`<div class="icpay-card icpay-section">Loading payment...</div>`;let e=this.selectedSymbol||"ICP",t=typeof this.config?.amountUsd=="number"?this.config.amountUsd:this.loadedPaymentIntent?.paymentIntent?.amountUsd!=null?Number(this.loadedPaymentIntent.paymentIntent.amountUsd):void 0,n=typeof t=="number"?`${Number(t).toFixed(2)}`:"",i=(this.config?.buttonLabel||(typeof t=="number"?"Pay with crypto":"Pay with {symbol}")).replace("{amount}",n||"$0.00").replace("{symbol}",e),c=this.config?.progressBar?.enabled!==!1,d=this.showWalletModal||this.showBalanceModal;return ue`
2004
2004
  <div class="icpay-card icpay-section icpay-widget-base">
2005
2005
  ${c?ue`
2006
2006
  <icpay-progress-bar
@@ -2044,7 +2044,7 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
2044
2044
  .error-message.info { background: var(--icpay-processing-bg); border-color: var(--icpay-processing-border); color: var(--icpay-processing-text); }
2045
2045
  .error-message.warning { background: var(--icpay-warning-bg); border-color: var(--icpay-warning-border); color: var(--icpay-warning-text); }
2046
2046
  .error-message.error { background: var(--icpay-error-bg); border-color: var(--icpay-error-border); color: var(--icpay-error-text); }
2047
- `],s([zt({type:Object})],k.prototype,"config",2),s([O()],k.prototype,"selectedSymbol",2),s([O()],k.prototype,"processing",2),s([O()],k.prototype,"succeeded",2),s([O()],k.prototype,"errorMessage",2),s([O()],k.prototype,"errorSeverity",2),s([O()],k.prototype,"errorAction",2),s([O()],k.prototype,"walletConnected",2),s([O()],k.prototype,"pendingAction",2),s([O()],k.prototype,"showWalletModal",2),s([O()],k.prototype,"walletModalStep",2),s([O()],k.prototype,"showOnrampModal",2),s([O()],k.prototype,"onrampUrl",2),s([O()],k.prototype,"onrampPaymentIntentId",2),s([O()],k.prototype,"onrampErrorMessage",2),s([O()],k.prototype,"showProviderPicker",2),s([O()],k.prototype,"selectedOnrampProvider",2),s([O()],k.prototype,"oisyReadyToPay",2),s([O()],k.prototype,"oisySignerPreopened",2),s([O()],k.prototype,"skipDisconnectOnce",2),s([O()],k.prototype,"lastWalletId",2),s([O()],k.prototype,"showBalanceModal",2),s([O()],k.prototype,"balancesLoading",2),s([O()],k.prototype,"balancesError",2),s([O()],k.prototype,"walletBalances",2),s([O()],k.prototype,"loadedPaymentIntent",2),s([O()],k.prototype,"paymentIntentLoading",2),k=s([Dt("icpay-pay-button")],k);import{LitElement as qt,html as be,css as jt}from"lit";import{customElement as Kt,property as Ht,state as _}from"lit/decorators.js";var Qe=typeof window<"u",Ne=null;function Vt(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var P=class extends qt{constructor(){super(...arguments);this.amountUsd=0;this.hasUserAmount=!1;this.selectedSymbol=null;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.sdk=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="pay",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.amountUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.amountUsd||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"amount-input:x402"},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="pay")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.amountUsd||0),c=String(a?.ledgerName||a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=c.includes("ic"),y=this.config?.recipientAddresses||{},h=d&&y.sol||y.ic;if(a?.x402Accepts)try{let u={...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":p?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"amount-input:x402"}};await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:u,recipientAddress:h||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:h||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}connectedCallback(){if(super.connectedCallback(),!!Qe){Vt(this.config?.debug||!1,"Amount input connected",{config:this.config}),this.amountUsd=Number(this.config?.defaultAmountUsd??0),this.hasUserAmount=!1;try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&(!this.hasUserAmount&&typeof this.config?.defaultAmountUsd=="number"&&(this.amountUsd===0||this.amountUsd==null||Number.isNaN(this.amountUsd))&&(this.amountUsd=Number(this.config.defaultAmountUsd)),this.pendingAction&&this.config?.actorProvider)){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&(this.pendingAction=null,setTimeout(()=>{t==="pay"&&this.pay()},0))}}onInputChange(e){let t=Number(this.config?.stepUsd??.5),n=Math.max(0,Number(e.target.value||0)),a=Math.round(n/t)*t;this.amountUsd=Number(a.toFixed(2)),this.hasUserAmount=!0}selectSymbol(e){this.selectedSymbol=e}isValidAmount(){let e=Number(this.config?.minUsd??.5),t=this.config?.maxUsd!==void 0?Number(this.config.maxUsd):1/0;return this.amountUsd>=e&&this.amountUsd<=t}async getOrCreatePnp(){if(this.pnp)return this.pnp;Ne||(Ne=(await import("./wallet-select-VE5FSSFG.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new Ne(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}async ensureWallet(){if(this.config.useOwnWallet)return this.config.actorProvider?!0:(this.pendingAction="pay",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0})),!1);if(this.walletConnected)return!0;try{if(!(await this.getOrCreatePnp()).getEnabledWallets()?.length)throw new Error("No wallets available");return this.pendingAction="pay",this.showWalletModal=!0,!1}catch(e){return this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error",!1}}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.amountUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let e=E(this.config),t=Number(this.amountUsd),n=await e.startOnrampUsd(t,void 0,{context:"amount-input:onramp",onrampPayment:!0,onrampProvider:this?.selectedOnrampProvider||"coinbase"}),a=n?.metadata?.onramp?.url||n?.onramp?.url||n?.metadata?.icpay_onramp?.url||n?.paymentIntent?.metadata?.icpay?.onrampUrl||n?.metadata?.icpay?.onrampUrl||null,i=n?.metadata?.icpay_payment_intent_id||n?.metadata?.paymentIntentId||n?.paymentIntentId||null,o=n?.metadata?.icpay_onramp?.errorMessage||n?.metadata?.onramp?.errorMessage||null;if(this.onrampPaymentIntentId=i,a){this.onrampUrl=a,this.onrampErrorMessage=null;try{window.open(a,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:a}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=o||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}resetPaymentFlow(){ee(this,{pendingAction:"pay"})}async pay(){if(Qe){if(this.resetPaymentFlow(),!this.isValidAmount()){this.errorMessage="Please enter a valid amount",this.errorSeverity="warning";return}try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:this.amountUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(!await this.ensureWallet())return;this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}render(){if(!this.config)return be`<div class="icpay-card icpay-section">Loading...</div>`;let e=this.config?.placeholder||"Enter amount in USD",n=(this.config?.buttonLabel||"Pay with crypto").replace("{amount}",this.amountUsd?`${Number(this.amountUsd).toFixed(2)}`:"$0.00").replace("{symbol}",this.selectedSymbol||"ICP"),a=this.selectedSymbol||"ICP",o=this.config?.progressBar?.enabled!==!1;return be`
2047
+ `],s([zt({type:Object})],k.prototype,"config",2),s([O()],k.prototype,"selectedSymbol",2),s([O()],k.prototype,"processing",2),s([O()],k.prototype,"succeeded",2),s([O()],k.prototype,"errorMessage",2),s([O()],k.prototype,"errorSeverity",2),s([O()],k.prototype,"errorAction",2),s([O()],k.prototype,"walletConnected",2),s([O()],k.prototype,"pendingAction",2),s([O()],k.prototype,"showWalletModal",2),s([O()],k.prototype,"walletModalStep",2),s([O()],k.prototype,"showOnrampModal",2),s([O()],k.prototype,"onrampUrl",2),s([O()],k.prototype,"onrampPaymentIntentId",2),s([O()],k.prototype,"onrampErrorMessage",2),s([O()],k.prototype,"showProviderPicker",2),s([O()],k.prototype,"selectedOnrampProvider",2),s([O()],k.prototype,"oisyReadyToPay",2),s([O()],k.prototype,"oisySignerPreopened",2),s([O()],k.prototype,"skipDisconnectOnce",2),s([O()],k.prototype,"lastWalletId",2),s([O()],k.prototype,"showBalanceModal",2),s([O()],k.prototype,"balancesLoading",2),s([O()],k.prototype,"balancesError",2),s([O()],k.prototype,"walletBalances",2),s([O()],k.prototype,"loadedPaymentIntent",2),s([O()],k.prototype,"paymentIntentLoading",2),k=s([Dt("icpay-pay-button")],k);import{LitElement as qt,html as be,css as jt}from"lit";import{customElement as Kt,property as Ht,state as _}from"lit/decorators.js";var Qe=typeof window<"u",Ne=null;function Vt(r,l,e){r&&(e!==void 0?console.log(`[ICPay Widget] ${l}`,e):console.log(`[ICPay Widget] ${l}`))}var P=class extends qt{constructor(){super(...arguments);this.amountUsd=0;this.hasUserAmount=!1;this.selectedSymbol=null;this.processing=!1;this.succeeded=!1;this.errorMessage=null;this.errorSeverity=null;this.errorAction=null;this.walletConnected=!1;this.pendingAction=null;this.showWalletModal=!1;this.walletModalStep="connect";this.showOnrampModal=!1;this.onrampUrl=null;this.onrampPaymentIntentId=null;this.onrampErrorMessage=null;this.oisyReadyToPay=!1;this.lastWalletId=null;this.pnp=null;this.transakMessageHandlerBound=null;this.onrampPollTimer=null;this.onrampPollingActive=!1;this.onrampNotifyController=null;this.showBalanceModal=!1;this.balancesLoading=!1;this.balancesError=null;this.walletBalances=[];this.sdk=null;this.onSwitchAccount=async e=>{try{if(this.pnp)try{await this.pnp.disconnect()}catch{}this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0},this.pendingAction="pay",this.showWalletModal=!0,this.requestUpdate();try{let t=Number(this.amountUsd||0),n=this.selectedSymbol||"ICP";window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:t,currency:n}}))}catch{}}catch{}};this.onSelectBalanceSymbol=async e=>{let t=(this.walletBalances||[]).find(a=>a?.tokenShortcode===e);if(t?.ledgerSymbol&&(this.selectedSymbol=t.ledgerSymbol),this.showBalanceModal=!1,this.showWalletModal=!1,q(this.lastWalletId)){let a=(this.walletBalances||[]).find(o=>o?.tokenShortcode===e),i=a?.chainId;X(i,{provider:this.pnp?.getEvmProvider?.()||this.config?.evmProvider,chainName:a?.chainName,rpcUrlPublic:a?.rpcUrlPublic,nativeSymbol:a?.ledgerSymbol,decimals:a?.decimals}).then(async()=>{try{let o=E(this.config),c=Number(this.amountUsd||0);if(a?.x402Accepts&&!J(this.lastWalletId))try{await o.client.createPaymentX402Usd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId,icpay_context:"amount-input:x402"},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000",fiat_currency:this.config?.fiat_currency}),this.showBalanceModal=!1;return}catch(d){f(d,{onError:p=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:p,bubbles:!0})),v(p)&&(this.errorMessage=g(p),this.errorSeverity=b(p),this.errorAction=w(p))}})}await o.client.createPaymentUsd({usdAmount:c,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay_network:"evm",icpay_ledger_id:a?.ledgerId},recipientAddress:(this.config?.recipientAddresses||{})?.evm||"0x0000000000000000000000000000000000000000"}).catch(d=>{throw d})}catch(o){f(o,{onError:c=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:c,bubbles:!0})),v(c)&&(this.errorMessage=g(c),this.errorSeverity=b(c),this.errorAction=w(c))}})}this.showBalanceModal=!1});return}let n=this.pendingAction;if(this.pendingAction=null,n==="pay")try{let a=(this.walletBalances||[]).find(u=>u?.tokenShortcode===e),i=E(this.config),o=Number(this.amountUsd||0),c=String(a?.ledgerName||a?.chainName||"").toLowerCase(),d=c.includes("sol"),p=c.includes("ic"),y=this.config?.recipientAddresses||{},h=d&&y.sol||y.ic;if(a?.x402Accepts)try{let u={...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:d?"sol":p?"ic":this.config?.icpay_network,icpay_ledger_id:a?.ledgerId,icpay_context:"amount-input:x402"}};await i.client.createPaymentX402Usd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:u,recipientAddress:h||"",fiat_currency:this.config?.fiat_currency});return}catch(u){f(u,{onError:m=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:m,bubbles:!0})),v(m)&&(this.errorMessage=g(m),this.errorSeverity=b(m),this.errorAction=w(m))}});return}await i.client.createPaymentUsd({usdAmount:o,tokenShortcode:a?.tokenShortcode,metadata:{...this.config?.metadata,icpay:{...(this.config?.metadata||{})?.icpay||{},icpay_network:"ic",icpay_ledger_id:a?.ledgerId}},recipientAddress:h||"0x0000000000000000000000000000000000000000"}).catch(u=>{throw u})}catch(a){f(a,{onError:i=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:i,bubbles:!0})),v(i)&&(this.errorMessage=g(i),this.errorSeverity=b(i),this.errorAction=w(i))}})}}}connectedCallback(){if(super.connectedCallback(),!!Qe){Vt(this.config?.debug||!1,"Amount input connected",{config:this.config}),this.amountUsd=Number(this.config?.defaultAmountUsd??0),this.hasUserAmount=!1;try{window.addEventListener("icpay-switch-account",this.onSwitchAccount)}catch{}try{window.addEventListener("icpay-sdk-transaction-created",(()=>{this.showWalletModal=!1,this.requestUpdate()}))}catch{}}}updated(e){if(e.has("config")&&(!this.hasUserAmount&&typeof this.config?.defaultAmountUsd=="number"&&(this.amountUsd===0||this.amountUsd==null||Number.isNaN(this.amountUsd))&&(this.amountUsd=Number(this.config.defaultAmountUsd)),this.pendingAction&&this.config?.actorProvider)){let t=this.pendingAction;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"external"}}))}catch{}this.walletModalStep!=="balances"&&(this.pendingAction=null,setTimeout(()=>{t==="pay"&&this.pay()},0))}}onInputChange(e){let t=Number(this.config?.stepUsd??.5),n=Math.max(0,Number(e.target.value||0)),a=Math.round(n/t)*t;this.amountUsd=Number(a.toFixed(2)),this.hasUserAmount=!0}selectSymbol(e){this.selectedSymbol=e}isValidAmount(){let e=Number(this.config?.minUsd??.5),t=this.config?.maxUsd!==void 0?Number(this.config.maxUsd):1/0;return this.amountUsd>=e&&this.amountUsd<=t}async getOrCreatePnp(){if(this.pnp)return this.pnp;Ne||(Ne=(await import("./wallet-select-Y6Q7B7CJ.js")).WalletSelect);let e=!!(this.config?.openOisyInNewTab||this.config?.plugNPlay?.openOisyInNewTab),t={...this.config?.plugNPlay||{}},n=this.config?.recipientAddresses;if(n&&(n.ic||n.evm||n.sol)){let i=[];n.ic&&i.push("ic"),n.evm&&i.push("evm"),n.sol&&i.push("sol"),i.length&&(t.chainTypes=i)}else this.config?.chainTypes&&(t.chainTypes=this.config.chainTypes);let a=e?I(t):t;try{if(typeof window<"u"){let{resolveDerivationOrigin:i}=await import("./origin-44ZEXSX4.js");a.derivationOrigin=this.config?.derivationOrigin||i()}}catch{}return this.pnp=new Ne(a),this.pnp}async generateWalletConnectQr(e){try{let t=await this.getOrCreatePnp();return!t||typeof t.generateWalletConnectQr!="function"?null:await t.generateWalletConnectQr({onConnected:n=>{this.walletConnected=!0,this.lastWalletId="walletconnect";let a=x(this.pnp,n),i=this.pnp?.getEvmProvider?.(),o=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:a,actorProvider:(c,d)=>this.pnp.getActor({canisterId:c,idl:d,requiresSigning:!0,anon:!1}),...i?{evmProvider:i}:{},...o?{solanaProvider:o}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:"walletconnect"}}))}catch{}try{e?.onConnected?.()}catch{}this.requestUpdate()}})}catch{return null}}async checkCoinbaseConnection(){try{return(await this.getOrCreatePnp())?.hasCoinbaseAccounts?.()??!1}catch{return!1}}async connectWallet(e){let t=await this.getOrCreatePnp();if(!t||!e)throw new Error("Wallet not available");let n=(e||"").toLowerCase(),a=await t.connect(n);if(!!!(a&&(a.connected===!0||a.principal||a.owner||t.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0,this.lastWalletId=n;let o=x(this.pnp,a),c=this.pnp?.getEvmProvider?.(),d=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:o,actorProvider:(p,y)=>this.pnp.getActor({canisterId:p,idl:y,requiresSigning:!0,anon:!1}),...c?{evmProvider:c}:{},...d?{solanaProvider:d}:{}},this.sdk=null;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:n}}))}catch{}this.requestUpdate()}async ensureWallet(){if(this.config.useOwnWallet)return this.config.actorProvider?!0:(this.pendingAction="pay",this.dispatchEvent(new CustomEvent("icpay-connect-wallet",{bubbles:!0})),!1);if(this.walletConnected)return!0;try{if(!(await this.getOrCreatePnp()).getEnabledWallets()?.length)throw new Error("No wallets available");return this.pendingAction="pay",this.showWalletModal=!0,!1}catch(e){return this.errorMessage=e instanceof Error?e.message:"Wallet connection failed",this.errorSeverity="error",!1}}getWalletId(e){return e&&(e.id||e.provider||e.key)||""}getWalletLabel(e){return e&&(e.label||e.name||e.title||e.id)||"Wallet"}getWalletIcon(e){return e&&(e.icon||e.logo||e.image)||null}connectWithWallet(e){if(this.pnp)try{if(!e)throw new Error("No wallet ID provided");this.lastWalletId=(e||"").toLowerCase(),this.pnp.connect(e).then(n=>{if(!!!(n&&(n.connected===!0||n.principal||n.owner||this.pnp?.account)))throw new Error("Wallet connection was rejected");this.walletConnected=!0;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-connected",{detail:{walletType:e}}))}catch{}let i=x(this.pnp,n),o=this.pnp?.getEvmProvider?.(),c=this.pnp?.getSolanaProvider?.();this.config={...this.config,connectedWallet:i,actorProvider:(d,p)=>this.pnp.getActor({canisterId:d,idl:p,requiresSigning:!0,anon:!1}),...o?{evmProvider:o}:{},...c?{solanaProvider:c}:{}},this.sdk=null,this.walletModalStep="balances",this.showBalanceModal=!1,this.showWalletModal=!0,this.fetchAndShowBalances()}).catch(n=>{this.errorMessage=n instanceof Error?n.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}})}catch(t){this.errorMessage=t instanceof Error?t.message:"Wallet connection failed",this.errorSeverity="error",this.showWalletModal=!1;try{window.dispatchEvent(new CustomEvent("icpay-sdk-wallet-error",{detail:{message:this.errorMessage,code:"WALLET_CONNECT_ERROR"}}))}catch{}}}async fetchAndShowBalances(){try{this.balancesLoading=!0,this.balancesError=null,this.walletModalStep="balances",this.showBalanceModal=!1;let e=E(this.config),{balances:t}=await Y({sdk:e,lastWalletId:this.lastWalletId,connectedWallet:this.config?.connectedWallet,amountUsd:Number(this.amountUsd??0),fiatCurrency:this.config?.fiat_currency,chainShortcodes:this.config?.chainShortcodes,tokenShortcodes:this.config?.tokenShortcodes});this.walletBalances=t}catch(e){this.walletBalances=[],this.balancesError=e&&(e.message||String(e))||"Failed to load balances"}finally{this.balancesLoading=!1}}attachTransakMessageListener(){if(!this.transakMessageHandlerBound){this.transakMessageHandlerBound=e=>this.onTransakMessage(e);try{window.addEventListener("message",this.transakMessageHandlerBound)}catch{}}}detachTransakMessageListener(){if(this.transakMessageHandlerBound){try{window.removeEventListener("message",this.transakMessageHandlerBound)}catch{}this.transakMessageHandlerBound=null}}onTransakMessage(e){let t=e?.data,n=t?.event_id||t?.eventId||t?.id;if(!(!n||typeof n!="string")&&n==="TRANSAK_ORDER_SUCCESSFUL"){if(this.detachTransakMessageListener(),this.onrampPollingActive)return;this.showOnrampModal=!1;let a=t?.data?.id||t?.id||t?.webhookData?.id||null;this.startOnrampPolling(a||void 0)}}startOnramp(){try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"createPaymentUsd",type:"onramp"}}))}catch{}this.showWalletModal=!1,setTimeout(()=>this.createOnrampIntent(),0)}async createOnrampIntent(){try{let e=E(this.config),t=Number(this.amountUsd),n=await e.startOnrampUsd(t,void 0,{context:"amount-input:onramp",onrampPayment:!0,onrampProvider:this?.selectedOnrampProvider||"coinbase"}),a=n?.metadata?.onramp?.url||n?.onramp?.url||n?.metadata?.icpay_onramp?.url||n?.paymentIntent?.metadata?.icpay?.onrampUrl||n?.metadata?.icpay?.onrampUrl||null,i=n?.metadata?.icpay_payment_intent_id||n?.metadata?.paymentIntentId||n?.paymentIntentId||null,o=n?.metadata?.icpay_onramp?.errorMessage||n?.metadata?.onramp?.errorMessage||null;if(this.onrampPaymentIntentId=i,a){this.onrampUrl=a,this.onrampErrorMessage=null;try{window.open(a,"icpay_onramp","noopener,noreferrer");try{window.dispatchEvent(new CustomEvent("icpay-onramp-opened",{detail:{url:a}}))}catch{}}catch{}this.startOnrampPolling()}else this.onrampUrl=null,this.onrampErrorMessage=o||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}catch(e){this.onrampUrl=null,this.onrampErrorMessage=e?.message||"Failed to obtain onramp sessionId",this.showOnrampModal=!0}}startOnrampPolling(e){if(this.onrampPollTimer){try{clearInterval(this.onrampPollTimer)}catch{}this.onrampPollTimer=null}if(this.onrampNotifyController){try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null}let t=this.onrampPaymentIntentId;if(!t)return;let n=E(this.config),a=()=>{if(this.detachTransakMessageListener(),this.onrampNotifyController)try{this.onrampNotifyController.stop()}catch{}this.onrampNotifyController=null,this.onrampPollingActive=!1};try{window.addEventListener("icpay-sdk-transaction-completed",(()=>a()),{once:!0})}catch{}this.onrampPollingActive=!0,this.onrampNotifyController=n.notifyIntentUntilComplete(t,5e3,e),this.onrampPollTimer=1}resetPaymentFlow(){ee(this,{pendingAction:"pay"})}async pay(){if(Qe){if(this.resetPaymentFlow(),!this.isValidAmount()){this.errorMessage="Please enter a valid amount",this.errorSeverity="warning";return}try{window.dispatchEvent(new CustomEvent("icpay-sdk-method-start",{detail:{name:"pay",type:"sendUsd",amount:this.amountUsd,currency:this.selectedSymbol||"ICP"}}))}catch{}this.processing=!0;try{if(!await this.ensureWallet())return;this.showWalletModal=!0,await this.fetchAndShowBalances();return}catch(e){f(e,{onError:t=>{this.dispatchEvent(new CustomEvent("icpay-error",{detail:t,bubbles:!0})),v(t)&&(this.errorMessage=g(t),this.errorSeverity=b(t),this.errorAction=w(t))}});try{!this.config.useOwnWallet&&this.pnp&&(await this.pnp.disconnect?.(),this.walletConnected=!1,this.config={...this.config,actorProvider:void 0,connectedWallet:void 0})}catch{}}finally{this.processing=!1}}}render(){if(!this.config)return be`<div class="icpay-card icpay-section">Loading...</div>`;let e=this.config?.placeholder||"Enter amount in USD",n=(this.config?.buttonLabel||"Pay with crypto").replace("{amount}",this.amountUsd?`${Number(this.amountUsd).toFixed(2)}`:"$0.00").replace("{symbol}",this.selectedSymbol||"ICP"),a=this.selectedSymbol||"ICP",o=this.config?.progressBar?.enabled!==!1;return be`
2048
2048
  <div class="icpay-card icpay-section icpay-widget-base">
2049
2049
  ${o?be`
2050
2050
  <icpay-progress-bar
@@ -2109,4 +2109,4 @@ import{a as s}from"./chunk-LTEQ7OUJ.js";import{css as Ze}from"lit";var K=Ze`
2109
2109
  .top-row { grid-template-columns: 1fr; }
2110
2110
  }
2111
2111
  `],s([Ht({type:Object})],P.prototype,"config",2),s([_()],P.prototype,"amountUsd",2),s([_()],P.prototype,"hasUserAmount",2),s([_()],P.prototype,"selectedSymbol",2),s([_()],P.prototype,"processing",2),s([_()],P.prototype,"succeeded",2),s([_()],P.prototype,"errorMessage",2),s([_()],P.prototype,"errorSeverity",2),s([_()],P.prototype,"errorAction",2),s([_()],P.prototype,"walletConnected",2),s([_()],P.prototype,"pendingAction",2),s([_()],P.prototype,"showWalletModal",2),s([_()],P.prototype,"walletModalStep",2),s([_()],P.prototype,"showOnrampModal",2),s([_()],P.prototype,"onrampUrl",2),s([_()],P.prototype,"onrampPaymentIntentId",2),s([_()],P.prototype,"onrampErrorMessage",2),s([_()],P.prototype,"oisyReadyToPay",2),s([_()],P.prototype,"lastWalletId",2),s([_()],P.prototype,"showBalanceModal",2),s([_()],P.prototype,"balancesLoading",2),s([_()],P.prototype,"balancesError",2),s([_()],P.prototype,"walletBalances",2),P=s([Kt("icpay-amount-input")],P);export{K as a,Yt as b,ge as c,E as d,H as e,T as f,W as g,C as h,L as i,A as j,k,P as l};
2112
- //# sourceMappingURL=chunk-RCWWBMN4.js.map
2112
+ //# sourceMappingURL=chunk-5Q7NK6EQ.js.map