Socket
Socket
Sign inDemoInstall

@getalby/sdk

Package Overview
Dependencies
Maintainers
4
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@getalby/sdk - npm Package Compare versions

Comparing version 3.4.0 to 3.4.1

2

dist/helpers.d.ts

@@ -5,3 +5,3 @@ import { SendBoostagramRequestParams } from "./types";

amount: number;
customRecords: Record<string, string>;
custom_records: Record<string, string>;
};

@@ -1,1 +0,1 @@

import e from"events";import{generatePrivateKey as t,relayInit as n,nip19 as s,getPublicKey as i,finishEvent as r,getEventHash as o,nip04 as a}from"nostr-tools";function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e},c.apply(this,arguments)}function l(e,t){if(null==e)return{};var n,s,i={},r=Object.keys(e);for(s=0;s<r.length;s++)t.indexOf(n=r[s])>=0||(i[n]=e[n]);return i}function u(e){return Object.entries(e).map(([e,t])=>e&&t?`${e}=${t}`:"").filter(e=>e).join("&")}function h(e,t){return`Basic ${btoa(`${e}:${t}`)}`}class d extends Error{constructor(e,t,n,s){let i=e.toString();t&&(i+=` ${t}`),i+=": ",i+=s.message?s.message:JSON.stringify(s),super(i),this.status=void 0,this.statusText=void 0,this.headers=void 0,this.error=void 0,this.status=e,this.statusText=t,this.headers=n,this.error=s}}var p={__proto__:null,OAuthClient:class{},AuthClient:class{},AlbyResponseError:d};const y=["auth","endpoint","params","request_body","method","max_retries","base_url","user_agent","headers"],m="https://api.getalby.com";async function w(e,t,n=0){const s=await fetch(e,t);if(429===s.status&&n>0){const i=Number(s.headers.get("x-rate-limit-reset")),r=Number(s.headers.get("x-rate-limit-remaining")),o=1e3*i-Date.now();let a=1e3;return 0===r&&(a=o),await new Promise(e=>setTimeout(e,a)),w(e,t,n-1)}return s}async function g(e){let{auth:t,endpoint:n,params:s={},request_body:i,method:r,max_retries:o,base_url:a=m,user_agent:h,headers:p}=e,g=l(e,y);const f=new URL(a+n);f.search=u(s);const b="POST"===r&&!!i,v=t?await t.getAuthHeader(f.href,r):void 0,k=await w(f.toString(),c({headers:c({},b?{"Content-Type":"application/json; charset=utf-8"}:void 0,v,p,{"User-Agent":null!=h?h:"@getalby/sdk","X-User-Agent":null!=h?h:"@getalby/sdk"}),method:r,body:b?JSON.stringify(i):void 0},g),o);if(!k.ok){const e=await k.json();throw new d(k.status,k.statusText,k.headers,e)}return k}async function f(e){return(await g(e)).json()}const b=["expires_in"],v=["token"];function k(e){const{expires_in:t}=e;return c({},l(e,b),!!t&&{expires_at:Date.now()+1e3*t})}class _{constructor(e){this.bearer_token=void 0,this.bearer_token=e}getAuthHeader(){return{Authorization:`Bearer ${this.bearer_token}`}}}var E={__proto__:null,OAuth2User:class{constructor(t){this.token=void 0,this.options=void 0,this.code_verifier=void 0,this.code_challenge=void 0,this._refreshAccessTokenPromise=void 0,this._tokenEvents=void 0,this._tokenEvents=new e;const{token:n}=t,s=l(t,v);this.options=c({client_secret:""},s),this.token=n,this._refreshAccessTokenPromise=null}on(e,t){this._tokenEvents.on(e,t)}async refreshAccessToken(){var e=this;return this._refreshAccessTokenPromise||(this._refreshAccessTokenPromise=new Promise(async function(t,n){try{var s;const n=null==(s=e.token)?void 0:s.refresh_token,{client_id:i,client_secret:r,request_options:o,user_agent:a}=e.options;if(!i)throw new Error("client_id is required");if(!n)throw new Error("refresh_token is required");const l=k(await f(c({},o,{endpoint:"/oauth/token",params:{client_id:i,grant_type:"refresh_token",refresh_token:n},user_agent:a,method:"POST",headers:c({},null==o?void 0:o.headers,{"Content-type":"application/x-www-form-urlencoded"},{Authorization:h(i,r)})})));e.token=l,t({token:l}),e._tokenEvents.emit("tokenRefreshed",e.token)}catch(t){console.error(t),n(t),e._tokenEvents.emit("tokenRefreshFailed",t)}finally{e._refreshAccessTokenPromise=null}})),this._refreshAccessTokenPromise}isAccessTokenExpired(){var e,t;const n=null==(e=this.token)?void 0:e.refresh_token,s=null==(t=this.token)?void 0:t.expires_at;return!s||!!n&&s<=Date.now()+1e3}async requestAccessToken(e){const{client_id:t,client_secret:n,callback:s,request_options:i,user_agent:r}=this.options,o=this.code_verifier;if(!t)throw new Error("client_id is required");if(!n&&!o)throw new Error("either client_secret is required, or code should be generated using a challenge");if(!s)throw new Error("callback is required");const a={code:e,grant_type:"authorization_code",code_verifier:o,client_id:t,redirect_uri:s},l=k(await f(c({},i,{endpoint:"/oauth/token",params:a,user_agent:r,method:"POST",headers:c({},null==i?void 0:i.headers,{"Content-Type":"application/x-www-form-urlencoded"},{Authorization:h(t,n)})})));return this.token=l,{token:l}}async generateAuthURL(e){e||(e={});const{client_id:t,callback:n,scopes:s}=this.options;if(!n)throw new Error("callback required");if(!s)throw new Error("scopes required");let i;"S256"===e.code_challenge_method?(await this._generateS256Challenge(),i="S256"):"plain"===e.code_challenge_method&&e.code_challenge&&(this.code_challenge=e.code_challenge,this.code_verifier=e.code_challenge,i="plain");const r=this.code_challenge,o=new URL(e.authorizeUrl||"https://getalby.com/oauth");return o.search=u(c({},e,{client_id:t,scope:s.join(" "),response_type:"code",redirect_uri:n,code_challenge_method:i,code_challenge:r})),o.toString()}async getAuthHeader(){var e;if(null==(e=this.token)||!e.access_token)throw new Error("access_token is required");return this.isAccessTokenExpired()&&await this.refreshAccessToken(),{Authorization:`Bearer ${this.token.access_token}`}}async _generateS256Challenge(){const e=crypto.getRandomValues(new Uint8Array(64));this.code_verifier=e.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"");const t=await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(this.code_verifier)),n=new Uint8Array(t);this.code_challenge=btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}},OAuth2Bearer:_};class P extends Error{constructor(e,t){super(e),this.error=void 0,this.code=void 0,this.error=e,this.code=t}}class T extends P{}class N extends P{}class A extends N{}class q extends N{}class R extends P{}class x extends P{}class U extends P{}class I extends P{}const O={alby:{authorizationUrl:"https://nwc.getalby.com/apps/new",relayUrl:"wss://relay.getalby.com/v1",walletPubkey:"69effe7b49a6dd5cf525bd0905917a5005ffe480b58eeb8e861418cf3ae760d9"}};class S{static parseWalletConnectUrl(e){e=e.replace("nostrwalletconnect://","http://").replace("nostr+walletconnect://","http://");const t=new URL(e),n=t.searchParams.get("relay");if(!n)throw new Error("No relay URL found in connection string");const s={walletPubkey:t.host,relayUrl:n},i=t.searchParams.get("secret");return i&&(s.secret=i),s}static withNewSecret(e){return(e=e||{}).secret=t(),new S(e)}constructor(e){var t;this.relay=void 0,this.relayUrl=void 0,this.secret=void 0,this.walletPubkey=void 0,this.options=void 0,e&&e.nostrWalletConnectUrl&&(e=c({},S.parseWalletConnectUrl(e.nostrWalletConnectUrl),e));const i=O[(null==(t=e)?void 0:t.providerName)||"alby"];this.options=c({},i,e||{}),this.relayUrl=this.options.relayUrl,this.relay=n(this.relayUrl),this.options.secret&&(this.secret=this.options.secret.toLowerCase().startsWith("nsec")?s.decode(this.options.secret).data:this.options.secret),this.walletPubkey=this.options.walletPubkey.toLowerCase().startsWith("npub")?s.decode(this.options.walletPubkey).data:this.options.walletPubkey,void 0===globalThis.WebSocket&&console.error("WebSocket is undefined. Make sure to `import websocket-polyfill` for nodejs environments")}get nostrWalletConnectUrl(){return this.getNostrWalletConnectUrl()}getNostrWalletConnectUrl(e=!0){let t=`nostr+walletconnect://${this.walletPubkey}?relay=${this.relayUrl}&pubkey=${this.publicKey}`;return e&&(t=`${t}&secret=${this.secret}`),t}get connected(){return 1===this.relay.status}get publicKey(){if(!this.secret)throw new Error("Missing secret key");return i(this.secret)}getPublicKey(){return Promise.resolve(this.publicKey)}signEvent(e){if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(r(e,this.secret))}getEventHash(e){return o(e)}close(){return this.relay.close()}async encrypt(e,t){if(!this.secret)throw new Error("Missing secret");return await a.encrypt(this.secret,e,t)}async decrypt(e,t){if(!this.secret)throw new Error("Missing secret");return await a.decrypt(this.secret,e,t)}getAuthorizationUrl(e){if(!this.options.authorizationUrl)throw new Error("Missing authorizationUrl option");const t=new URL(this.options.authorizationUrl);return null!=e&&e.name&&t.searchParams.set("name",null==e?void 0:e.name),t.searchParams.set("pubkey",this.publicKey),null!=e&&e.returnTo&&t.searchParams.set("return_to",e.returnTo),null!=e&&e.budgetRenewal&&t.searchParams.set("budget_renewal",e.budgetRenewal),null!=e&&e.expiresAt&&t.searchParams.set("expires_at",Math.floor(e.expiresAt.getTime()/1e3).toString()),null!=e&&e.maxAmount&&t.searchParams.set("max_amount",e.maxAmount.toString()),void 0!==(null==e?void 0:e.editable)&&t.searchParams.set("editable",e.editable.toString()),null!=e&&e.requestMethods&&t.searchParams.set("request_methods",e.requestMethods.join(" ")),t}initNWC(e={}){e.name||(e.name=document.location.host);const t=this.getAuthorizationUrl(e),n=window.outerHeight/2+window.screenY-300,s=window.outerWidth/2+window.screenX-200;return new Promise((e,i)=>{const r=window.open(t.toString(),`${document.title} - Wallet Connect`,`height=600,width=400,top=${n},left=${s}`);if(!r)return void i(new Error("failed to execute window.open"));const o=n=>{const s=n.data;s&&"nwc:success"===s.type&&n.origin===`${t.protocol}//${t.host}`&&(e(s),clearInterval(a),window.removeEventListener("message",o),r&&r.close())},a=setInterval(()=>{r&&r.closed&&(clearInterval(a),window.removeEventListener("message",o),i(new Error("Popup closed")))},500);window.addEventListener("message",o)})}async getWalletServiceSupportedMethods(){await this._checkConnected();const e=await this.relay.list([{kinds:[13194],limit:1,authors:[this.walletPubkey]}],{eoseSubTimeout:1e4});if(!e.length)throw new Error("no info event (kind 13194) returned from relay");return e[0].content.split(/[ |,]/g)}async getInfo(){try{return await this.executeNip47Request("get_info",{},e=>!!e.methods)}catch(e){throw console.error("Failed to request get_info",e),e}}async getBalance(){try{return await this.executeNip47Request("get_balance",{},e=>void 0!==e.balance)}catch(e){throw console.error("Failed to request get_balance",e),e}}async payInvoice(e){try{return await this.executeNip47Request("pay_invoice",e,e=>!!e.preimage)}catch(e){throw console.error("Failed to request pay_invoice",e),e}}async payKeysend(e){try{return await this.executeNip47Request("pay_keysend",e,e=>!!e.preimage)}catch(e){throw console.error("Failed to request pay_keysend",e),e}}async multiPayInvoice(e){try{return{invoices:await this.executeMultiNip47Request("multi_pay_invoice",e,e.invoices.length,e=>!!e.preimage),errors:[]}}catch(e){throw console.error("Failed to request multi_pay_invoice",e),e}}async multiPayKeysend(e){try{return{keysends:await this.executeMultiNip47Request("multi_pay_keysend",e,e.keysends.length,e=>!!e.preimage),errors:[]}}catch(e){throw console.error("Failed to request multi_pay_keysend",e),e}}async makeInvoice(e){try{if(!e.amount)throw new Error("No amount specified");return await this.executeNip47Request("make_invoice",e,e=>!!e.invoice)}catch(e){throw console.error("Failed to request make_invoice",e),e}}async lookupInvoice(e){try{return await this.executeNip47Request("lookup_invoice",e,e=>!!e.invoice)}catch(e){throw console.error("Failed to request lookup_invoice",e),e}}async listTransactions(e){try{return await this.executeNip47Request("list_transactions",e,e=>!!e.transactions)}catch(e){throw console.error("Failed to request list_transactions",e),e}}async executeNip47Request(e,t,n){var s=this;return await this._checkConnected(),new Promise((i,r)=>{!async function(){const o={method:e,params:t},a=await s.encrypt(s.walletPubkey,JSON.stringify(o)),c={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",s.walletPubkey]],content:a,pubkey:s.publicKey},l=await s.signEvent(c),u=s.relay.sub([{kinds:[23195],authors:[s.walletPubkey],"#e":[l.id]}]),h=setTimeout(function(){u.unsub(),r(new q(`reply timeout: event ${l.id}`,"INTERNAL"))},6e4);u.on("event",async function(e){clearTimeout(h),u.unsub();const t=await s.decrypt(s.walletPubkey,e.content);let o;try{o=JSON.parse(t)}catch(e){return clearTimeout(h),u.unsub(),void r(new x("failed to deserialize response","INTERNAL"))}var a,c,l,d;23195==e.kind?o.result?n(o.result)?i(o.result):(clearTimeout(h),u.unsub(),r(new U("response from NWC failed validation: "+JSON.stringify(o.result),"INTERNAL"))):(clearTimeout(h),u.unsub(),r(new T((null==(a=o.error)?void 0:a.message)||"unknown Error",(null==(c=o.error)?void 0:c.code)||"INTERNAL"))):(clearTimeout(h),u.unsub(),r(new I((null==(l=o.error)?void 0:l.message)||"unknown Error",(null==(d=o.error)?void 0:d.code)||"INTERNAL")))});const d=setTimeout(function(){u.unsub(),r(new A(`publish timeout: ${l.id}`,"INTERNAL"))},5e3);try{await s.relay.publish(l),clearTimeout(d)}catch(e){clearTimeout(d),r(new R(`failed to publish: ${e}`,"INTERNAL"))}}()})}async executeMultiNip47Request(e,t,n,s){var i=this;await this._checkConnected();const r=[];return new Promise((o,a)=>{!async function(){const l={method:e,params:t},u=await i.encrypt(i.walletPubkey,JSON.stringify(l)),h={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",i.walletPubkey]],content:u,pubkey:i.publicKey},d=await i.signEvent(h),p=i.relay.sub([{kinds:[23195],authors:[i.walletPubkey],"#e":[d.id]}]),y=setTimeout(function(){p.unsub(),a(new q(`reply timeout: event ${d.id}`,"INTERNAL"))},6e4);p.on("event",async function(e){const t=await i.decrypt(i.walletPubkey,e.content);let l;try{l=JSON.parse(t)}catch(e){clearTimeout(y),p.unsub(),a(new x("failed to deserialize response","INTERNAL"))}var u,h;if(23195==e.kind)if(l.result){var d;if(!s(l.result))return clearTimeout(y),p.unsub(),void a(new U("Response from NWC failed validation: "+JSON.stringify(l.result),"INTERNAL"));const t=null==(d=e.tags.find(e=>"d"===e[0]))?void 0:d[1];if(void 0===t)return clearTimeout(y),p.unsub(),void a(new U("No d tag found in response event","INTERNAL"));r.push(c({},l.result,{dTag:t})),r.length===n&&(clearTimeout(y),p.unsub(),o(r))}else{var m,w;clearTimeout(y),p.unsub(),a(new T(null==(m=l.error)?void 0:m.message,null==(w=l.error)?void 0:w.code))}else clearTimeout(y),p.unsub(),a(new I(null==(u=l.error)?void 0:u.message,null==(h=l.error)?void 0:h.code))});const m=setTimeout(function(){p.unsub(),a(new A(`Publish timeout: ${d.id}`,"INTERNAL"))},5e3);try{await i.relay.publish(d),clearTimeout(m)}catch(e){clearTimeout(m),a(new R(`Failed to publish: ${e}`,"INTERNAL"))}}()})}async _checkConnected(){if(!this.secret)throw new Error("Missing secret key");await this.relay.connect()}}var C={__proto__:null,Nip47Error:P,Nip47WalletError:T,Nip47TimeoutError:N,Nip47PublishTimeoutError:A,Nip47ReplyTimeoutError:q,Nip47PublishError:R,Nip47ResponseDecodingError:x,Nip47ResponseValidationError:U,Nip47UnexpectedResponseError:I,NWCs:O,NWCClient:S};const W={get_info:"getInfo",get_balance:"getBalance",make_invoice:"makeInvoice",pay_invoice:"sendPayment",pay_keysend:"payKeysend",lookup_invoice:"lookupInvoice",list_transactions:"listTransactions",multi_pay_invoice:"sendMultiPayment",multi_pay_keysend:"multiKeysend"};class ${get relay(){return console.warn("relay is deprecated. Please use client.relay instead."),this.client.relay}get relayUrl(){return console.warn("relayUrl is deprecated. Please use client.relayUrl instead."),this.client.relayUrl}get walletPubkey(){return console.warn("walletPubkey is deprecated. Please use client.walletPubkey instead."),this.client.walletPubkey}get options(){return this.client.options}get secret(){return console.warn("secret is deprecated. Please use client.secret instead."),this.client.secret}static withNewSecret(e){return(e=e||{}).secret=t(),new $(e)}constructor(e){this._enabled=!1,this.client=void 0,this.subscribers=void 0,this.client=new S(e),this.subscribers={}}on(e,t){this.subscribers[e]=t}notify(e,t){const n=this.subscribers[e];n&&n(t)}getNostrWalletConnectUrl(e=!0){return console.warn("getNostrWalletConnectUrl is deprecated. Please use client.getNostrWalletConnectUrl instead."),this.client.getNostrWalletConnectUrl(e)}get nostrWalletConnectUrl(){return console.warn("nostrWalletConnectUrl is deprecated. Please use client.nostrWalletConnectUrl instead."),this.client.nostrWalletConnectUrl}get connected(){return console.warn("connected is deprecated. Please use client.connected instead."),this.client.connected}get publicKey(){return console.warn("publicKey is deprecated. Please use client.publicKey instead."),this.client.publicKey}getPublicKey(){return this.client.getPublicKey()}signEvent(e){return this.client.signEvent(e)}getEventHash(e){return console.warn("getEventHash is deprecated. Please use client.getEventHash instead."),this.client.getEventHash(e)}async enable(){this._enabled=!0}close(){return this.client.close()}async encrypt(e,t){return console.warn("encrypt is deprecated. Please use client.encrypt instead."),this.client.encrypt(e,t)}async decrypt(e,t){return console.warn("decrypt is deprecated. Please use client.decrypt instead."),this.client.decrypt(e,t)}getAuthorizationUrl(e){return console.warn("getAuthorizationUrl is deprecated. Please use client.getAuthorizationUrl instead."),this.client.getAuthorizationUrl(e)}initNWC(e={}){return console.warn("initNWC is deprecated. Please use client.initNWC instead."),this.client.initNWC(e)}async getInfo(){await this.checkEnabled();const e=["lightning","nostr"],t="Alby JS SDK";try{const n=await this.client.getInfo(),s={methods:n.methods.map(e=>W[e]),node:{alias:n.alias,pubkey:n.pubkey,color:n.color},supports:e,version:t};return this.notify("getInfo",s),s}catch(n){return console.error("Using minimal getInfo",n),{methods:["sendPayment"],node:{},supports:e,version:t}}}async getBalance(){await this.checkEnabled();const e=await this.client.getBalance(),t={balance:Math.floor(e.balance/1e3),currency:"sats"};return this.notify("getBalance",t),t}async sendPayment(e){await this.checkEnabled();const t={preimage:(await this.client.payInvoice({invoice:e})).preimage};return this.notify("sendPayment",t),t}async sendPaymentAsync(e){return await this.checkEnabled(),this.client.payInvoice({invoice:e}),this.notify("sendPaymentAsync",{}),{}}async keysend(e){await this.checkEnabled();const t={preimage:(await this.client.payKeysend(L(e))).preimage};return this.notify("keysend",t),t}async makeInvoice(e){var t;await this.checkEnabled();const n="object"==typeof e?e:void 0,s=+(null!=(t=null==n?void 0:n.amount)?t:e);if(!s)throw new Error("No amount specified");const i={paymentRequest:(await this.client.makeInvoice({amount:1e3*s,description:null==n?void 0:n.defaultMemo})).invoice};return this.notify("makeInvoice",i),i}async lookupInvoice(e){await this.checkEnabled();const t=await this.client.lookupInvoice({invoice:e.paymentRequest,payment_hash:e.paymentHash}),n={preimage:t.preimage,paymentRequest:t.invoice,paid:!!t.settled_at};return this.notify("lookupInvoice",n),n}async listTransactions(e){await this.checkEnabled();const t={transactions:(await this.client.listTransactions(e)).transactions.map(M)};return this.notify("listTransactions",t),t}async sendMultiPayment(e){await this.checkEnabled();const t=await this.client.multiPayInvoice({invoices:e.map((e,t)=>({invoice:e,id:t.toString()}))}),n={payments:t.invoices.map(t=>{const n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find paymentRequest matching response d tag");return{paymentRequest:n,preimage:t.preimage}}),errors:[]};return this.notify("sendMultiPayment",n),n}async multiKeysend(e){await this.checkEnabled();const t=await this.client.multiPayKeysend({keysends:e.map((e,t)=>c({},L(e),{id:t.toString()}))}),n={keysends:t.keysends.map(t=>{const n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find keysend matching response d tag");return{keysend:n,preimage:t.preimage}}),errors:[]};return this.notify("multiKeysend",n),n}lnurl(e){throw new Error("Method not implemented.")}request(e,t){throw new Error("Method not implemented.")}signMessage(e){throw new Error("Method not implemented.")}verifyMessage(e,t){throw new Error("Method not implemented.")}async checkEnabled(){if(!this._enabled)throw new Error("please call enable() and await the promise before calling this function")}}function M(e){return c({},e,{amount:Math.floor(e.amount/1e3),fees_paid:e.fees_paid?Math.floor(e.fees_paid/1e3):0})}function L(e){return{amount:1e3*+e.amount,pubkey:e.destination,tlv_records:e.customRecords?Object.entries(e.customRecords).map(e=>({type:parseInt(e[0]),value:e[1]})):[]}}const K=$;function z(e){const t={};return e.recipient.customKey&&e.recipient.customValue&&(t[e.recipient.customKey]=e.recipient.customValue),t[7629169]=JSON.stringify(e.boostagram),{destination:e.recipient.address,amount:e.amount,customRecords:t}}class j{constructor(e,t){this.auth=void 0,this.defaultRequestOptions=void 0,this.auth="string"==typeof e?new _(e):e,this.defaultRequestOptions=c({},t,{user_agent:null==t?void 0:t.user_agent})}accountBalance(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/balance",params:e,method:"GET"}))}accountSummary(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/summary",params:e,method:"GET"}))}accountInformation(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/me",params:e,method:"GET"}))}accountValue4Value(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/value4value",params:e,method:"GET"}))}incomingInvoices(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/incoming",params:e,method:"GET"}))}outgoingInvoices(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/outgoing",params:e,method:"GET"}))}invoices(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",params:e,method:"GET"}))}getInvoice(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:`/invoices/${e}`,method:"GET"}))}decodeInvoice(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:`/decode/bolt11/${e}`,method:"GET"}))}createInvoice(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",request_body:e,method:"POST"}))}keysend(e,t){let n,s;return Array.isArray(e)?(n="/payments/keysend/multi",s={keysends:e}):(n="/payments/keysend",s=e),f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:s,method:"POST"}))}sendPayment(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/bolt11",request_body:e,method:"POST"}))}sendBoostagram(e,t){let n,s;return Array.isArray(e)?(n="/payments/keysend/multi",s={keysends:e.map(e=>z(e))}):(n="/payments/keysend",s=z(e)),f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:s,method:"POST"}))}sendToAlbyAccount(e,t){return console.warn("sendToAlbyAccount is deprecated. Please use sendBoostagramToAlbyAccount instead."),this.sendBoostagramToAlbyAccount(e,t)}sendBoostagramToAlbyAccount(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/keysend",request_body:{destination:"030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",customRecords:{696969:e.account},amount:e.amount,memo:e.memo},method:"POST"}))}createWebhookEndpoint(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints",request_body:e,method:"POST"}))}deleteWebhookEndpoint(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:`/webhook_endpoints/${e}`,method:"DELETE"}))}getSwapInfo(e){return f(c({auth:this.auth},this.defaultRequestOptions,e,{endpoint:"/swaps/info",method:"GET"}))}createSwap(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/swaps",method:"POST",request_body:e}))}}var B={__proto__:null,NostrWebLNProvider:$,NWC:K,OauthWeblnProvider:class{constructor(e){this.client=void 0,this.auth=void 0,this.oauth=void 0,this.subscribers=void 0,this.isExecuting=void 0,this.auth=e.auth,this.client=new j(e.auth),this.oauth=!0,this.subscribers={},this.isExecuting=!1}on(e,t){this.subscribers[e]=t}notify(e,t){const n=this.subscribers[e];n&&n(t)}async enable(){var e;if(!this.isExecuting){if(null!=(e=this.auth.token)&&e.access_token)return{enabled:!0};if("undefined"==typeof window||void 0===window.document)throw new Error("Missing access token");try{this.isExecuting=!0,await this.openAuthorization()}finally{this.isExecuting=!1}}}async sendPayment(e){if(!this.isExecuting)try{this.isExecuting=!0;const t=await this.client.sendPayment({invoice:e});return this.notify("sendPayment",t),{preimage:t.payment_preimage}}catch(e){let t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)}finally{this.isExecuting=!1}}async keysend(e){if(!this.isExecuting)try{this.isExecuting=!0;const t=await this.client.keysend(e);return this.notify("keysend",t),{preimage:t.payment_preimage}}catch(e){let t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)}finally{this.isExecuting=!1}}async getInfo(){return{alias:"Alby"}}async makeInvoice(e){if(!this.isExecuting)try{this.isExecuting=!0;const t=await this.client.createInvoice({amount:parseInt(e.amount.toString()),description:e.defaultMemo});return this.notify("makeInvoice",t),{paymentRequest:t.payment_request}}catch(e){let t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)}finally{this.isExecuting=!1}}async openAuthorization(){var e=this;const t=window.outerHeight/2+window.screenY-350,n=window.outerWidth/2+window.screenX-300,s=await this.auth.generateAuthURL({code_challenge_method:"S256"});return new Promise((i,r)=>{const o=window.open(s,`${document.title} - WebLN enable`,`height=700,width=600,top=${t},left=${n}`);let a=!1;window.addEventListener("message",async function(t){const n=t.data;if(n&&"alby:oauth:success"===n.type&&t.origin===`${document.location.protocol}//${document.location.host}`&&!a){a=!0,console.info("Processing OAuth code response");const t=n.payload.code;try{await e.auth.requestAccessToken(t),e.client=new j(e.auth),o&&o.close(),e.notify("enable"),i({enabled:!0})}catch(e){console.error(e),r({enabled:!1})}}})})}}};export{j as Client,E as auth,C as nwc,p as types,B as webln};
import e from"eventemitter3";import{generatePrivateKey as t,relayInit as n,nip19 as s,getPublicKey as i,finishEvent as r,getEventHash as o,nip04 as a}from"nostr-tools";function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(e[s]=n[s])}return e},c.apply(this,arguments)}function l(e,t){if(null==e)return{};var n,s,i={},r=Object.keys(e);for(s=0;s<r.length;s++)t.indexOf(n=r[s])>=0||(i[n]=e[n]);return i}function u(e){return Object.entries(e).map(([e,t])=>e&&t?`${e}=${t}`:"").filter(e=>e).join("&")}function h(e,t){return`Basic ${btoa(`${e}:${t}`)}`}class d extends Error{constructor(e,t,n,s){let i=e.toString();t&&(i+=` ${t}`),i+=": ",i+=s.message?s.message:JSON.stringify(s),super(i),this.status=void 0,this.statusText=void 0,this.headers=void 0,this.error=void 0,this.status=e,this.statusText=t,this.headers=n,this.error=s}}var p={__proto__:null,OAuthClient:class{},AuthClient:class{},AlbyResponseError:d};const y=["auth","endpoint","params","request_body","method","max_retries","base_url","user_agent","headers"],m="https://api.getalby.com";async function w(e,t,n=0){const s=await fetch(e,t);if(429===s.status&&n>0){const i=Number(s.headers.get("x-rate-limit-reset")),r=Number(s.headers.get("x-rate-limit-remaining")),o=1e3*i-Date.now();let a=1e3;return 0===r&&(a=o),await new Promise(e=>setTimeout(e,a)),w(e,t,n-1)}return s}async function g(e){let{auth:t,endpoint:n,params:s={},request_body:i,method:r,max_retries:o,base_url:a=m,user_agent:h,headers:p}=e,g=l(e,y);const f=new URL(a+n);f.search=u(s);const b="POST"===r&&!!i,v=t?await t.getAuthHeader(f.href,r):void 0,_=await w(f.toString(),c({headers:c({},b?{"Content-Type":"application/json; charset=utf-8"}:void 0,v,p,{"User-Agent":null!=h?h:"@getalby/sdk","X-User-Agent":null!=h?h:"@getalby/sdk"}),method:r,body:b?JSON.stringify(i):void 0},g),o);if(!_.ok){const e=await _.json();throw new d(_.status,_.statusText,_.headers,e)}return _}async function f(e){return(await g(e)).json()}const b=["expires_in"],v=["token"];function _(e){const{expires_in:t}=e;return c({},l(e,b),!!t&&{expires_at:Date.now()+1e3*t})}class k{constructor(e){this.bearer_token=void 0,this.bearer_token=e}getAuthHeader(){return{Authorization:`Bearer ${this.bearer_token}`}}}var E={__proto__:null,OAuth2User:class{constructor(t){this.token=void 0,this.options=void 0,this.code_verifier=void 0,this.code_challenge=void 0,this._refreshAccessTokenPromise=void 0,this._tokenEvents=void 0,this._tokenEvents=new e;const{token:n}=t,s=l(t,v);this.options=c({client_secret:""},s),this.token=n,this._refreshAccessTokenPromise=null}on(e,t){this._tokenEvents.on(e,t)}async refreshAccessToken(){var e=this;return this._refreshAccessTokenPromise||(this._refreshAccessTokenPromise=new Promise(async function(t,n){try{var s;const n=null==(s=e.token)?void 0:s.refresh_token,{client_id:i,client_secret:r,request_options:o,user_agent:a}=e.options;if(!i)throw new Error("client_id is required");if(!n)throw new Error("refresh_token is required");const l=_(await f(c({},o,{endpoint:"/oauth/token",params:{client_id:i,grant_type:"refresh_token",refresh_token:n},user_agent:a,method:"POST",headers:c({},null==o?void 0:o.headers,{"Content-type":"application/x-www-form-urlencoded"},{Authorization:h(i,r)})})));e.token=l,t({token:l}),e._tokenEvents.emit("tokenRefreshed",e.token)}catch(t){console.error(t),n(t),e._tokenEvents.emit("tokenRefreshFailed",t)}finally{e._refreshAccessTokenPromise=null}})),this._refreshAccessTokenPromise}isAccessTokenExpired(){var e,t;const n=null==(e=this.token)?void 0:e.refresh_token,s=null==(t=this.token)?void 0:t.expires_at;return!s||!!n&&s<=Date.now()+1e3}async requestAccessToken(e){const{client_id:t,client_secret:n,callback:s,request_options:i,user_agent:r}=this.options,o=this.code_verifier;if(!t)throw new Error("client_id is required");if(!n&&!o)throw new Error("either client_secret is required, or code should be generated using a challenge");if(!s)throw new Error("callback is required");const a={code:e,grant_type:"authorization_code",code_verifier:o,client_id:t,redirect_uri:s},l=_(await f(c({},i,{endpoint:"/oauth/token",params:a,user_agent:r,method:"POST",headers:c({},null==i?void 0:i.headers,{"Content-Type":"application/x-www-form-urlencoded"},{Authorization:h(t,n)})})));return this.token=l,{token:l}}async generateAuthURL(e){e||(e={});const{client_id:t,callback:n,scopes:s}=this.options;if(!n)throw new Error("callback required");if(!s)throw new Error("scopes required");let i;"S256"===e.code_challenge_method?(await this._generateS256Challenge(),i="S256"):"plain"===e.code_challenge_method&&e.code_challenge&&(this.code_challenge=e.code_challenge,this.code_verifier=e.code_challenge,i="plain");const r=this.code_challenge,o=new URL(e.authorizeUrl||"https://getalby.com/oauth");return o.search=u(c({},e,{client_id:t,scope:s.join(" "),response_type:"code",redirect_uri:n,code_challenge_method:i,code_challenge:r})),o.toString()}async getAuthHeader(){var e;if(null==(e=this.token)||!e.access_token)throw new Error("access_token is required");return this.isAccessTokenExpired()&&await this.refreshAccessToken(),{Authorization:`Bearer ${this.token.access_token}`}}async _generateS256Challenge(){const e=crypto.getRandomValues(new Uint8Array(64));this.code_verifier=e.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"");const t=await crypto.subtle.digest("SHA-256",(new TextEncoder).encode(this.code_verifier)),n=new Uint8Array(t);this.code_challenge=btoa(String.fromCharCode(...n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}},OAuth2Bearer:k};class P extends Error{constructor(e,t){super(e),this.error=void 0,this.code=void 0,this.error=e,this.code=t}}class T extends P{}class N extends P{}class A extends N{}class q extends N{}class R extends P{}class x extends P{}class U extends P{}class I extends P{}const O={alby:{authorizationUrl:"https://nwc.getalby.com/apps/new",relayUrl:"wss://relay.getalby.com/v1",walletPubkey:"69effe7b49a6dd5cf525bd0905917a5005ffe480b58eeb8e861418cf3ae760d9"}};class S{static parseWalletConnectUrl(e){e=e.replace("nostrwalletconnect://","http://").replace("nostr+walletconnect://","http://");const t=new URL(e),n=t.searchParams.get("relay");if(!n)throw new Error("No relay URL found in connection string");const s={walletPubkey:t.host,relayUrl:n},i=t.searchParams.get("secret");return i&&(s.secret=i),s}static withNewSecret(e){return(e=e||{}).secret=t(),new S(e)}constructor(e){var t;this.relay=void 0,this.relayUrl=void 0,this.secret=void 0,this.walletPubkey=void 0,this.options=void 0,e&&e.nostrWalletConnectUrl&&(e=c({},S.parseWalletConnectUrl(e.nostrWalletConnectUrl),e));const i=O[(null==(t=e)?void 0:t.providerName)||"alby"];this.options=c({},i,e||{}),this.relayUrl=this.options.relayUrl,this.relay=n(this.relayUrl),this.options.secret&&(this.secret=this.options.secret.toLowerCase().startsWith("nsec")?s.decode(this.options.secret).data:this.options.secret),this.walletPubkey=this.options.walletPubkey.toLowerCase().startsWith("npub")?s.decode(this.options.walletPubkey).data:this.options.walletPubkey,void 0===globalThis.WebSocket&&console.error("WebSocket is undefined. Make sure to `import websocket-polyfill` for nodejs environments")}get nostrWalletConnectUrl(){return this.getNostrWalletConnectUrl()}getNostrWalletConnectUrl(e=!0){let t=`nostr+walletconnect://${this.walletPubkey}?relay=${this.relayUrl}&pubkey=${this.publicKey}`;return e&&(t=`${t}&secret=${this.secret}`),t}get connected(){return 1===this.relay.status}get publicKey(){if(!this.secret)throw new Error("Missing secret key");return i(this.secret)}getPublicKey(){return Promise.resolve(this.publicKey)}signEvent(e){if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(r(e,this.secret))}getEventHash(e){return o(e)}close(){return this.relay.close()}async encrypt(e,t){if(!this.secret)throw new Error("Missing secret");return await a.encrypt(this.secret,e,t)}async decrypt(e,t){if(!this.secret)throw new Error("Missing secret");return await a.decrypt(this.secret,e,t)}getAuthorizationUrl(e){if(!this.options.authorizationUrl)throw new Error("Missing authorizationUrl option");const t=new URL(this.options.authorizationUrl);return null!=e&&e.name&&t.searchParams.set("name",null==e?void 0:e.name),t.searchParams.set("pubkey",this.publicKey),null!=e&&e.returnTo&&t.searchParams.set("return_to",e.returnTo),null!=e&&e.budgetRenewal&&t.searchParams.set("budget_renewal",e.budgetRenewal),null!=e&&e.expiresAt&&t.searchParams.set("expires_at",Math.floor(e.expiresAt.getTime()/1e3).toString()),null!=e&&e.maxAmount&&t.searchParams.set("max_amount",e.maxAmount.toString()),void 0!==(null==e?void 0:e.editable)&&t.searchParams.set("editable",e.editable.toString()),null!=e&&e.requestMethods&&t.searchParams.set("request_methods",e.requestMethods.join(" ")),t}initNWC(e={}){e.name||(e.name=document.location.host);const t=this.getAuthorizationUrl(e),n=window.outerHeight/2+window.screenY-300,s=window.outerWidth/2+window.screenX-200;return new Promise((e,i)=>{const r=window.open(t.toString(),`${document.title} - Wallet Connect`,`height=600,width=400,top=${n},left=${s}`);if(!r)return void i(new Error("failed to execute window.open"));const o=n=>{const s=n.data;s&&"nwc:success"===s.type&&n.origin===`${t.protocol}//${t.host}`&&(e(s),clearInterval(a),window.removeEventListener("message",o),r&&r.close())},a=setInterval(()=>{r&&r.closed&&(clearInterval(a),window.removeEventListener("message",o),i(new Error("Popup closed")))},500);window.addEventListener("message",o)})}async getWalletServiceSupportedMethods(){await this._checkConnected();const e=await this.relay.list([{kinds:[13194],limit:1,authors:[this.walletPubkey]}],{eoseSubTimeout:1e4});if(!e.length)throw new Error("no info event (kind 13194) returned from relay");return e[0].content.split(/[ |,]/g)}async getInfo(){try{return await this.executeNip47Request("get_info",{},e=>!!e.methods)}catch(e){throw console.error("Failed to request get_info",e),e}}async getBalance(){try{return await this.executeNip47Request("get_balance",{},e=>void 0!==e.balance)}catch(e){throw console.error("Failed to request get_balance",e),e}}async payInvoice(e){try{return await this.executeNip47Request("pay_invoice",e,e=>!!e.preimage)}catch(e){throw console.error("Failed to request pay_invoice",e),e}}async payKeysend(e){try{return await this.executeNip47Request("pay_keysend",e,e=>!!e.preimage)}catch(e){throw console.error("Failed to request pay_keysend",e),e}}async multiPayInvoice(e){try{return{invoices:await this.executeMultiNip47Request("multi_pay_invoice",e,e.invoices.length,e=>!!e.preimage),errors:[]}}catch(e){throw console.error("Failed to request multi_pay_invoice",e),e}}async multiPayKeysend(e){try{return{keysends:await this.executeMultiNip47Request("multi_pay_keysend",e,e.keysends.length,e=>!!e.preimage),errors:[]}}catch(e){throw console.error("Failed to request multi_pay_keysend",e),e}}async makeInvoice(e){try{if(!e.amount)throw new Error("No amount specified");return await this.executeNip47Request("make_invoice",e,e=>!!e.invoice)}catch(e){throw console.error("Failed to request make_invoice",e),e}}async lookupInvoice(e){try{return await this.executeNip47Request("lookup_invoice",e,e=>!!e.invoice)}catch(e){throw console.error("Failed to request lookup_invoice",e),e}}async listTransactions(e){try{return await this.executeNip47Request("list_transactions",e,e=>!!e.transactions)}catch(e){throw console.error("Failed to request list_transactions",e),e}}async executeNip47Request(e,t,n){var s=this;return await this._checkConnected(),new Promise((i,r)=>{!async function(){const o={method:e,params:t},a=await s.encrypt(s.walletPubkey,JSON.stringify(o)),c={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",s.walletPubkey]],content:a,pubkey:s.publicKey},l=await s.signEvent(c),u=s.relay.sub([{kinds:[23195],authors:[s.walletPubkey],"#e":[l.id]}]),h=setTimeout(function(){u.unsub(),r(new q(`reply timeout: event ${l.id}`,"INTERNAL"))},6e4);u.on("event",async function(e){clearTimeout(h),u.unsub();const t=await s.decrypt(s.walletPubkey,e.content);let o;try{o=JSON.parse(t)}catch(e){return clearTimeout(h),u.unsub(),void r(new x("failed to deserialize response","INTERNAL"))}var a,c,l,d;23195==e.kind?o.result?n(o.result)?i(o.result):(clearTimeout(h),u.unsub(),r(new U("response from NWC failed validation: "+JSON.stringify(o.result),"INTERNAL"))):(clearTimeout(h),u.unsub(),r(new T((null==(a=o.error)?void 0:a.message)||"unknown Error",(null==(c=o.error)?void 0:c.code)||"INTERNAL"))):(clearTimeout(h),u.unsub(),r(new I((null==(l=o.error)?void 0:l.message)||"unknown Error",(null==(d=o.error)?void 0:d.code)||"INTERNAL")))});const d=setTimeout(function(){u.unsub(),r(new A(`publish timeout: ${l.id}`,"INTERNAL"))},5e3);try{await s.relay.publish(l),clearTimeout(d)}catch(e){clearTimeout(d),r(new R(`failed to publish: ${e}`,"INTERNAL"))}}()})}async executeMultiNip47Request(e,t,n,s){var i=this;await this._checkConnected();const r=[];return new Promise((o,a)=>{!async function(){const l={method:e,params:t},u=await i.encrypt(i.walletPubkey,JSON.stringify(l)),h={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",i.walletPubkey]],content:u,pubkey:i.publicKey},d=await i.signEvent(h),p=i.relay.sub([{kinds:[23195],authors:[i.walletPubkey],"#e":[d.id]}]),y=setTimeout(function(){p.unsub(),a(new q(`reply timeout: event ${d.id}`,"INTERNAL"))},6e4);p.on("event",async function(e){const t=await i.decrypt(i.walletPubkey,e.content);let l;try{l=JSON.parse(t)}catch(e){clearTimeout(y),p.unsub(),a(new x("failed to deserialize response","INTERNAL"))}var u,h;if(23195==e.kind)if(l.result){var d;if(!s(l.result))return clearTimeout(y),p.unsub(),void a(new U("Response from NWC failed validation: "+JSON.stringify(l.result),"INTERNAL"));const t=null==(d=e.tags.find(e=>"d"===e[0]))?void 0:d[1];if(void 0===t)return clearTimeout(y),p.unsub(),void a(new U("No d tag found in response event","INTERNAL"));r.push(c({},l.result,{dTag:t})),r.length===n&&(clearTimeout(y),p.unsub(),o(r))}else{var m,w;clearTimeout(y),p.unsub(),a(new T(null==(m=l.error)?void 0:m.message,null==(w=l.error)?void 0:w.code))}else clearTimeout(y),p.unsub(),a(new I(null==(u=l.error)?void 0:u.message,null==(h=l.error)?void 0:h.code))});const m=setTimeout(function(){p.unsub(),a(new A(`Publish timeout: ${d.id}`,"INTERNAL"))},5e3);try{await i.relay.publish(d),clearTimeout(m)}catch(e){clearTimeout(m),a(new R(`Failed to publish: ${e}`,"INTERNAL"))}}()})}async _checkConnected(){if(!this.secret)throw new Error("Missing secret key");await this.relay.connect()}}var C={__proto__:null,Nip47Error:P,Nip47WalletError:T,Nip47TimeoutError:N,Nip47PublishTimeoutError:A,Nip47ReplyTimeoutError:q,Nip47PublishError:R,Nip47ResponseDecodingError:x,Nip47ResponseValidationError:U,Nip47UnexpectedResponseError:I,NWCs:O,NWCClient:S};const W={get_info:"getInfo",get_balance:"getBalance",make_invoice:"makeInvoice",pay_invoice:"sendPayment",pay_keysend:"payKeysend",lookup_invoice:"lookupInvoice",list_transactions:"listTransactions",multi_pay_invoice:"sendMultiPayment",multi_pay_keysend:"multiKeysend"};class ${get relay(){return console.warn("relay is deprecated. Please use client.relay instead."),this.client.relay}get relayUrl(){return console.warn("relayUrl is deprecated. Please use client.relayUrl instead."),this.client.relayUrl}get walletPubkey(){return console.warn("walletPubkey is deprecated. Please use client.walletPubkey instead."),this.client.walletPubkey}get options(){return this.client.options}get secret(){return console.warn("secret is deprecated. Please use client.secret instead."),this.client.secret}static withNewSecret(e){return(e=e||{}).secret=t(),new $(e)}constructor(e){this._enabled=!1,this.client=void 0,this.subscribers=void 0,this.client=new S(e),this.subscribers={}}on(e,t){this.subscribers[e]=t}notify(e,t){const n=this.subscribers[e];n&&n(t)}getNostrWalletConnectUrl(e=!0){return console.warn("getNostrWalletConnectUrl is deprecated. Please use client.getNostrWalletConnectUrl instead."),this.client.getNostrWalletConnectUrl(e)}get nostrWalletConnectUrl(){return console.warn("nostrWalletConnectUrl is deprecated. Please use client.nostrWalletConnectUrl instead."),this.client.nostrWalletConnectUrl}get connected(){return console.warn("connected is deprecated. Please use client.connected instead."),this.client.connected}get publicKey(){return console.warn("publicKey is deprecated. Please use client.publicKey instead."),this.client.publicKey}getPublicKey(){return this.client.getPublicKey()}signEvent(e){return this.client.signEvent(e)}getEventHash(e){return console.warn("getEventHash is deprecated. Please use client.getEventHash instead."),this.client.getEventHash(e)}async enable(){this._enabled=!0}close(){return this.client.close()}async encrypt(e,t){return console.warn("encrypt is deprecated. Please use client.encrypt instead."),this.client.encrypt(e,t)}async decrypt(e,t){return console.warn("decrypt is deprecated. Please use client.decrypt instead."),this.client.decrypt(e,t)}getAuthorizationUrl(e){return console.warn("getAuthorizationUrl is deprecated. Please use client.getAuthorizationUrl instead."),this.client.getAuthorizationUrl(e)}initNWC(e={}){return console.warn("initNWC is deprecated. Please use client.initNWC instead."),this.client.initNWC(e)}async getInfo(){await this.checkEnabled();const e=["lightning","nostr"],t="Alby JS SDK";try{const n=await this.client.getInfo(),s={methods:n.methods.map(e=>W[e]),node:{alias:n.alias,pubkey:n.pubkey,color:n.color},supports:e,version:t};return this.notify("getInfo",s),s}catch(n){return console.error("Using minimal getInfo",n),{methods:["sendPayment"],node:{},supports:e,version:t}}}async getBalance(){await this.checkEnabled();const e=await this.client.getBalance(),t={balance:Math.floor(e.balance/1e3),currency:"sats"};return this.notify("getBalance",t),t}async sendPayment(e){await this.checkEnabled();const t={preimage:(await this.client.payInvoice({invoice:e})).preimage};return this.notify("sendPayment",t),t}async sendPaymentAsync(e){return await this.checkEnabled(),this.client.payInvoice({invoice:e}),this.notify("sendPaymentAsync",{}),{}}async keysend(e){await this.checkEnabled();const t={preimage:(await this.client.payKeysend(L(e))).preimage};return this.notify("keysend",t),t}async makeInvoice(e){var t;await this.checkEnabled();const n="object"==typeof e?e:void 0,s=+(null!=(t=null==n?void 0:n.amount)?t:e);if(!s)throw new Error("No amount specified");const i={paymentRequest:(await this.client.makeInvoice({amount:1e3*s,description:null==n?void 0:n.defaultMemo})).invoice};return this.notify("makeInvoice",i),i}async lookupInvoice(e){await this.checkEnabled();const t=await this.client.lookupInvoice({invoice:e.paymentRequest,payment_hash:e.paymentHash}),n={preimage:t.preimage,paymentRequest:t.invoice,paid:!!t.settled_at};return this.notify("lookupInvoice",n),n}async listTransactions(e){await this.checkEnabled();const t={transactions:(await this.client.listTransactions(e)).transactions.map(M)};return this.notify("listTransactions",t),t}async sendMultiPayment(e){await this.checkEnabled();const t=await this.client.multiPayInvoice({invoices:e.map((e,t)=>({invoice:e,id:t.toString()}))}),n={payments:t.invoices.map(t=>{const n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find paymentRequest matching response d tag");return{paymentRequest:n,preimage:t.preimage}}),errors:[]};return this.notify("sendMultiPayment",n),n}async multiKeysend(e){await this.checkEnabled();const t=await this.client.multiPayKeysend({keysends:e.map((e,t)=>c({},L(e),{id:t.toString()}))}),n={keysends:t.keysends.map(t=>{const n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find keysend matching response d tag");return{keysend:n,preimage:t.preimage}}),errors:[]};return this.notify("multiKeysend",n),n}lnurl(e){throw new Error("Method not implemented.")}request(e,t){throw new Error("Method not implemented.")}signMessage(e){throw new Error("Method not implemented.")}verifyMessage(e,t){throw new Error("Method not implemented.")}async checkEnabled(){if(!this._enabled)throw new Error("please call enable() and await the promise before calling this function")}}function M(e){return c({},e,{amount:Math.floor(e.amount/1e3),fees_paid:e.fees_paid?Math.floor(e.fees_paid/1e3):0})}function L(e){return{amount:1e3*+e.amount,pubkey:e.destination,tlv_records:e.customRecords?Object.entries(e.customRecords).map(e=>({type:parseInt(e[0]),value:e[1]})):[]}}const K=$;function z(e){const t={};return e.recipient.customKey&&e.recipient.customValue&&(t[e.recipient.customKey]=e.recipient.customValue),t[7629169]=JSON.stringify(e.boostagram),{destination:e.recipient.address,amount:e.amount,custom_records:t}}class j{constructor(e,t){this.auth=void 0,this.defaultRequestOptions=void 0,this.auth="string"==typeof e?new k(e):e,this.defaultRequestOptions=c({},t,{user_agent:null==t?void 0:t.user_agent})}accountBalance(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/balance",params:e,method:"GET"}))}accountSummary(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/summary",params:e,method:"GET"}))}accountInformation(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/me",params:e,method:"GET"}))}accountValue4Value(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/value4value",params:e,method:"GET"}))}incomingInvoices(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/incoming",params:e,method:"GET"}))}outgoingInvoices(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/outgoing",params:e,method:"GET"}))}invoices(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",params:e,method:"GET"}))}getInvoice(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:`/invoices/${e}`,method:"GET"}))}decodeInvoice(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:`/decode/bolt11/${e}`,method:"GET"}))}createInvoice(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",request_body:e,method:"POST"}))}keysend(e,t){let n,s;return Array.isArray(e)?(n="/payments/keysend/multi",s={keysends:e.map(e=>c({},e,{custom_records:e.customRecords}))}):(n="/payments/keysend",s=c({},e,{custom_records:e.customRecords})),f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:s,method:"POST"}))}sendPayment(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/bolt11",request_body:e,method:"POST"}))}sendBoostagram(e,t){let n,s;return Array.isArray(e)?(n="/payments/keysend/multi",s={keysends:e.map(e=>z(e))}):(n="/payments/keysend",s=z(e)),f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:s,method:"POST"}))}sendToAlbyAccount(e,t){return console.warn("sendToAlbyAccount is deprecated. Please use sendBoostagramToAlbyAccount instead."),this.sendBoostagramToAlbyAccount(e,t)}sendBoostagramToAlbyAccount(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/keysend",request_body:{destination:"030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",custom_records:{696969:e.account},amount:e.amount,memo:e.memo},method:"POST"}))}createWebhookEndpoint(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints",request_body:e,method:"POST"}))}deleteWebhookEndpoint(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:`/webhook_endpoints/${e}`,method:"DELETE"}))}getSwapInfo(e){return f(c({auth:this.auth},this.defaultRequestOptions,e,{endpoint:"/swaps/info",method:"GET"}))}createSwap(e,t){return f(c({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/swaps",method:"POST",request_body:e}))}}var B={__proto__:null,NostrWebLNProvider:$,NWC:K,OauthWeblnProvider:class{constructor(e){this.client=void 0,this.auth=void 0,this.oauth=void 0,this.subscribers=void 0,this.isExecuting=void 0,this.auth=e.auth,this.client=new j(e.auth),this.oauth=!0,this.subscribers={},this.isExecuting=!1}on(e,t){this.subscribers[e]=t}notify(e,t){const n=this.subscribers[e];n&&n(t)}async enable(){var e;if(!this.isExecuting){if(null!=(e=this.auth.token)&&e.access_token)return{enabled:!0};if("undefined"==typeof window||void 0===window.document)throw new Error("Missing access token");try{this.isExecuting=!0,await this.openAuthorization()}finally{this.isExecuting=!1}}}async sendPayment(e){if(!this.isExecuting)try{this.isExecuting=!0;const t=await this.client.sendPayment({invoice:e});return this.notify("sendPayment",t),{preimage:t.payment_preimage}}catch(e){let t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)}finally{this.isExecuting=!1}}async keysend(e){if(!this.isExecuting)try{this.isExecuting=!0;const t=await this.client.keysend(e);return this.notify("keysend",t),{preimage:t.payment_preimage}}catch(e){let t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)}finally{this.isExecuting=!1}}async getInfo(){return{alias:"Alby"}}async makeInvoice(e){if(!this.isExecuting)try{this.isExecuting=!0;const t=await this.client.createInvoice({amount:parseInt(e.amount.toString()),description:e.defaultMemo});return this.notify("makeInvoice",t),{paymentRequest:t.payment_request}}catch(e){let t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)}finally{this.isExecuting=!1}}async openAuthorization(){var e=this;const t=window.outerHeight/2+window.screenY-350,n=window.outerWidth/2+window.screenX-300,s=await this.auth.generateAuthURL({code_challenge_method:"S256"});return new Promise((i,r)=>{const o=window.open(s,`${document.title} - WebLN enable`,`height=700,width=600,top=${t},left=${n}`);let a=!1;window.addEventListener("message",async function(t){const n=t.data;if(n&&"alby:oauth:success"===n.type&&t.origin===`${document.location.protocol}//${document.location.host}`&&!a){a=!0,console.info("Processing OAuth code response");const t=n.payload.code;try{await e.auth.requestAccessToken(t),e.client=new j(e.auth),o&&o.close(),e.notify("enable"),i({enabled:!0})}catch(e){console.error(e),r({enabled:!1})}}})})}}};export{j as Client,E as auth,C as nwc,p as types,B as webln};

@@ -1,1 +0,1 @@

import e from"events";import{generatePrivateKey as t,relayInit as n,nip19 as r,finishEvent as o,getEventHash as i,nip04 as s,getPublicKey as u}from"nostr-tools";function c(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(this,arguments)}function h(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,f(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function f(e,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},f(e,t)}function m(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function p(e,t,n){return p=m()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&f(o,n.prototype),o},p.apply(null,arguments)}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return p(e,arguments,d(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),f(n,e)},v(e)}function y(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}function P(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return t&&n?t+"="+n:""}).filter(function(e){return e}).join("&")}function g(e,t){return"Basic "+btoa(e+":"+t)}var w=/*#__PURE__*/function(e){function t(t,n,r,o){var i,s=t.toString();return n&&(s+=" "+n),s+=": ",s+=o.message?o.message:JSON.stringify(o),(i=e.call(this,s)||this).status=void 0,i.statusText=void 0,i.headers=void 0,i.error=void 0,i.status=t,i.statusText=n,i.headers=r,i.error=o,i}return h(t,e),t}(/*#__PURE__*/v(Error)),b={__proto__:null,OAuthClient:function(){},AuthClient:function(){},AlbyResponseError:w},k=["auth","endpoint","params","request_body","method","max_retries","base_url","user_agent","headers"],_=function(e){return Promise.resolve(E(e)).then(function(e){return e.json()})},E=function(e){var t=e.auth,n=e.endpoint,r=e.params,o=void 0===r?{}:r,i=e.request_body,s=e.method,u=e.max_retries,c=e.base_url,a=void 0===c?N:c,h=e.user_agent,d=e.headers,f=y(e,k);try{var m=function(e){return Promise.resolve(T(p.toString(),l({headers:l({},v?{"Content-Type":"application/json; charset=utf-8"}:void 0,e,d,{"User-Agent":null!=h?h:"@getalby/sdk","X-User-Agent":null!=h?h:"@getalby/sdk"}),method:s,body:v?JSON.stringify(i):void 0},f),u)).then(function(e){var t=function(){if(!e.ok)return Promise.resolve(e.json()).then(function(t){throw new w(e.status,e.statusText,e.headers,t)})}();return t&&t.then?t.then(function(t){return e}):e})},p=new URL(a+n);p.search=P(o);var v="POST"===s&&!!i;return Promise.resolve(t?Promise.resolve(t.getAuthHeader(p.href,s)).then(m):m(void 0))}catch(e){return Promise.reject(e)}},T=function e(t,n,r){void 0===r&&(r=0);try{return Promise.resolve(fetch(t,n)).then(function(o){var i,s=function(){if(429===o.status&&r>0){var s=Number(o.headers.get("x-rate-limit-reset")),u=Number(o.headers.get("x-rate-limit-remaining")),c=1e3*s-Date.now(),a=1e3;return 0===u&&(a=c),Promise.resolve(new Promise(function(e){return setTimeout(e,a)})).then(function(){var o=e(t,n,r-1);return i=1,o})}}();return s&&s.then?s.then(function(e){return i?e:o}):i?s:o})}catch(e){return Promise.reject(e)}},N="https://api.getalby.com",R=["expires_in"],A=["token"];function q(e){var t=e.expires_in;return l({},y(e,R),!!t&&{expires_at:Date.now()+1e3*t})}var j=/*#__PURE__*/function(){function t(t){this.token=void 0,this.options=void 0,this.code_verifier=void 0,this.code_challenge=void 0,this._refreshAccessTokenPromise=void 0,this._tokenEvents=void 0,this._tokenEvents=new e;var n=t.token,r=y(t,A);this.options=l({client_secret:""},r),this.token=n,this._refreshAccessTokenPromise=null}var n=t.prototype;return n.on=function(e,t){this._tokenEvents.on(e,t)},n.refreshAccessToken=function(){try{var e=this;return e._refreshAccessTokenPromise||(e._refreshAccessTokenPromise=new Promise(function(t,n){try{return Promise.resolve(function(r,o){try{var i=function(n,r){try{var o=function(){var n,r=null==(n=e.token)?void 0:n.refresh_token,o=e.options,i=o.client_id,s=o.client_secret,u=o.request_options,c=o.user_agent;if(!i)throw new Error("client_id is required");if(!r)throw new Error("refresh_token is required");return Promise.resolve(_(l({},u,{endpoint:"/oauth/token",params:{client_id:i,grant_type:"refresh_token",refresh_token:r},user_agent:c,method:"POST",headers:l({},null==u?void 0:u.headers,{"Content-type":"application/x-www-form-urlencoded"},{Authorization:g(i,s)})}))).then(function(n){var r=q(n);e.token=r,t({token:r}),e._tokenEvents.emit("tokenRefreshed",e.token)})}()}catch(e){return r(e)}return o&&o.then?o.then(void 0,r):o}(0,function(t){console.error(t),n(t),e._tokenEvents.emit("tokenRefreshFailed",t)})}catch(e){return o(!0,e)}return i&&i.then?i.then(o.bind(null,!1),o.bind(null,!0)):o(!1,i)}(0,function(t,n){if(e._refreshAccessTokenPromise=null,t)throw n;return n}))}catch(e){return Promise.reject(e)}})),Promise.resolve(e._refreshAccessTokenPromise)}catch(e){return Promise.reject(e)}},n.isAccessTokenExpired=function(){var e,t,n=null==(e=this.token)?void 0:e.refresh_token,r=null==(t=this.token)?void 0:t.expires_at;return!r||!!n&&r<=Date.now()+1e3},n.requestAccessToken=function(e){try{var t=this,n=t.options,r=n.client_id,o=n.client_secret,i=n.callback,s=n.request_options,u=n.user_agent,c=t.code_verifier;if(!r)throw new Error("client_id is required");if(!o&&!c)throw new Error("either client_secret is required, or code should be generated using a challenge");if(!i)throw new Error("callback is required");return Promise.resolve(_(l({},s,{endpoint:"/oauth/token",params:{code:e,grant_type:"authorization_code",code_verifier:c,client_id:r,redirect_uri:i},user_agent:u,method:"POST",headers:l({},null==s?void 0:s.headers,{"Content-Type":"application/x-www-form-urlencoded"},{Authorization:g(r,o)})}))).then(function(e){var n=q(e);return t.token=n,{token:n}})}catch(e){return Promise.reject(e)}},n.generateAuthURL=function(e){try{var t=function(){var t=n.code_challenge,o=new URL(e.authorizeUrl||"https://getalby.com/oauth");return o.search=P(l({},e,{client_id:i,scope:u.join(" "),response_type:"code",redirect_uri:s,code_challenge_method:r,code_challenge:t})),o.toString()},n=this;e||(e={});var r,o=n.options,i=o.client_id,s=o.callback,u=o.scopes;if(!s)throw new Error("callback required");if(!u)throw new Error("scopes required");var c=function(){if("S256"===e.code_challenge_method)return Promise.resolve(n._generateS256Challenge()).then(function(){r="S256"});"plain"===e.code_challenge_method&&e.code_challenge&&(n.code_challenge=e.code_challenge,n.code_verifier=e.code_challenge,r="plain")}();return Promise.resolve(c&&c.then?c.then(t):t())}catch(e){return Promise.reject(e)}},n.getAuthHeader=function(){try{var e,t=function(){return{Authorization:"Bearer "+n.token.access_token}},n=this;if(null==(e=n.token)||!e.access_token)throw new Error("access_token is required");var r=function(){if(n.isAccessTokenExpired())return Promise.resolve(n.refreshAccessToken()).then(function(){})}();return Promise.resolve(r&&r.then?r.then(t):t())}catch(e){return Promise.reject(e)}},n._generateS256Challenge=function(){try{var e=this,t=crypto.getRandomValues(new Uint8Array(64));return e.code_verifier=t.reduce(function(e,t){return e+t.toString(16).padStart(2,"0")},""),Promise.resolve(crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e.code_verifier))).then(function(t){var n=new Uint8Array(t);e.code_challenge=btoa(String.fromCharCode.apply(String,n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")})}catch(e){return Promise.reject(e)}},t}(),O=/*#__PURE__*/function(){function e(e){this.bearer_token=void 0,this.bearer_token=e}return e.prototype.getAuthHeader=function(){return{Authorization:"Bearer "+this.bearer_token}},e}(),x={__proto__:null,OAuth2User:j,OAuth2Bearer:O};function U(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var S=/*#__PURE__*/function(e){function t(t,n){var r;return(r=e.call(this,t)||this).error=void 0,r.code=void 0,r.error=t,r.code=n,r}return h(t,e),t}(/*#__PURE__*/v(Error)),I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),C=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),W=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(C),M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(C),L=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),K=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),z=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),B=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),F={alby:{authorizationUrl:"https://nwc.getalby.com/apps/new",relayUrl:"wss://relay.getalby.com/v1",walletPubkey:"69effe7b49a6dd5cf525bd0905917a5005ffe480b58eeb8e861418cf3ae760d9"}},H=/*#__PURE__*/function(){function e(t){var o;this.relay=void 0,this.relayUrl=void 0,this.secret=void 0,this.walletPubkey=void 0,this.options=void 0,t&&t.nostrWalletConnectUrl&&(t=l({},e.parseWalletConnectUrl(t.nostrWalletConnectUrl),t));var i=F[(null==(o=t)?void 0:o.providerName)||"alby"];this.options=l({},i,t||{}),this.relayUrl=this.options.relayUrl,this.relay=n(this.relayUrl),this.options.secret&&(this.secret=this.options.secret.toLowerCase().startsWith("nsec")?r.decode(this.options.secret).data:this.options.secret),this.walletPubkey=this.options.walletPubkey.toLowerCase().startsWith("npub")?r.decode(this.options.walletPubkey).data:this.options.walletPubkey,void 0===globalThis.WebSocket&&console.error("WebSocket is undefined. Make sure to `import websocket-polyfill` for nodejs environments")}e.parseWalletConnectUrl=function(e){e=e.replace("nostrwalletconnect://","http://").replace("nostr+walletconnect://","http://");var t=new URL(e),n=t.searchParams.get("relay");if(!n)throw new Error("No relay URL found in connection string");var r={walletPubkey:t.host,relayUrl:n},o=t.searchParams.get("secret");return o&&(r.secret=o),r},e.withNewSecret=function(n){return(n=n||{}).secret=t(),new e(n)};var c=e.prototype;return c.getNostrWalletConnectUrl=function(e){void 0===e&&(e=!0);var t="nostr+walletconnect://"+this.walletPubkey+"?relay="+this.relayUrl+"&pubkey="+this.publicKey;return e&&(t=t+"&secret="+this.secret),t},c.getPublicKey=function(){return Promise.resolve(this.publicKey)},c.signEvent=function(e){if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(o(e,this.secret))},c.getEventHash=function(e){return i(e)},c.close=function(){return this.relay.close()},c.encrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(s.encrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},c.decrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(s.decrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},c.getAuthorizationUrl=function(e){if(!this.options.authorizationUrl)throw new Error("Missing authorizationUrl option");var t=new URL(this.options.authorizationUrl);return null!=e&&e.name&&t.searchParams.set("name",null==e?void 0:e.name),t.searchParams.set("pubkey",this.publicKey),null!=e&&e.returnTo&&t.searchParams.set("return_to",e.returnTo),null!=e&&e.budgetRenewal&&t.searchParams.set("budget_renewal",e.budgetRenewal),null!=e&&e.expiresAt&&t.searchParams.set("expires_at",Math.floor(e.expiresAt.getTime()/1e3).toString()),null!=e&&e.maxAmount&&t.searchParams.set("max_amount",e.maxAmount.toString()),void 0!==(null==e?void 0:e.editable)&&t.searchParams.set("editable",e.editable.toString()),null!=e&&e.requestMethods&&t.searchParams.set("request_methods",e.requestMethods.join(" ")),t},c.initNWC=function(e){void 0===e&&(e={}),e.name||(e.name=document.location.host);var t=this.getAuthorizationUrl(e),n=window.outerHeight/2+window.screenY-300,r=window.outerWidth/2+window.screenX-200;return new Promise(function(e,o){var i=window.open(t.toString(),document.title+" - Wallet Connect","height=600,width=400,top="+n+",left="+r);if(i){var s=function n(r){var o=r.data;o&&"nwc:success"===o.type&&r.origin===t.protocol+"//"+t.host&&(e(o),clearInterval(u),window.removeEventListener("message",n),i&&i.close())},u=setInterval(function(){i&&i.closed&&(clearInterval(u),window.removeEventListener("message",s),o(new Error("Popup closed")))},500);window.addEventListener("message",s)}else o(new Error("failed to execute window.open"))})},c.getWalletServiceSupportedMethods=function(){try{var e=this;return Promise.resolve(e._checkConnected()).then(function(){return Promise.resolve(e.relay.list([{kinds:[13194],limit:1,authors:[e.walletPubkey]}],{eoseSubTimeout:1e4})).then(function(e){if(!e.length)throw new Error("no info event (kind 13194) returned from relay");return e[0].content.split(/[ |,]/g)})})}catch(e){return Promise.reject(e)}},c.getInfo=function(){try{var e=this;return Promise.resolve(U(function(){return Promise.resolve(e.executeNip47Request("get_info",{},function(e){return!!e.methods}))},function(e){throw console.error("Failed to request get_info",e),e}))}catch(e){return Promise.reject(e)}},c.getBalance=function(){try{var e=this;return Promise.resolve(U(function(){return Promise.resolve(e.executeNip47Request("get_balance",{},function(e){return void 0!==e.balance}))},function(e){throw console.error("Failed to request get_balance",e),e}))}catch(e){return Promise.reject(e)}},c.payInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("pay_invoice",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.payKeysend=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("pay_keysend",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},c.multiPayInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_invoice",e,e.invoices.length,function(e){return!!e.preimage})).then(function(e){return{invoices:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.multiPayKeysend=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_keysend",e,e.keysends.length,function(e){return!!e.preimage})).then(function(e){return{keysends:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},c.makeInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){if(!e.amount)throw new Error("No amount specified");return Promise.resolve(t.executeNip47Request("make_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request make_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.lookupInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("lookup_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request lookup_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.listTransactions=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("list_transactions",e,function(e){return!!e.transactions}))},function(e){throw console.error("Failed to request list_transactions",e),e}))}catch(e){return Promise.reject(e)}},c.executeNip47Request=function(e,t,n){try{var r=this;return Promise.resolve(r._checkConnected()).then(function(){return new Promise(function(o,i){try{return Promise.resolve(r.encrypt(r.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",r.walletPubkey]],content:e,pubkey:r.publicKey};return Promise.resolve(r.signEvent(t)).then(function(e){var t=r.relay.sub([{kinds:[23195],authors:[r.walletPubkey],"#e":[e.id]}]),s=setTimeout(function(){t.unsub(),i(new M("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return clearTimeout(s),t.unsub(),Promise.resolve(r.decrypt(r.walletPubkey,e.content)).then(function(r){var u,c,a,l,h;try{u=JSON.parse(r)}catch(e){return clearTimeout(s),t.unsub(),void i(new K("failed to deserialize response","INTERNAL"))}23195==e.kind?u.result?n(u.result)?o(u.result):(clearTimeout(s),t.unsub(),i(new z("response from NWC failed validation: "+JSON.stringify(u.result),"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new I((null==(c=u.error)?void 0:c.message)||"unknown Error",(null==(a=u.error)?void 0:a.code)||"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new B((null==(l=u.error)?void 0:l.message)||"unknown Error",(null==(h=u.error)?void 0:h.code)||"INTERNAL")))})}catch(e){return Promise.reject(e)}});var u=setTimeout(function(){t.unsub(),i(new W("publish timeout: "+e.id,"INTERNAL"))},5e3),c=U(function(){return Promise.resolve(r.relay.publish(e)).then(function(){clearTimeout(u)})},function(e){clearTimeout(u),i(new L("failed to publish: "+e,"INTERNAL"))});if(c&&c.then)return c.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},c.executeMultiNip47Request=function(e,t,n,r){try{var o=this;return Promise.resolve(o._checkConnected()).then(function(){var i=[];return new Promise(function(s,u){try{return Promise.resolve(o.encrypt(o.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",o.walletPubkey]],content:e,pubkey:o.publicKey};return Promise.resolve(o.signEvent(t)).then(function(e){var t=o.relay.sub([{kinds:[23195],authors:[o.walletPubkey],"#e":[e.id]}]),c=setTimeout(function(){t.unsub(),u(new M("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return Promise.resolve(o.decrypt(o.walletPubkey,e.content)).then(function(o){var a,h,d;try{a=JSON.parse(o)}catch(e){clearTimeout(c),t.unsub(),u(new K("failed to deserialize response","INTERNAL"))}if(23195==e.kind)if(a.result){var f;if(!r(a.result))return clearTimeout(c),t.unsub(),void u(new z("Response from NWC failed validation: "+JSON.stringify(a.result),"INTERNAL"));var m=null==(f=e.tags.find(function(e){return"d"===e[0]}))?void 0:f[1];if(void 0===m)return clearTimeout(c),t.unsub(),void u(new z("No d tag found in response event","INTERNAL"));i.push(l({},a.result,{dTag:m})),i.length===n&&(clearTimeout(c),t.unsub(),s(i))}else{var p,v;clearTimeout(c),t.unsub(),u(new I(null==(p=a.error)?void 0:p.message,null==(v=a.error)?void 0:v.code))}else clearTimeout(c),t.unsub(),u(new B(null==(h=a.error)?void 0:h.message,null==(d=a.error)?void 0:d.code))})}catch(e){return Promise.reject(e)}});var a=setTimeout(function(){t.unsub(),u(new W("Publish timeout: "+e.id,"INTERNAL"))},5e3),h=U(function(){return Promise.resolve(o.relay.publish(e)).then(function(){clearTimeout(a)})},function(e){clearTimeout(a),u(new L("Failed to publish: "+e,"INTERNAL"))});if(h&&h.then)return h.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},c._checkConnected=function(){try{if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(this.relay.connect()).then(function(){})}catch(e){return Promise.reject(e)}},a(e,[{key:"nostrWalletConnectUrl",get:function(){return this.getNostrWalletConnectUrl()}},{key:"connected",get:function(){return 1===this.relay.status}},{key:"publicKey",get:function(){if(!this.secret)throw new Error("Missing secret key");return u(this.secret)}}]),e}(),G={__proto__:null,Nip47Error:S,Nip47WalletError:I,Nip47TimeoutError:C,Nip47PublishTimeoutError:W,Nip47ReplyTimeoutError:M,Nip47PublishError:L,Nip47ResponseDecodingError:K,Nip47ResponseValidationError:z,Nip47UnexpectedResponseError:B,NWCs:F,NWCClient:H},J={get_info:"getInfo",get_balance:"getBalance",make_invoice:"makeInvoice",pay_invoice:"sendPayment",pay_keysend:"payKeysend",lookup_invoice:"lookupInvoice",list_transactions:"listTransactions",multi_pay_invoice:"sendMultiPayment",multi_pay_keysend:"multiKeysend"},D=/*#__PURE__*/function(){function e(e){this._enabled=!1,this.client=void 0,this.subscribers=void 0,this.client=new H(e),this.subscribers={}}e.withNewSecret=function(n){return(n=n||{}).secret=t(),new e(n)};var n=e.prototype;return n.on=function(e,t){this.subscribers[e]=t},n.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},n.getNostrWalletConnectUrl=function(e){return void 0===e&&(e=!0),console.warn("getNostrWalletConnectUrl is deprecated. Please use client.getNostrWalletConnectUrl instead."),this.client.getNostrWalletConnectUrl(e)},n.getPublicKey=function(){return this.client.getPublicKey()},n.signEvent=function(e){return this.client.signEvent(e)},n.getEventHash=function(e){return console.warn("getEventHash is deprecated. Please use client.getEventHash instead."),this.client.getEventHash(e)},n.enable=function(){try{return this._enabled=!0,Promise.resolve()}catch(e){return Promise.reject(e)}},n.close=function(){return this.client.close()},n.encrypt=function(e,t){try{return console.warn("encrypt is deprecated. Please use client.encrypt instead."),Promise.resolve(this.client.encrypt(e,t))}catch(e){return Promise.reject(e)}},n.decrypt=function(e,t){try{return console.warn("decrypt is deprecated. Please use client.decrypt instead."),Promise.resolve(this.client.decrypt(e,t))}catch(e){return Promise.reject(e)}},n.getAuthorizationUrl=function(e){return console.warn("getAuthorizationUrl is deprecated. Please use client.getAuthorizationUrl instead."),this.client.getAuthorizationUrl(e)},n.initNWC=function(e){return void 0===e&&(e={}),console.warn("initNWC is deprecated. Please use client.initNWC instead."),this.client.initNWC(e)},n.getInfo=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){var t=["lightning","nostr"],n="Alby JS SDK";return function(r,o){try{var i=Promise.resolve(e.client.getInfo()).then(function(r){var o={methods:r.methods.map(function(e){return J[e]}),node:{alias:r.alias,pubkey:r.pubkey,color:r.color},supports:t,version:n};return e.notify("getInfo",o),o})}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){return console.error("Using minimal getInfo",e),{methods:["sendPayment"],node:{},supports:t,version:n}})})}catch(e){return Promise.reject(e)}},n.getBalance=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){return Promise.resolve(e.client.getBalance()).then(function(t){var n={balance:Math.floor(t.balance/1e3),currency:"sats"};return e.notify("getBalance",n),n})})}catch(e){return Promise.reject(e)}},n.sendPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payInvoice({invoice:e})).then(function(e){var n={preimage:e.preimage};return t.notify("sendPayment",n),n})})}catch(e){return Promise.reject(e)}},n.sendPaymentAsync=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return t.client.payInvoice({invoice:e}),t.notify("sendPaymentAsync",{}),{}})}catch(e){return Promise.reject(e)}},n.keysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payKeysend(X(e))).then(function(e){var n={preimage:e.preimage};return t.notify("keysend",n),n})})}catch(e){return Promise.reject(e)}},n.makeInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){var n,r="object"==typeof e?e:void 0,o=+(null!=(n=null==r?void 0:r.amount)?n:e);if(!o)throw new Error("No amount specified");return Promise.resolve(t.client.makeInvoice({amount:1e3*o,description:null==r?void 0:r.defaultMemo})).then(function(e){var n={paymentRequest:e.invoice};return t.notify("makeInvoice",n),n})})}catch(e){return Promise.reject(e)}},n.lookupInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.lookupInvoice({invoice:e.paymentRequest,payment_hash:e.paymentHash})).then(function(e){var n={preimage:e.preimage,paymentRequest:e.invoice,paid:!!e.settled_at};return t.notify("lookupInvoice",n),n})})}catch(e){return Promise.reject(e)}},n.listTransactions=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.listTransactions(e)).then(function(e){var n={transactions:e.transactions.map(V)};return t.notify("listTransactions",n),n})})}catch(e){return Promise.reject(e)}},n.sendMultiPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayInvoice({invoices:e.map(function(e,t){return{invoice:e,id:t.toString()}})})).then(function(n){var r={payments:n.invoices.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find paymentRequest matching response d tag");return{paymentRequest:n,preimage:t.preimage}}),errors:[]};return t.notify("sendMultiPayment",r),r})})}catch(e){return Promise.reject(e)}},n.multiKeysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayKeysend({keysends:e.map(function(e,t){return l({},X(e),{id:t.toString()})})})).then(function(n){var r={keysends:n.keysends.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find keysend matching response d tag");return{keysend:n,preimage:t.preimage}}),errors:[]};return t.notify("multiKeysend",r),r})})}catch(e){return Promise.reject(e)}},n.lnurl=function(e){throw new Error("Method not implemented.")},n.request=function(e,t){throw new Error("Method not implemented.")},n.signMessage=function(e){throw new Error("Method not implemented.")},n.verifyMessage=function(e,t){throw new Error("Method not implemented.")},n.checkEnabled=function(){try{if(!this._enabled)throw new Error("please call enable() and await the promise before calling this function");return Promise.resolve()}catch(e){return Promise.reject(e)}},a(e,[{key:"relay",get:function(){return console.warn("relay is deprecated. Please use client.relay instead."),this.client.relay}},{key:"relayUrl",get:function(){return console.warn("relayUrl is deprecated. Please use client.relayUrl instead."),this.client.relayUrl}},{key:"walletPubkey",get:function(){return console.warn("walletPubkey is deprecated. Please use client.walletPubkey instead."),this.client.walletPubkey}},{key:"options",get:function(){return this.client.options}},{key:"secret",get:function(){return console.warn("secret is deprecated. Please use client.secret instead."),this.client.secret}},{key:"nostrWalletConnectUrl",get:function(){return console.warn("nostrWalletConnectUrl is deprecated. Please use client.nostrWalletConnectUrl instead."),this.client.nostrWalletConnectUrl}},{key:"connected",get:function(){return console.warn("connected is deprecated. Please use client.connected instead."),this.client.connected}},{key:"publicKey",get:function(){return console.warn("publicKey is deprecated. Please use client.publicKey instead."),this.client.publicKey}}]),e}();function V(e){return l({},e,{amount:Math.floor(e.amount/1e3),fees_paid:e.fees_paid?Math.floor(e.fees_paid/1e3):0})}function X(e){return{amount:1e3*+e.amount,pubkey:e.destination,tlv_records:e.customRecords?Object.entries(e.customRecords).map(function(e){return{type:parseInt(e[0]),value:e[1]}}):[]}}var Y=D;function $(e){var t={};return e.recipient.customKey&&e.recipient.customValue&&(t[e.recipient.customKey]=e.recipient.customValue),t[7629169]=JSON.stringify(e.boostagram),{destination:e.recipient.address,amount:e.amount,customRecords:t}}var Q=/*#__PURE__*/function(){function e(e,t){this.auth=void 0,this.defaultRequestOptions=void 0,this.auth="string"==typeof e?new O(e):e,this.defaultRequestOptions=l({},t,{user_agent:null==t?void 0:t.user_agent})}var t=e.prototype;return t.accountBalance=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/balance",params:e,method:"GET"}))},t.accountSummary=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/summary",params:e,method:"GET"}))},t.accountInformation=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/me",params:e,method:"GET"}))},t.accountValue4Value=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/value4value",params:e,method:"GET"}))},t.incomingInvoices=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/incoming",params:e,method:"GET"}))},t.outgoingInvoices=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/outgoing",params:e,method:"GET"}))},t.invoices=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",params:e,method:"GET"}))},t.getInvoice=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/"+e,method:"GET"}))},t.decodeInvoice=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/decode/bolt11/"+e,method:"GET"}))},t.createInvoice=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",request_body:e,method:"POST"}))},t.keysend=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e}):(n="/payments/keysend",r=e),_(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendPayment=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/bolt11",request_body:e,method:"POST"}))},t.sendBoostagram=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e.map(function(e){return $(e)})}):(n="/payments/keysend",r=$(e)),_(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendToAlbyAccount=function(e,t){return console.warn("sendToAlbyAccount is deprecated. Please use sendBoostagramToAlbyAccount instead."),this.sendBoostagramToAlbyAccount(e,t)},t.sendBoostagramToAlbyAccount=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/keysend",request_body:{destination:"030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",customRecords:{696969:e.account},amount:e.amount,memo:e.memo},method:"POST"}))},t.createWebhookEndpoint=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints",request_body:e,method:"POST"}))},t.deleteWebhookEndpoint=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints/"+e,method:"DELETE"}))},t.getSwapInfo=function(e){return _(l({auth:this.auth},this.defaultRequestOptions,e,{endpoint:"/swaps/info",method:"GET"}))},t.createSwap=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/swaps",method:"POST",request_body:e}))},e}();function Z(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}function ee(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var te={__proto__:null,NostrWebLNProvider:D,NWC:Y,OauthWeblnProvider:/*#__PURE__*/function(){function e(e){this.client=void 0,this.auth=void 0,this.oauth=void 0,this.subscribers=void 0,this.isExecuting=void 0,this.auth=e.auth,this.client=new Q(e.auth),this.oauth=!0,this.subscribers={},this.isExecuting=!1}var t=e.prototype;return t.on=function(e,t){this.subscribers[e]=t},t.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},t.enable=function(){try{var e,t=this;return t.isExecuting?Promise.resolve():null!=(e=t.auth.token)&&e.access_token?Promise.resolve({enabled:!0}):Promise.resolve(function(){if("undefined"==typeof window||void 0===window.document)throw new Error("Missing access token");var e=Z(function(){return t.isExecuting=!0,Promise.resolve(t.openAuthorization()).then(function(){})},function(e,n){if(t.isExecuting=!1,e)throw n;return n});if(e&&e.then)return e.then(function(){})}())}catch(e){return Promise.reject(e)}},t.sendPayment=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Z(function(){return ee(function(){return t.isExecuting=!0,Promise.resolve(t.client.sendPayment({invoice:e})).then(function(e){return t.notify("sendPayment",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.keysend=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Z(function(){return ee(function(){return t.isExecuting=!0,Promise.resolve(t.client.keysend(e)).then(function(e){return t.notify("keysend",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.getInfo=function(){try{return Promise.resolve({alias:"Alby"})}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Z(function(){return ee(function(){return t.isExecuting=!0,Promise.resolve(t.client.createInvoice({amount:parseInt(e.amount.toString()),description:e.defaultMemo})).then(function(e){return t.notify("makeInvoice",e),{paymentRequest:e.payment_request}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.openAuthorization=function(){try{var e=this,t=window.outerHeight/2+window.screenY-350,n=window.outerWidth/2+window.screenX-300;return Promise.resolve(e.auth.generateAuthURL({code_challenge_method:"S256"})).then(function(r){return new Promise(function(o,i){var s=window.open(r,document.title+" - WebLN enable","height=700,width=600,top="+t+",left="+n),u=!1;window.addEventListener("message",function(t){try{var n=t.data,r=function(){if(n&&"alby:oauth:success"===n.type&&t.origin===document.location.protocol+"//"+document.location.host&&!u){u=!0,console.info("Processing OAuth code response");var r=n.payload.code,c=ee(function(){return Promise.resolve(e.auth.requestAccessToken(r)).then(function(){e.client=new Q(e.auth),s&&s.close(),e.notify("enable"),o({enabled:!0})})},function(e){console.error(e),i({enabled:!1})});if(c&&c.then)return c.then(function(){})}}();return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})})})}catch(e){return Promise.reject(e)}},e}()};export{Q as Client,x as auth,G as nwc,b as types,te as webln};
import e from"eventemitter3";import{generatePrivateKey as t,relayInit as n,nip19 as r,finishEvent as o,getEventHash as i,nip04 as s,getPublicKey as u}from"nostr-tools";function c(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(this,arguments)}function h(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,f(e,t)}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function f(e,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},f(e,t)}function m(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function p(e,t,n){return p=m()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&f(o,n.prototype),o},p.apply(null,arguments)}function v(e){var t="function"==typeof Map?new Map:void 0;return v=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return p(e,arguments,d(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),f(n,e)},v(e)}function y(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}function P(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return t&&n?t+"="+n:""}).filter(function(e){return e}).join("&")}function g(e,t){return"Basic "+btoa(e+":"+t)}var w=/*#__PURE__*/function(e){function t(t,n,r,o){var i,s=t.toString();return n&&(s+=" "+n),s+=": ",s+=o.message?o.message:JSON.stringify(o),(i=e.call(this,s)||this).status=void 0,i.statusText=void 0,i.headers=void 0,i.error=void 0,i.status=t,i.statusText=n,i.headers=r,i.error=o,i}return h(t,e),t}(/*#__PURE__*/v(Error)),b={__proto__:null,OAuthClient:function(){},AuthClient:function(){},AlbyResponseError:w},k=["auth","endpoint","params","request_body","method","max_retries","base_url","user_agent","headers"],_=function(e){return Promise.resolve(E(e)).then(function(e){return e.json()})},E=function(e){var t=e.auth,n=e.endpoint,r=e.params,o=void 0===r?{}:r,i=e.request_body,s=e.method,u=e.max_retries,c=e.base_url,a=void 0===c?N:c,h=e.user_agent,d=e.headers,f=y(e,k);try{var m=function(e){return Promise.resolve(T(p.toString(),l({headers:l({},v?{"Content-Type":"application/json; charset=utf-8"}:void 0,e,d,{"User-Agent":null!=h?h:"@getalby/sdk","X-User-Agent":null!=h?h:"@getalby/sdk"}),method:s,body:v?JSON.stringify(i):void 0},f),u)).then(function(e){var t=function(){if(!e.ok)return Promise.resolve(e.json()).then(function(t){throw new w(e.status,e.statusText,e.headers,t)})}();return t&&t.then?t.then(function(t){return e}):e})},p=new URL(a+n);p.search=P(o);var v="POST"===s&&!!i;return Promise.resolve(t?Promise.resolve(t.getAuthHeader(p.href,s)).then(m):m(void 0))}catch(e){return Promise.reject(e)}},T=function e(t,n,r){void 0===r&&(r=0);try{return Promise.resolve(fetch(t,n)).then(function(o){var i,s=function(){if(429===o.status&&r>0){var s=Number(o.headers.get("x-rate-limit-reset")),u=Number(o.headers.get("x-rate-limit-remaining")),c=1e3*s-Date.now(),a=1e3;return 0===u&&(a=c),Promise.resolve(new Promise(function(e){return setTimeout(e,a)})).then(function(){var o=e(t,n,r-1);return i=1,o})}}();return s&&s.then?s.then(function(e){return i?e:o}):i?s:o})}catch(e){return Promise.reject(e)}},N="https://api.getalby.com",R=["expires_in"],A=["token"];function q(e){var t=e.expires_in;return l({},y(e,R),!!t&&{expires_at:Date.now()+1e3*t})}var j=/*#__PURE__*/function(){function t(t){this.token=void 0,this.options=void 0,this.code_verifier=void 0,this.code_challenge=void 0,this._refreshAccessTokenPromise=void 0,this._tokenEvents=void 0,this._tokenEvents=new e;var n=t.token,r=y(t,A);this.options=l({client_secret:""},r),this.token=n,this._refreshAccessTokenPromise=null}var n=t.prototype;return n.on=function(e,t){this._tokenEvents.on(e,t)},n.refreshAccessToken=function(){try{var e=this;return e._refreshAccessTokenPromise||(e._refreshAccessTokenPromise=new Promise(function(t,n){try{return Promise.resolve(function(r,o){try{var i=function(n,r){try{var o=function(){var n,r=null==(n=e.token)?void 0:n.refresh_token,o=e.options,i=o.client_id,s=o.client_secret,u=o.request_options,c=o.user_agent;if(!i)throw new Error("client_id is required");if(!r)throw new Error("refresh_token is required");return Promise.resolve(_(l({},u,{endpoint:"/oauth/token",params:{client_id:i,grant_type:"refresh_token",refresh_token:r},user_agent:c,method:"POST",headers:l({},null==u?void 0:u.headers,{"Content-type":"application/x-www-form-urlencoded"},{Authorization:g(i,s)})}))).then(function(n){var r=q(n);e.token=r,t({token:r}),e._tokenEvents.emit("tokenRefreshed",e.token)})}()}catch(e){return r(e)}return o&&o.then?o.then(void 0,r):o}(0,function(t){console.error(t),n(t),e._tokenEvents.emit("tokenRefreshFailed",t)})}catch(e){return o(!0,e)}return i&&i.then?i.then(o.bind(null,!1),o.bind(null,!0)):o(!1,i)}(0,function(t,n){if(e._refreshAccessTokenPromise=null,t)throw n;return n}))}catch(e){return Promise.reject(e)}})),Promise.resolve(e._refreshAccessTokenPromise)}catch(e){return Promise.reject(e)}},n.isAccessTokenExpired=function(){var e,t,n=null==(e=this.token)?void 0:e.refresh_token,r=null==(t=this.token)?void 0:t.expires_at;return!r||!!n&&r<=Date.now()+1e3},n.requestAccessToken=function(e){try{var t=this,n=t.options,r=n.client_id,o=n.client_secret,i=n.callback,s=n.request_options,u=n.user_agent,c=t.code_verifier;if(!r)throw new Error("client_id is required");if(!o&&!c)throw new Error("either client_secret is required, or code should be generated using a challenge");if(!i)throw new Error("callback is required");return Promise.resolve(_(l({},s,{endpoint:"/oauth/token",params:{code:e,grant_type:"authorization_code",code_verifier:c,client_id:r,redirect_uri:i},user_agent:u,method:"POST",headers:l({},null==s?void 0:s.headers,{"Content-Type":"application/x-www-form-urlencoded"},{Authorization:g(r,o)})}))).then(function(e){var n=q(e);return t.token=n,{token:n}})}catch(e){return Promise.reject(e)}},n.generateAuthURL=function(e){try{var t=function(){var t=n.code_challenge,o=new URL(e.authorizeUrl||"https://getalby.com/oauth");return o.search=P(l({},e,{client_id:i,scope:u.join(" "),response_type:"code",redirect_uri:s,code_challenge_method:r,code_challenge:t})),o.toString()},n=this;e||(e={});var r,o=n.options,i=o.client_id,s=o.callback,u=o.scopes;if(!s)throw new Error("callback required");if(!u)throw new Error("scopes required");var c=function(){if("S256"===e.code_challenge_method)return Promise.resolve(n._generateS256Challenge()).then(function(){r="S256"});"plain"===e.code_challenge_method&&e.code_challenge&&(n.code_challenge=e.code_challenge,n.code_verifier=e.code_challenge,r="plain")}();return Promise.resolve(c&&c.then?c.then(t):t())}catch(e){return Promise.reject(e)}},n.getAuthHeader=function(){try{var e,t=function(){return{Authorization:"Bearer "+n.token.access_token}},n=this;if(null==(e=n.token)||!e.access_token)throw new Error("access_token is required");var r=function(){if(n.isAccessTokenExpired())return Promise.resolve(n.refreshAccessToken()).then(function(){})}();return Promise.resolve(r&&r.then?r.then(t):t())}catch(e){return Promise.reject(e)}},n._generateS256Challenge=function(){try{var e=this,t=crypto.getRandomValues(new Uint8Array(64));return e.code_verifier=t.reduce(function(e,t){return e+t.toString(16).padStart(2,"0")},""),Promise.resolve(crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e.code_verifier))).then(function(t){var n=new Uint8Array(t);e.code_challenge=btoa(String.fromCharCode.apply(String,n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")})}catch(e){return Promise.reject(e)}},t}(),O=/*#__PURE__*/function(){function e(e){this.bearer_token=void 0,this.bearer_token=e}return e.prototype.getAuthHeader=function(){return{Authorization:"Bearer "+this.bearer_token}},e}(),x={__proto__:null,OAuth2User:j,OAuth2Bearer:O};function U(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var S=/*#__PURE__*/function(e){function t(t,n){var r;return(r=e.call(this,t)||this).error=void 0,r.code=void 0,r.error=t,r.code=n,r}return h(t,e),t}(/*#__PURE__*/v(Error)),I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),C=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),W=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(C),M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(C),L=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),K=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),z=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),B=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return h(t,e),t}(S),F={alby:{authorizationUrl:"https://nwc.getalby.com/apps/new",relayUrl:"wss://relay.getalby.com/v1",walletPubkey:"69effe7b49a6dd5cf525bd0905917a5005ffe480b58eeb8e861418cf3ae760d9"}},H=/*#__PURE__*/function(){function e(t){var o;this.relay=void 0,this.relayUrl=void 0,this.secret=void 0,this.walletPubkey=void 0,this.options=void 0,t&&t.nostrWalletConnectUrl&&(t=l({},e.parseWalletConnectUrl(t.nostrWalletConnectUrl),t));var i=F[(null==(o=t)?void 0:o.providerName)||"alby"];this.options=l({},i,t||{}),this.relayUrl=this.options.relayUrl,this.relay=n(this.relayUrl),this.options.secret&&(this.secret=this.options.secret.toLowerCase().startsWith("nsec")?r.decode(this.options.secret).data:this.options.secret),this.walletPubkey=this.options.walletPubkey.toLowerCase().startsWith("npub")?r.decode(this.options.walletPubkey).data:this.options.walletPubkey,void 0===globalThis.WebSocket&&console.error("WebSocket is undefined. Make sure to `import websocket-polyfill` for nodejs environments")}e.parseWalletConnectUrl=function(e){e=e.replace("nostrwalletconnect://","http://").replace("nostr+walletconnect://","http://");var t=new URL(e),n=t.searchParams.get("relay");if(!n)throw new Error("No relay URL found in connection string");var r={walletPubkey:t.host,relayUrl:n},o=t.searchParams.get("secret");return o&&(r.secret=o),r},e.withNewSecret=function(n){return(n=n||{}).secret=t(),new e(n)};var c=e.prototype;return c.getNostrWalletConnectUrl=function(e){void 0===e&&(e=!0);var t="nostr+walletconnect://"+this.walletPubkey+"?relay="+this.relayUrl+"&pubkey="+this.publicKey;return e&&(t=t+"&secret="+this.secret),t},c.getPublicKey=function(){return Promise.resolve(this.publicKey)},c.signEvent=function(e){if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(o(e,this.secret))},c.getEventHash=function(e){return i(e)},c.close=function(){return this.relay.close()},c.encrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(s.encrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},c.decrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(s.decrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},c.getAuthorizationUrl=function(e){if(!this.options.authorizationUrl)throw new Error("Missing authorizationUrl option");var t=new URL(this.options.authorizationUrl);return null!=e&&e.name&&t.searchParams.set("name",null==e?void 0:e.name),t.searchParams.set("pubkey",this.publicKey),null!=e&&e.returnTo&&t.searchParams.set("return_to",e.returnTo),null!=e&&e.budgetRenewal&&t.searchParams.set("budget_renewal",e.budgetRenewal),null!=e&&e.expiresAt&&t.searchParams.set("expires_at",Math.floor(e.expiresAt.getTime()/1e3).toString()),null!=e&&e.maxAmount&&t.searchParams.set("max_amount",e.maxAmount.toString()),void 0!==(null==e?void 0:e.editable)&&t.searchParams.set("editable",e.editable.toString()),null!=e&&e.requestMethods&&t.searchParams.set("request_methods",e.requestMethods.join(" ")),t},c.initNWC=function(e){void 0===e&&(e={}),e.name||(e.name=document.location.host);var t=this.getAuthorizationUrl(e),n=window.outerHeight/2+window.screenY-300,r=window.outerWidth/2+window.screenX-200;return new Promise(function(e,o){var i=window.open(t.toString(),document.title+" - Wallet Connect","height=600,width=400,top="+n+",left="+r);if(i){var s=function n(r){var o=r.data;o&&"nwc:success"===o.type&&r.origin===t.protocol+"//"+t.host&&(e(o),clearInterval(u),window.removeEventListener("message",n),i&&i.close())},u=setInterval(function(){i&&i.closed&&(clearInterval(u),window.removeEventListener("message",s),o(new Error("Popup closed")))},500);window.addEventListener("message",s)}else o(new Error("failed to execute window.open"))})},c.getWalletServiceSupportedMethods=function(){try{var e=this;return Promise.resolve(e._checkConnected()).then(function(){return Promise.resolve(e.relay.list([{kinds:[13194],limit:1,authors:[e.walletPubkey]}],{eoseSubTimeout:1e4})).then(function(e){if(!e.length)throw new Error("no info event (kind 13194) returned from relay");return e[0].content.split(/[ |,]/g)})})}catch(e){return Promise.reject(e)}},c.getInfo=function(){try{var e=this;return Promise.resolve(U(function(){return Promise.resolve(e.executeNip47Request("get_info",{},function(e){return!!e.methods}))},function(e){throw console.error("Failed to request get_info",e),e}))}catch(e){return Promise.reject(e)}},c.getBalance=function(){try{var e=this;return Promise.resolve(U(function(){return Promise.resolve(e.executeNip47Request("get_balance",{},function(e){return void 0!==e.balance}))},function(e){throw console.error("Failed to request get_balance",e),e}))}catch(e){return Promise.reject(e)}},c.payInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("pay_invoice",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.payKeysend=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("pay_keysend",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},c.multiPayInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_invoice",e,e.invoices.length,function(e){return!!e.preimage})).then(function(e){return{invoices:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.multiPayKeysend=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_keysend",e,e.keysends.length,function(e){return!!e.preimage})).then(function(e){return{keysends:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},c.makeInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){if(!e.amount)throw new Error("No amount specified");return Promise.resolve(t.executeNip47Request("make_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request make_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.lookupInvoice=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("lookup_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request lookup_invoice",e),e}))}catch(e){return Promise.reject(e)}},c.listTransactions=function(e){try{var t=this;return Promise.resolve(U(function(){return Promise.resolve(t.executeNip47Request("list_transactions",e,function(e){return!!e.transactions}))},function(e){throw console.error("Failed to request list_transactions",e),e}))}catch(e){return Promise.reject(e)}},c.executeNip47Request=function(e,t,n){try{var r=this;return Promise.resolve(r._checkConnected()).then(function(){return new Promise(function(o,i){try{return Promise.resolve(r.encrypt(r.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",r.walletPubkey]],content:e,pubkey:r.publicKey};return Promise.resolve(r.signEvent(t)).then(function(e){var t=r.relay.sub([{kinds:[23195],authors:[r.walletPubkey],"#e":[e.id]}]),s=setTimeout(function(){t.unsub(),i(new M("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return clearTimeout(s),t.unsub(),Promise.resolve(r.decrypt(r.walletPubkey,e.content)).then(function(r){var u,c,a,l,h;try{u=JSON.parse(r)}catch(e){return clearTimeout(s),t.unsub(),void i(new K("failed to deserialize response","INTERNAL"))}23195==e.kind?u.result?n(u.result)?o(u.result):(clearTimeout(s),t.unsub(),i(new z("response from NWC failed validation: "+JSON.stringify(u.result),"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new I((null==(c=u.error)?void 0:c.message)||"unknown Error",(null==(a=u.error)?void 0:a.code)||"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new B((null==(l=u.error)?void 0:l.message)||"unknown Error",(null==(h=u.error)?void 0:h.code)||"INTERNAL")))})}catch(e){return Promise.reject(e)}});var u=setTimeout(function(){t.unsub(),i(new W("publish timeout: "+e.id,"INTERNAL"))},5e3),c=U(function(){return Promise.resolve(r.relay.publish(e)).then(function(){clearTimeout(u)})},function(e){clearTimeout(u),i(new L("failed to publish: "+e,"INTERNAL"))});if(c&&c.then)return c.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},c.executeMultiNip47Request=function(e,t,n,r){try{var o=this;return Promise.resolve(o._checkConnected()).then(function(){var i=[];return new Promise(function(s,u){try{return Promise.resolve(o.encrypt(o.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",o.walletPubkey]],content:e,pubkey:o.publicKey};return Promise.resolve(o.signEvent(t)).then(function(e){var t=o.relay.sub([{kinds:[23195],authors:[o.walletPubkey],"#e":[e.id]}]),c=setTimeout(function(){t.unsub(),u(new M("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return Promise.resolve(o.decrypt(o.walletPubkey,e.content)).then(function(o){var a,h,d;try{a=JSON.parse(o)}catch(e){clearTimeout(c),t.unsub(),u(new K("failed to deserialize response","INTERNAL"))}if(23195==e.kind)if(a.result){var f;if(!r(a.result))return clearTimeout(c),t.unsub(),void u(new z("Response from NWC failed validation: "+JSON.stringify(a.result),"INTERNAL"));var m=null==(f=e.tags.find(function(e){return"d"===e[0]}))?void 0:f[1];if(void 0===m)return clearTimeout(c),t.unsub(),void u(new z("No d tag found in response event","INTERNAL"));i.push(l({},a.result,{dTag:m})),i.length===n&&(clearTimeout(c),t.unsub(),s(i))}else{var p,v;clearTimeout(c),t.unsub(),u(new I(null==(p=a.error)?void 0:p.message,null==(v=a.error)?void 0:v.code))}else clearTimeout(c),t.unsub(),u(new B(null==(h=a.error)?void 0:h.message,null==(d=a.error)?void 0:d.code))})}catch(e){return Promise.reject(e)}});var a=setTimeout(function(){t.unsub(),u(new W("Publish timeout: "+e.id,"INTERNAL"))},5e3),h=U(function(){return Promise.resolve(o.relay.publish(e)).then(function(){clearTimeout(a)})},function(e){clearTimeout(a),u(new L("Failed to publish: "+e,"INTERNAL"))});if(h&&h.then)return h.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},c._checkConnected=function(){try{if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(this.relay.connect()).then(function(){})}catch(e){return Promise.reject(e)}},a(e,[{key:"nostrWalletConnectUrl",get:function(){return this.getNostrWalletConnectUrl()}},{key:"connected",get:function(){return 1===this.relay.status}},{key:"publicKey",get:function(){if(!this.secret)throw new Error("Missing secret key");return u(this.secret)}}]),e}(),G={__proto__:null,Nip47Error:S,Nip47WalletError:I,Nip47TimeoutError:C,Nip47PublishTimeoutError:W,Nip47ReplyTimeoutError:M,Nip47PublishError:L,Nip47ResponseDecodingError:K,Nip47ResponseValidationError:z,Nip47UnexpectedResponseError:B,NWCs:F,NWCClient:H},J={get_info:"getInfo",get_balance:"getBalance",make_invoice:"makeInvoice",pay_invoice:"sendPayment",pay_keysend:"payKeysend",lookup_invoice:"lookupInvoice",list_transactions:"listTransactions",multi_pay_invoice:"sendMultiPayment",multi_pay_keysend:"multiKeysend"},D=/*#__PURE__*/function(){function e(e){this._enabled=!1,this.client=void 0,this.subscribers=void 0,this.client=new H(e),this.subscribers={}}e.withNewSecret=function(n){return(n=n||{}).secret=t(),new e(n)};var n=e.prototype;return n.on=function(e,t){this.subscribers[e]=t},n.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},n.getNostrWalletConnectUrl=function(e){return void 0===e&&(e=!0),console.warn("getNostrWalletConnectUrl is deprecated. Please use client.getNostrWalletConnectUrl instead."),this.client.getNostrWalletConnectUrl(e)},n.getPublicKey=function(){return this.client.getPublicKey()},n.signEvent=function(e){return this.client.signEvent(e)},n.getEventHash=function(e){return console.warn("getEventHash is deprecated. Please use client.getEventHash instead."),this.client.getEventHash(e)},n.enable=function(){try{return this._enabled=!0,Promise.resolve()}catch(e){return Promise.reject(e)}},n.close=function(){return this.client.close()},n.encrypt=function(e,t){try{return console.warn("encrypt is deprecated. Please use client.encrypt instead."),Promise.resolve(this.client.encrypt(e,t))}catch(e){return Promise.reject(e)}},n.decrypt=function(e,t){try{return console.warn("decrypt is deprecated. Please use client.decrypt instead."),Promise.resolve(this.client.decrypt(e,t))}catch(e){return Promise.reject(e)}},n.getAuthorizationUrl=function(e){return console.warn("getAuthorizationUrl is deprecated. Please use client.getAuthorizationUrl instead."),this.client.getAuthorizationUrl(e)},n.initNWC=function(e){return void 0===e&&(e={}),console.warn("initNWC is deprecated. Please use client.initNWC instead."),this.client.initNWC(e)},n.getInfo=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){var t=["lightning","nostr"],n="Alby JS SDK";return function(r,o){try{var i=Promise.resolve(e.client.getInfo()).then(function(r){var o={methods:r.methods.map(function(e){return J[e]}),node:{alias:r.alias,pubkey:r.pubkey,color:r.color},supports:t,version:n};return e.notify("getInfo",o),o})}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){return console.error("Using minimal getInfo",e),{methods:["sendPayment"],node:{},supports:t,version:n}})})}catch(e){return Promise.reject(e)}},n.getBalance=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){return Promise.resolve(e.client.getBalance()).then(function(t){var n={balance:Math.floor(t.balance/1e3),currency:"sats"};return e.notify("getBalance",n),n})})}catch(e){return Promise.reject(e)}},n.sendPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payInvoice({invoice:e})).then(function(e){var n={preimage:e.preimage};return t.notify("sendPayment",n),n})})}catch(e){return Promise.reject(e)}},n.sendPaymentAsync=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return t.client.payInvoice({invoice:e}),t.notify("sendPaymentAsync",{}),{}})}catch(e){return Promise.reject(e)}},n.keysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payKeysend(X(e))).then(function(e){var n={preimage:e.preimage};return t.notify("keysend",n),n})})}catch(e){return Promise.reject(e)}},n.makeInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){var n,r="object"==typeof e?e:void 0,o=+(null!=(n=null==r?void 0:r.amount)?n:e);if(!o)throw new Error("No amount specified");return Promise.resolve(t.client.makeInvoice({amount:1e3*o,description:null==r?void 0:r.defaultMemo})).then(function(e){var n={paymentRequest:e.invoice};return t.notify("makeInvoice",n),n})})}catch(e){return Promise.reject(e)}},n.lookupInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.lookupInvoice({invoice:e.paymentRequest,payment_hash:e.paymentHash})).then(function(e){var n={preimage:e.preimage,paymentRequest:e.invoice,paid:!!e.settled_at};return t.notify("lookupInvoice",n),n})})}catch(e){return Promise.reject(e)}},n.listTransactions=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.listTransactions(e)).then(function(e){var n={transactions:e.transactions.map(V)};return t.notify("listTransactions",n),n})})}catch(e){return Promise.reject(e)}},n.sendMultiPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayInvoice({invoices:e.map(function(e,t){return{invoice:e,id:t.toString()}})})).then(function(n){var r={payments:n.invoices.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find paymentRequest matching response d tag");return{paymentRequest:n,preimage:t.preimage}}),errors:[]};return t.notify("sendMultiPayment",r),r})})}catch(e){return Promise.reject(e)}},n.multiKeysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayKeysend({keysends:e.map(function(e,t){return l({},X(e),{id:t.toString()})})})).then(function(n){var r={keysends:n.keysends.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find keysend matching response d tag");return{keysend:n,preimage:t.preimage}}),errors:[]};return t.notify("multiKeysend",r),r})})}catch(e){return Promise.reject(e)}},n.lnurl=function(e){throw new Error("Method not implemented.")},n.request=function(e,t){throw new Error("Method not implemented.")},n.signMessage=function(e){throw new Error("Method not implemented.")},n.verifyMessage=function(e,t){throw new Error("Method not implemented.")},n.checkEnabled=function(){try{if(!this._enabled)throw new Error("please call enable() and await the promise before calling this function");return Promise.resolve()}catch(e){return Promise.reject(e)}},a(e,[{key:"relay",get:function(){return console.warn("relay is deprecated. Please use client.relay instead."),this.client.relay}},{key:"relayUrl",get:function(){return console.warn("relayUrl is deprecated. Please use client.relayUrl instead."),this.client.relayUrl}},{key:"walletPubkey",get:function(){return console.warn("walletPubkey is deprecated. Please use client.walletPubkey instead."),this.client.walletPubkey}},{key:"options",get:function(){return this.client.options}},{key:"secret",get:function(){return console.warn("secret is deprecated. Please use client.secret instead."),this.client.secret}},{key:"nostrWalletConnectUrl",get:function(){return console.warn("nostrWalletConnectUrl is deprecated. Please use client.nostrWalletConnectUrl instead."),this.client.nostrWalletConnectUrl}},{key:"connected",get:function(){return console.warn("connected is deprecated. Please use client.connected instead."),this.client.connected}},{key:"publicKey",get:function(){return console.warn("publicKey is deprecated. Please use client.publicKey instead."),this.client.publicKey}}]),e}();function V(e){return l({},e,{amount:Math.floor(e.amount/1e3),fees_paid:e.fees_paid?Math.floor(e.fees_paid/1e3):0})}function X(e){return{amount:1e3*+e.amount,pubkey:e.destination,tlv_records:e.customRecords?Object.entries(e.customRecords).map(function(e){return{type:parseInt(e[0]),value:e[1]}}):[]}}var Y=D;function $(e){var t={};return e.recipient.customKey&&e.recipient.customValue&&(t[e.recipient.customKey]=e.recipient.customValue),t[7629169]=JSON.stringify(e.boostagram),{destination:e.recipient.address,amount:e.amount,custom_records:t}}var Q=/*#__PURE__*/function(){function e(e,t){this.auth=void 0,this.defaultRequestOptions=void 0,this.auth="string"==typeof e?new O(e):e,this.defaultRequestOptions=l({},t,{user_agent:null==t?void 0:t.user_agent})}var t=e.prototype;return t.accountBalance=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/balance",params:e,method:"GET"}))},t.accountSummary=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/summary",params:e,method:"GET"}))},t.accountInformation=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/me",params:e,method:"GET"}))},t.accountValue4Value=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/value4value",params:e,method:"GET"}))},t.incomingInvoices=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/incoming",params:e,method:"GET"}))},t.outgoingInvoices=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/outgoing",params:e,method:"GET"}))},t.invoices=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",params:e,method:"GET"}))},t.getInvoice=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/"+e,method:"GET"}))},t.decodeInvoice=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/decode/bolt11/"+e,method:"GET"}))},t.createInvoice=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",request_body:e,method:"POST"}))},t.keysend=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e.map(function(e){return l({},e,{custom_records:e.customRecords})})}):(n="/payments/keysend",r=l({},e,{custom_records:e.customRecords})),_(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendPayment=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/bolt11",request_body:e,method:"POST"}))},t.sendBoostagram=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e.map(function(e){return $(e)})}):(n="/payments/keysend",r=$(e)),_(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendToAlbyAccount=function(e,t){return console.warn("sendToAlbyAccount is deprecated. Please use sendBoostagramToAlbyAccount instead."),this.sendBoostagramToAlbyAccount(e,t)},t.sendBoostagramToAlbyAccount=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/keysend",request_body:{destination:"030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",custom_records:{696969:e.account},amount:e.amount,memo:e.memo},method:"POST"}))},t.createWebhookEndpoint=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints",request_body:e,method:"POST"}))},t.deleteWebhookEndpoint=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints/"+e,method:"DELETE"}))},t.getSwapInfo=function(e){return _(l({auth:this.auth},this.defaultRequestOptions,e,{endpoint:"/swaps/info",method:"GET"}))},t.createSwap=function(e,t){return _(l({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/swaps",method:"POST",request_body:e}))},e}();function Z(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}function ee(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var te={__proto__:null,NostrWebLNProvider:D,NWC:Y,OauthWeblnProvider:/*#__PURE__*/function(){function e(e){this.client=void 0,this.auth=void 0,this.oauth=void 0,this.subscribers=void 0,this.isExecuting=void 0,this.auth=e.auth,this.client=new Q(e.auth),this.oauth=!0,this.subscribers={},this.isExecuting=!1}var t=e.prototype;return t.on=function(e,t){this.subscribers[e]=t},t.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},t.enable=function(){try{var e,t=this;return t.isExecuting?Promise.resolve():null!=(e=t.auth.token)&&e.access_token?Promise.resolve({enabled:!0}):Promise.resolve(function(){if("undefined"==typeof window||void 0===window.document)throw new Error("Missing access token");var e=Z(function(){return t.isExecuting=!0,Promise.resolve(t.openAuthorization()).then(function(){})},function(e,n){if(t.isExecuting=!1,e)throw n;return n});if(e&&e.then)return e.then(function(){})}())}catch(e){return Promise.reject(e)}},t.sendPayment=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Z(function(){return ee(function(){return t.isExecuting=!0,Promise.resolve(t.client.sendPayment({invoice:e})).then(function(e){return t.notify("sendPayment",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.keysend=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Z(function(){return ee(function(){return t.isExecuting=!0,Promise.resolve(t.client.keysend(e)).then(function(e){return t.notify("keysend",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.getInfo=function(){try{return Promise.resolve({alias:"Alby"})}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Z(function(){return ee(function(){return t.isExecuting=!0,Promise.resolve(t.client.createInvoice({amount:parseInt(e.amount.toString()),description:e.defaultMemo})).then(function(e){return t.notify("makeInvoice",e),{paymentRequest:e.payment_request}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.openAuthorization=function(){try{var e=this,t=window.outerHeight/2+window.screenY-350,n=window.outerWidth/2+window.screenX-300;return Promise.resolve(e.auth.generateAuthURL({code_challenge_method:"S256"})).then(function(r){return new Promise(function(o,i){var s=window.open(r,document.title+" - WebLN enable","height=700,width=600,top="+t+",left="+n),u=!1;window.addEventListener("message",function(t){try{var n=t.data,r=function(){if(n&&"alby:oauth:success"===n.type&&t.origin===document.location.protocol+"//"+document.location.host&&!u){u=!0,console.info("Processing OAuth code response");var r=n.payload.code,c=ee(function(){return Promise.resolve(e.auth.requestAccessToken(r)).then(function(){e.client=new Q(e.auth),s&&s.close(),e.notify("enable"),o({enabled:!0})})},function(e){console.error(e),i({enabled:!1})});if(c&&c.then)return c.then(function(){})}}();return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})})})}catch(e){return Promise.reject(e)}},e}()};export{Q as Client,x as auth,G as nwc,b as types,te as webln};

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("events"),require("nostr-tools")):"function"==typeof define&&define.amd?define(["exports","events","nostr-tools"],t):t((e||self).sdk={},e.events,e.nostrTools)}(this,function(e,t,n){function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/r(t);function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(this,arguments)}function c(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,l(e,t)}function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function d(e,t,n){return d=h()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&l(o,n.prototype),o},d.apply(null,arguments)}function f(e){var t="function"==typeof Map?new Map:void 0;return f=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return d(e,arguments,a(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),l(n,e)},f(e)}function p(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}function m(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return t&&n?t+"="+n:""}).filter(function(e){return e}).join("&")}function v(e,t){return"Basic "+btoa(e+":"+t)}var y=/*#__PURE__*/function(e){function t(t,n,r,o){var i,s=t.toString();return n&&(s+=" "+n),s+=": ",s+=o.message?o.message:JSON.stringify(o),(i=e.call(this,s)||this).status=void 0,i.statusText=void 0,i.headers=void 0,i.error=void 0,i.status=t,i.statusText=n,i.headers=r,i.error=o,i}return c(t,e),t}(/*#__PURE__*/f(Error)),g={__proto__:null,OAuthClient:function(){},AuthClient:function(){},AlbyResponseError:y},P=["auth","endpoint","params","request_body","method","max_retries","base_url","user_agent","headers"],w=function(e){return Promise.resolve(b(e)).then(function(e){return e.json()})},b=function(e){var t=e.auth,n=e.endpoint,r=e.params,o=void 0===r?{}:r,i=e.request_body,s=e.method,c=e.max_retries,a=e.base_url,l=void 0===a?_:a,h=e.user_agent,d=e.headers,f=p(e,P);try{var v=function(e){return Promise.resolve(k(g.toString(),u({headers:u({},w?{"Content-Type":"application/json; charset=utf-8"}:void 0,e,d,{"User-Agent":null!=h?h:"@getalby/sdk","X-User-Agent":null!=h?h:"@getalby/sdk"}),method:s,body:w?JSON.stringify(i):void 0},f),c)).then(function(e){var t=function(){if(!e.ok)return Promise.resolve(e.json()).then(function(t){throw new y(e.status,e.statusText,e.headers,t)})}();return t&&t.then?t.then(function(t){return e}):e})},g=new URL(l+n);g.search=m(o);var w="POST"===s&&!!i;return Promise.resolve(t?Promise.resolve(t.getAuthHeader(g.href,s)).then(v):v(void 0))}catch(e){return Promise.reject(e)}},k=function e(t,n,r){void 0===r&&(r=0);try{return Promise.resolve(fetch(t,n)).then(function(o){var i,s=function(){if(429===o.status&&r>0){var s=Number(o.headers.get("x-rate-limit-reset")),u=Number(o.headers.get("x-rate-limit-remaining")),c=1e3*s-Date.now(),a=1e3;return 0===u&&(a=c),Promise.resolve(new Promise(function(e){return setTimeout(e,a)})).then(function(){var o=e(t,n,r-1);return i=1,o})}}();return s&&s.then?s.then(function(e){return i?e:o}):i?s:o})}catch(e){return Promise.reject(e)}},_="https://api.getalby.com",E=["expires_in"],T=["token"];function N(e){var t=e.expires_in;return u({},p(e,E),!!t&&{expires_at:Date.now()+1e3*t})}var R=/*#__PURE__*/function(){function e(e){this.token=void 0,this.options=void 0,this.code_verifier=void 0,this.code_challenge=void 0,this._refreshAccessTokenPromise=void 0,this._tokenEvents=void 0,this._tokenEvents=new o.default;var t=e.token,n=p(e,T);this.options=u({client_secret:""},n),this.token=t,this._refreshAccessTokenPromise=null}var t=e.prototype;return t.on=function(e,t){this._tokenEvents.on(e,t)},t.refreshAccessToken=function(){try{var e=this;return e._refreshAccessTokenPromise||(e._refreshAccessTokenPromise=new Promise(function(t,n){try{return Promise.resolve(function(r,o){try{var i=function(n,r){try{var o=function(){var n,r=null==(n=e.token)?void 0:n.refresh_token,o=e.options,i=o.client_id,s=o.client_secret,c=o.request_options,a=o.user_agent;if(!i)throw new Error("client_id is required");if(!r)throw new Error("refresh_token is required");return Promise.resolve(w(u({},c,{endpoint:"/oauth/token",params:{client_id:i,grant_type:"refresh_token",refresh_token:r},user_agent:a,method:"POST",headers:u({},null==c?void 0:c.headers,{"Content-type":"application/x-www-form-urlencoded"},{Authorization:v(i,s)})}))).then(function(n){var r=N(n);e.token=r,t({token:r}),e._tokenEvents.emit("tokenRefreshed",e.token)})}()}catch(e){return r(e)}return o&&o.then?o.then(void 0,r):o}(0,function(t){console.error(t),n(t),e._tokenEvents.emit("tokenRefreshFailed",t)})}catch(e){return o(!0,e)}return i&&i.then?i.then(o.bind(null,!1),o.bind(null,!0)):o(!1,i)}(0,function(t,n){if(e._refreshAccessTokenPromise=null,t)throw n;return n}))}catch(e){return Promise.reject(e)}})),Promise.resolve(e._refreshAccessTokenPromise)}catch(e){return Promise.reject(e)}},t.isAccessTokenExpired=function(){var e,t,n=null==(e=this.token)?void 0:e.refresh_token,r=null==(t=this.token)?void 0:t.expires_at;return!r||!!n&&r<=Date.now()+1e3},t.requestAccessToken=function(e){try{var t=this,n=t.options,r=n.client_id,o=n.client_secret,i=n.callback,s=n.request_options,c=n.user_agent,a=t.code_verifier;if(!r)throw new Error("client_id is required");if(!o&&!a)throw new Error("either client_secret is required, or code should be generated using a challenge");if(!i)throw new Error("callback is required");return Promise.resolve(w(u({},s,{endpoint:"/oauth/token",params:{code:e,grant_type:"authorization_code",code_verifier:a,client_id:r,redirect_uri:i},user_agent:c,method:"POST",headers:u({},null==s?void 0:s.headers,{"Content-Type":"application/x-www-form-urlencoded"},{Authorization:v(r,o)})}))).then(function(e){var n=N(e);return t.token=n,{token:n}})}catch(e){return Promise.reject(e)}},t.generateAuthURL=function(e){try{var t=function(){var t=n.code_challenge,o=new URL(e.authorizeUrl||"https://getalby.com/oauth");return o.search=m(u({},e,{client_id:i,scope:c.join(" "),response_type:"code",redirect_uri:s,code_challenge_method:r,code_challenge:t})),o.toString()},n=this;e||(e={});var r,o=n.options,i=o.client_id,s=o.callback,c=o.scopes;if(!s)throw new Error("callback required");if(!c)throw new Error("scopes required");var a=function(){if("S256"===e.code_challenge_method)return Promise.resolve(n._generateS256Challenge()).then(function(){r="S256"});"plain"===e.code_challenge_method&&e.code_challenge&&(n.code_challenge=e.code_challenge,n.code_verifier=e.code_challenge,r="plain")}();return Promise.resolve(a&&a.then?a.then(t):t())}catch(e){return Promise.reject(e)}},t.getAuthHeader=function(){try{var e,t=function(){return{Authorization:"Bearer "+n.token.access_token}},n=this;if(null==(e=n.token)||!e.access_token)throw new Error("access_token is required");var r=function(){if(n.isAccessTokenExpired())return Promise.resolve(n.refreshAccessToken()).then(function(){})}();return Promise.resolve(r&&r.then?r.then(t):t())}catch(e){return Promise.reject(e)}},t._generateS256Challenge=function(){try{var e=this,t=crypto.getRandomValues(new Uint8Array(64));return e.code_verifier=t.reduce(function(e,t){return e+t.toString(16).padStart(2,"0")},""),Promise.resolve(crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e.code_verifier))).then(function(t){var n=new Uint8Array(t);e.code_challenge=btoa(String.fromCharCode.apply(String,n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")})}catch(e){return Promise.reject(e)}},e}(),A=/*#__PURE__*/function(){function e(e){this.bearer_token=void 0,this.bearer_token=e}return e.prototype.getAuthHeader=function(){return{Authorization:"Bearer "+this.bearer_token}},e}(),q={__proto__:null,OAuth2User:R,OAuth2Bearer:A};function j(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var O=/*#__PURE__*/function(e){function t(t,n){var r;return(r=e.call(this,t)||this).error=void 0,r.code=void 0,r.error=t,r.code=n,r}return c(t,e),t}(/*#__PURE__*/f(Error)),x=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),U=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(U),S=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(U),C=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),W=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),L=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),K={alby:{authorizationUrl:"https://nwc.getalby.com/apps/new",relayUrl:"wss://relay.getalby.com/v1",walletPubkey:"69effe7b49a6dd5cf525bd0905917a5005ffe480b58eeb8e861418cf3ae760d9"}},z=/*#__PURE__*/function(){function e(t){var r;this.relay=void 0,this.relayUrl=void 0,this.secret=void 0,this.walletPubkey=void 0,this.options=void 0,t&&t.nostrWalletConnectUrl&&(t=u({},e.parseWalletConnectUrl(t.nostrWalletConnectUrl),t));var o=K[(null==(r=t)?void 0:r.providerName)||"alby"];this.options=u({},o,t||{}),this.relayUrl=this.options.relayUrl,this.relay=n.relayInit(this.relayUrl),this.options.secret&&(this.secret=this.options.secret.toLowerCase().startsWith("nsec")?n.nip19.decode(this.options.secret).data:this.options.secret),this.walletPubkey=this.options.walletPubkey.toLowerCase().startsWith("npub")?n.nip19.decode(this.options.walletPubkey).data:this.options.walletPubkey,void 0===globalThis.WebSocket&&console.error("WebSocket is undefined. Make sure to `import websocket-polyfill` for nodejs environments")}e.parseWalletConnectUrl=function(e){e=e.replace("nostrwalletconnect://","http://").replace("nostr+walletconnect://","http://");var t=new URL(e),n=t.searchParams.get("relay");if(!n)throw new Error("No relay URL found in connection string");var r={walletPubkey:t.host,relayUrl:n},o=t.searchParams.get("secret");return o&&(r.secret=o),r},e.withNewSecret=function(t){return(t=t||{}).secret=n.generatePrivateKey(),new e(t)};var t=e.prototype;return t.getNostrWalletConnectUrl=function(e){void 0===e&&(e=!0);var t="nostr+walletconnect://"+this.walletPubkey+"?relay="+this.relayUrl+"&pubkey="+this.publicKey;return e&&(t=t+"&secret="+this.secret),t},t.getPublicKey=function(){return Promise.resolve(this.publicKey)},t.signEvent=function(e){if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(n.finishEvent(e,this.secret))},t.getEventHash=function(e){return n.getEventHash(e)},t.close=function(){return this.relay.close()},t.encrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(n.nip04.encrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},t.decrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(n.nip04.decrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},t.getAuthorizationUrl=function(e){if(!this.options.authorizationUrl)throw new Error("Missing authorizationUrl option");var t=new URL(this.options.authorizationUrl);return null!=e&&e.name&&t.searchParams.set("name",null==e?void 0:e.name),t.searchParams.set("pubkey",this.publicKey),null!=e&&e.returnTo&&t.searchParams.set("return_to",e.returnTo),null!=e&&e.budgetRenewal&&t.searchParams.set("budget_renewal",e.budgetRenewal),null!=e&&e.expiresAt&&t.searchParams.set("expires_at",Math.floor(e.expiresAt.getTime()/1e3).toString()),null!=e&&e.maxAmount&&t.searchParams.set("max_amount",e.maxAmount.toString()),void 0!==(null==e?void 0:e.editable)&&t.searchParams.set("editable",e.editable.toString()),null!=e&&e.requestMethods&&t.searchParams.set("request_methods",e.requestMethods.join(" ")),t},t.initNWC=function(e){void 0===e&&(e={}),e.name||(e.name=document.location.host);var t=this.getAuthorizationUrl(e),n=window.outerHeight/2+window.screenY-300,r=window.outerWidth/2+window.screenX-200;return new Promise(function(e,o){var i=window.open(t.toString(),document.title+" - Wallet Connect","height=600,width=400,top="+n+",left="+r);if(i){var s=function n(r){var o=r.data;o&&"nwc:success"===o.type&&r.origin===t.protocol+"//"+t.host&&(e(o),clearInterval(u),window.removeEventListener("message",n),i&&i.close())},u=setInterval(function(){i&&i.closed&&(clearInterval(u),window.removeEventListener("message",s),o(new Error("Popup closed")))},500);window.addEventListener("message",s)}else o(new Error("failed to execute window.open"))})},t.getWalletServiceSupportedMethods=function(){try{var e=this;return Promise.resolve(e._checkConnected()).then(function(){return Promise.resolve(e.relay.list([{kinds:[13194],limit:1,authors:[e.walletPubkey]}],{eoseSubTimeout:1e4})).then(function(e){if(!e.length)throw new Error("no info event (kind 13194) returned from relay");return e[0].content.split(/[ |,]/g)})})}catch(e){return Promise.reject(e)}},t.getInfo=function(){try{var e=this;return Promise.resolve(j(function(){return Promise.resolve(e.executeNip47Request("get_info",{},function(e){return!!e.methods}))},function(e){throw console.error("Failed to request get_info",e),e}))}catch(e){return Promise.reject(e)}},t.getBalance=function(){try{var e=this;return Promise.resolve(j(function(){return Promise.resolve(e.executeNip47Request("get_balance",{},function(e){return void 0!==e.balance}))},function(e){throw console.error("Failed to request get_balance",e),e}))}catch(e){return Promise.reject(e)}},t.payInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("pay_invoice",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.payKeysend=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("pay_keysend",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},t.multiPayInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_invoice",e,e.invoices.length,function(e){return!!e.preimage})).then(function(e){return{invoices:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.multiPayKeysend=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_keysend",e,e.keysends.length,function(e){return!!e.preimage})).then(function(e){return{keysends:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){if(!e.amount)throw new Error("No amount specified");return Promise.resolve(t.executeNip47Request("make_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request make_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.lookupInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("lookup_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request lookup_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.listTransactions=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("list_transactions",e,function(e){return!!e.transactions}))},function(e){throw console.error("Failed to request list_transactions",e),e}))}catch(e){return Promise.reject(e)}},t.executeNip47Request=function(e,t,n){try{var r=this;return Promise.resolve(r._checkConnected()).then(function(){return new Promise(function(o,i){try{return Promise.resolve(r.encrypt(r.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",r.walletPubkey]],content:e,pubkey:r.publicKey};return Promise.resolve(r.signEvent(t)).then(function(e){var t=r.relay.sub([{kinds:[23195],authors:[r.walletPubkey],"#e":[e.id]}]),s=setTimeout(function(){t.unsub(),i(new S("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return clearTimeout(s),t.unsub(),Promise.resolve(r.decrypt(r.walletPubkey,e.content)).then(function(r){var u,c,a,l,h;try{u=JSON.parse(r)}catch(e){return clearTimeout(s),t.unsub(),void i(new W("failed to deserialize response","INTERNAL"))}23195==e.kind?u.result?n(u.result)?o(u.result):(clearTimeout(s),t.unsub(),i(new M("response from NWC failed validation: "+JSON.stringify(u.result),"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new x((null==(c=u.error)?void 0:c.message)||"unknown Error",(null==(a=u.error)?void 0:a.code)||"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new L((null==(l=u.error)?void 0:l.message)||"unknown Error",(null==(h=u.error)?void 0:h.code)||"INTERNAL")))})}catch(e){return Promise.reject(e)}});var u=setTimeout(function(){t.unsub(),i(new I("publish timeout: "+e.id,"INTERNAL"))},5e3),c=j(function(){return Promise.resolve(r.relay.publish(e)).then(function(){clearTimeout(u)})},function(e){clearTimeout(u),i(new C("failed to publish: "+e,"INTERNAL"))});if(c&&c.then)return c.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},t.executeMultiNip47Request=function(e,t,n,r){try{var o=this;return Promise.resolve(o._checkConnected()).then(function(){var i=[];return new Promise(function(s,c){try{return Promise.resolve(o.encrypt(o.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",o.walletPubkey]],content:e,pubkey:o.publicKey};return Promise.resolve(o.signEvent(t)).then(function(e){var t=o.relay.sub([{kinds:[23195],authors:[o.walletPubkey],"#e":[e.id]}]),a=setTimeout(function(){t.unsub(),c(new S("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return Promise.resolve(o.decrypt(o.walletPubkey,e.content)).then(function(o){var l,h,d;try{l=JSON.parse(o)}catch(e){clearTimeout(a),t.unsub(),c(new W("failed to deserialize response","INTERNAL"))}if(23195==e.kind)if(l.result){var f;if(!r(l.result))return clearTimeout(a),t.unsub(),void c(new M("Response from NWC failed validation: "+JSON.stringify(l.result),"INTERNAL"));var p=null==(f=e.tags.find(function(e){return"d"===e[0]}))?void 0:f[1];if(void 0===p)return clearTimeout(a),t.unsub(),void c(new M("No d tag found in response event","INTERNAL"));i.push(u({},l.result,{dTag:p})),i.length===n&&(clearTimeout(a),t.unsub(),s(i))}else{var m,v;clearTimeout(a),t.unsub(),c(new x(null==(m=l.error)?void 0:m.message,null==(v=l.error)?void 0:v.code))}else clearTimeout(a),t.unsub(),c(new L(null==(h=l.error)?void 0:h.message,null==(d=l.error)?void 0:d.code))})}catch(e){return Promise.reject(e)}});var l=setTimeout(function(){t.unsub(),c(new I("Publish timeout: "+e.id,"INTERNAL"))},5e3),h=j(function(){return Promise.resolve(o.relay.publish(e)).then(function(){clearTimeout(l)})},function(e){clearTimeout(l),c(new C("Failed to publish: "+e,"INTERNAL"))});if(h&&h.then)return h.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},t._checkConnected=function(){try{if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(this.relay.connect()).then(function(){})}catch(e){return Promise.reject(e)}},s(e,[{key:"nostrWalletConnectUrl",get:function(){return this.getNostrWalletConnectUrl()}},{key:"connected",get:function(){return 1===this.relay.status}},{key:"publicKey",get:function(){if(!this.secret)throw new Error("Missing secret key");return n.getPublicKey(this.secret)}}]),e}(),B={__proto__:null,Nip47Error:O,Nip47WalletError:x,Nip47TimeoutError:U,Nip47PublishTimeoutError:I,Nip47ReplyTimeoutError:S,Nip47PublishError:C,Nip47ResponseDecodingError:W,Nip47ResponseValidationError:M,Nip47UnexpectedResponseError:L,NWCs:K,NWCClient:z},F={get_info:"getInfo",get_balance:"getBalance",make_invoice:"makeInvoice",pay_invoice:"sendPayment",pay_keysend:"payKeysend",lookup_invoice:"lookupInvoice",list_transactions:"listTransactions",multi_pay_invoice:"sendMultiPayment",multi_pay_keysend:"multiKeysend"},H=/*#__PURE__*/function(){function e(e){this._enabled=!1,this.client=void 0,this.subscribers=void 0,this.client=new z(e),this.subscribers={}}e.withNewSecret=function(t){return(t=t||{}).secret=n.generatePrivateKey(),new e(t)};var t=e.prototype;return t.on=function(e,t){this.subscribers[e]=t},t.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},t.getNostrWalletConnectUrl=function(e){return void 0===e&&(e=!0),console.warn("getNostrWalletConnectUrl is deprecated. Please use client.getNostrWalletConnectUrl instead."),this.client.getNostrWalletConnectUrl(e)},t.getPublicKey=function(){return this.client.getPublicKey()},t.signEvent=function(e){return this.client.signEvent(e)},t.getEventHash=function(e){return console.warn("getEventHash is deprecated. Please use client.getEventHash instead."),this.client.getEventHash(e)},t.enable=function(){try{return this._enabled=!0,Promise.resolve()}catch(e){return Promise.reject(e)}},t.close=function(){return this.client.close()},t.encrypt=function(e,t){try{return console.warn("encrypt is deprecated. Please use client.encrypt instead."),Promise.resolve(this.client.encrypt(e,t))}catch(e){return Promise.reject(e)}},t.decrypt=function(e,t){try{return console.warn("decrypt is deprecated. Please use client.decrypt instead."),Promise.resolve(this.client.decrypt(e,t))}catch(e){return Promise.reject(e)}},t.getAuthorizationUrl=function(e){return console.warn("getAuthorizationUrl is deprecated. Please use client.getAuthorizationUrl instead."),this.client.getAuthorizationUrl(e)},t.initNWC=function(e){return void 0===e&&(e={}),console.warn("initNWC is deprecated. Please use client.initNWC instead."),this.client.initNWC(e)},t.getInfo=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){var t=["lightning","nostr"],n="Alby JS SDK";return function(r,o){try{var i=Promise.resolve(e.client.getInfo()).then(function(r){var o={methods:r.methods.map(function(e){return F[e]}),node:{alias:r.alias,pubkey:r.pubkey,color:r.color},supports:t,version:n};return e.notify("getInfo",o),o})}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){return console.error("Using minimal getInfo",e),{methods:["sendPayment"],node:{},supports:t,version:n}})})}catch(e){return Promise.reject(e)}},t.getBalance=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){return Promise.resolve(e.client.getBalance()).then(function(t){var n={balance:Math.floor(t.balance/1e3),currency:"sats"};return e.notify("getBalance",n),n})})}catch(e){return Promise.reject(e)}},t.sendPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payInvoice({invoice:e})).then(function(e){var n={preimage:e.preimage};return t.notify("sendPayment",n),n})})}catch(e){return Promise.reject(e)}},t.sendPaymentAsync=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return t.client.payInvoice({invoice:e}),t.notify("sendPaymentAsync",{}),{}})}catch(e){return Promise.reject(e)}},t.keysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payKeysend(J(e))).then(function(e){var n={preimage:e.preimage};return t.notify("keysend",n),n})})}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){var n,r="object"==typeof e?e:void 0,o=+(null!=(n=null==r?void 0:r.amount)?n:e);if(!o)throw new Error("No amount specified");return Promise.resolve(t.client.makeInvoice({amount:1e3*o,description:null==r?void 0:r.defaultMemo})).then(function(e){var n={paymentRequest:e.invoice};return t.notify("makeInvoice",n),n})})}catch(e){return Promise.reject(e)}},t.lookupInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.lookupInvoice({invoice:e.paymentRequest,payment_hash:e.paymentHash})).then(function(e){var n={preimage:e.preimage,paymentRequest:e.invoice,paid:!!e.settled_at};return t.notify("lookupInvoice",n),n})})}catch(e){return Promise.reject(e)}},t.listTransactions=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.listTransactions(e)).then(function(e){var n={transactions:e.transactions.map(G)};return t.notify("listTransactions",n),n})})}catch(e){return Promise.reject(e)}},t.sendMultiPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayInvoice({invoices:e.map(function(e,t){return{invoice:e,id:t.toString()}})})).then(function(n){var r={payments:n.invoices.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find paymentRequest matching response d tag");return{paymentRequest:n,preimage:t.preimage}}),errors:[]};return t.notify("sendMultiPayment",r),r})})}catch(e){return Promise.reject(e)}},t.multiKeysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayKeysend({keysends:e.map(function(e,t){return u({},J(e),{id:t.toString()})})})).then(function(n){var r={keysends:n.keysends.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find keysend matching response d tag");return{keysend:n,preimage:t.preimage}}),errors:[]};return t.notify("multiKeysend",r),r})})}catch(e){return Promise.reject(e)}},t.lnurl=function(e){throw new Error("Method not implemented.")},t.request=function(e,t){throw new Error("Method not implemented.")},t.signMessage=function(e){throw new Error("Method not implemented.")},t.verifyMessage=function(e,t){throw new Error("Method not implemented.")},t.checkEnabled=function(){try{if(!this._enabled)throw new Error("please call enable() and await the promise before calling this function");return Promise.resolve()}catch(e){return Promise.reject(e)}},s(e,[{key:"relay",get:function(){return console.warn("relay is deprecated. Please use client.relay instead."),this.client.relay}},{key:"relayUrl",get:function(){return console.warn("relayUrl is deprecated. Please use client.relayUrl instead."),this.client.relayUrl}},{key:"walletPubkey",get:function(){return console.warn("walletPubkey is deprecated. Please use client.walletPubkey instead."),this.client.walletPubkey}},{key:"options",get:function(){return this.client.options}},{key:"secret",get:function(){return console.warn("secret is deprecated. Please use client.secret instead."),this.client.secret}},{key:"nostrWalletConnectUrl",get:function(){return console.warn("nostrWalletConnectUrl is deprecated. Please use client.nostrWalletConnectUrl instead."),this.client.nostrWalletConnectUrl}},{key:"connected",get:function(){return console.warn("connected is deprecated. Please use client.connected instead."),this.client.connected}},{key:"publicKey",get:function(){return console.warn("publicKey is deprecated. Please use client.publicKey instead."),this.client.publicKey}}]),e}();function G(e){return u({},e,{amount:Math.floor(e.amount/1e3),fees_paid:e.fees_paid?Math.floor(e.fees_paid/1e3):0})}function J(e){return{amount:1e3*+e.amount,pubkey:e.destination,tlv_records:e.customRecords?Object.entries(e.customRecords).map(function(e){return{type:parseInt(e[0]),value:e[1]}}):[]}}var D=H;function V(e){var t={};return e.recipient.customKey&&e.recipient.customValue&&(t[e.recipient.customKey]=e.recipient.customValue),t[7629169]=JSON.stringify(e.boostagram),{destination:e.recipient.address,amount:e.amount,customRecords:t}}var X=/*#__PURE__*/function(){function e(e,t){this.auth=void 0,this.defaultRequestOptions=void 0,this.auth="string"==typeof e?new A(e):e,this.defaultRequestOptions=u({},t,{user_agent:null==t?void 0:t.user_agent})}var t=e.prototype;return t.accountBalance=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/balance",params:e,method:"GET"}))},t.accountSummary=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/summary",params:e,method:"GET"}))},t.accountInformation=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/me",params:e,method:"GET"}))},t.accountValue4Value=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/value4value",params:e,method:"GET"}))},t.incomingInvoices=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/incoming",params:e,method:"GET"}))},t.outgoingInvoices=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/outgoing",params:e,method:"GET"}))},t.invoices=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",params:e,method:"GET"}))},t.getInvoice=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/"+e,method:"GET"}))},t.decodeInvoice=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/decode/bolt11/"+e,method:"GET"}))},t.createInvoice=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",request_body:e,method:"POST"}))},t.keysend=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e}):(n="/payments/keysend",r=e),w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendPayment=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/bolt11",request_body:e,method:"POST"}))},t.sendBoostagram=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e.map(function(e){return V(e)})}):(n="/payments/keysend",r=V(e)),w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendToAlbyAccount=function(e,t){return console.warn("sendToAlbyAccount is deprecated. Please use sendBoostagramToAlbyAccount instead."),this.sendBoostagramToAlbyAccount(e,t)},t.sendBoostagramToAlbyAccount=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/keysend",request_body:{destination:"030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",customRecords:{696969:e.account},amount:e.amount,memo:e.memo},method:"POST"}))},t.createWebhookEndpoint=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints",request_body:e,method:"POST"}))},t.deleteWebhookEndpoint=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints/"+e,method:"DELETE"}))},t.getSwapInfo=function(e){return w(u({auth:this.auth},this.defaultRequestOptions,e,{endpoint:"/swaps/info",method:"GET"}))},t.createSwap=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/swaps",method:"POST",request_body:e}))},e}();function Y(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}function $(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Q={__proto__:null,NostrWebLNProvider:H,NWC:D,OauthWeblnProvider:/*#__PURE__*/function(){function e(e){this.client=void 0,this.auth=void 0,this.oauth=void 0,this.subscribers=void 0,this.isExecuting=void 0,this.auth=e.auth,this.client=new X(e.auth),this.oauth=!0,this.subscribers={},this.isExecuting=!1}var t=e.prototype;return t.on=function(e,t){this.subscribers[e]=t},t.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},t.enable=function(){try{var e,t=this;return t.isExecuting?Promise.resolve():null!=(e=t.auth.token)&&e.access_token?Promise.resolve({enabled:!0}):Promise.resolve(function(){if("undefined"==typeof window||void 0===window.document)throw new Error("Missing access token");var e=Y(function(){return t.isExecuting=!0,Promise.resolve(t.openAuthorization()).then(function(){})},function(e,n){if(t.isExecuting=!1,e)throw n;return n});if(e&&e.then)return e.then(function(){})}())}catch(e){return Promise.reject(e)}},t.sendPayment=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Y(function(){return $(function(){return t.isExecuting=!0,Promise.resolve(t.client.sendPayment({invoice:e})).then(function(e){return t.notify("sendPayment",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.keysend=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Y(function(){return $(function(){return t.isExecuting=!0,Promise.resolve(t.client.keysend(e)).then(function(e){return t.notify("keysend",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.getInfo=function(){try{return Promise.resolve({alias:"Alby"})}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Y(function(){return $(function(){return t.isExecuting=!0,Promise.resolve(t.client.createInvoice({amount:parseInt(e.amount.toString()),description:e.defaultMemo})).then(function(e){return t.notify("makeInvoice",e),{paymentRequest:e.payment_request}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.openAuthorization=function(){try{var e=this,t=window.outerHeight/2+window.screenY-350,n=window.outerWidth/2+window.screenX-300;return Promise.resolve(e.auth.generateAuthURL({code_challenge_method:"S256"})).then(function(r){return new Promise(function(o,i){var s=window.open(r,document.title+" - WebLN enable","height=700,width=600,top="+t+",left="+n),u=!1;window.addEventListener("message",function(t){try{var n=t.data,r=function(){if(n&&"alby:oauth:success"===n.type&&t.origin===document.location.protocol+"//"+document.location.host&&!u){u=!0,console.info("Processing OAuth code response");var r=n.payload.code,c=$(function(){return Promise.resolve(e.auth.requestAccessToken(r)).then(function(){e.client=new X(e.auth),s&&s.close(),e.notify("enable"),o({enabled:!0})})},function(e){console.error(e),i({enabled:!1})});if(c&&c.then)return c.then(function(){})}}();return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})})})}catch(e){return Promise.reject(e)}},e}()};e.Client=X,e.auth=q,e.nwc=B,e.types=g,e.webln=Q});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("eventemitter3"),require("nostr-tools")):"function"==typeof define&&define.amd?define(["exports","eventemitter3","nostr-tools"],t):t((e||self).sdk={},e.eventemitter3,e.nostrTools)}(this,function(e,t,n){function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=/*#__PURE__*/r(t);function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(this,arguments)}function c(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,l(e,t)}function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}function h(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function d(e,t,n){return d=h()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&l(o,n.prototype),o},d.apply(null,arguments)}function f(e){var t="function"==typeof Map?new Map:void 0;return f=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return d(e,arguments,a(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),l(n,e)},f(e)}function m(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(o[n]=e[n]);return o}function p(e){return Object.entries(e).map(function(e){var t=e[0],n=e[1];return t&&n?t+"="+n:""}).filter(function(e){return e}).join("&")}function v(e,t){return"Basic "+btoa(e+":"+t)}var y=/*#__PURE__*/function(e){function t(t,n,r,o){var i,s=t.toString();return n&&(s+=" "+n),s+=": ",s+=o.message?o.message:JSON.stringify(o),(i=e.call(this,s)||this).status=void 0,i.statusText=void 0,i.headers=void 0,i.error=void 0,i.status=t,i.statusText=n,i.headers=r,i.error=o,i}return c(t,e),t}(/*#__PURE__*/f(Error)),g={__proto__:null,OAuthClient:function(){},AuthClient:function(){},AlbyResponseError:y},P=["auth","endpoint","params","request_body","method","max_retries","base_url","user_agent","headers"],w=function(e){return Promise.resolve(b(e)).then(function(e){return e.json()})},b=function(e){var t=e.auth,n=e.endpoint,r=e.params,o=void 0===r?{}:r,i=e.request_body,s=e.method,c=e.max_retries,a=e.base_url,l=void 0===a?_:a,h=e.user_agent,d=e.headers,f=m(e,P);try{var v=function(e){return Promise.resolve(k(g.toString(),u({headers:u({},w?{"Content-Type":"application/json; charset=utf-8"}:void 0,e,d,{"User-Agent":null!=h?h:"@getalby/sdk","X-User-Agent":null!=h?h:"@getalby/sdk"}),method:s,body:w?JSON.stringify(i):void 0},f),c)).then(function(e){var t=function(){if(!e.ok)return Promise.resolve(e.json()).then(function(t){throw new y(e.status,e.statusText,e.headers,t)})}();return t&&t.then?t.then(function(t){return e}):e})},g=new URL(l+n);g.search=p(o);var w="POST"===s&&!!i;return Promise.resolve(t?Promise.resolve(t.getAuthHeader(g.href,s)).then(v):v(void 0))}catch(e){return Promise.reject(e)}},k=function e(t,n,r){void 0===r&&(r=0);try{return Promise.resolve(fetch(t,n)).then(function(o){var i,s=function(){if(429===o.status&&r>0){var s=Number(o.headers.get("x-rate-limit-reset")),u=Number(o.headers.get("x-rate-limit-remaining")),c=1e3*s-Date.now(),a=1e3;return 0===u&&(a=c),Promise.resolve(new Promise(function(e){return setTimeout(e,a)})).then(function(){var o=e(t,n,r-1);return i=1,o})}}();return s&&s.then?s.then(function(e){return i?e:o}):i?s:o})}catch(e){return Promise.reject(e)}},_="https://api.getalby.com",E=["expires_in"],T=["token"];function N(e){var t=e.expires_in;return u({},m(e,E),!!t&&{expires_at:Date.now()+1e3*t})}var R=/*#__PURE__*/function(){function e(e){this.token=void 0,this.options=void 0,this.code_verifier=void 0,this.code_challenge=void 0,this._refreshAccessTokenPromise=void 0,this._tokenEvents=void 0,this._tokenEvents=new o.default;var t=e.token,n=m(e,T);this.options=u({client_secret:""},n),this.token=t,this._refreshAccessTokenPromise=null}var t=e.prototype;return t.on=function(e,t){this._tokenEvents.on(e,t)},t.refreshAccessToken=function(){try{var e=this;return e._refreshAccessTokenPromise||(e._refreshAccessTokenPromise=new Promise(function(t,n){try{return Promise.resolve(function(r,o){try{var i=function(n,r){try{var o=function(){var n,r=null==(n=e.token)?void 0:n.refresh_token,o=e.options,i=o.client_id,s=o.client_secret,c=o.request_options,a=o.user_agent;if(!i)throw new Error("client_id is required");if(!r)throw new Error("refresh_token is required");return Promise.resolve(w(u({},c,{endpoint:"/oauth/token",params:{client_id:i,grant_type:"refresh_token",refresh_token:r},user_agent:a,method:"POST",headers:u({},null==c?void 0:c.headers,{"Content-type":"application/x-www-form-urlencoded"},{Authorization:v(i,s)})}))).then(function(n){var r=N(n);e.token=r,t({token:r}),e._tokenEvents.emit("tokenRefreshed",e.token)})}()}catch(e){return r(e)}return o&&o.then?o.then(void 0,r):o}(0,function(t){console.error(t),n(t),e._tokenEvents.emit("tokenRefreshFailed",t)})}catch(e){return o(!0,e)}return i&&i.then?i.then(o.bind(null,!1),o.bind(null,!0)):o(!1,i)}(0,function(t,n){if(e._refreshAccessTokenPromise=null,t)throw n;return n}))}catch(e){return Promise.reject(e)}})),Promise.resolve(e._refreshAccessTokenPromise)}catch(e){return Promise.reject(e)}},t.isAccessTokenExpired=function(){var e,t,n=null==(e=this.token)?void 0:e.refresh_token,r=null==(t=this.token)?void 0:t.expires_at;return!r||!!n&&r<=Date.now()+1e3},t.requestAccessToken=function(e){try{var t=this,n=t.options,r=n.client_id,o=n.client_secret,i=n.callback,s=n.request_options,c=n.user_agent,a=t.code_verifier;if(!r)throw new Error("client_id is required");if(!o&&!a)throw new Error("either client_secret is required, or code should be generated using a challenge");if(!i)throw new Error("callback is required");return Promise.resolve(w(u({},s,{endpoint:"/oauth/token",params:{code:e,grant_type:"authorization_code",code_verifier:a,client_id:r,redirect_uri:i},user_agent:c,method:"POST",headers:u({},null==s?void 0:s.headers,{"Content-Type":"application/x-www-form-urlencoded"},{Authorization:v(r,o)})}))).then(function(e){var n=N(e);return t.token=n,{token:n}})}catch(e){return Promise.reject(e)}},t.generateAuthURL=function(e){try{var t=function(){var t=n.code_challenge,o=new URL(e.authorizeUrl||"https://getalby.com/oauth");return o.search=p(u({},e,{client_id:i,scope:c.join(" "),response_type:"code",redirect_uri:s,code_challenge_method:r,code_challenge:t})),o.toString()},n=this;e||(e={});var r,o=n.options,i=o.client_id,s=o.callback,c=o.scopes;if(!s)throw new Error("callback required");if(!c)throw new Error("scopes required");var a=function(){if("S256"===e.code_challenge_method)return Promise.resolve(n._generateS256Challenge()).then(function(){r="S256"});"plain"===e.code_challenge_method&&e.code_challenge&&(n.code_challenge=e.code_challenge,n.code_verifier=e.code_challenge,r="plain")}();return Promise.resolve(a&&a.then?a.then(t):t())}catch(e){return Promise.reject(e)}},t.getAuthHeader=function(){try{var e,t=function(){return{Authorization:"Bearer "+n.token.access_token}},n=this;if(null==(e=n.token)||!e.access_token)throw new Error("access_token is required");var r=function(){if(n.isAccessTokenExpired())return Promise.resolve(n.refreshAccessToken()).then(function(){})}();return Promise.resolve(r&&r.then?r.then(t):t())}catch(e){return Promise.reject(e)}},t._generateS256Challenge=function(){try{var e=this,t=crypto.getRandomValues(new Uint8Array(64));return e.code_verifier=t.reduce(function(e,t){return e+t.toString(16).padStart(2,"0")},""),Promise.resolve(crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e.code_verifier))).then(function(t){var n=new Uint8Array(t);e.code_challenge=btoa(String.fromCharCode.apply(String,n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")})}catch(e){return Promise.reject(e)}},e}(),A=/*#__PURE__*/function(){function e(e){this.bearer_token=void 0,this.bearer_token=e}return e.prototype.getAuthHeader=function(){return{Authorization:"Bearer "+this.bearer_token}},e}(),q={__proto__:null,OAuth2User:R,OAuth2Bearer:A};function j(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var O=/*#__PURE__*/function(e){function t(t,n){var r;return(r=e.call(this,t)||this).error=void 0,r.code=void 0,r.error=t,r.code=n,r}return c(t,e),t}(/*#__PURE__*/f(Error)),x=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),U=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(U),S=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(U),C=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),W=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),L=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return c(t,e),t}(O),K={alby:{authorizationUrl:"https://nwc.getalby.com/apps/new",relayUrl:"wss://relay.getalby.com/v1",walletPubkey:"69effe7b49a6dd5cf525bd0905917a5005ffe480b58eeb8e861418cf3ae760d9"}},z=/*#__PURE__*/function(){function e(t){var r;this.relay=void 0,this.relayUrl=void 0,this.secret=void 0,this.walletPubkey=void 0,this.options=void 0,t&&t.nostrWalletConnectUrl&&(t=u({},e.parseWalletConnectUrl(t.nostrWalletConnectUrl),t));var o=K[(null==(r=t)?void 0:r.providerName)||"alby"];this.options=u({},o,t||{}),this.relayUrl=this.options.relayUrl,this.relay=n.relayInit(this.relayUrl),this.options.secret&&(this.secret=this.options.secret.toLowerCase().startsWith("nsec")?n.nip19.decode(this.options.secret).data:this.options.secret),this.walletPubkey=this.options.walletPubkey.toLowerCase().startsWith("npub")?n.nip19.decode(this.options.walletPubkey).data:this.options.walletPubkey,void 0===globalThis.WebSocket&&console.error("WebSocket is undefined. Make sure to `import websocket-polyfill` for nodejs environments")}e.parseWalletConnectUrl=function(e){e=e.replace("nostrwalletconnect://","http://").replace("nostr+walletconnect://","http://");var t=new URL(e),n=t.searchParams.get("relay");if(!n)throw new Error("No relay URL found in connection string");var r={walletPubkey:t.host,relayUrl:n},o=t.searchParams.get("secret");return o&&(r.secret=o),r},e.withNewSecret=function(t){return(t=t||{}).secret=n.generatePrivateKey(),new e(t)};var t=e.prototype;return t.getNostrWalletConnectUrl=function(e){void 0===e&&(e=!0);var t="nostr+walletconnect://"+this.walletPubkey+"?relay="+this.relayUrl+"&pubkey="+this.publicKey;return e&&(t=t+"&secret="+this.secret),t},t.getPublicKey=function(){return Promise.resolve(this.publicKey)},t.signEvent=function(e){if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(n.finishEvent(e,this.secret))},t.getEventHash=function(e){return n.getEventHash(e)},t.close=function(){return this.relay.close()},t.encrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(n.nip04.encrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},t.decrypt=function(e,t){try{if(!this.secret)throw new Error("Missing secret");return Promise.resolve(n.nip04.decrypt(this.secret,e,t))}catch(e){return Promise.reject(e)}},t.getAuthorizationUrl=function(e){if(!this.options.authorizationUrl)throw new Error("Missing authorizationUrl option");var t=new URL(this.options.authorizationUrl);return null!=e&&e.name&&t.searchParams.set("name",null==e?void 0:e.name),t.searchParams.set("pubkey",this.publicKey),null!=e&&e.returnTo&&t.searchParams.set("return_to",e.returnTo),null!=e&&e.budgetRenewal&&t.searchParams.set("budget_renewal",e.budgetRenewal),null!=e&&e.expiresAt&&t.searchParams.set("expires_at",Math.floor(e.expiresAt.getTime()/1e3).toString()),null!=e&&e.maxAmount&&t.searchParams.set("max_amount",e.maxAmount.toString()),void 0!==(null==e?void 0:e.editable)&&t.searchParams.set("editable",e.editable.toString()),null!=e&&e.requestMethods&&t.searchParams.set("request_methods",e.requestMethods.join(" ")),t},t.initNWC=function(e){void 0===e&&(e={}),e.name||(e.name=document.location.host);var t=this.getAuthorizationUrl(e),n=window.outerHeight/2+window.screenY-300,r=window.outerWidth/2+window.screenX-200;return new Promise(function(e,o){var i=window.open(t.toString(),document.title+" - Wallet Connect","height=600,width=400,top="+n+",left="+r);if(i){var s=function n(r){var o=r.data;o&&"nwc:success"===o.type&&r.origin===t.protocol+"//"+t.host&&(e(o),clearInterval(u),window.removeEventListener("message",n),i&&i.close())},u=setInterval(function(){i&&i.closed&&(clearInterval(u),window.removeEventListener("message",s),o(new Error("Popup closed")))},500);window.addEventListener("message",s)}else o(new Error("failed to execute window.open"))})},t.getWalletServiceSupportedMethods=function(){try{var e=this;return Promise.resolve(e._checkConnected()).then(function(){return Promise.resolve(e.relay.list([{kinds:[13194],limit:1,authors:[e.walletPubkey]}],{eoseSubTimeout:1e4})).then(function(e){if(!e.length)throw new Error("no info event (kind 13194) returned from relay");return e[0].content.split(/[ |,]/g)})})}catch(e){return Promise.reject(e)}},t.getInfo=function(){try{var e=this;return Promise.resolve(j(function(){return Promise.resolve(e.executeNip47Request("get_info",{},function(e){return!!e.methods}))},function(e){throw console.error("Failed to request get_info",e),e}))}catch(e){return Promise.reject(e)}},t.getBalance=function(){try{var e=this;return Promise.resolve(j(function(){return Promise.resolve(e.executeNip47Request("get_balance",{},function(e){return void 0!==e.balance}))},function(e){throw console.error("Failed to request get_balance",e),e}))}catch(e){return Promise.reject(e)}},t.payInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("pay_invoice",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.payKeysend=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("pay_keysend",e,function(e){return!!e.preimage}))},function(e){throw console.error("Failed to request pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},t.multiPayInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_invoice",e,e.invoices.length,function(e){return!!e.preimage})).then(function(e){return{invoices:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.multiPayKeysend=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeMultiNip47Request("multi_pay_keysend",e,e.keysends.length,function(e){return!!e.preimage})).then(function(e){return{keysends:e,errors:[]}})},function(e){throw console.error("Failed to request multi_pay_keysend",e),e}))}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){if(!e.amount)throw new Error("No amount specified");return Promise.resolve(t.executeNip47Request("make_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request make_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.lookupInvoice=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("lookup_invoice",e,function(e){return!!e.invoice}))},function(e){throw console.error("Failed to request lookup_invoice",e),e}))}catch(e){return Promise.reject(e)}},t.listTransactions=function(e){try{var t=this;return Promise.resolve(j(function(){return Promise.resolve(t.executeNip47Request("list_transactions",e,function(e){return!!e.transactions}))},function(e){throw console.error("Failed to request list_transactions",e),e}))}catch(e){return Promise.reject(e)}},t.executeNip47Request=function(e,t,n){try{var r=this;return Promise.resolve(r._checkConnected()).then(function(){return new Promise(function(o,i){try{return Promise.resolve(r.encrypt(r.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",r.walletPubkey]],content:e,pubkey:r.publicKey};return Promise.resolve(r.signEvent(t)).then(function(e){var t=r.relay.sub([{kinds:[23195],authors:[r.walletPubkey],"#e":[e.id]}]),s=setTimeout(function(){t.unsub(),i(new S("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return clearTimeout(s),t.unsub(),Promise.resolve(r.decrypt(r.walletPubkey,e.content)).then(function(r){var u,c,a,l,h;try{u=JSON.parse(r)}catch(e){return clearTimeout(s),t.unsub(),void i(new W("failed to deserialize response","INTERNAL"))}23195==e.kind?u.result?n(u.result)?o(u.result):(clearTimeout(s),t.unsub(),i(new M("response from NWC failed validation: "+JSON.stringify(u.result),"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new x((null==(c=u.error)?void 0:c.message)||"unknown Error",(null==(a=u.error)?void 0:a.code)||"INTERNAL"))):(clearTimeout(s),t.unsub(),i(new L((null==(l=u.error)?void 0:l.message)||"unknown Error",(null==(h=u.error)?void 0:h.code)||"INTERNAL")))})}catch(e){return Promise.reject(e)}});var u=setTimeout(function(){t.unsub(),i(new I("publish timeout: "+e.id,"INTERNAL"))},5e3),c=j(function(){return Promise.resolve(r.relay.publish(e)).then(function(){clearTimeout(u)})},function(e){clearTimeout(u),i(new C("failed to publish: "+e,"INTERNAL"))});if(c&&c.then)return c.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},t.executeMultiNip47Request=function(e,t,n,r){try{var o=this;return Promise.resolve(o._checkConnected()).then(function(){var i=[];return new Promise(function(s,c){try{return Promise.resolve(o.encrypt(o.walletPubkey,JSON.stringify({method:e,params:t}))).then(function(e){var t={kind:23194,created_at:Math.floor(Date.now()/1e3),tags:[["p",o.walletPubkey]],content:e,pubkey:o.publicKey};return Promise.resolve(o.signEvent(t)).then(function(e){var t=o.relay.sub([{kinds:[23195],authors:[o.walletPubkey],"#e":[e.id]}]),a=setTimeout(function(){t.unsub(),c(new S("reply timeout: event "+e.id,"INTERNAL"))},6e4);t.on("event",function(e){try{return Promise.resolve(o.decrypt(o.walletPubkey,e.content)).then(function(o){var l,h,d;try{l=JSON.parse(o)}catch(e){clearTimeout(a),t.unsub(),c(new W("failed to deserialize response","INTERNAL"))}if(23195==e.kind)if(l.result){var f;if(!r(l.result))return clearTimeout(a),t.unsub(),void c(new M("Response from NWC failed validation: "+JSON.stringify(l.result),"INTERNAL"));var m=null==(f=e.tags.find(function(e){return"d"===e[0]}))?void 0:f[1];if(void 0===m)return clearTimeout(a),t.unsub(),void c(new M("No d tag found in response event","INTERNAL"));i.push(u({},l.result,{dTag:m})),i.length===n&&(clearTimeout(a),t.unsub(),s(i))}else{var p,v;clearTimeout(a),t.unsub(),c(new x(null==(p=l.error)?void 0:p.message,null==(v=l.error)?void 0:v.code))}else clearTimeout(a),t.unsub(),c(new L(null==(h=l.error)?void 0:h.message,null==(d=l.error)?void 0:d.code))})}catch(e){return Promise.reject(e)}});var l=setTimeout(function(){t.unsub(),c(new I("Publish timeout: "+e.id,"INTERNAL"))},5e3),h=j(function(){return Promise.resolve(o.relay.publish(e)).then(function(){clearTimeout(l)})},function(e){clearTimeout(l),c(new C("Failed to publish: "+e,"INTERNAL"))});if(h&&h.then)return h.then(function(){})})})}catch(e){Promise.reject(e)}})})}catch(e){return Promise.reject(e)}},t._checkConnected=function(){try{if(!this.secret)throw new Error("Missing secret key");return Promise.resolve(this.relay.connect()).then(function(){})}catch(e){return Promise.reject(e)}},s(e,[{key:"nostrWalletConnectUrl",get:function(){return this.getNostrWalletConnectUrl()}},{key:"connected",get:function(){return 1===this.relay.status}},{key:"publicKey",get:function(){if(!this.secret)throw new Error("Missing secret key");return n.getPublicKey(this.secret)}}]),e}(),B={__proto__:null,Nip47Error:O,Nip47WalletError:x,Nip47TimeoutError:U,Nip47PublishTimeoutError:I,Nip47ReplyTimeoutError:S,Nip47PublishError:C,Nip47ResponseDecodingError:W,Nip47ResponseValidationError:M,Nip47UnexpectedResponseError:L,NWCs:K,NWCClient:z},F={get_info:"getInfo",get_balance:"getBalance",make_invoice:"makeInvoice",pay_invoice:"sendPayment",pay_keysend:"payKeysend",lookup_invoice:"lookupInvoice",list_transactions:"listTransactions",multi_pay_invoice:"sendMultiPayment",multi_pay_keysend:"multiKeysend"},H=/*#__PURE__*/function(){function e(e){this._enabled=!1,this.client=void 0,this.subscribers=void 0,this.client=new z(e),this.subscribers={}}e.withNewSecret=function(t){return(t=t||{}).secret=n.generatePrivateKey(),new e(t)};var t=e.prototype;return t.on=function(e,t){this.subscribers[e]=t},t.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},t.getNostrWalletConnectUrl=function(e){return void 0===e&&(e=!0),console.warn("getNostrWalletConnectUrl is deprecated. Please use client.getNostrWalletConnectUrl instead."),this.client.getNostrWalletConnectUrl(e)},t.getPublicKey=function(){return this.client.getPublicKey()},t.signEvent=function(e){return this.client.signEvent(e)},t.getEventHash=function(e){return console.warn("getEventHash is deprecated. Please use client.getEventHash instead."),this.client.getEventHash(e)},t.enable=function(){try{return this._enabled=!0,Promise.resolve()}catch(e){return Promise.reject(e)}},t.close=function(){return this.client.close()},t.encrypt=function(e,t){try{return console.warn("encrypt is deprecated. Please use client.encrypt instead."),Promise.resolve(this.client.encrypt(e,t))}catch(e){return Promise.reject(e)}},t.decrypt=function(e,t){try{return console.warn("decrypt is deprecated. Please use client.decrypt instead."),Promise.resolve(this.client.decrypt(e,t))}catch(e){return Promise.reject(e)}},t.getAuthorizationUrl=function(e){return console.warn("getAuthorizationUrl is deprecated. Please use client.getAuthorizationUrl instead."),this.client.getAuthorizationUrl(e)},t.initNWC=function(e){return void 0===e&&(e={}),console.warn("initNWC is deprecated. Please use client.initNWC instead."),this.client.initNWC(e)},t.getInfo=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){var t=["lightning","nostr"],n="Alby JS SDK";return function(r,o){try{var i=Promise.resolve(e.client.getInfo()).then(function(r){var o={methods:r.methods.map(function(e){return F[e]}),node:{alias:r.alias,pubkey:r.pubkey,color:r.color},supports:t,version:n};return e.notify("getInfo",o),o})}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){return console.error("Using minimal getInfo",e),{methods:["sendPayment"],node:{},supports:t,version:n}})})}catch(e){return Promise.reject(e)}},t.getBalance=function(){try{var e=this;return Promise.resolve(e.checkEnabled()).then(function(){return Promise.resolve(e.client.getBalance()).then(function(t){var n={balance:Math.floor(t.balance/1e3),currency:"sats"};return e.notify("getBalance",n),n})})}catch(e){return Promise.reject(e)}},t.sendPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payInvoice({invoice:e})).then(function(e){var n={preimage:e.preimage};return t.notify("sendPayment",n),n})})}catch(e){return Promise.reject(e)}},t.sendPaymentAsync=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return t.client.payInvoice({invoice:e}),t.notify("sendPaymentAsync",{}),{}})}catch(e){return Promise.reject(e)}},t.keysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.payKeysend(J(e))).then(function(e){var n={preimage:e.preimage};return t.notify("keysend",n),n})})}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){var n,r="object"==typeof e?e:void 0,o=+(null!=(n=null==r?void 0:r.amount)?n:e);if(!o)throw new Error("No amount specified");return Promise.resolve(t.client.makeInvoice({amount:1e3*o,description:null==r?void 0:r.defaultMemo})).then(function(e){var n={paymentRequest:e.invoice};return t.notify("makeInvoice",n),n})})}catch(e){return Promise.reject(e)}},t.lookupInvoice=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.lookupInvoice({invoice:e.paymentRequest,payment_hash:e.paymentHash})).then(function(e){var n={preimage:e.preimage,paymentRequest:e.invoice,paid:!!e.settled_at};return t.notify("lookupInvoice",n),n})})}catch(e){return Promise.reject(e)}},t.listTransactions=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.listTransactions(e)).then(function(e){var n={transactions:e.transactions.map(G)};return t.notify("listTransactions",n),n})})}catch(e){return Promise.reject(e)}},t.sendMultiPayment=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayInvoice({invoices:e.map(function(e,t){return{invoice:e,id:t.toString()}})})).then(function(n){var r={payments:n.invoices.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find paymentRequest matching response d tag");return{paymentRequest:n,preimage:t.preimage}}),errors:[]};return t.notify("sendMultiPayment",r),r})})}catch(e){return Promise.reject(e)}},t.multiKeysend=function(e){try{var t=this;return Promise.resolve(t.checkEnabled()).then(function(){return Promise.resolve(t.client.multiPayKeysend({keysends:e.map(function(e,t){return u({},J(e),{id:t.toString()})})})).then(function(n){var r={keysends:n.keysends.map(function(t){var n=e[parseInt(t.dTag)];if(!n)throw new Error("Could not find keysend matching response d tag");return{keysend:n,preimage:t.preimage}}),errors:[]};return t.notify("multiKeysend",r),r})})}catch(e){return Promise.reject(e)}},t.lnurl=function(e){throw new Error("Method not implemented.")},t.request=function(e,t){throw new Error("Method not implemented.")},t.signMessage=function(e){throw new Error("Method not implemented.")},t.verifyMessage=function(e,t){throw new Error("Method not implemented.")},t.checkEnabled=function(){try{if(!this._enabled)throw new Error("please call enable() and await the promise before calling this function");return Promise.resolve()}catch(e){return Promise.reject(e)}},s(e,[{key:"relay",get:function(){return console.warn("relay is deprecated. Please use client.relay instead."),this.client.relay}},{key:"relayUrl",get:function(){return console.warn("relayUrl is deprecated. Please use client.relayUrl instead."),this.client.relayUrl}},{key:"walletPubkey",get:function(){return console.warn("walletPubkey is deprecated. Please use client.walletPubkey instead."),this.client.walletPubkey}},{key:"options",get:function(){return this.client.options}},{key:"secret",get:function(){return console.warn("secret is deprecated. Please use client.secret instead."),this.client.secret}},{key:"nostrWalletConnectUrl",get:function(){return console.warn("nostrWalletConnectUrl is deprecated. Please use client.nostrWalletConnectUrl instead."),this.client.nostrWalletConnectUrl}},{key:"connected",get:function(){return console.warn("connected is deprecated. Please use client.connected instead."),this.client.connected}},{key:"publicKey",get:function(){return console.warn("publicKey is deprecated. Please use client.publicKey instead."),this.client.publicKey}}]),e}();function G(e){return u({},e,{amount:Math.floor(e.amount/1e3),fees_paid:e.fees_paid?Math.floor(e.fees_paid/1e3):0})}function J(e){return{amount:1e3*+e.amount,pubkey:e.destination,tlv_records:e.customRecords?Object.entries(e.customRecords).map(function(e){return{type:parseInt(e[0]),value:e[1]}}):[]}}var D=H;function V(e){var t={};return e.recipient.customKey&&e.recipient.customValue&&(t[e.recipient.customKey]=e.recipient.customValue),t[7629169]=JSON.stringify(e.boostagram),{destination:e.recipient.address,amount:e.amount,custom_records:t}}var X=/*#__PURE__*/function(){function e(e,t){this.auth=void 0,this.defaultRequestOptions=void 0,this.auth="string"==typeof e?new A(e):e,this.defaultRequestOptions=u({},t,{user_agent:null==t?void 0:t.user_agent})}var t=e.prototype;return t.accountBalance=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/balance",params:e,method:"GET"}))},t.accountSummary=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/summary",params:e,method:"GET"}))},t.accountInformation=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/me",params:e,method:"GET"}))},t.accountValue4Value=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/user/value4value",params:e,method:"GET"}))},t.incomingInvoices=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/incoming",params:e,method:"GET"}))},t.outgoingInvoices=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/outgoing",params:e,method:"GET"}))},t.invoices=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",params:e,method:"GET"}))},t.getInvoice=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices/"+e,method:"GET"}))},t.decodeInvoice=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/decode/bolt11/"+e,method:"GET"}))},t.createInvoice=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/invoices",request_body:e,method:"POST"}))},t.keysend=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e.map(function(e){return u({},e,{custom_records:e.customRecords})})}):(n="/payments/keysend",r=u({},e,{custom_records:e.customRecords})),w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendPayment=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/bolt11",request_body:e,method:"POST"}))},t.sendBoostagram=function(e,t){var n,r;return Array.isArray(e)?(n="/payments/keysend/multi",r={keysends:e.map(function(e){return V(e)})}):(n="/payments/keysend",r=V(e)),w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:n,request_body:r,method:"POST"}))},t.sendToAlbyAccount=function(e,t){return console.warn("sendToAlbyAccount is deprecated. Please use sendBoostagramToAlbyAccount instead."),this.sendBoostagramToAlbyAccount(e,t)},t.sendBoostagramToAlbyAccount=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/payments/keysend",request_body:{destination:"030a58b8653d32b99200a2334cfe913e51dc7d155aa0116c176657a4f1722677a3",custom_records:{696969:e.account},amount:e.amount,memo:e.memo},method:"POST"}))},t.createWebhookEndpoint=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints",request_body:e,method:"POST"}))},t.deleteWebhookEndpoint=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/webhook_endpoints/"+e,method:"DELETE"}))},t.getSwapInfo=function(e){return w(u({auth:this.auth},this.defaultRequestOptions,e,{endpoint:"/swaps/info",method:"GET"}))},t.createSwap=function(e,t){return w(u({auth:this.auth},this.defaultRequestOptions,t,{endpoint:"/swaps",method:"POST",request_body:e}))},e}();function Y(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}function $(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var Q={__proto__:null,NostrWebLNProvider:H,NWC:D,OauthWeblnProvider:/*#__PURE__*/function(){function e(e){this.client=void 0,this.auth=void 0,this.oauth=void 0,this.subscribers=void 0,this.isExecuting=void 0,this.auth=e.auth,this.client=new X(e.auth),this.oauth=!0,this.subscribers={},this.isExecuting=!1}var t=e.prototype;return t.on=function(e,t){this.subscribers[e]=t},t.notify=function(e,t){var n=this.subscribers[e];n&&n(t)},t.enable=function(){try{var e,t=this;return t.isExecuting?Promise.resolve():null!=(e=t.auth.token)&&e.access_token?Promise.resolve({enabled:!0}):Promise.resolve(function(){if("undefined"==typeof window||void 0===window.document)throw new Error("Missing access token");var e=Y(function(){return t.isExecuting=!0,Promise.resolve(t.openAuthorization()).then(function(){})},function(e,n){if(t.isExecuting=!1,e)throw n;return n});if(e&&e.then)return e.then(function(){})}())}catch(e){return Promise.reject(e)}},t.sendPayment=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Y(function(){return $(function(){return t.isExecuting=!0,Promise.resolve(t.client.sendPayment({invoice:e})).then(function(e){return t.notify("sendPayment",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.keysend=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Y(function(){return $(function(){return t.isExecuting=!0,Promise.resolve(t.client.keysend(e)).then(function(e){return t.notify("keysend",e),{preimage:e.payment_preimage}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.getInfo=function(){try{return Promise.resolve({alias:"Alby"})}catch(e){return Promise.reject(e)}},t.makeInvoice=function(e){try{var t=this;return t.isExecuting?Promise.resolve():Promise.resolve(Y(function(){return $(function(){return t.isExecuting=!0,Promise.resolve(t.client.createInvoice({amount:parseInt(e.amount.toString()),description:e.defaultMemo})).then(function(e){return t.notify("makeInvoice",e),{paymentRequest:e.payment_request}})},function(e){var t="Unknown Error";throw e instanceof Error&&(t=e.message),new Error(t)})},function(e,n){if(t.isExecuting=!1,e)throw n;return n}))}catch(e){return Promise.reject(e)}},t.openAuthorization=function(){try{var e=this,t=window.outerHeight/2+window.screenY-350,n=window.outerWidth/2+window.screenX-300;return Promise.resolve(e.auth.generateAuthURL({code_challenge_method:"S256"})).then(function(r){return new Promise(function(o,i){var s=window.open(r,document.title+" - WebLN enable","height=700,width=600,top="+t+",left="+n),u=!1;window.addEventListener("message",function(t){try{var n=t.data,r=function(){if(n&&"alby:oauth:success"===n.type&&t.origin===document.location.protocol+"//"+document.location.host&&!u){u=!0,console.info("Processing OAuth code response");var r=n.payload.code,c=$(function(){return Promise.resolve(e.auth.requestAccessToken(r)).then(function(){e.client=new X(e.auth),s&&s.close(),e.notify("enable"),o({enabled:!0})})},function(e){console.error(e),i({enabled:!1})});if(c&&c.then)return c.then(function(){})}}();return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}})})})}catch(e){return Promise.reject(e)}},e}()};e.Client=X,e.auth=q,e.nwc=B,e.types=g,e.webln=Q});
{
"name": "@getalby/sdk",
"version": "3.4.0",
"version": "3.4.1",
"description": "The SDK to integrate with Nostr Wallet Connect and the Alby API",

@@ -41,3 +41,3 @@ "repository": "https://github.com/getAlby/js-sdk.git",

"dependencies": {
"events": "^3.3.0",
"eventemitter3": "^5.0.1",
"nostr-tools": "^1.17.0"

@@ -44,0 +44,0 @@ },

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc