@human.tech/waap-sdk 2.1.0 → 2.2.0-staging-59cc50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/SKILL.md +179 -0
- package/CHANGELOG.md +69 -0
- package/README.md +264 -94
- package/dist/{WaaPError-XLgIXUgh.d.ts → WaaPError-DCJ9WDaR.d.ts} +1 -1
- package/dist/{WaaPError-C5nPcaKk.d.mts → WaaPError-DgDAQQKF.d.mts} +1 -1
- package/dist/{WalletConnect-G-lbqknM.js → WalletConnect-Dn40Omgo.js} +1 -1
- package/dist/{WalletConnect-Deg7_JmH.mjs → WalletConnect-UfxGn2M_.mjs} +1 -1
- package/dist/{esm-B4jz8Emb.mjs → esm-BUfmyWbN.mjs} +1 -1
- package/dist/esm-DFwVZkjo.js +1 -0
- package/dist/evm-BINU4e1N.mjs +2 -0
- package/dist/evm-BXkH-I90.js +2 -0
- package/dist/evm.d.mts +2 -2
- package/dist/evm.d.ts +2 -2
- package/dist/evm.js +1 -1
- package/dist/evm.mjs +1 -1
- package/dist/{index-CdKntlzX.d.mts → index-C0mLQs_a.d.mts} +44 -28
- package/dist/{index-CMSufeMa.d.ts → index-DOIss_GK.d.ts} +44 -28
- package/dist/index.d.mts +46 -10
- package/dist/index.d.ts +46 -10
- package/dist/index.js +4 -1
- package/dist/index.mjs +4 -1
- package/dist/{initializerContext-0oKHzvQG.d.ts → initializerContext-DIrqEE6B.d.ts} +1 -2
- package/dist/{initializerContext-C39PUnGi.d.mts → initializerContext-_YjbVTiL.d.mts} +1 -2
- package/dist/react.d.mts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +1 -1
- package/dist/react.mjs +1 -1
- package/dist/{register-QjrsOe7r.d.mts → register-9bEe9ATz.d.mts} +3 -3
- package/dist/register-BXqcetNF.mjs +1 -0
- package/dist/{register-CNgjA0yl.mjs → register-Bg4jW_HM.mjs} +1 -1
- package/dist/{register-4Afr2Jx8.js → register-CRhge1wE.js} +1 -1
- package/dist/{register-CxsUwgKJ.d.ts → register-Mb1D_xW4.d.ts} +5 -17
- package/dist/{register-CBlzg5ln.d.ts → register-PWKDsSRv.d.ts} +3 -3
- package/dist/{register-LmdJdvzn.d.mts → register-XzDVa7r8.d.mts} +5 -17
- package/dist/{register-ozKwGWOb.js → register-oYvnB41B.js} +1 -1
- package/dist/solana.d.mts +4 -4
- package/dist/solana.d.ts +4 -4
- package/dist/solana.js +1 -1
- package/dist/solana.mjs +1 -1
- package/dist/sui.d.mts +4 -4
- package/dist/sui.d.ts +4 -4
- package/dist/sui.js +1 -1
- package/dist/sui.mjs +1 -1
- package/dist/{types-DexmJNke.d.mts → types-BmCqyQtu.d.mts} +36 -15
- package/dist/{types-DexmJNke.d.ts → types-BmCqyQtu.d.ts} +36 -15
- package/dist/ui-Co16lVSp.mjs +1 -0
- package/dist/ui-lJmATPTt.js +1 -0
- package/dist/{useWaapAuth-Z_ONicYr.js → useWaapAuth-BPvve-_3.js} +1 -1
- package/dist/{useWaapAuth-DHIeb4yc.mjs → useWaapAuth-BcmVGb-D.mjs} +1 -1
- package/dist/{useWaapAuth-BrqAhAn2.d.ts → useWaapAuth-DgYO5KxO.d.ts} +2 -2
- package/dist/{useWaapAuth-C5I7QqyW.d.mts → useWaapAuth-vJAk2n_I.d.mts} +2 -2
- package/dist/walletconnect.js +1 -1
- package/dist/walletconnect.mjs +1 -1
- package/package.json +4 -2
- package/dist/esm-D5fDQenf.js +0 -1
- package/dist/evm-Ch-aWWat.js +0 -1
- package/dist/evm-DHVrAmEw.mjs +0 -1
- package/dist/register-DIZnKDHF.mjs +0 -1
- package/dist/ui-16QpbEyG.js +0 -1
- package/dist/ui-BAYRtDQg.mjs +0 -1
package/dist/evm-Ch-aWWat.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./esm-D5fDQenf.js"),t=require("./WalletConnect-G-lbqknM.js");let n=require("events");var r=class extends Error{constructor(e,t,n={}){super(t),this.name=`WaaPError`,this.code=e,this.operation=n.operation,this.cause=n.cause}};function i(e,t){if(e instanceof r)return e;let n=e&&typeof e==`object`?e:void 0,i=n&&typeof n.message==`string`&&n.message||e instanceof Error&&e.message||String(e||`WaaP request failed`),a=n?.code,o=i.toLowerCase();return new r(o.includes(`cancelled`)||o.includes(`canceled`)?`cancelled`:o.includes(`timed out`)?`timeout`:o.includes(`policy`)||o.includes(`permission token`)?`policy_rejected`:a===4001||o.includes(`rejected`)?`user_rejected`:o.includes(`not connected`)?`not_connected`:o.includes(`not authenticated`)||o.includes(`log in first`)?`not_authenticated`:o.includes(`unsupported`)||o.includes(`must be base64`)?`unsupported_input`:n?`wallet_error`:`unknown`,i,{cause:e,operation:t})}const a=`waap-wallet`,o=`waap-component-container`,s=typeof window<`u`&&typeof document<`u`&&typeof HTMLElement<`u`;let c;s?(c=class extends HTMLElement{constructor(){super()}connectedCallback(){(!this.style.display||this.style.display===``)&&(this.style.display=`flex`,this.style.alignItems=`center`,this.style.justifyContent=`center`),(!this.style.width||this.style.width===``)&&(this.style.width=`100%`),(!this.style.height||this.style.height===``)&&(this.style.height=`100%`),this.id=o,this.setAttribute(`data-waap-mounted`,`true`)}disconnectedCallback(){this.removeAttribute(`data-waap-mounted`)}},typeof customElements<`u`&&!customElements.get(a)&&customElements.define(a,c)):c=class{};function l(){return s?!!document.getElementById(o)||!!document.querySelector(a):!1}function u(){return s?document.getElementById(o)||document.querySelector(a):null}const d=`https://staging.waap.xyz`,f={development:`http://localhost:3000`,staging:d,production:`https://waap.xyz`},ee=e=>e===`localhost`||e===`127.0.0.1`||e===`[::1]`;function p(e){let t;try{t=new URL(e)}catch{throw Error(`Invalid WaaP wallet origin: ${e}`)}if(t.origin!==e||t.pathname!==`/`||t.search||t.hash||t.username||t.password)throw Error(`WaaP walletOrigin must be an absolute origin without a path, query, or credentials`);if(t.protocol!==`https:`&&!(t.protocol===`http:`&&ee(t.hostname)))throw Error(`WaaP walletOrigin must use HTTPS unless it is a loopback host`);return t.origin}function m(e={}){return e.walletOrigin?p(e.walletOrigin):e.environment?p(f[e.environment]):e.useStaging?p(d):p(f.production)}const h=new WeakMap,g=new WeakMap,_=()=>typeof performance<`u`?performance.now():Date.now(),v=e=>({generation:e.generation,navigationStartedAt:e.navigationStartedAt,loadedAt:e.loadedAt}),y=e=>{let t=e.contentWindow;if(!t)return;let n=g.get(e);if(n&&h.get(t)===n)return;n?.cleanup(),n&&(g.delete(e),h.get(t)===n&&h.delete(t));let r=h.get(t);if(r?.iframe===e)return;r?.cleanup(),r&&g.delete(r.iframe);let i={iframe:e,generation:0,navigationStartedAt:_(),loadedAt:null,listeners:new Set,cleanup:()=>{}},a=()=>{i.generation+=1,i.loadedAt=_();let e=v(i);for(let t of Array.from(i.listeners))t(e)};i.cleanup=()=>{e.removeEventListener(`load`,a),i.listeners.clear()},e.addEventListener(`load`,a),h.set(t,i),g.set(e,i)},b=e=>{let t=g.get(e);if(t){t.cleanup(),g.delete(e);let n=e.contentWindow;n&&h.get(n)===t&&h.delete(n);return}let n=e.contentWindow;if(!n)return;let r=h.get(n);!r||r.iframe!==e||(r.cleanup(),h.delete(n))},x=e=>{let t=h.get(e);return t?v(t):null},te=(e,t)=>{let n=h.get(e);return n?n.loadedAt===null?new Promise((e,r)=>{let i=window.setTimeout(()=>{n.listeners.delete(a),r(Error(`WaaP iframe navigation timed out after ${Math.round(t/1e3)}s.`))},t),a=t=>{window.clearTimeout(i),n.listeners.delete(a),e(t)};n.listeners.add(a)}):Promise.resolve(v(n)):Promise.resolve(null)},ne=(e,t)=>{let n=h.get(e);return n?(n.listeners.add(t),()=>n.listeners.delete(t)):()=>{}},re=`waap-wallet-loading-styles`,S=`waap-iframe-visual-ready`,C=typeof window<`u`&&typeof document<`u`,ie=()=>{if(!C||document.getElementById(re))return;let e=document.createElement(`style`);e.id=re,e.textContent=`@keyframes waap-loading-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @media (prefers-reduced-motion: reduce) { [data-waap-loading-part] { animation: none !important; } }`,document.head.appendChild(e)},ae=(e={})=>m(e),w=()=>C?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,T=()=>C?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,E=()=>C?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,D=(e=E())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},oe=(e=E())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},O=(e,t)=>{if(e){if(t===null){delete e.dataset.waapVisualReadySupported;return}e.dataset.waapVisualReadySupported=String(t)}},se=(e,t)=>{let n=e.__silkCleanup;e.__silkCleanup=()=>{n?.(),t()}},ce=e=>{let t=E();if(!t)throw Error(`WaaP iframe does not exist on page`);let n=t.dataset.waapAccountMode;if(n&&n!==e)throw Error(`WaaP iframe is already bound to ${n}; destroy it before initializing ${e}.`);return t.dataset.waapAccountMode=e,t},le=e=>{if(C)try{if(document.querySelector(`link[data-waap-preconnect="${e}"]`))return;let t=document.createElement(`link`);t.rel=`preconnect`,t.href=e,t.crossOrigin=`anonymous`,t.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(t);let n=document.createElement(`link`);n.rel=`dns-prefetch`,n.href=e,n.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(n)}catch{}},ue=(e,t)=>{e.dataset.waapTheme=t?`dark`:`light`},de=(e,t)=>{let n=e;le(n);let r=document.createElement(`iframe`);return r.id=`waap-wallet-iframe`,r.dataset.waapOrigin=n,ue(r,t),y(r),r.src=`${n}/iframe`,r.allow=`publickey-credentials-get; publickey-credentials-create`,r.style.width=`100%`,r.style.height=`100%`,r.style.border=`none`,r.style.borderRadius=`24px`,r.style.backgroundColor=`transparent`,r.style.background=`transparent`,r.style.padding=`0`,r.style.margin=`0`,r},k=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-wrapper`,e.style.position=`relative`,e.style.display=`flex`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.padding=`0`,e.style.margin=`0`,e.style.height=`600px`,e.style.width=`380px`,e},A=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-container`,e.style.position=`fixed`,e.style.top=`0`,e.style.left=`0`,e.style.right=`0`,e.style.bottom=`0`,e.style.width=`100%`,e.style.height=`100%`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.backgroundColor=`rgba(0, 0, 0, 0.5)`,e.style.zIndex=`9999999999`,e.style.display=`flex`,e.style.visibility=`hidden`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.style.transition=typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches?`none`:`opacity 140ms ease`,e},j=(e,t)=>{let n=e,r,i,a,o,s=()=>{if(r=void 0,!o)return;let e=T();e&&e.dataset.waapSizeLocked!==`true`&&(i=o.width,a=o.height,e.style.height=`${o.height}px`,e.style.width=`${o.width}px`,o=void 0)},c=()=>{r===void 0&&(r=window.requestAnimationFrame(s))},l=()=>{!o&&i!==void 0&&a!==void 0&&(o={width:i,height:a}),c()},u=e=>{if(e.origin!==n||e.source!==t.contentWindow||!e.data||typeof e.data!=`object`||e.data.type!==`silk-iframe-size`)return;let r=e.data.height,s=e.data.width,l=2e3;if(typeof r!=`number`||typeof s!=`number`||r<50||r>l||s<50||s>l||!Number.isFinite(r)||!Number.isFinite(s))return;let u=Math.floor(s),d=Math.floor(r);u===i&&d===a||(o={width:u,height:d},c())};window.addEventListener(`message`,u),t.addEventListener(S,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(S,l)};return se(t,d),d},fe=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,O(t,null)},r=n=>{if(n.origin!==e||n.source!==t.contentWindow||!n.data||typeof n.data!=`object`||n.data.type!==`silk-iframe-visual-ready`)return;let r=n.data.revision;!Number.isSafeInteger(r)||r<=0||r<=D(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(S,{detail:{revision:r}})))};t.addEventListener(`load`,n),window.addEventListener(`message`,r);let i=()=>{t.removeEventListener(`load`,n),window.removeEventListener(`message`,r)};return se(t,i),i},pe=()=>{setTimeout(()=>{if(typeof document>`u`)return;let e=T();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},me=e=>{let t=E();if(!t)return!1;let n=t.dataset.waapOrigin??(()=>{try{return new URL(t.src).origin}catch{return}})();if(n&&n!==e)throw Error(`WaaP wallet iframe already exists for ${n}; destroy it before switching to ${e}`);return!0},he=(e,t)=>{let n=u();if(!n)throw Error(`WaaP component not found in DOM`);if(me(e))return;let r=k(),i=de(e,t);j(e,i),fe(e,i),pe(),r.appendChild(i),n.appendChild(r),y(i)},ge=(e,t)=>{if(me(e))return;let n=A(),r=k();n.appendChild(r);let i=de(e,t);j(e,i),fe(e,i),pe(),r.appendChild(i),document.body.appendChild(n),y(i)},M=(e={})=>{if(!C)return;ie();let t=ae(e),n=e.config?.styles?.darkMode===!0,r=E();r&&ue(r,n),l()?he(t,n):ge(t,n)},_e=()=>{if(!C)return;Ae();let e=E(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&b(e);let n=T(),r=w();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let N=0;async function ve(e){let t=Date.now().toString(),n=new TextEncoder().encode(JSON.stringify(e)+t),r=globalThis.crypto;if(r?.subtle?.digest){let e=await r.subtle.digest(`SHA-256`,new Uint8Array(n));return P(new Uint8Array(e))}return N+=1,P(new TextEncoder().encode(`${t}:${N}:${Math.random()}:${JSON.stringify(e)}`)).padEnd(64,`0`).slice(0,64)}function P(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}const F=new WeakMap,ye=(e,t)=>{let n=F.get(e);if(n)return n;let r=t();return F.set(e,r),r.catch(()=>{F.get(e)===r&&F.delete(e)}),r},be=e=>{F.delete(e)},I=(e,t={})=>({schemaVersion:1,accountMode:e,sessionProtection:t.sessionProtection??`dpop`,...t.chains?.length?{chains:t.chains}:{},parentOrigin:typeof window>`u`?void 0:window.location?.origin,...t.referralCode?{referralCode:t.referralCode}:{},...t.project?{project:t.project}:{},...t.config?{config:t.config}:{}}),L=new Set;let R=!1,z;const B=new WeakMap,xe=(e=256)=>{let t=new Set;return{accept(n){if(t.has(n))return!1;if(t.add(n),t.size>e){let e=t.values().next().value;e&&t.delete(e)}return!0},clear(){t.clear()},size(){return t.size}}},V=e=>{let t=B.get(e);if(t)return t;let n={ready:!1,promise:null,reject:null,cleanup:null,navigationGeneration:null,readyPingStartedAt:null,readyAt:null,readyAttempts:0,visualReadySupported:null,lastError:null};return B.set(e,n),n},H=(e,t)=>{let n=B.get(e);if(!n)return;n.ready=!1,n.cleanup?.(),n.cleanup=null;let r=n.reject;n.reject=null,n.promise=null,n.navigationGeneration=null,n.visualReadySupported=null;let i=E();i?.contentWindow===e&&O(i,null),r?.(t)},U=()=>typeof performance<`u`?performance.now():Date.now();let Se=null;const Ce=()=>Se,we=(t,n,r)=>{let{handleResponse:i,handleRequest:a,onReceiveConnectNotif:o,onAccountChanged:s,onAsyncTxNotification:c,onSquidLifecycleNotification:l}=r;if(t.origin===n.walletOrigin&&t.source===n.getIframeWindow()&&t.data?.target===`silk`)if(t.data?.messageType===e.n.request)a(t.data);else if(t.data?.messageType===e.n.response){let e=t.data;n.shouldHandleTerminalResponse(e.id)&&i(e)}else t.data?.messageType===e.n.notification&&(t.data?.data===e.i.connect?o?.():t.data?.data?.type===e.i.account_changed&&s?s(t.data.data.account):(t.data?.data?.type?.startsWith(`waap_sign_`)||t.data?.data?.type?.startsWith(`waap_tx_`))&&c?c({type:t.data.data.type,payload:t.data.data.payload}):t.data?.data?.type?.startsWith(`waap_squid_`)&&l&&l({type:t.data.data.type,payload:t.data.data.payload}))},Te=()=>{R||typeof window>`u`||(R=!0,z=e=>{for(let{manager:t,config:n}of Array.from(L))we(e,t,n)},window.addEventListener(`message`,z))},Ee=()=>{L.size>0||!R||!z||typeof window>`u`||(window.removeEventListener(`message`,z),z=void 0,R=!1)};var W=class{constructor(e,t){this.iframeWindow=null,this.unregisterListeners=new Set,this.terminalResponseDeduper=xe(),this.unsubscribeIframeNavigation=null,this.disposed=!1,this.iframeWindow=e,this.walletOrigin=typeof t==`string`?t:m(t===!0?{useStaging:!0}:{}),e&&this.observeIframeNavigation(e)}observeIframeNavigation(e){this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=ne(e,()=>{let t=V(e);(t.ready||t.readyPingStartedAt!==null)&&(be(e),H(e,Error(`WaaP iframe reloaded; readiness must be re-established`)),this.terminalResponseDeduper.clear())})}setIframeWindow(e){this.iframeWindow&&this.iframeWindow!==e&&(H(this.iframeWindow,Error(`Wallet iframe window changed`)),this.terminalResponseDeduper.clear()),this.iframeWindow=e,this.observeIframeNavigation(e)}getIframeWindow(){return this.iframeWindow}isDisposed(){return this.disposed}shouldHandleTerminalResponse(e){return this.terminalResponseDeduper.accept(e)}getHandshakeDiagnostics(){let e=this.iframeWindow,t=e?x(e):null,n=e?V(e):null,r={walletOrigin:this.walletOrigin,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,readyPingStartedAt:n?.readyPingStartedAt??null,readyAt:n?.readyAt??null,readyAttempts:n?.readyAttempts??0,visualReadySupported:n?.visualReadySupported??null,navigationGeneration:n?.navigationGeneration??null,lastError:n?.lastError??null};return Se=r,r}postSilkNotification(t){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);this.iframeWindow.postMessage({target:`silk`,messageType:e.n.notification,data:t},this.walletOrigin)}postReadyNotification(){this.postSilkNotification(e.i.ready)}postConnectNotification(){this.postSilkNotification(e.i.connect)}cancelSilkRequest(t,n){this.postSilkNotification({type:e.i.request_cancel,requestId:t,method:n})}pingIframe(){if(this.disposed)return Promise.reject(Error(`Wallet message manager is disposed`));let t=this.iframeWindow;if(!t||typeof window>`u`)return Promise.reject(Error(`WaaP iframe is not mounted`));let n=V(t),r=x(t);return n.ready&&(!r||n.navigationGeneration===r.generation)?Promise.resolve():(n.ready&&H(t,Error(`WaaP iframe navigation changed; readiness must be re-established`)),n.promise?n.promise:(n.lastError=null,n.readyPingStartedAt=null,n.readyAt=null,n.readyAttempts=0,n.visualReadySupported=null,n.promise=new Promise((r,i)=>{n.reject=i,te(t,3e4).then(r=>{if(this.disposed||this.iframeWindow!==t)throw Error(`Wallet message manager is disposed`);return new Promise((i,a)=>{let o=a=>{if(a.origin===this.walletOrigin&&a.source===t&&a.data?.target===`silk`&&a.data.messageType===e.n.notification&&a.data.data===e.i.ready){n.ready=!0,n.navigationGeneration=x(t)?.generation??r?.generation??null,n.readyAt=U(),n.visualReadySupported=a.data?.capabilities?.visualReady===1;let e=E();e?.contentWindow===t&&O(e,n.visualReadySupported),f(),i()}},s=()=>{try{n.readyAttempts+=1,this.postReadyNotification()}catch(e){f(),a(e)}};n.readyPingStartedAt=U();let c=250,l,u=()=>{l=window.setTimeout(()=>{s(),c=Math.min(c*2,1e3),u()},c)},d=window.setTimeout(()=>{f(),a(Error(`WaaP wallet ready handshake timed out after 10s.`))},1e4),f=()=>{l!==void 0&&window.clearTimeout(l),window.clearTimeout(d),window.removeEventListener(`message`,o),n.cleanup===f&&(n.cleanup=null,n.reject=null)};n.cleanup=f,n.reject=a,window.addEventListener(`message`,o),s(),u()})}).then(r,i)}),n.promise=n.promise.finally(()=>{n.ready||(n.lastError=n.lastError??`Wallet readiness failed`,n.promise=null)}),n.promise.catch(e=>{n.lastError=e instanceof Error?e.message:String(e)}),n.promise))}async postSilkRequest(t){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);let{silkOptions:n,...r}=t,i={...r,target:`silk`,messageType:e.n.request,...n&&{silkOptions:n}},a=await ve(i);return this.iframeWindow.postMessage({...i,id:a},this.walletOrigin),a}addListener(e){if(this.disposed)throw Error(`Wallet message manager is disposed`);Te();let t={manager:this,config:e};L.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(L.delete(t),Ee())};return this.unregisterListeners.add(n),n}dispose(){this.disposed||(this.disposed=!0,this.iframeWindow&&H(this.iframeWindow,Error(`Wallet message manager was disposed`)),Array.from(this.unregisterListeners).forEach(e=>e()),this.terminalResponseDeduper.clear(),this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=null,this.iframeWindow=null)}};const G=`waap-wallet-iframe-loading`,K=new Set,q=()=>typeof performance<`u`?performance.now():Date.now(),J=e=>{K.forEach(t=>{try{t(e)}catch{}})},De=e=>(K.add(e),()=>K.delete(e));var Oe=class{constructor(e){this.pendingRevision=null,this.phase=`idle`,this.requestedAt=null,this.visibleAt=null,this.usedVisualFallback=!1,this.onVisualReady=e=>{let t=e.detail?.revision;this.pendingRevision!==null&&typeof t==`number`&&t>=this.pendingRevision&&this.revealIframe(!1)},this.iframe=e,e.addEventListener(S,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=T();if(!t)return;this.clearFallbackTimer();let n=this.moveToCurrentMode(t);n===`modal`&&e===`signing`?(t.dataset.waapSizeLocked=`true`,t.style.width=`380px`,t.style.height=`600px`):n===`modal`&&delete t.dataset.waapSizeLocked,this.pendingRevision=D(this.iframe)+1,this.phase=`pending`,this.requestedAt=q(),this.visibleAt=null,this.usedVisualFallback=!1,J({phase:`modal_requested`,at:this.requestedAt,visualRevision:this.pendingRevision}),this.hideIframeUntilPaint(t),n===`modal`?this.showModalSurface():t.style.display=`flex`;let r=oe(this.iframe);if(r===!1){this.revealIframe(!0);return}this.fallbackTimer=window.setTimeout(()=>{this.revealIframe(!0)},r===!0?3e3:750)}hide(){let e=this.pendingRevision!==null;this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`hidden`;let t=q();e&&J({phase:`modal_cancelled`,at:t,visualRevision:D(this.iframe)}),J({phase:`modal_hidden`,at:t,visualRevision:D(this.iframe)});let n=T();if(n&&delete n.dataset.waapSizeLocked,l()){n&&(n.style.display=`none`);return}let r=w();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(S,this.onVisualReady)}isFor(e){return this.iframe===e}getDiagnostics(){return{modalPhase:this.phase,modalRequestedAt:this.requestedAt,modalVisibleAt:this.visibleAt,usedVisualFallback:this.usedVisualFallback}}moveToCurrentMode(e){if(l()){let t=u();return t&&e.parentElement!==t&&t.appendChild(e),`component`}let t=w();return t||(t=A(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=w();e&&(e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`)}hideIframeUntilPaint(e){e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`,this.iframe.style.visibility=`hidden`,this.iframe.style.opacity=`0`,this.iframe.style.pointerEvents=`none`,this.ensureLoadingIndicator(e).style.display=`flex`}revealIframe(e){if(this.pendingRevision===null)return;let t=D(this.iframe);this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`visible`,this.visibleAt=q(),this.usedVisualFallback=e,J({phase:`modal_visible`,at:this.visibleAt,visualRevision:t,fallback:e});let n=T();if(!n)return;delete n.dataset.waapSizeLocked;let r=n.querySelector(`#${G}`);r&&(r.style.display=`none`),this.iframe.style.visibility=`visible`,this.iframe.style.opacity=`1`,this.iframe.style.pointerEvents=`auto`,n.style.visibility=`visible`,n.style.opacity=`1`,n.style.pointerEvents=`auto`}ensureLoadingIndicator(e){let t=e.querySelector(`#${G}`);if(t)return this.applyLoadingTheme(t),t;t=document.createElement(`div`),t.id=G,t.setAttribute(`role`,`status`),t.setAttribute(`aria-live`,`polite`),t.setAttribute(`aria-label`,`Loading WaaP wallet`),t.style.position=`absolute`,t.style.inset=`0`,t.style.zIndex=`1`,t.style.display=`none`,t.style.flexDirection=`column`,t.style.borderRadius=`24px`,t.style.fontFamily=`system-ui, sans-serif`,t.style.fontSize=`14px`,t.style.pointerEvents=`none`;let n=document.createElement(`div`);n.style.boxSizing=`border-box`,n.style.display=`flex`,n.style.flexDirection=`column`,n.style.width=`100%`,n.style.height=`100%`,n.style.padding=`24px`;let r=document.createElement(`img`),i=this.iframe.dataset.waapOrigin;i&&(r.src=`${i}/assets/svg/waaplogo.svg`),r.alt=`WaaP`,r.width=66,r.height=25,r.style.alignSelf=`center`,r.style.width=`66px`,r.style.height=`25px`,r.style.marginBottom=`20px`,r.dataset.waapLoadingLogo=`true`;let a=(e,t,n,r)=>{let i=document.createElement(`div`);return i.setAttribute(`aria-hidden`,`true`),i.dataset.waapLoadingPart=e,i.style.width=t,i.style.height=n,i.style.flexShrink=`0`,i.style.borderRadius=r,i.style.backgroundSize=`200% 100%`,i.style.animation=`waap-loading-shimmer 2.4s ease-in-out infinite`,i},o=a(`request-title`,`156px`,`16px`,`999px`);o.style.marginTop=`34px`;let s=a(`request-body`,`100%`,`220px`,`12px`);s.style.flex=`1`,s.style.marginTop=`18px`,s.style.opacity=`.58`;let c=document.createElement(`div`);return c.dataset.waapLoadingPart=`actions`,c.setAttribute(`aria-hidden`,`true`),c.style.display=`flex`,c.style.gap=`10px`,c.append(a(`cancel-action`,`calc(50% - 5px)`,`48px`,`12px`),a(`confirm-action`,`calc(50% - 5px)`,`48px`,`12px`)),n.append(r,o,s,c),t.appendChild(n),e.appendChild(t),this.applyLoadingTheme(t),t}applyLoadingTheme(e){let t=this.iframe.dataset.waapTheme===`dark`;e.dataset.waapTheme=t?`dark`:`light`,e.style.background=t?`#121212`:`#ffffff`,e.style.color=t?`#e6e6e6`:`#000000`;let n=e.querySelector(`[data-waap-loading-logo]`);n&&(n.style.filter=t?`invert(1)`:`none`);let r=t?`linear-gradient(90deg, rgba(255,255,255,.07), rgba(255,255,255,.14), rgba(255,255,255,.07))`:`linear-gradient(90deg, rgba(0,0,0,.05), rgba(0,0,0,.1), rgba(0,0,0,.05))`;e.querySelectorAll(`[data-waap-loading-part]`).forEach(e=>{e.style.background=r})}clearFallbackTimer(){this.fallbackTimer!==void 0&&(window.clearTimeout(this.fallbackTimer),this.fallbackTimer=void 0)}};let Y;const ke=()=>{let e=E();return e?(Y&&!Y.isFor(e)&&(Y.dispose(),Y=void 0),Y??=new Oe(e),Y):null},X=e=>{ke()?.show(e)},Z=()=>{ke()?.hide()},Ae=()=>{Y?.dispose(),Y=void 0},je=()=>{let e=E(),t=e?.contentWindow?x(e.contentWindow):null,n=Y?.getDiagnostics(),r=Number(e?.dataset.waapVisualReadyAt??``);return{walletOrigin:e?.dataset.waapOrigin??null,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,visualRevision:D(e),visualReadyAt:Number.isFinite(r)?r:null,modalPhase:n?.modalPhase??`idle`,modalRequestedAt:n?.modalRequestedAt??null,modalVisibleAt:n?.modalVisibleAt??null,usedVisualFallback:n?.usedVisualFallback??!1,handshake:Ce()}},Me=new Set([e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.personal_sign,e.t.eth_signTypedData_v4]),Ne=e=>Me.has(e);function Pe(e){return new Promise((t,n)=>{let r,i=!1,a=()=>{r!==void 0&&clearTimeout(r),e.eventEmitter.removeListener(e.id,o),e.signal?.removeEventListener(`abort`,c)},o=e=>{i||(i=!0,a(),t(e))},s=t=>{i||(i=!0,a(),e.onCancel?.(),n(Error(t)))},c=()=>s(`WaaP request cancelled: ${e.method}`);if(e.signal?.aborted){c();return}e.interactionRequired||(r=setTimeout(()=>{s(`WaaP request timed out: ${e.method}`)},e.timeoutMs??3e4)),e.eventEmitter.once(e.id,o),e.signal?.addEventListener(`abort`,c,{once:!0})})}async function Q(t,n,r,i,a){let o=t.method,s=t.params,{timeoutMs:c,signal:l,...u}=a??{};n&&X({layout:o===e.r.login?`auth`:`signing`});let d;try{d=await r.postSilkRequest({method:o,params:s,interactionRequired:n,silkOptions:a?u:void 0});let e=await Pe({eventEmitter:i,id:d,method:o,interactionRequired:n,timeoutMs:c,signal:l,onCancel:()=>{r.cancelSilkRequest(d,o),n&&Z()}});if(n&&Z(),e.error)throw e.error;return e.data}catch(e){throw n&&d===void 0&&Z(),e}}const Fe=(e,t={})=>{if(typeof window>`u`)return()=>void 0;let n=!1,r,i,a=window,o=()=>{n||e.preload().catch(e=>t.onError?.(e))};return typeof a.requestIdleCallback==`function`?r=a.requestIdleCallback(o,{timeout:t.timeoutMs??2e3}):i=window.setTimeout(o,0),()=>{n=!0,r!==void 0&&a.cancelIdleCallback?.(r),i!==void 0&&window.clearTimeout(i)}};var Ie=function(e){return e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e}(Ie||{}),Le=class extends n.EventEmitter{constructor(){super()}};function Re(e){return!(!e?.isMetaMask||e.isApexWallet||e.isAvalanche||e.isBitKeep||e.isBlockWallet||e.isMathWallet||e.isOkxWallet||e.isOKExWallet||e.isOneInchIOSWallet||e.isOneInchAndroidWallet||e.isOpera||e.isPortal||e.isRabby||e.isDefiant||e.isTokenPocket||e.isTokenary||e.isZerion)}function ze(e){try{if(!e||!Array.isArray(e))return!1;let t=JSON.parse(typeof e[1]==`string`?e[1]:JSON.stringify(e[1]));return t.primaryType===`SafeTx`&&t.domain?.verifyingContract!==void 0&&t.message&&`to`in t.message&&`value`in t.message&&`safeTxGas`in t.message&&`baseGas`in t.message&&`gasPrice`in t.message&&`nonce`in t.message}catch{return!1}}const Be={styles:{darkMode:!1}},$=[`waap`,`human`,`injected`,`walletconnect`],Ve=[e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.eth_signTypedData_v4,e.t.personal_sign];function He(e){if(e==null)return null;if(typeof e==`string`){if($.includes(e))return e;throw Error(`[EthereumProvider] Unexpected login method: "${e}". Expected one of: ${$.join(`, `)}`)}if(typeof e==`object`&&`loginMethod`in e&&typeof e.loginMethod==`string`){let t=e.loginMethod;if(console.warn(`[EthereumProvider] Received object login response. Normalizing "${t}" to string. This is unexpected for the web SDK.`),$.includes(t))return t;throw Error(`[EthereumProvider] Unknown loginMethod in object: "${t}". Expected one of: ${$.join(`, `)}`)}throw Error(`[EthereumProvider] Unexpected login response: ${JSON.stringify(e)} (type: ${typeof e})`)}var Ue=class extends n.EventEmitter{constructor(t,r,i,a,o,s=!1,c=!1,l,u=[`evm`],d){super(),this.lastKnownConversion=`pending`,this.isSilk=!0,this.isWaaP=!0,this.connected=!1,this.currentAccount=null,this.accountMode=`tap`,this.walletConnectProvider=null,this.asyncTxs=!1,this.legacyAsyncSigning=!1,this.internalEventEmitter=new n.EventEmitter,this.iframeMounted=!0,this.initializerPromise=null,this.sessionProbe=null,this.initializedIframeWindow=null,this.asyncTxs=s,this.legacyAsyncSigning=c,this.ensureIframe=l,this.iframeMounted=!l,this.referralCode=r,this.project=a,this.customConfig=i,this.initializerChains=u,this.sessionProtection=d,this.uiMessageManager=new Le,this.walletMessageManager=new W(t,o),this.config={...Be,...i||{}},this.persistedMethods={login:this.login.bind(this),logout:this.logout.bind(this),getLoginMethod:this.getLoginMethod.bind(this),walletMessageManager:this.walletMessageManager,internalEventEmitter:this.internalEventEmitter,uiMessageManager:this.uiMessageManager,portal:this.portal.bind(this),requestEmail:this.requestEmail.bind(this),requestSBT:this.requestSBT.bind(this),requestPermissionToken:this.requestPermissionToken.bind(this),orcid:this.orcid.bind(this),enable:this.enable.bind(this),isConnected:this.isConnected.bind(this),toggleDarkMode:this.toggleDarkMode.bind(this),destroy:this.destroy.bind(this),silkRequest:this.request.bind(this),waaPRequest:this.request.bind(this)},this.walletMessageManager.addListener({onReceiveConnectNotif:()=>{this.connected=!0,this.emit(`connect`)},handleResponse:e=>this.internalEventEmitter.emit(e.id,e),handleRequest:t=>{t.method===e.r.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.r.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:e=>{this.currentAccount!==e&&(this.currentAccount=e,this.emit(`accountsChanged`,e?[e]:[]))},onAsyncTxNotification:e=>{this.emit(e.type,e.payload)},onSquidLifecycleNotification:e=>{this.emit(e.type,e.payload)}})}async initializeWalletConnect(){try{this.walletConnectProvider=await t.t.getInstance()}catch(e){console.error(`Failed to initialize WalletConnect provider:`,e),this.walletConnectProvider=null}}async initializeIframeContext(){let t=this.walletMessageManager.getIframeWindow();if(!t)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===t&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=t,this.initializerPromise=ye(t,async()=>{await this.walletMessageManager.pingIframe(),await Q({method:e.r.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)});try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async reassertIframeAccountMode(){this.ensureIframeMounted(),await this.walletMessageManager.pingIframe(),await Q({method:e.r.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();e&&(this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e))}async ensureInitialized(){this.ensureIframeMounted(),await this.initializeIframeContext()}async preload(){await this.ensureInitialized()}async enable(){return this.request({method:`eth_requestAccounts`})}isConnected(){return this.connected}getAccountStatus(){let e=this.getLoginMethod();return{authenticated:e!==null,loginMethod:e,activeMode:e?this.accountMode:null,mode:this.accountMode,conversion:e?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this.currentAccount?{evm:this.currentAccount}:{}}}get session(){return{login:e=>this.login(e),logout:async()=>{await this.logout()},getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await Q({method:e.r.waap_getAccountStatus,params:[]},!1,this.walletMessageManager,this.internalEventEmitter);return t?.conversion&&(this.lastKnownConversion=t.conversion),t}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async request(t){if(!Object.keys(e.t).includes(t.method))return Promise.reject({error:`Not implemented (${t.method})`});let n=await this.attemptAutoConnect(t.method);if(n!==null)return n;if(Ve.includes(t.method)&&!(this.getLoginMethod()!==null||await this.restorePersistedWaaPSession()!==null))return Promise.reject(new r(`not_authenticated`,`Not authenticated: call login() before signing.`,{operation:{chain:`evm`,method:t.method}}));if(ze(t.params)&&t.method!==e.t.eth_signTypedData_v4)return Promise.reject({error:`Safe transactions must be signed using eth_signTypedData_v4`});await this.ensureInitialized();let i=(t.method===e.t.eth_sendTransaction||t.method===e.t.eth_signTransaction||t.method===e.t.eth_signTypedData_v4||t.method===e.t.personal_sign)&&this.asyncTxs||t.async,a=i||t.withPT||t.timeoutMs!==void 0||t.signal?this.legacyAsyncSigning?{asyncSigning:i||void 0,withPT:t.withPT,timeoutMs:t.timeoutMs,signal:t.signal}:{async:i,withPT:t.withPT,timeoutMs:t.timeoutMs,signal:t.signal}:void 0,o=await Q(t,Ne(t.method),this.walletMessageManager,this.internalEventEmitter,a);if((t.method===e.t.wallet_switchEthereumChain||t.method===e.t.wallet_addEthereumChain)&&o===null){this.emit(`chainChanged`,t.params?.[0]?.chainId);try{let e=await this.request({method:`eth_accounts`});e&&e.length>0&&(this.currentAccount=e[0],this.emit(`accountsChanged`,e),this.emit(`connect`,{chainId:t.params?.[0]?.chainId}))}catch(e){console.warn(`[EthereumProvider] Failed to get accounts after chain switch:`,e),this.currentAccount&&(this.emit(`accountsChanged`,[this.currentAccount]),this.emit(`connect`,{chainId:t.params?.[0]?.chainId}))}}return t.method===e.t.eth_requestAccounts&&Array.isArray(o)&&typeof o[0]==`string`&&(this.currentAccount=o[0],this.connected=!0,typeof window<`u`&&typeof localStorage<`u`&&localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.emit(`accountsChanged`,o),this.emit(`connect`)),o}async login(n){if(typeof window>`u`||typeof document>`u`)return null;let r=n&&!(`request`in n)?n:void 0,i=r?r.customProvider:n;if(await this.ensureInitialized(),!r?.force&&await this.restorePersistedWaaPSession())return this.getLoginMethod()??`waap`;let a=i||window.ethereum,o=a&&Re(a)?`MetaMask`:`Browser Wallet`,s=He(await Q({method:e.r.login,params:[o]},!0,this.walletMessageManager,this.internalEventEmitter));if(s===null)return null;switch(s){case`waap`:case`human`:localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP();break;case`injected`:a&&(localStorage.setItem(`${window.location.origin}-connected`,`injected`),this.setupInjectedWallet(a));break;case`walletconnect`:{localStorage.setItem(`${window.location.origin}-connected`,`walletconnect`),this.walletConnectProvider||await this.initializeWalletConnect(),t.t.isConnected()||(await this.walletConnectProvider.open({view:`Connect`}),await t.t.listenToAccountChangeEvent());let e=t.t.getWalletProvider();this.setupWalletConnect(e);break}}return s}async logout(){await this.ensureInitialized(),this.cleanupInvalidLoginState(),this.lastKnownConversion=`pending`,this.currentAccount=null,this.connected=!1,this.emit(`accountsChanged`,[]),this.emit(`disconnect`);try{this.walletConnectProvider&&await this.walletConnectProvider.disconnect()}catch(e){console.error(`Error disconnecting from WalletConnect:`,e)}return Q({method:e.r.logout},!1,this.walletMessageManager,this.internalEventEmitter)}destroy(){if(this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.removeAllListeners(),this.connected=!1,this.walletConnectProvider&&=(this.walletConnectProvider.disconnect().catch(()=>void 0),null),typeof window<`u`){let e=window;(e.silk===this||e.silk?.walletMessageManager===this.walletMessageManager)&&delete e.silk,(e.waap===this||e.waap?.walletMessageManager===this.walletMessageManager)&&delete e.waap}_e()}cleanupInvalidLoginState(){try{localStorage.removeItem(`${window.location.origin}-connected`)}catch(e){console.warn(`Could not clean up login state:`,e)}}setupWaaP(){let e={...this.persistedMethods,isWaaP:!0,on:this.on.bind(this),removeListener:this.removeListener.bind(this),request:this.request.bind(this)};window.silk=e,window.waap=e}setupInjectedWallet(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:e.connected??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectInjected(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:e.isConnected?.()??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}async attemptAutoConnect(e){if(e!==`eth_requestAccounts`&&e!==`eth_accounts`)return null;let n=this.getLoginMethod();if(n===`waap`||n===`human`){let e=await this.restorePersistedWaaPSession();if(e)return e}if(n===`injected`&&window.ethereum)try{return this.setupAutoConnectInjected(window.ethereum),window.ethereum.request({method:`eth_requestAccounts`})}catch(e){return console.warn(`Injected wallet auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}else if(n===`walletconnect`)try{if(this.walletConnectProvider||=await t.t.getInstance(),await t.t.waitForReadyAndCheckConnection()){let e=t.t.getWalletProvider();return this.setupAutoConnectWalletConnect(e),e.request({method:`eth_requestAccounts`})}else return this.cleanupInvalidLoginState(),null}catch(e){return console.warn(`WalletConnect auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}return null}restorePersistedWaaPSession(){return this.sessionProbe??=this.probeWaaPSession().finally(()=>{this.sessionProbe=null}),this.sessionProbe}async probeWaaPSession(){try{if(await this.ensureInitialized(),!(await this.getCanonicalAccountStatus()).authenticated)return this.cleanupInvalidLoginState(),null;let t=await Q({method:e.r.auto_conn,params:[window.location.origin]},!1,this.walletMessageManager,this.internalEventEmitter);if(Array.isArray(t)&&t.length>0)return this.currentAccount=t[0],this.connected=!0,localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP(),t}catch(e){console.warn(`WaaP session probe failed:`,e)}return this.cleanupInvalidLoginState(),null}getLoginMethod(){if(typeof window>`u`||typeof localStorage>`u`)return null;try{let e=localStorage.getItem(`${window.location.origin}-connected`);if(!e)return null;if(![`waap`,`human`,`injected`,`walletconnect`].includes(e))return this.cleanupInvalidLoginState(),null;switch(e){case`injected`:return window.ethereum?`injected`:(this.cleanupInvalidLoginState(),null);case`walletconnect`:try{return t.t.isConnected()?`walletconnect`:(this.cleanupInvalidLoginState(),null)}catch{return this.cleanupInvalidLoginState(),null}case`waap`:return`waap`;case`human`:return`human`;default:return this.cleanupInvalidLoginState(),null}}catch(e){return console.warn(`Error checking login method:`,e),this.cleanupInvalidLoginState(),null}}async toggleDarkMode(){this.config.styles.darkMode=!this.config.styles.darkMode,await this.ensureInitialized();try{await Q({method:e.r.set_custom_config,params:[this.config]},!1,this.walletMessageManager,this.internalEventEmitter)}catch(e){console.error(`Error setting custom config in Silk iframe:`,e)}}async safe(){await this.ensureInitialized(),await Q({method:e.r.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await Q({method:e.r.orcid},!0,this.walletMessageManager,this.internalEventEmitter)}async portal(t,n,r){await this.ensureInitialized();let i;switch(n){case`get`:i=t===`gastank`?e.r.gastank_get_settings:e.r.customization_get;break;case`update`:i=t===`gastank`?e.r.gastank_update_settings:e.r.customization_update;break;case`topup`:i=e.r.gastank_topup;break;case`init`:i=e.r.project_init;break}let a=n!==`get`&&t!==`customization`;return Q({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),Q({method:e.r.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(t){return await this.ensureInitialized(),Q({method:e.r.waap_requestPermissionToken,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(t){return await this.ensureInitialized(),await Q({method:e.r.waap_getPermissionTokenStatus,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(t){return await this.ensureInitialized(),await Q({method:e.r.waap_clearPermissionToken,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(t){return await this.ensureInitialized(),Q({method:e.r.silk_requestSbt,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}};const We=(e,n,r=!0,i=[`evm`],a=!0)=>{let{referralCode:o,config:s,project:c,asyncTxs:l,asyncSigning:u,deferIframe:d,sessionProtection:f}=e,ee=m(e),p=!!u&&!l;e.walletConnectProjectId&&t.t.setProjectId(e.walletConnectProjectId),u&&!l&&console.warn("[WaaP SDK] `asyncSigning` is deprecated. Use `asyncTxs` instead.");let h=typeof window>`u`||typeof document>`u`,g=()=>typeof window>`u`||typeof document>`u`?null:(M(e),ce(n).contentWindow),_=d===!1&&!h,v=d===void 0&&!h,y=_?g():null;if(_&&!y)throw Error(`WaaP iframe does not exist on page`);let b=new Ue(y,o,s||{},c||{},ee,l||u||!1,p,_?void 0:g,i,f);if(b.setAccountMode(n),!h&&r&&_&&b.initializeIframeContext().catch(()=>void 0),b.uiMessageManager.on(`show_modal`,()=>{X()}),b.uiMessageManager.on(`hide_modal`,()=>{Z()}),!h&&a&&(window.silk=b,window.waap=b),r&&v){let e=Fe(b),t=b.destroy.bind(b);b.destroy=()=>{e(),t()}}return b},Ge=(e={})=>We(e,`tap`);Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return M}});
|
package/dist/evm-DHVrAmEw.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,n as t,r as n,t as r}from"./esm-B4jz8Emb.mjs";import{t as i}from"./WalletConnect-Deg7_JmH.mjs";import{EventEmitter as a}from"events";var o=class extends Error{constructor(e,t,n={}){super(t),this.name=`WaaPError`,this.code=e,this.operation=n.operation,this.cause=n.cause}};function s(e,t){if(e instanceof o)return e;let n=e&&typeof e==`object`?e:void 0,r=n&&typeof n.message==`string`&&n.message||e instanceof Error&&e.message||String(e||`WaaP request failed`),i=n?.code,a=r.toLowerCase();return new o(a.includes(`cancelled`)||a.includes(`canceled`)?`cancelled`:a.includes(`timed out`)?`timeout`:a.includes(`policy`)||a.includes(`permission token`)?`policy_rejected`:i===4001||a.includes(`rejected`)?`user_rejected`:a.includes(`not connected`)?`not_connected`:a.includes(`not authenticated`)||a.includes(`log in first`)?`not_authenticated`:a.includes(`unsupported`)||a.includes(`must be base64`)?`unsupported_input`:n?`wallet_error`:`unknown`,r,{cause:e,operation:t})}const c=`waap-wallet`,l=`waap-component-container`,u=typeof window<`u`&&typeof document<`u`&&typeof HTMLElement<`u`;let d;u?(d=class extends HTMLElement{constructor(){super()}connectedCallback(){(!this.style.display||this.style.display===``)&&(this.style.display=`flex`,this.style.alignItems=`center`,this.style.justifyContent=`center`),(!this.style.width||this.style.width===``)&&(this.style.width=`100%`),(!this.style.height||this.style.height===``)&&(this.style.height=`100%`),this.id=l,this.setAttribute(`data-waap-mounted`,`true`)}disconnectedCallback(){this.removeAttribute(`data-waap-mounted`)}},typeof customElements<`u`&&!customElements.get(c)&&customElements.define(c,d)):d=class{};function f(){return u?!!document.getElementById(l)||!!document.querySelector(c):!1}function p(){return u?document.getElementById(l)||document.querySelector(c):null}const m=`https://staging.waap.xyz`,h={development:`http://localhost:3000`,staging:m,production:`https://waap.xyz`},g=e=>e===`localhost`||e===`127.0.0.1`||e===`[::1]`;function _(e){let t;try{t=new URL(e)}catch{throw Error(`Invalid WaaP wallet origin: ${e}`)}if(t.origin!==e||t.pathname!==`/`||t.search||t.hash||t.username||t.password)throw Error(`WaaP walletOrigin must be an absolute origin without a path, query, or credentials`);if(t.protocol!==`https:`&&!(t.protocol===`http:`&&g(t.hostname)))throw Error(`WaaP walletOrigin must use HTTPS unless it is a loopback host`);return t.origin}function v(e={}){return e.walletOrigin?_(e.walletOrigin):e.environment?_(h[e.environment]):e.useStaging?_(m):_(h.production)}const y=new WeakMap,b=new WeakMap,x=()=>typeof performance<`u`?performance.now():Date.now(),S=e=>({generation:e.generation,navigationStartedAt:e.navigationStartedAt,loadedAt:e.loadedAt}),C=e=>{let t=e.contentWindow;if(!t)return;let n=b.get(e);if(n&&y.get(t)===n)return;n?.cleanup(),n&&(b.delete(e),y.get(t)===n&&y.delete(t));let r=y.get(t);if(r?.iframe===e)return;r?.cleanup(),r&&b.delete(r.iframe);let i={iframe:e,generation:0,navigationStartedAt:x(),loadedAt:null,listeners:new Set,cleanup:()=>{}},a=()=>{i.generation+=1,i.loadedAt=x();let e=S(i);for(let t of Array.from(i.listeners))t(e)};i.cleanup=()=>{e.removeEventListener(`load`,a),i.listeners.clear()},e.addEventListener(`load`,a),y.set(t,i),b.set(e,i)},ee=e=>{let t=b.get(e);if(t){t.cleanup(),b.delete(e);let n=e.contentWindow;n&&y.get(n)===t&&y.delete(n);return}let n=e.contentWindow;if(!n)return;let r=y.get(n);!r||r.iframe!==e||(r.cleanup(),y.delete(n))},w=e=>{let t=y.get(e);return t?S(t):null},te=(e,t)=>{let n=y.get(e);return n?n.loadedAt===null?new Promise((e,r)=>{let i=window.setTimeout(()=>{n.listeners.delete(a),r(Error(`WaaP iframe navigation timed out after ${Math.round(t/1e3)}s.`))},t),a=t=>{window.clearTimeout(i),n.listeners.delete(a),e(t)};n.listeners.add(a)}):Promise.resolve(S(n)):Promise.resolve(null)},ne=(e,t)=>{let n=y.get(e);return n?(n.listeners.add(t),()=>n.listeners.delete(t)):()=>{}},re=`waap-wallet-loading-styles`,T=`waap-iframe-visual-ready`,E=typeof window<`u`&&typeof document<`u`,ie=()=>{if(!E||document.getElementById(re))return;let e=document.createElement(`style`);e.id=re,e.textContent=`@keyframes waap-loading-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @media (prefers-reduced-motion: reduce) { [data-waap-loading-part] { animation: none !important; } }`,document.head.appendChild(e)},ae=(e={})=>v(e),D=()=>E?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,O=()=>E?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,k=()=>E?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,A=(e=k())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},oe=(e=k())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},j=(e,t)=>{if(e){if(t===null){delete e.dataset.waapVisualReadySupported;return}e.dataset.waapVisualReadySupported=String(t)}},se=(e,t)=>{let n=e.__silkCleanup;e.__silkCleanup=()=>{n?.(),t()}},ce=e=>{let t=k();if(!t)throw Error(`WaaP iframe does not exist on page`);let n=t.dataset.waapAccountMode;if(n&&n!==e)throw Error(`WaaP iframe is already bound to ${n}; destroy it before initializing ${e}.`);return t.dataset.waapAccountMode=e,t},le=e=>{if(E)try{if(document.querySelector(`link[data-waap-preconnect="${e}"]`))return;let t=document.createElement(`link`);t.rel=`preconnect`,t.href=e,t.crossOrigin=`anonymous`,t.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(t);let n=document.createElement(`link`);n.rel=`dns-prefetch`,n.href=e,n.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(n)}catch{}},ue=(e,t)=>{e.dataset.waapTheme=t?`dark`:`light`},de=(e,t)=>{let n=e;le(n);let r=document.createElement(`iframe`);return r.id=`waap-wallet-iframe`,r.dataset.waapOrigin=n,ue(r,t),C(r),r.src=`${n}/iframe`,r.allow=`publickey-credentials-get; publickey-credentials-create`,r.style.width=`100%`,r.style.height=`100%`,r.style.border=`none`,r.style.borderRadius=`24px`,r.style.backgroundColor=`transparent`,r.style.background=`transparent`,r.style.padding=`0`,r.style.margin=`0`,r},fe=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-wrapper`,e.style.position=`relative`,e.style.display=`flex`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.padding=`0`,e.style.margin=`0`,e.style.height=`600px`,e.style.width=`380px`,e},pe=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-container`,e.style.position=`fixed`,e.style.top=`0`,e.style.left=`0`,e.style.right=`0`,e.style.bottom=`0`,e.style.width=`100%`,e.style.height=`100%`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.backgroundColor=`rgba(0, 0, 0, 0.5)`,e.style.zIndex=`9999999999`,e.style.display=`flex`,e.style.visibility=`hidden`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.style.transition=typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches?`none`:`opacity 140ms ease`,e},me=(e,t)=>{let n=e,r,i,a,o,s=()=>{if(r=void 0,!o)return;let e=O();e&&e.dataset.waapSizeLocked!==`true`&&(i=o.width,a=o.height,e.style.height=`${o.height}px`,e.style.width=`${o.width}px`,o=void 0)},c=()=>{r===void 0&&(r=window.requestAnimationFrame(s))},l=()=>{!o&&i!==void 0&&a!==void 0&&(o={width:i,height:a}),c()},u=e=>{if(e.origin!==n||e.source!==t.contentWindow||!e.data||typeof e.data!=`object`||e.data.type!==`silk-iframe-size`)return;let r=e.data.height,s=e.data.width,l=2e3;if(typeof r!=`number`||typeof s!=`number`||r<50||r>l||s<50||s>l||!Number.isFinite(r)||!Number.isFinite(s))return;let u=Math.floor(s),d=Math.floor(r);u===i&&d===a||(o={width:u,height:d},c())};window.addEventListener(`message`,u),t.addEventListener(T,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(T,l)};return se(t,d),d},he=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,j(t,null)},r=n=>{if(n.origin!==e||n.source!==t.contentWindow||!n.data||typeof n.data!=`object`||n.data.type!==`silk-iframe-visual-ready`)return;let r=n.data.revision;!Number.isSafeInteger(r)||r<=0||r<=A(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(T,{detail:{revision:r}})))};t.addEventListener(`load`,n),window.addEventListener(`message`,r);let i=()=>{t.removeEventListener(`load`,n),window.removeEventListener(`message`,r)};return se(t,i),i},ge=()=>{setTimeout(()=>{if(typeof document>`u`)return;let e=O();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},_e=e=>{let t=k();if(!t)return!1;let n=t.dataset.waapOrigin??(()=>{try{return new URL(t.src).origin}catch{return}})();if(n&&n!==e)throw Error(`WaaP wallet iframe already exists for ${n}; destroy it before switching to ${e}`);return!0},ve=(e,t)=>{let n=p();if(!n)throw Error(`WaaP component not found in DOM`);if(_e(e))return;let r=fe(),i=de(e,t);me(e,i),he(e,i),ge(),r.appendChild(i),n.appendChild(r),C(i)},ye=(e,t)=>{if(_e(e))return;let n=pe(),r=fe();n.appendChild(r);let i=de(e,t);me(e,i),he(e,i),ge(),r.appendChild(i),document.body.appendChild(n),C(i)},M=(e={})=>{if(!E)return;ie();let t=ae(e),n=e.config?.styles?.darkMode===!0,r=k();r&&ue(r,n),f()?ve(t,n):ye(t,n)},N=()=>{if(!E)return;Fe();let e=k(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&ee(e);let n=O(),r=D();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let P=0;async function be(e){let t=Date.now().toString(),n=new TextEncoder().encode(JSON.stringify(e)+t),r=globalThis.crypto;if(r?.subtle?.digest){let e=await r.subtle.digest(`SHA-256`,new Uint8Array(n));return xe(new Uint8Array(e))}return P+=1,xe(new TextEncoder().encode(`${t}:${P}:${Math.random()}:${JSON.stringify(e)}`)).padEnd(64,`0`).slice(0,64)}function xe(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}const F=new WeakMap,Se=(e,t)=>{let n=F.get(e);if(n)return n;let r=t();return F.set(e,r),r.catch(()=>{F.get(e)===r&&F.delete(e)}),r},Ce=e=>{F.delete(e)},I=(e,t={})=>({schemaVersion:1,accountMode:e,sessionProtection:t.sessionProtection??`dpop`,...t.chains?.length?{chains:t.chains}:{},parentOrigin:typeof window>`u`?void 0:window.location?.origin,...t.referralCode?{referralCode:t.referralCode}:{},...t.project?{project:t.project}:{},...t.config?{config:t.config}:{}}),L=new Set;let R=!1,z;const B=new WeakMap,we=(e=256)=>{let t=new Set;return{accept(n){if(t.has(n))return!1;if(t.add(n),t.size>e){let e=t.values().next().value;e&&t.delete(e)}return!0},clear(){t.clear()},size(){return t.size}}},V=e=>{let t=B.get(e);if(t)return t;let n={ready:!1,promise:null,reject:null,cleanup:null,navigationGeneration:null,readyPingStartedAt:null,readyAt:null,readyAttempts:0,visualReadySupported:null,lastError:null};return B.set(e,n),n},H=(e,t)=>{let n=B.get(e);if(!n)return;n.ready=!1,n.cleanup?.(),n.cleanup=null;let r=n.reject;n.reject=null,n.promise=null,n.navigationGeneration=null,n.visualReadySupported=null;let i=k();i?.contentWindow===e&&j(i,null),r?.(t)},Te=()=>typeof performance<`u`?performance.now():Date.now();let Ee=null;const De=()=>Ee,Oe=(n,r,i)=>{let{handleResponse:a,handleRequest:o,onReceiveConnectNotif:s,onAccountChanged:c,onAsyncTxNotification:l,onSquidLifecycleNotification:u}=i;if(n.origin===r.walletOrigin&&n.source===r.getIframeWindow()&&n.data?.target===`silk`)if(n.data?.messageType===t.request)o(n.data);else if(n.data?.messageType===t.response){let e=n.data;r.shouldHandleTerminalResponse(e.id)&&a(e)}else n.data?.messageType===t.notification&&(n.data?.data===e.connect?s?.():n.data?.data?.type===e.account_changed&&c?c(n.data.data.account):(n.data?.data?.type?.startsWith(`waap_sign_`)||n.data?.data?.type?.startsWith(`waap_tx_`))&&l?l({type:n.data.data.type,payload:n.data.data.payload}):n.data?.data?.type?.startsWith(`waap_squid_`)&&u&&u({type:n.data.data.type,payload:n.data.data.payload}))},ke=()=>{R||typeof window>`u`||(R=!0,z=e=>{for(let{manager:t,config:n}of Array.from(L))Oe(e,t,n)},window.addEventListener(`message`,z))},Ae=()=>{L.size>0||!R||!z||typeof window>`u`||(window.removeEventListener(`message`,z),z=void 0,R=!1)};var je=class{constructor(e,t){this.iframeWindow=null,this.unregisterListeners=new Set,this.terminalResponseDeduper=we(),this.unsubscribeIframeNavigation=null,this.disposed=!1,this.iframeWindow=e,this.walletOrigin=typeof t==`string`?t:v(t===!0?{useStaging:!0}:{}),e&&this.observeIframeNavigation(e)}observeIframeNavigation(e){this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=ne(e,()=>{let t=V(e);(t.ready||t.readyPingStartedAt!==null)&&(Ce(e),H(e,Error(`WaaP iframe reloaded; readiness must be re-established`)),this.terminalResponseDeduper.clear())})}setIframeWindow(e){this.iframeWindow&&this.iframeWindow!==e&&(H(this.iframeWindow,Error(`Wallet iframe window changed`)),this.terminalResponseDeduper.clear()),this.iframeWindow=e,this.observeIframeNavigation(e)}getIframeWindow(){return this.iframeWindow}isDisposed(){return this.disposed}shouldHandleTerminalResponse(e){return this.terminalResponseDeduper.accept(e)}getHandshakeDiagnostics(){let e=this.iframeWindow,t=e?w(e):null,n=e?V(e):null,r={walletOrigin:this.walletOrigin,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,readyPingStartedAt:n?.readyPingStartedAt??null,readyAt:n?.readyAt??null,readyAttempts:n?.readyAttempts??0,visualReadySupported:n?.visualReadySupported??null,navigationGeneration:n?.navigationGeneration??null,lastError:n?.lastError??null};return Ee=r,r}postSilkNotification(e){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);this.iframeWindow.postMessage({target:`silk`,messageType:t.notification,data:e},this.walletOrigin)}postReadyNotification(){this.postSilkNotification(e.ready)}postConnectNotification(){this.postSilkNotification(e.connect)}cancelSilkRequest(t,n){this.postSilkNotification({type:e.request_cancel,requestId:t,method:n})}pingIframe(){if(this.disposed)return Promise.reject(Error(`Wallet message manager is disposed`));let n=this.iframeWindow;if(!n||typeof window>`u`)return Promise.reject(Error(`WaaP iframe is not mounted`));let r=V(n),i=w(n);return r.ready&&(!i||r.navigationGeneration===i.generation)?Promise.resolve():(r.ready&&H(n,Error(`WaaP iframe navigation changed; readiness must be re-established`)),r.promise?r.promise:(r.lastError=null,r.readyPingStartedAt=null,r.readyAt=null,r.readyAttempts=0,r.visualReadySupported=null,r.promise=new Promise((i,a)=>{r.reject=a,te(n,3e4).then(i=>{if(this.disposed||this.iframeWindow!==n)throw Error(`Wallet message manager is disposed`);return new Promise((a,o)=>{let s=o=>{if(o.origin===this.walletOrigin&&o.source===n&&o.data?.target===`silk`&&o.data.messageType===t.notification&&o.data.data===e.ready){r.ready=!0,r.navigationGeneration=w(n)?.generation??i?.generation??null,r.readyAt=Te(),r.visualReadySupported=o.data?.capabilities?.visualReady===1;let e=k();e?.contentWindow===n&&j(e,r.visualReadySupported),p(),a()}},c=()=>{try{r.readyAttempts+=1,this.postReadyNotification()}catch(e){p(),o(e)}};r.readyPingStartedAt=Te();let l=250,u,d=()=>{u=window.setTimeout(()=>{c(),l=Math.min(l*2,1e3),d()},l)},f=window.setTimeout(()=>{p(),o(Error(`WaaP wallet ready handshake timed out after 10s.`))},1e4),p=()=>{u!==void 0&&window.clearTimeout(u),window.clearTimeout(f),window.removeEventListener(`message`,s),r.cleanup===p&&(r.cleanup=null,r.reject=null)};r.cleanup=p,r.reject=o,window.addEventListener(`message`,s),c(),d()})}).then(i,a)}),r.promise=r.promise.finally(()=>{r.ready||(r.lastError=r.lastError??`Wallet readiness failed`,r.promise=null)}),r.promise.catch(e=>{r.lastError=e instanceof Error?e.message:String(e)}),r.promise))}async postSilkRequest(e){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);let{silkOptions:n,...r}=e,i={...r,target:`silk`,messageType:t.request,...n&&{silkOptions:n}},a=await be(i);return this.iframeWindow.postMessage({...i,id:a},this.walletOrigin),a}addListener(e){if(this.disposed)throw Error(`Wallet message manager is disposed`);ke();let t={manager:this,config:e};L.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(L.delete(t),Ae())};return this.unregisterListeners.add(n),n}dispose(){this.disposed||(this.disposed=!0,this.iframeWindow&&H(this.iframeWindow,Error(`Wallet message manager was disposed`)),Array.from(this.unregisterListeners).forEach(e=>e()),this.terminalResponseDeduper.clear(),this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=null,this.iframeWindow=null)}};const U=`waap-wallet-iframe-loading`,W=new Set,G=()=>typeof performance<`u`?performance.now():Date.now(),K=e=>{W.forEach(t=>{try{t(e)}catch{}})},Me=e=>(W.add(e),()=>W.delete(e));var Ne=class{constructor(e){this.pendingRevision=null,this.phase=`idle`,this.requestedAt=null,this.visibleAt=null,this.usedVisualFallback=!1,this.onVisualReady=e=>{let t=e.detail?.revision;this.pendingRevision!==null&&typeof t==`number`&&t>=this.pendingRevision&&this.revealIframe(!1)},this.iframe=e,e.addEventListener(T,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=O();if(!t)return;this.clearFallbackTimer();let n=this.moveToCurrentMode(t);n===`modal`&&e===`signing`?(t.dataset.waapSizeLocked=`true`,t.style.width=`380px`,t.style.height=`600px`):n===`modal`&&delete t.dataset.waapSizeLocked,this.pendingRevision=A(this.iframe)+1,this.phase=`pending`,this.requestedAt=G(),this.visibleAt=null,this.usedVisualFallback=!1,K({phase:`modal_requested`,at:this.requestedAt,visualRevision:this.pendingRevision}),this.hideIframeUntilPaint(t),n===`modal`?this.showModalSurface():t.style.display=`flex`;let r=oe(this.iframe);if(r===!1){this.revealIframe(!0);return}this.fallbackTimer=window.setTimeout(()=>{this.revealIframe(!0)},r===!0?3e3:750)}hide(){let e=this.pendingRevision!==null;this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`hidden`;let t=G();e&&K({phase:`modal_cancelled`,at:t,visualRevision:A(this.iframe)}),K({phase:`modal_hidden`,at:t,visualRevision:A(this.iframe)});let n=O();if(n&&delete n.dataset.waapSizeLocked,f()){n&&(n.style.display=`none`);return}let r=D();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(T,this.onVisualReady)}isFor(e){return this.iframe===e}getDiagnostics(){return{modalPhase:this.phase,modalRequestedAt:this.requestedAt,modalVisibleAt:this.visibleAt,usedVisualFallback:this.usedVisualFallback}}moveToCurrentMode(e){if(f()){let t=p();return t&&e.parentElement!==t&&t.appendChild(e),`component`}let t=D();return t||(t=pe(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=D();e&&(e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`)}hideIframeUntilPaint(e){e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`,this.iframe.style.visibility=`hidden`,this.iframe.style.opacity=`0`,this.iframe.style.pointerEvents=`none`,this.ensureLoadingIndicator(e).style.display=`flex`}revealIframe(e){if(this.pendingRevision===null)return;let t=A(this.iframe);this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`visible`,this.visibleAt=G(),this.usedVisualFallback=e,K({phase:`modal_visible`,at:this.visibleAt,visualRevision:t,fallback:e});let n=O();if(!n)return;delete n.dataset.waapSizeLocked;let r=n.querySelector(`#${U}`);r&&(r.style.display=`none`),this.iframe.style.visibility=`visible`,this.iframe.style.opacity=`1`,this.iframe.style.pointerEvents=`auto`,n.style.visibility=`visible`,n.style.opacity=`1`,n.style.pointerEvents=`auto`}ensureLoadingIndicator(e){let t=e.querySelector(`#${U}`);if(t)return this.applyLoadingTheme(t),t;t=document.createElement(`div`),t.id=U,t.setAttribute(`role`,`status`),t.setAttribute(`aria-live`,`polite`),t.setAttribute(`aria-label`,`Loading WaaP wallet`),t.style.position=`absolute`,t.style.inset=`0`,t.style.zIndex=`1`,t.style.display=`none`,t.style.flexDirection=`column`,t.style.borderRadius=`24px`,t.style.fontFamily=`system-ui, sans-serif`,t.style.fontSize=`14px`,t.style.pointerEvents=`none`;let n=document.createElement(`div`);n.style.boxSizing=`border-box`,n.style.display=`flex`,n.style.flexDirection=`column`,n.style.width=`100%`,n.style.height=`100%`,n.style.padding=`24px`;let r=document.createElement(`img`),i=this.iframe.dataset.waapOrigin;i&&(r.src=`${i}/assets/svg/waaplogo.svg`),r.alt=`WaaP`,r.width=66,r.height=25,r.style.alignSelf=`center`,r.style.width=`66px`,r.style.height=`25px`,r.style.marginBottom=`20px`,r.dataset.waapLoadingLogo=`true`;let a=(e,t,n,r)=>{let i=document.createElement(`div`);return i.setAttribute(`aria-hidden`,`true`),i.dataset.waapLoadingPart=e,i.style.width=t,i.style.height=n,i.style.flexShrink=`0`,i.style.borderRadius=r,i.style.backgroundSize=`200% 100%`,i.style.animation=`waap-loading-shimmer 2.4s ease-in-out infinite`,i},o=a(`request-title`,`156px`,`16px`,`999px`);o.style.marginTop=`34px`;let s=a(`request-body`,`100%`,`220px`,`12px`);s.style.flex=`1`,s.style.marginTop=`18px`,s.style.opacity=`.58`;let c=document.createElement(`div`);return c.dataset.waapLoadingPart=`actions`,c.setAttribute(`aria-hidden`,`true`),c.style.display=`flex`,c.style.gap=`10px`,c.append(a(`cancel-action`,`calc(50% - 5px)`,`48px`,`12px`),a(`confirm-action`,`calc(50% - 5px)`,`48px`,`12px`)),n.append(r,o,s,c),t.appendChild(n),e.appendChild(t),this.applyLoadingTheme(t),t}applyLoadingTheme(e){let t=this.iframe.dataset.waapTheme===`dark`;e.dataset.waapTheme=t?`dark`:`light`,e.style.background=t?`#121212`:`#ffffff`,e.style.color=t?`#e6e6e6`:`#000000`;let n=e.querySelector(`[data-waap-loading-logo]`);n&&(n.style.filter=t?`invert(1)`:`none`);let r=t?`linear-gradient(90deg, rgba(255,255,255,.07), rgba(255,255,255,.14), rgba(255,255,255,.07))`:`linear-gradient(90deg, rgba(0,0,0,.05), rgba(0,0,0,.1), rgba(0,0,0,.05))`;e.querySelectorAll(`[data-waap-loading-part]`).forEach(e=>{e.style.background=r})}clearFallbackTimer(){this.fallbackTimer!==void 0&&(window.clearTimeout(this.fallbackTimer),this.fallbackTimer=void 0)}};let q;const Pe=()=>{let e=k();return e?(q&&!q.isFor(e)&&(q.dispose(),q=void 0),q??=new Ne(e),q):null},J=e=>{Pe()?.show(e)},Y=()=>{Pe()?.hide()},Fe=()=>{q?.dispose(),q=void 0},Ie=()=>{let e=k(),t=e?.contentWindow?w(e.contentWindow):null,n=q?.getDiagnostics(),r=Number(e?.dataset.waapVisualReadyAt??``);return{walletOrigin:e?.dataset.waapOrigin??null,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,visualRevision:A(e),visualReadyAt:Number.isFinite(r)?r:null,modalPhase:n?.modalPhase??`idle`,modalRequestedAt:n?.modalRequestedAt??null,modalVisibleAt:n?.modalVisibleAt??null,usedVisualFallback:n?.usedVisualFallback??!1,handshake:De()}},Le=new Set([r.eth_sendTransaction,r.eth_signTransaction,r.personal_sign,r.eth_signTypedData_v4]),Re=e=>Le.has(e);function ze(e){return new Promise((t,n)=>{let r,i=!1,a=()=>{r!==void 0&&clearTimeout(r),e.eventEmitter.removeListener(e.id,o),e.signal?.removeEventListener(`abort`,c)},o=e=>{i||(i=!0,a(),t(e))},s=t=>{i||(i=!0,a(),e.onCancel?.(),n(Error(t)))},c=()=>s(`WaaP request cancelled: ${e.method}`);if(e.signal?.aborted){c();return}e.interactionRequired||(r=setTimeout(()=>{s(`WaaP request timed out: ${e.method}`)},e.timeoutMs??3e4)),e.eventEmitter.once(e.id,o),e.signal?.addEventListener(`abort`,c,{once:!0})})}async function X(e,t,r,i,a){let o=e.method,s=e.params,{timeoutMs:c,signal:l,...u}=a??{};t&&J({layout:o===n.login?`auth`:`signing`});let d;try{d=await r.postSilkRequest({method:o,params:s,interactionRequired:t,silkOptions:a?u:void 0});let e=await ze({eventEmitter:i,id:d,method:o,interactionRequired:t,timeoutMs:c,signal:l,onCancel:()=>{r.cancelSilkRequest(d,o),t&&Y()}});if(t&&Y(),e.error)throw e.error;return e.data}catch(e){throw t&&d===void 0&&Y(),e}}const Z=(e,t={})=>{if(typeof window>`u`)return()=>void 0;let n=!1,r,i,a=window,o=()=>{n||e.preload().catch(e=>t.onError?.(e))};return typeof a.requestIdleCallback==`function`?r=a.requestIdleCallback(o,{timeout:t.timeoutMs??2e3}):i=window.setTimeout(o,0),()=>{n=!0,r!==void 0&&a.cancelIdleCallback?.(r),i!==void 0&&window.clearTimeout(i)}};var Be=function(e){return e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e}(Be||{}),Ve=class extends a{constructor(){super()}};function He(e){return!(!e?.isMetaMask||e.isApexWallet||e.isAvalanche||e.isBitKeep||e.isBlockWallet||e.isMathWallet||e.isOkxWallet||e.isOKExWallet||e.isOneInchIOSWallet||e.isOneInchAndroidWallet||e.isOpera||e.isPortal||e.isRabby||e.isDefiant||e.isTokenPocket||e.isTokenary||e.isZerion)}function Ue(e){try{if(!e||!Array.isArray(e))return!1;let t=JSON.parse(typeof e[1]==`string`?e[1]:JSON.stringify(e[1]));return t.primaryType===`SafeTx`&&t.domain?.verifyingContract!==void 0&&t.message&&`to`in t.message&&`value`in t.message&&`safeTxGas`in t.message&&`baseGas`in t.message&&`gasPrice`in t.message&&`nonce`in t.message}catch{return!1}}const We={styles:{darkMode:!1}},Q=[`waap`,`human`,`injected`,`walletconnect`],Ge=[r.eth_sendTransaction,r.eth_signTransaction,r.eth_signTypedData_v4,r.personal_sign];function Ke(e){if(e==null)return null;if(typeof e==`string`){if(Q.includes(e))return e;throw Error(`[EthereumProvider] Unexpected login method: "${e}". Expected one of: ${Q.join(`, `)}`)}if(typeof e==`object`&&`loginMethod`in e&&typeof e.loginMethod==`string`){let t=e.loginMethod;if(console.warn(`[EthereumProvider] Received object login response. Normalizing "${t}" to string. This is unexpected for the web SDK.`),Q.includes(t))return t;throw Error(`[EthereumProvider] Unknown loginMethod in object: "${t}". Expected one of: ${Q.join(`, `)}`)}throw Error(`[EthereumProvider] Unexpected login response: ${JSON.stringify(e)} (type: ${typeof e})`)}var qe=class extends a{constructor(e,t,r,i,o,s=!1,c=!1,l,u=[`evm`],d){super(),this.lastKnownConversion=`pending`,this.isSilk=!0,this.isWaaP=!0,this.connected=!1,this.currentAccount=null,this.accountMode=`tap`,this.walletConnectProvider=null,this.asyncTxs=!1,this.legacyAsyncSigning=!1,this.internalEventEmitter=new a,this.iframeMounted=!0,this.initializerPromise=null,this.sessionProbe=null,this.initializedIframeWindow=null,this.asyncTxs=s,this.legacyAsyncSigning=c,this.ensureIframe=l,this.iframeMounted=!l,this.referralCode=t,this.project=i,this.customConfig=r,this.initializerChains=u,this.sessionProtection=d,this.uiMessageManager=new Ve,this.walletMessageManager=new je(e,o),this.config={...We,...r||{}},this.persistedMethods={login:this.login.bind(this),logout:this.logout.bind(this),getLoginMethod:this.getLoginMethod.bind(this),walletMessageManager:this.walletMessageManager,internalEventEmitter:this.internalEventEmitter,uiMessageManager:this.uiMessageManager,portal:this.portal.bind(this),requestEmail:this.requestEmail.bind(this),requestSBT:this.requestSBT.bind(this),requestPermissionToken:this.requestPermissionToken.bind(this),orcid:this.orcid.bind(this),enable:this.enable.bind(this),isConnected:this.isConnected.bind(this),toggleDarkMode:this.toggleDarkMode.bind(this),destroy:this.destroy.bind(this),silkRequest:this.request.bind(this),waaPRequest:this.request.bind(this)},this.walletMessageManager.addListener({onReceiveConnectNotif:()=>{this.connected=!0,this.emit(`connect`)},handleResponse:e=>this.internalEventEmitter.emit(e.id,e),handleRequest:e=>{e.method===n.show_modal?this.uiMessageManager.emit(`show_modal`):e.method===n.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:e=>{this.currentAccount!==e&&(this.currentAccount=e,this.emit(`accountsChanged`,e?[e]:[]))},onAsyncTxNotification:e=>{this.emit(e.type,e.payload)},onSquidLifecycleNotification:e=>{this.emit(e.type,e.payload)}})}async initializeWalletConnect(){try{this.walletConnectProvider=await i.getInstance()}catch(e){console.error(`Failed to initialize WalletConnect provider:`,e),this.walletConnectProvider=null}}async initializeIframeContext(){let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=Se(e,async()=>{await this.walletMessageManager.pingIframe(),await X({method:n.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)});try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async reassertIframeAccountMode(){this.ensureIframeMounted(),await this.walletMessageManager.pingIframe(),await X({method:n.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();e&&(this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e))}async ensureInitialized(){this.ensureIframeMounted(),await this.initializeIframeContext()}async preload(){await this.ensureInitialized()}async enable(){return this.request({method:`eth_requestAccounts`})}isConnected(){return this.connected}getAccountStatus(){let e=this.getLoginMethod();return{authenticated:e!==null,loginMethod:e,activeMode:e?this.accountMode:null,mode:this.accountMode,conversion:e?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this.currentAccount?{evm:this.currentAccount}:{}}}get session(){return{login:e=>this.login(e),logout:async()=>{await this.logout()},getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let e=await X({method:n.waap_getAccountStatus,params:[]},!1,this.walletMessageManager,this.internalEventEmitter);return e?.conversion&&(this.lastKnownConversion=e.conversion),e}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async request(e){if(!Object.keys(r).includes(e.method))return Promise.reject({error:`Not implemented (${e.method})`});let t=await this.attemptAutoConnect(e.method);if(t!==null)return t;if(Ge.includes(e.method)&&!(this.getLoginMethod()!==null||await this.restorePersistedWaaPSession()!==null))return Promise.reject(new o(`not_authenticated`,`Not authenticated: call login() before signing.`,{operation:{chain:`evm`,method:e.method}}));if(Ue(e.params)&&e.method!==r.eth_signTypedData_v4)return Promise.reject({error:`Safe transactions must be signed using eth_signTypedData_v4`});await this.ensureInitialized();let n=(e.method===r.eth_sendTransaction||e.method===r.eth_signTransaction||e.method===r.eth_signTypedData_v4||e.method===r.personal_sign)&&this.asyncTxs||e.async,i=n||e.withPT||e.timeoutMs!==void 0||e.signal?this.legacyAsyncSigning?{asyncSigning:n||void 0,withPT:e.withPT,timeoutMs:e.timeoutMs,signal:e.signal}:{async:n,withPT:e.withPT,timeoutMs:e.timeoutMs,signal:e.signal}:void 0,a=await X(e,Re(e.method),this.walletMessageManager,this.internalEventEmitter,i);if((e.method===r.wallet_switchEthereumChain||e.method===r.wallet_addEthereumChain)&&a===null){this.emit(`chainChanged`,e.params?.[0]?.chainId);try{let t=await this.request({method:`eth_accounts`});t&&t.length>0&&(this.currentAccount=t[0],this.emit(`accountsChanged`,t),this.emit(`connect`,{chainId:e.params?.[0]?.chainId}))}catch(t){console.warn(`[EthereumProvider] Failed to get accounts after chain switch:`,t),this.currentAccount&&(this.emit(`accountsChanged`,[this.currentAccount]),this.emit(`connect`,{chainId:e.params?.[0]?.chainId}))}}return e.method===r.eth_requestAccounts&&Array.isArray(a)&&typeof a[0]==`string`&&(this.currentAccount=a[0],this.connected=!0,typeof window<`u`&&typeof localStorage<`u`&&localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.emit(`accountsChanged`,a),this.emit(`connect`)),a}async login(e){if(typeof window>`u`||typeof document>`u`)return null;let t=e&&!(`request`in e)?e:void 0,r=t?t.customProvider:e;if(await this.ensureInitialized(),!t?.force&&await this.restorePersistedWaaPSession())return this.getLoginMethod()??`waap`;let a=r||window.ethereum,o=a&&He(a)?`MetaMask`:`Browser Wallet`,s=Ke(await X({method:n.login,params:[o]},!0,this.walletMessageManager,this.internalEventEmitter));if(s===null)return null;switch(s){case`waap`:case`human`:localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP();break;case`injected`:a&&(localStorage.setItem(`${window.location.origin}-connected`,`injected`),this.setupInjectedWallet(a));break;case`walletconnect`:{localStorage.setItem(`${window.location.origin}-connected`,`walletconnect`),this.walletConnectProvider||await this.initializeWalletConnect(),i.isConnected()||(await this.walletConnectProvider.open({view:`Connect`}),await i.listenToAccountChangeEvent());let e=i.getWalletProvider();this.setupWalletConnect(e);break}}return s}async logout(){await this.ensureInitialized(),this.cleanupInvalidLoginState(),this.lastKnownConversion=`pending`,this.currentAccount=null,this.connected=!1,this.emit(`accountsChanged`,[]),this.emit(`disconnect`);try{this.walletConnectProvider&&await this.walletConnectProvider.disconnect()}catch(e){console.error(`Error disconnecting from WalletConnect:`,e)}return X({method:n.logout},!1,this.walletMessageManager,this.internalEventEmitter)}destroy(){if(this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.removeAllListeners(),this.connected=!1,this.walletConnectProvider&&=(this.walletConnectProvider.disconnect().catch(()=>void 0),null),typeof window<`u`){let e=window;(e.silk===this||e.silk?.walletMessageManager===this.walletMessageManager)&&delete e.silk,(e.waap===this||e.waap?.walletMessageManager===this.walletMessageManager)&&delete e.waap}N()}cleanupInvalidLoginState(){try{localStorage.removeItem(`${window.location.origin}-connected`)}catch(e){console.warn(`Could not clean up login state:`,e)}}setupWaaP(){let e={...this.persistedMethods,isWaaP:!0,on:this.on.bind(this),removeListener:this.removeListener.bind(this),request:this.request.bind(this)};window.silk=e,window.waap=e}setupInjectedWallet(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:e.connected??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectInjected(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:e.isConnected?.()??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}async attemptAutoConnect(e){if(e!==`eth_requestAccounts`&&e!==`eth_accounts`)return null;let t=this.getLoginMethod();if(t===`waap`||t===`human`){let e=await this.restorePersistedWaaPSession();if(e)return e}if(t===`injected`&&window.ethereum)try{return this.setupAutoConnectInjected(window.ethereum),window.ethereum.request({method:`eth_requestAccounts`})}catch(e){return console.warn(`Injected wallet auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}else if(t===`walletconnect`)try{if(this.walletConnectProvider||=await i.getInstance(),await i.waitForReadyAndCheckConnection()){let e=i.getWalletProvider();return this.setupAutoConnectWalletConnect(e),e.request({method:`eth_requestAccounts`})}else return this.cleanupInvalidLoginState(),null}catch(e){return console.warn(`WalletConnect auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}return null}restorePersistedWaaPSession(){return this.sessionProbe??=this.probeWaaPSession().finally(()=>{this.sessionProbe=null}),this.sessionProbe}async probeWaaPSession(){try{if(await this.ensureInitialized(),!(await this.getCanonicalAccountStatus()).authenticated)return this.cleanupInvalidLoginState(),null;let e=await X({method:n.auto_conn,params:[window.location.origin]},!1,this.walletMessageManager,this.internalEventEmitter);if(Array.isArray(e)&&e.length>0)return this.currentAccount=e[0],this.connected=!0,localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP(),e}catch(e){console.warn(`WaaP session probe failed:`,e)}return this.cleanupInvalidLoginState(),null}getLoginMethod(){if(typeof window>`u`||typeof localStorage>`u`)return null;try{let e=localStorage.getItem(`${window.location.origin}-connected`);if(!e)return null;if(![`waap`,`human`,`injected`,`walletconnect`].includes(e))return this.cleanupInvalidLoginState(),null;switch(e){case`injected`:return window.ethereum?`injected`:(this.cleanupInvalidLoginState(),null);case`walletconnect`:try{return i.isConnected()?`walletconnect`:(this.cleanupInvalidLoginState(),null)}catch{return this.cleanupInvalidLoginState(),null}case`waap`:return`waap`;case`human`:return`human`;default:return this.cleanupInvalidLoginState(),null}}catch(e){return console.warn(`Error checking login method:`,e),this.cleanupInvalidLoginState(),null}}async toggleDarkMode(){this.config.styles.darkMode=!this.config.styles.darkMode,await this.ensureInitialized();try{await X({method:n.set_custom_config,params:[this.config]},!1,this.walletMessageManager,this.internalEventEmitter)}catch(e){console.error(`Error setting custom config in Silk iframe:`,e)}}async safe(){await this.ensureInitialized(),await X({method:n.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await X({method:n.orcid},!0,this.walletMessageManager,this.internalEventEmitter)}async portal(e,t,r){await this.ensureInitialized();let i;switch(t){case`get`:i=e===`gastank`?n.gastank_get_settings:n.customization_get;break;case`update`:i=e===`gastank`?n.gastank_update_settings:n.customization_update;break;case`topup`:i=n.gastank_topup;break;case`init`:i=n.project_init;break}let a=t!==`get`&&e!==`customization`;return X({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),X({method:n.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(e){return await this.ensureInitialized(),X({method:n.waap_requestPermissionToken,params:[e]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(e){return await this.ensureInitialized(),await X({method:n.waap_getPermissionTokenStatus,params:[e]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(e){return await this.ensureInitialized(),await X({method:n.waap_clearPermissionToken,params:[e]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(e){return await this.ensureInitialized(),X({method:n.silk_requestSbt,params:[e]},!0,this.walletMessageManager,this.internalEventEmitter)}};const $=(e,t,n=!0,r=[`evm`],a=!0)=>{let{referralCode:o,config:s,project:c,asyncTxs:l,asyncSigning:u,deferIframe:d,sessionProtection:f}=e,p=v(e),m=!!u&&!l;e.walletConnectProjectId&&i.setProjectId(e.walletConnectProjectId),u&&!l&&console.warn("[WaaP SDK] `asyncSigning` is deprecated. Use `asyncTxs` instead.");let h=typeof window>`u`||typeof document>`u`,g=()=>typeof window>`u`||typeof document>`u`?null:(M(e),ce(t).contentWindow),_=d===!1&&!h,y=d===void 0&&!h,b=_?g():null;if(_&&!b)throw Error(`WaaP iframe does not exist on page`);let x=new qe(b,o,s||{},c||{},p,l||u||!1,m,_?void 0:g,r,f);if(x.setAccountMode(t),!h&&n&&_&&x.initializeIframeContext().catch(()=>void 0),x.uiMessageManager.on(`show_modal`,()=>{J()}),x.uiMessageManager.on(`hide_modal`,()=>{Y()}),!h&&a&&(window.silk=x,window.waap=x),n&&y){let e=Z(x),t=x.destroy.bind(x);x.destroy=()=>{e(),t()}}return x},Je=(e={})=>$(e,`tap`);export{d as C,_ as S,s as T,Se as _,Ve as a,N as b,X as c,Ie as d,Y as f,I as g,je as h,We as i,Re as l,Me as m,$ as n,Be as o,J as p,qe as r,Z as s,Je as t,ze as u,ce as v,o as w,v as x,M as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e}from"./ui-BAYRtDQg.mjs";import{registerWallet as t}from"@mysten/wallet-standard";function n(n,r={}){let i=new e(n,r);return t(i),i}export{n as t};
|
package/dist/ui-16QpbEyG.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require("./esm-D5fDQenf.js"),t=require("./asyncSigning-B0KrmKk7.js"),n=require("./evm-Ch-aWWat.js");let r=require("events");const i={"sui:mainnet":`https://sui-rpc.publicnode.com`,"sui:testnet":`https://sui-testnet-rpc.publicnode.com`,"sui:devnet":`https://fullnode.devnet.sui.io`,"sui:localnet":`http://127.0.0.1:9000`},a=e=>i[e],o=e=>e.slice(4);var s=class{constructor(t,i={},a,o=i){this.lastKnownConversion=`pending`,this.name=`WaaP`,this.version=`1.0.0`,this.icon=`data:image/webp;base64,UklGRpoDAABXRUJQVlA4WAoAAAAQAAAAYwAAYwAAQUxQSDMDAAABJyAQSOFmFxERA8TatqpGoimANbEAxlBAPhSgQP9FyXv3vkcFEf134EZS5DREhGvTM8z0ki8stMRvK4cm8bk5rIu3xNbvkgPk4K6ti5IHquRQnLi6KrdBb81hdyF1jTLM1CW425943iba38/djOcG+dg85p/KXGd/g7+xAzJ2VPWTS8R+q65uA1ZcwG3iZ4urjw9Lh4xn83n3gZmQQ3VMVGEO6D403jdr81Ml1OISAAf7RGImBHISwQ5zCJonTuEyOyP7Sga4cDcjMPgXuiK9cUpaGrIDJtH4iAB25utB8O0DDztOKTr8u9hpX0jrx6k8UM5eAlqsynNxlX9tPRLQEtySKwcDOIDnMqEcek1UnylVNac4r0mlypNvhmCNODlhUXuT4fxTQyrDKY0uyV+gi0iiLLpY76A08C/IX8GQoYb8PcVxK7HkZkT5IjAF4gZicOfJW1ovJjyAlYVPlM6BkkHGI0fniAIZIXC0CbAM92BB8SBznU0ITYLr9XkfnKlDgV8170HGMWwitY51+zxcgkftLD4RLh4HSTIa3QzRWKxlaHZTz21s6GLxnBmjogkVilW4kuaMMMGUfgkZ1JhrBSEANrEDMwucAXgbTqIExY3FYRMdtkQRDFjD6BKtJ2GWTopGRY4P9DBkdE4rp9LJHuYhju45oeVZVv3zNmVdZiIOffHDppOz0Q34p0e/+nXy7JmF1846lmF2ZombLt8pgZpbPNeqpJSVJ0bGd4cH8dUNflNPfdQVXUkC95UQS0ZGfDmOJgjs3IyVOExZBEsxONd080gYK/ftQ2nbYaqGW89Hu7M6avmzXEjhO4G8O8ae8gwWtwZsyp8v8j/ys5H7bM+unOfurO4bbbL4v865Nb8s98Ld2X9yg6tLBQanMP8fhplOMMN8fiNDzTvNOMXGuYzejo12vY7s3clhXwgDPuBIcxi9QZftbKVxAjLCcVQdRxGR1QknhCs3GuieMLzfrrC9RhfJgVpcXRn71nZfEjsiYy/Ca1J7ch0clK64ReH3G/s2cekpP+BIx2YteMvSoLy6G9FCgd1nvF/VoVRtJoNJNLQ0RM3BXY9WgPbcHF78swAAVlA4IEAAAACwBQCdASpkAGQAPpFIoUylpCMiIKgAsBIJaW7hc+AAY2upvcReWAa6m9xF5YBrqb3EXlgGngAA/v81aVcAAAAA`,this._accounts=[],this.accountMode=`tap`,this.loginMethod=null,this._chains=[`sui:mainnet`,`sui:testnet`,`sui:devnet`],this.internalEventEmitter=new r.EventEmitter,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new n.h(t,n.x(i)),this.ensureIframe=a,this.iframeMounted=!a,this.initializerOptions=o,this.uiMessageManager=new n.a,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:t=>{t.method===e.r.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.r.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:async e=>{try{let e=await this.refreshAccounts();this.notifyChange({accounts:e.accounts})}catch(e){console.error(`Failed to refresh Sui accounts:`,e),this._accounts=[],this.notifyChange({accounts:[]})}}})}destroy(){this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.changeListeners.clear(),this._accounts=[]}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();if(!e)throw Error(`Failed to create WaaP iframe`);this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e)}async preload(){if(!this.ensureIframe)return;this.ensureIframeMounted();let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=n._(e,()=>this.selectAccountMode(this.accountMode,this.initializerOptions));try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async ensureInitialized(){await this.preload()}async refreshAccounts(){try{await this.ensureInitialized();let e=await this.postRequestAndWait({method:`sui_connect`,params:[{silent:!0}],interactionRequired:!1});if(e.error)return this._accounts=[],{accounts:[]};let t=e.data?.accounts||[];return this._accounts=t,{accounts:this._accounts}}catch{return this._accounts=[],{accounts:[]}}}get chains(){return this._chains}get accounts(){return this._accounts}get ui(){return this.uiMessageManager}getAccountStatus(){return{authenticated:this.loginMethod!==null,loginMethod:this.loginMethod,activeMode:this.loginMethod?this.accountMode:null,mode:this.accountMode,conversion:this.loginMethod?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this._accounts[0]?{sui:this._accounts[0].address}:{}}}get session(){return{login:()=>this.login(),logout:()=>this.logout(),getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.r.waap_getAccountStatus,params:[],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to read WaaP status`);let n=t.data;return this.syncLoginMethodFromCanonicalStatus(n),n?.conversion&&(this.lastKnownConversion=n.conversion),n}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(t,r={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:e.r.set_signing_mode,params:[n.g(t,r)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let t=await this.restoreSession();if(t)return t;let n=(await this.postRequestAndWait({method:e.r.login,params:[],interactionRequired:!0})).data;return n!==`waap`&&n!==`human`&&n!==`injected`&&n!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=n,n)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:e.r.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async connect(e){if(!this.loginMethod){if(e?.silent)throw new n.w(`not_authenticated`,`Not authenticated: a silent connect cannot open login.`,{operation:{chain:`sui`,method:`sui_connect`}});if(!await this.login())throw new n.w(`user_rejected`,`User rejected WaaP login during connect().`,{operation:{chain:`sui`,method:`sui_connect`}})}await this.ensureInitialized();let t=await this.postRequestAndWait({method:`sui_connect`,params:[e||{}],interactionRequired:!e?.silent,signal:e?.signal,timeoutMs:e?.timeoutMs});if(t.error)throw Error(t.error.message||`Failed to connect`);let r=t.data?.accounts||[];return this._accounts=r,this.notifyChange({accounts:this._accounts}),e?.silent||this.internalEventEmitter.emit(`connect`),this.internalEventEmitter.emit(`accountsChanged`,this._accounts.map(e=>e.address)),{accounts:this._accounts}}async restoreSession(){try{let e=await this.getCanonicalAccountStatus();if(e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`))return this.loginMethod=e.loginMethod,e.loginMethod}catch{}return null}syncLoginMethodFromCanonicalStatus(e){let t=e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`)?e.loginMethod:null;t!==this.loginMethod&&this.setLoginMethod(t)}async disconnect(){await this.ensureInitialized(),await this.postRequestAndWait({method:`sui_disconnect`,params:[],interactionRequired:!1}),this._accounts=[],this.notifyChange({accounts:[]})}async signPersonalMessage(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.postRequestAndWait({method:`sui_signPersonalMessage`,params:[{message:Array.from(e.message),account:t,chain:e.chain}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to sign message`);return{bytes:n.data.bytes,signature:n.data.signature}}async extractTransferAddresses(e,t=!1){try{let{Transaction:n}=await import(`@mysten/sui/transactions`),r=(t?n.fromKind(e):n.from(e)).getData(),i=[];for(let e of r.commands){if(e.$kind!==`TransferObjects`)continue;let t=e.TransferObjects.address;if(t.$kind!==`Input`)continue;let n=t.Input,a=r.inputs[n];if(!a||a.$kind!==`Pure`)continue;let o=Uint8Array.from(atob(a.Pure.bytes),e=>e.charCodeAt(0));if(o.length!==32)continue;let s=`0x`+Array.from(o).map(e=>e.toString(16).padStart(2,`0`)).join(``);i.push(s)}return i}catch{return[]}}async resolveTransactionBytes(e,t=`sui:mainnet`){if(e instanceof Uint8Array)return{bytes:e,kind:`transaction-data`};if(Array.isArray(e))return{bytes:new Uint8Array(e),kind:`transaction-data`};if(typeof e==`string`)try{return{bytes:Uint8Array.from(atob(e),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{throw Error(`Transaction string must be base64 encoded bytes. If you have a serialized transaction JSON, please build it to bytes first.`)}else if(e&&typeof e==`object`){if(typeof e.build==`function`)try{let{SuiJsonRpcClient:n}=await import(`@mysten/sui/jsonRpc`),r=o(t),i=new n({url:a(t),network:r});return{bytes:await e.build({client:i,onlyTransactionKind:!0}),kind:`transaction-kind`}}catch(e){throw console.warn(`[SuiWallet] Failed to build transaction object:`,e),Error(`Failed to build transaction: ${e instanceof Error?e.message:String(e)}`)}if(typeof e.serialize==`function`)try{let t=await e.serialize();if(typeof t==`string`)return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`};if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] serialize() failed:`,e)}if(typeof e.toJSON==`function`)try{let t=await e.toJSON();if(typeof t==`string`)try{return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{try{let e=JSON.parse(t);if(e.bytes&&typeof e.bytes==`string`)return{bytes:Uint8Array.from(atob(e.bytes),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{}}}catch(e){console.warn(`[SuiWallet] toJSON() failed:`,e)}if(typeof e.getData==`function`)try{let t=e.getData();if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] getData() failed:`,e)}throw Error(`Unsupported transaction format. Keys: ${Object.keys(e).join(`, `)}`)}else throw Error(`Unsupported transaction format: ${typeof e}. Please pass Uint8Array bytes or a Transaction object.`)}async signTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.postRequestAndWait({method:`sui_signTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign transaction`);return{bytes:r.data.bytes,signature:r.data.signature}}async signAndExecuteTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.extractTransferAddresses(n.bytes,n.kind===`transaction-kind`),i=await this.postRequestAndWait({method:`sui_signAndExecuteTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain,options:e.options,requestType:e.requestType,toAddresses:r.length>0?r:void 0}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(i.error)throw Error(i.error.message||`Failed to sign and execute transaction`);return i.data}async switchChain(e){if(await this.ensureInitialized(),!this._chains.includes(e.chain))throw Error(`Chain ${e.chain} is not supported`);let t=await this.postRequestAndWait({method:`sui_switchChain`,params:[e],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to switch chain`);this.notifyChange({chains:this._chains,accounts:this._accounts})}on(e,t){return e===`change`?(this.changeListeners.add(t),()=>{this.changeListeners.delete(t)}):(this.internalEventEmitter.on(e,t),()=>{this.internalEventEmitter.removeListener(e,t)})}removeListener(e,t){if(e===`change`){this.changeListeners.delete(t);return}this.internalEventEmitter.removeListener(e,t)}get features(){return{"standard:connect":{version:`1.0.0`,connect:this.connect.bind(this)},"standard:disconnect":{version:`1.0.0`,disconnect:this.disconnect.bind(this)},"standard:events":{version:`1.0.0`,on:this.on.bind(this)},"sui:signPersonalMessage":{version:`1.1.0`,signPersonalMessage:this.signPersonalMessage.bind(this)},"sui:signTransaction":{version:`2.0.0`,signTransaction:this.signTransaction.bind(this)},"sui:signAndExecuteTransaction":{version:`1.0.0`,signAndExecuteTransaction:this.signAndExecuteTransaction.bind(this)},"sui:signTransactionBlock":{version:`2.0.0`,signTransactionBlock:this.signTransactionBlock.bind(this)},"sui:signAndExecuteTransactionBlock":{version:`1.0.0`,signAndExecuteTransactionBlock:this.signAndExecuteTransactionBlock.bind(this)},"sui:switchChain":{version:`1.0.0`,switchChain:this.switchChain.bind(this)}}}async signTransactionBlock(e){return this.signTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain})}async signAndExecuteTransactionBlock(e){return this.signAndExecuteTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,options:e.options,requestType:e.requestType})}async requestPermissionToken(t){await this.ensureInitialized();let n=await this.postRequestAndWait({method:e.r.waap_requestPermissionToken,params:[t],interactionRequired:!0});if(n.error)throw Error(n.error.message||`Failed to request permission token`);return n.data}async getPermissionTokenStatus(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.r.waap_getPermissionTokenStatus,params:[t],interactionRequired:!1})).data}async clearPermissionToken(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.r.waap_clearPermissionToken,params:[t],interactionRequired:!1})).data}async requestEmail(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.r.silk_requestEmail,params:[],interactionRequired:!0});if(t.error)throw Error(t.error.message||`Failed to request email`);return t.data}async postRequestAndWait(t){let r;try{t.interactionRequired&&n.p({layout:t.method===e.r.login?`auth`:`signing`}),r=await this.walletMessageManager.postSilkRequest({method:t.method,params:t.params,interactionRequired:t.interactionRequired});let i=await n.u({eventEmitter:this.internalEventEmitter,id:r,method:t.method,interactionRequired:t.interactionRequired,signal:t.signal,timeoutMs:t.timeoutMs,onCancel:()=>{this.walletMessageManager.cancelSilkRequest(r,t.method),t.interactionRequired&&n.f()}});if(i.error)throw Error(i.error.message);return i}catch(e){throw t.interactionRequired&&r===void 0&&n.f(),n.T(e,{chain:`sui`,method:String(t.method),requestId:r})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function c(e,t,r=!0){let i=()=>(n.y(e),n.v(t).contentWindow),a=e.deferIframe===!1,o=e.deferIframe===void 0,c=a?i():null;if(a&&!c)throw Error(`Failed to create WaaP iframe`);let l=new s(c,e,i,{...e,chains:[`sui`]});l.setAccountMode(t),r&&a&&l.preload().catch(()=>void 0);let u=l.destroy.bind(l);if(l.destroy=()=>{u(),n.b()},r&&o){let e=n.s(l),t=l.destroy.bind(l);l.destroy=()=>{e(),t()}}return l.ui.on(`show_modal`,()=>{n.p(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=`none`})}),l.ui.on(`hide_modal`,()=>{n.f(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=``})}),l}var l=class{constructor(t,i={},a,o=i){this.lastKnownConversion=`pending`,this.name=`WaaP`,this.version=`1.0.0`,this.icon=`data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiByeD0iMTYiIGZpbGw9IiMxMTE4MmMiLz48cGF0aCBkPSJNMTYgNDhoMzJMMzIgMTZ6IiBmaWxsPSIjN2NkNGZmIi8+PC9zdmc+`,this._accounts=[],this.accountMode=`tap`,this.loginMethod=null,this._chains=[`solana:mainnet`,`solana:devnet`,`solana:testnet`],this.internalEventEmitter=new r.EventEmitter,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new n.h(t,n.x(i)),this.ensureIframe=a,this.iframeMounted=!a,this.initializerOptions=o,this.uiMessageManager=new n.a,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:t=>{t.method===e.r.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.r.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:async()=>{try{let e=await this.refreshAccounts();this.notifyChange({accounts:e.accounts})}catch(e){console.error(`Failed to refresh Solana accounts:`,e),this._accounts=[],this.notifyChange({accounts:[]})}}})}destroy(){this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.changeListeners.clear(),this._accounts=[]}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();if(!e)throw Error(`Failed to create WaaP iframe`);this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e)}async preload(){if(!this.ensureIframe)return;this.ensureIframeMounted();let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=n._(e,()=>this.selectAccountMode(this.accountMode,this.initializerOptions));try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async ensureInitialized(){await this.preload()}get chains(){return this._chains}get accounts(){return this._accounts}get features(){return{"standard:connect":{version:`1.0.0`,connect:this.connect.bind(this)},"standard:disconnect":{version:`1.0.0`,disconnect:this.disconnect.bind(this)},"standard:events":{version:`1.0.0`,on:this.on.bind(this)},"solana:signMessage":{version:`1.1.0`,signMessage:this.signStandardMessages.bind(this)},"solana:signTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0],signTransaction:this.signStandardTransactions.bind(this)},"solana:signAndSendTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0],signAndSendTransaction:this.signAndSendStandardTransactions.bind(this)}}}get ui(){return this.uiMessageManager}getAccountStatus(){return{authenticated:this.loginMethod!==null,loginMethod:this.loginMethod,activeMode:this.loginMethod?this.accountMode:null,mode:this.accountMode,conversion:this.loginMethod?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this._accounts[0]?{solana:this._accounts[0].address}:{}}}get session(){return{login:()=>this.login(),logout:()=>this.logout(),getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.r.waap_getAccountStatus,params:[],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to read WaaP status`);let n=t.data;return this.syncLoginMethodFromCanonicalStatus(n),n?.conversion&&(this.lastKnownConversion=n.conversion),n}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(t,r={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:e.r.set_signing_mode,params:[n.g(t,r)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let t=await this.restoreSession();if(t)return t;let n=(await this.postRequestAndWait({method:e.r.login,params:[],interactionRequired:!0})).data;return n!==`waap`&&n!==`human`&&n!==`injected`&&n!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=n,n)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:e.r.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async refreshAccounts(){try{await this.ensureInitialized();let e=await this.postRequestAndWait({method:`solana_connect`,params:[{silent:!0}],interactionRequired:!1});if(e.error)return this._accounts=[],{accounts:[]};let t=this.normalizeAccounts(e.data?.accounts||[]);return this._accounts=t,{accounts:this._accounts}}catch{return this._accounts=[],{accounts:[]}}}normalizeAccounts(e){return e.map(e=>({address:e.address,publicKey:e.publicKey instanceof Uint8Array?e.publicKey:new Uint8Array(e.publicKey??[]),chains:e.chains??this._chains,features:e.features??[]}))}async connect(e){if(!this.loginMethod)throw new n.w(`not_authenticated`,`Not authenticated: call login() before connect().`,{operation:{chain:`solana`,method:`solana_connect`}});await this.ensureInitialized();let t=await this.postRequestAndWait({method:`solana_connect`,params:[e||{}],interactionRequired:!e?.silent,signal:e?.signal,timeoutMs:e?.timeoutMs});if(t.error)throw Error(t.error.message||`Failed to connect`);let r=this.normalizeAccounts(t.data?.accounts||[]);return this._accounts=r,this.notifyChange({accounts:this._accounts}),e?.silent||this.internalEventEmitter.emit(`connect`),this.internalEventEmitter.emit(`accountsChanged`,this._accounts.map(e=>e.address)),{accounts:this._accounts}}async restoreSession(){try{let e=await this.getCanonicalAccountStatus();if(e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`))return this.loginMethod=e.loginMethod,e.loginMethod}catch{}return null}syncLoginMethodFromCanonicalStatus(e){let t=e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`)?e.loginMethod:null;t!==this.loginMethod&&this.setLoginMethod(t)}async disconnect(){await this.ensureInitialized(),await this.postRequestAndWait({method:`solana_disconnect`,params:[],interactionRequired:!1}),this._accounts=[],this.notifyChange({accounts:[]})}async signMessage(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.postRequestAndWait({method:`solana_signMessage`,params:[{message:Array.from(e.message),account:t}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to sign message`);return{signedMessage:new Uint8Array(n.data.signedMessage),signature:new Uint8Array(n.data.signature)}}async signTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=this.resolveTransactionBytes(e.transaction),r=await this.postRequestAndWait({method:`solana_signTransaction`,params:[{transaction:Array.from(n),account:t,chain:e.chain,withPT:e.withPT}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign transaction`);return{signedTransaction:new Uint8Array(r.data.signedTransaction),signature:new Uint8Array(r.data.signature)}}async signAndSendTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=this.resolveTransactionBytes(e.transaction),r=await this.postRequestAndWait({method:`solana_signAndSendTransaction`,params:[{transaction:Array.from(n),account:t,chain:e.chain,options:e.options,withPT:e.withPT}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign and send transaction`);return{signature:r.data.signature}}async signStandardMessages(...e){let t=[];for(let n of e){let e=await this.signMessage({account:n.account,message:n.message});t.push({...e,signatureType:`ed25519`})}return t}async signStandardTransactions(...e){let t=[];for(let n of e){let e=await this.signTransaction({account:n.account,transaction:n.transaction,chain:this.asSupportedChain(n.chain)});t.push({signedTransaction:e.signedTransaction})}return t}async signAndSendStandardTransactions(...e){let t=[];for(let n of e){let e=await this.signAndSendTransaction({account:n.account,transaction:n.transaction,chain:this.asSupportedChain(n.chain),options:this.broadcastOptions(n.options)});t.push({signature:u(e.signature)})}return t}asSupportedChain(e){if(e!==void 0){if(this._chains.includes(e))return e;throw new n.w(`unsupported_input`,`Unsupported Solana Wallet Standard chain: ${e}`,{operation:{chain:`solana`,method:`wallet_standard`}})}}broadcastOptions(e){if(e?.preflightCommitment!==void 0||e?.minContextSlot!==void 0||e?.commitment!==void 0)throw new n.w(`unsupported_input`,`WaaP does not support Wallet Standard RPC commitment options; configure the dapp RPC instead.`,{operation:{chain:`solana`,method:`wallet_standard`}});return e?{skipPreflight:e.skipPreflight,maxRetries:e.maxRetries}:void 0}async requestPermissionToken(t){await this.ensureInitialized();let n=await this.postRequestAndWait({method:e.r.waap_requestPermissionToken,params:[t],interactionRequired:!0});if(n.error)throw Error(n.error.message||`Failed to request permission token`);return n.data}async getPermissionTokenStatus(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.r.waap_getPermissionTokenStatus,params:[t],interactionRequired:!1})).data}async clearPermissionToken(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.r.waap_clearPermissionToken,params:[t],interactionRequired:!1})).data}resolveTransactionBytes(e){if(e instanceof Uint8Array)return e;if(Array.isArray(e))return new Uint8Array(e);if(e&&typeof e.serialize==`function`){let t=e.serialize();return t instanceof Uint8Array?t:new Uint8Array(t)}throw Error(`Unsupported transaction format. Pass serialized bytes or a @solana/web3.js Transaction.`)}on(e,t){return e===`change`?(this.changeListeners.add(t),()=>{this.changeListeners.delete(t)}):(this.internalEventEmitter.on(e,t),()=>{this.internalEventEmitter.removeListener(e,t)})}removeListener(e,t){if(e===`change`){this.changeListeners.delete(t);return}this.internalEventEmitter.removeListener(e,t)}async postRequestAndWait(t){let r;try{t.interactionRequired&&n.p({layout:t.method===e.r.login?`auth`:`signing`}),r=await this.walletMessageManager.postSilkRequest({method:t.method,params:t.params,interactionRequired:t.interactionRequired});let i=await n.u({eventEmitter:this.internalEventEmitter,id:r,method:t.method,interactionRequired:t.interactionRequired,signal:t.signal,timeoutMs:t.timeoutMs,onCancel:()=>{this.walletMessageManager.cancelSilkRequest(r,t.method),t.interactionRequired&&n.f()}});if(i.error)throw Error(i.error.message);return i}catch(e){throw t.interactionRequired&&r===void 0&&n.f(),n.T(e,{chain:`solana`,method:String(t.method),requestId:r})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function u(e){let t=[];for(let n of e){let e=`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`.indexOf(n);if(e<0)throw Error(`Invalid base58 transaction signature`);for(let n=0;n<t.length;n+=1)e+=t[n]*58,t[n]=e&255,e>>=8;for(;e>0;)t.push(e&255),e>>=8}let n=0;for(;n<e.length&&e[n]===`1`;)n+=1;return new Uint8Array([...Array(n).fill(0),...t.reverse()])}function d(e={}){let t=()=>(n.y(e),n.v(`tap`).contentWindow),r=e.deferIframe===!1,i=e.deferIframe===void 0,a=r?t():null;if(r&&!a)throw Error(`Failed to create WaaP iframe`);let o=new l(a,e,t,{...e,chains:[`solana`]});r&&o.preload().catch(()=>void 0);let s=o.destroy.bind(o);if(o.destroy=()=>{s(),n.b()},i){let e=n.s(o),t=o.destroy.bind(o);o.destroy=()=>{e(),t()}}return o.ui.on(`show_modal`,()=>{n.p()}),o.ui.on(`hide_modal`,()=>{n.f()}),o}function f(e={}){if(`chains`in e)throw Error("initWaaP accepts one `chain`; use initWaaPMulti({ chains }) for TAP.");switch(e.chain){case`sui`:return c(e,`tap`);case`solana`:return d(e);default:return n.t(e)}}const p=[`evm`,`sui`,`solana`],m=[`evm`,`sui`,`solana`];function h(r={}){let i=Array.from(new Set(r.chains??p));if(i.length===0)throw Error(`initWaaPSquid requires at least one chain facade`);if(i.some(e=>!p.includes(e)))throw Error(`initWaaPSquid received an unsupported chain facade`);let a=i.includes(`evm`),o=i.includes(`sui`),s=i.includes(`solana`),u=n.n({referralCode:r.referralCode,config:r.config,project:r.project,environment:r.environment,walletOrigin:r.walletOrigin,useStaging:r.useStaging,walletConnectProjectId:r.walletConnectProjectId,asyncTxs:r.asyncTxs,deferIframe:r.deferIframe,sessionProtection:r.sessionProtection},`squid`,!1,i,a),d=o?c(r,`squid`,!1):void 0,f=()=>(n.y(r),n.v(`squid`).contentWindow),m=s?new l(r.deferIframe===!1?f():null,{useStaging:r.useStaging,environment:r.environment,walletOrigin:r.walletOrigin,referralCode:r.referralCode,project:r.project,config:r.config,deferIframe:r.deferIframe,sessionProtection:r.sessionProtection},f,{...r,chains:[`solana`]}):void 0;m?.setAccountMode(`squid`);let h;r.deferIframe===!1?u.preload().catch(()=>void 0):r.deferIframe===void 0&&(h=n.s(u));let g={state:`absent`},_=null,v=0,y=()=>{_=null,g={state:`absent`}},b=e=>!e.lifecycleId||e.lifecycleId===_,x=()=>g.state===`active`;u.on(t.t.squidPending,e=>{if(!b(e))return;let t=e?.transactionDigest;g={state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e?.message?{message:e.message}:{}}}),u.on(t.t.squidReady,e=>{b(e)&&(g={state:`active`})}),u.on(t.t.squidFailed,e=>{b(e)&&(g={state:`failed`,...e?.error?{message:e.error}:{}},_=null)});let S=e=>{if(u.getLoginMethod()===null)throw new n.w(`not_authenticated`,`Not authenticated: call login() before connecting or signing.`,{operation:{chain:e,method:`connect`}});if(!x())throw new n.w(`not_connected`,`Squid is not ready: call onboard() after login before connecting or signing.`)},C=u.request.bind(u);if(u.request=async e=>([`eth_requestAccounts`,`eth_accounts`,`eth_sendTransaction`,`eth_signTransaction`,`personal_sign`,`eth_signTypedData_v4`].includes(e.method)&&S(`evm`),C(e)),d){let e=d.connect.bind(d);d.connect=async t=>(S(`sui`),e(t))}if(m){let e=m.connect.bind(m);m.connect=async t=>(S(`solana`),e(t))}let w=async()=>{if(u.getLoginMethod()===null)throw new n.w(`not_authenticated`,`Not authenticated: call login() before onboarding Squid.`);if(x()||_)return;let t=`squid-${++v}`;_=t,g={state:`provisioning`};try{await u.walletMessageManager.pingIframe(),await n.c({method:e.r.enter_lite_mode,params:[window.location.origin,t]},!1,u.walletMessageManager,u.internalEventEmitter)}catch(e){throw _===t&&(_=null,g={state:`failed`,message:e instanceof Error?e.message:String(e)}),e}},T=()=>({...g}),E=e=>{if(g.state===`active`||!e.authenticated||e.activeMode!==`squid`||!e.squid)return;let n={..._?{lifecycleId:_}:{},evm:e.squid.sqd1.evm,sui:e.squid.sqd2.sui,solana:e.squid.sqd2.solana};g={state:`active`},_=null,u.emit(t.t.squidReady,n)},D=async()=>(await w(),T()),O=u.login.bind(u),k=async e=>{let t=await O(e);return d?.setLoginMethod(t),m?.setLoginMethod(t),(t?await u.session.getAccountStatus().catch(()=>null):null)?.squid&&(await u.reassertIframeAccountMode().catch(()=>void 0),await w()),t&&u.emit(`connect`),t},A=u.logout.bind(u),j=async()=>{await A(),d?.setLoginMethod(null),m?.setLoginMethod(null),y()},M;M={login:k,logout:j,getLoginMethod:()=>u.getLoginMethod(),getAccountStatus:async()=>{let e=await u.session.getAccountStatus();return E(e),e},getSquidStatus:T,on:(e,t)=>(u.on(e,t),M),removeListener:(e,t)=>(u.removeListener(e,t),M)},u.login=M.login,u.logout=M.logout,d&&(d.login=()=>M.login(),d.logout=()=>M.logout()),m&&(m.login=()=>M.login(),m.logout=()=>M.logout());let N={onboard:w,squid:{onboard:w,getStatus:T,onboardWithStatus:D},getSquidStatus:T,session:M,getAccountStatus:()=>{let e=u.getAccountStatus(),t=d?.getAccountStatus(),n=m?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`squid`:null,mode:`squid`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},preload:()=>u.preload(),destroy:()=>{h?.(),y(),u.destroy(),d?.destroy(),m?.destroy(),n.b()}};return a&&Object.assign(N,{evm:u,ethereum:u}),d&&Object.assign(N,{sui:d}),m&&Object.assign(N,{solana:m}),p.every(e=>i.includes(e))&&Object.assign(N,{auth:u}),N}function g(e){let t=Array.from(new Set(e.chains));if(t.length===0)throw Error(`initWaaPMulti requires at least one chain facade`);if(t.some(e=>!m.includes(e)))throw Error(`initWaaPMulti received an unsupported chain facade`);let r=t.includes(`evm`),i=t.includes(`sui`),a=t.includes(`solana`),o=n.n({referralCode:e.referralCode,config:e.config,project:e.project,environment:e.environment,walletOrigin:e.walletOrigin,useStaging:e.useStaging,walletConnectProjectId:e.walletConnectProjectId,asyncTxs:e.asyncTxs,deferIframe:e.deferIframe,sessionProtection:e.sessionProtection},`tap`,!1,t,r),s=i?c({...e,config:e.config},`tap`,!1):void 0,u=()=>(n.y(e),n.v(`tap`).contentWindow),d=a?new l(e.deferIframe===!1?u():null,{useStaging:e.useStaging,environment:e.environment,walletOrigin:e.walletOrigin,referralCode:e.referralCode,project:e.project,config:e.config,deferIframe:e.deferIframe,sessionProtection:e.sessionProtection},u,{...e,chains:[`solana`]}):void 0;d?.setAccountMode(`tap`);let f;e.deferIframe===!1?o.preload().catch(()=>void 0):e.deferIframe===void 0&&(f=n.s(o));let p=o.login.bind(o),h=async e=>{let t=await p(e);return s?.setLoginMethod(t),d?.setLoginMethod(t),t&&o.emit(`connect`),t},g=o.logout.bind(o),_=async()=>{await g(),s?.setLoginMethod(null),d?.setLoginMethod(null)},v;v={login:h,logout:_,getLoginMethod:()=>o.getLoginMethod(),getAccountStatus:()=>o.session.getAccountStatus(),on:(e,t)=>(o.on(e,t),v),removeListener:(e,t)=>(o.removeListener(e,t),v)},o.login=v.login,o.logout=v.logout,s&&(s.login=()=>v.login(),s.logout=()=>v.logout()),d&&(d.login=()=>v.login(),d.logout=()=>v.logout());let y=()=>{let e=o.getAccountStatus(),t=s?.getAccountStatus(),n=d?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`tap`:null,mode:`tap`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},b=o.destroy.bind(o),x=s?.destroy.bind(s),S=d?.destroy.bind(d),C=()=>{f?.(),b(),x?.(),S?.(),n.b()},w={session:v,getAccountStatus:y,preload:()=>o.preload(),destroy:C};return r&&(o.destroy=C,Object.assign(w,{evm:o,ethereum:o})),s&&(s.destroy=C,Object.assign(w,{sui:s})),d&&(d.destroy=C,Object.assign(w,{solana:d})),w}function _(e={}){return console.warn("[WaaP SDK] `initWaaPSui()` is deprecated. Use `initWaaP({ chain: 'sui' })` instead."),f({...e,chain:`sui`})}function v(e={}){return f({...e,chain:`solana`})}function y(e={}){return g({...e,chains:e.chains??m})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return f}});
|
package/dist/ui-BAYRtDQg.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./esm-B4jz8Emb.mjs";import{t}from"./asyncSigning-CzqBbYDP.mjs";import{T as n,_ as r,a as i,b as a,c as o,f as s,g as c,h as l,n as u,p as d,s as f,t as p,u as m,v as h,w as g,x as _,y as v}from"./evm-DHVrAmEw.mjs";import{EventEmitter as y}from"events";const b={"sui:mainnet":`https://sui-rpc.publicnode.com`,"sui:testnet":`https://sui-testnet-rpc.publicnode.com`,"sui:devnet":`https://fullnode.devnet.sui.io`,"sui:localnet":`http://127.0.0.1:9000`},x=e=>b[e],S=e=>e.slice(4);var C=class{constructor(t,n={},r,a=n){this.lastKnownConversion=`pending`,this.name=`WaaP`,this.version=`1.0.0`,this.icon=`data:image/webp;base64,UklGRpoDAABXRUJQVlA4WAoAAAAQAAAAYwAAYwAAQUxQSDMDAAABJyAQSOFmFxERA8TatqpGoimANbEAxlBAPhSgQP9FyXv3vkcFEf134EZS5DREhGvTM8z0ki8stMRvK4cm8bk5rIu3xNbvkgPk4K6ti5IHquRQnLi6KrdBb81hdyF1jTLM1CW425943iba38/djOcG+dg85p/KXGd/g7+xAzJ2VPWTS8R+q65uA1ZcwG3iZ4urjw9Lh4xn83n3gZmQQ3VMVGEO6D403jdr81Ml1OISAAf7RGImBHISwQ5zCJonTuEyOyP7Sga4cDcjMPgXuiK9cUpaGrIDJtH4iAB25utB8O0DDztOKTr8u9hpX0jrx6k8UM5eAlqsynNxlX9tPRLQEtySKwcDOIDnMqEcek1UnylVNac4r0mlypNvhmCNODlhUXuT4fxTQyrDKY0uyV+gi0iiLLpY76A08C/IX8GQoYb8PcVxK7HkZkT5IjAF4gZicOfJW1ovJjyAlYVPlM6BkkHGI0fniAIZIXC0CbAM92BB8SBznU0ITYLr9XkfnKlDgV8170HGMWwitY51+zxcgkftLD4RLh4HSTIa3QzRWKxlaHZTz21s6GLxnBmjogkVilW4kuaMMMGUfgkZ1JhrBSEANrEDMwucAXgbTqIExY3FYRMdtkQRDFjD6BKtJ2GWTopGRY4P9DBkdE4rp9LJHuYhju45oeVZVv3zNmVdZiIOffHDppOz0Q34p0e/+nXy7JmF1846lmF2ZombLt8pgZpbPNeqpJSVJ0bGd4cH8dUNflNPfdQVXUkC95UQS0ZGfDmOJgjs3IyVOExZBEsxONd080gYK/ftQ2nbYaqGW89Hu7M6avmzXEjhO4G8O8ae8gwWtwZsyp8v8j/ys5H7bM+unOfurO4bbbL4v865Nb8s98Ld2X9yg6tLBQanMP8fhplOMMN8fiNDzTvNOMXGuYzejo12vY7s3clhXwgDPuBIcxi9QZftbKVxAjLCcVQdRxGR1QknhCs3GuieMLzfrrC9RhfJgVpcXRn71nZfEjsiYy/Ca1J7ch0clK64ReH3G/s2cekpP+BIx2YteMvSoLy6G9FCgd1nvF/VoVRtJoNJNLQ0RM3BXY9WgPbcHF78swAAVlA4IEAAAACwBQCdASpkAGQAPpFIoUylpCMiIKgAsBIJaW7hc+AAY2upvcReWAa6m9xF5YBrqb3EXlgGngAA/v81aVcAAAAA`,this._accounts=[],this.accountMode=`tap`,this.loginMethod=null,this._chains=[`sui:mainnet`,`sui:testnet`,`sui:devnet`],this.internalEventEmitter=new y,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new l(t,_(n)),this.ensureIframe=r,this.iframeMounted=!r,this.initializerOptions=a,this.uiMessageManager=new i,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:t=>{t.method===e.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:async e=>{try{let e=await this.refreshAccounts();this.notifyChange({accounts:e.accounts})}catch(e){console.error(`Failed to refresh Sui accounts:`,e),this._accounts=[],this.notifyChange({accounts:[]})}}})}destroy(){this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.changeListeners.clear(),this._accounts=[]}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();if(!e)throw Error(`Failed to create WaaP iframe`);this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e)}async preload(){if(!this.ensureIframe)return;this.ensureIframeMounted();let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=r(e,()=>this.selectAccountMode(this.accountMode,this.initializerOptions));try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async ensureInitialized(){await this.preload()}async refreshAccounts(){try{await this.ensureInitialized();let e=await this.postRequestAndWait({method:`sui_connect`,params:[{silent:!0}],interactionRequired:!1});if(e.error)return this._accounts=[],{accounts:[]};let t=e.data?.accounts||[];return this._accounts=t,{accounts:this._accounts}}catch{return this._accounts=[],{accounts:[]}}}get chains(){return this._chains}get accounts(){return this._accounts}get ui(){return this.uiMessageManager}getAccountStatus(){return{authenticated:this.loginMethod!==null,loginMethod:this.loginMethod,activeMode:this.loginMethod?this.accountMode:null,mode:this.accountMode,conversion:this.loginMethod?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this._accounts[0]?{sui:this._accounts[0].address}:{}}}get session(){return{login:()=>this.login(),logout:()=>this.logout(),getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.waap_getAccountStatus,params:[],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to read WaaP status`);let n=t.data;return this.syncLoginMethodFromCanonicalStatus(n),n?.conversion&&(this.lastKnownConversion=n.conversion),n}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(t,n={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:e.set_signing_mode,params:[c(t,n)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let t=await this.restoreSession();if(t)return t;let n=(await this.postRequestAndWait({method:e.login,params:[],interactionRequired:!0})).data;return n!==`waap`&&n!==`human`&&n!==`injected`&&n!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=n,n)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:e.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async connect(e){if(!this.loginMethod){if(e?.silent)throw new g(`not_authenticated`,`Not authenticated: a silent connect cannot open login.`,{operation:{chain:`sui`,method:`sui_connect`}});if(!await this.login())throw new g(`user_rejected`,`User rejected WaaP login during connect().`,{operation:{chain:`sui`,method:`sui_connect`}})}await this.ensureInitialized();let t=await this.postRequestAndWait({method:`sui_connect`,params:[e||{}],interactionRequired:!e?.silent,signal:e?.signal,timeoutMs:e?.timeoutMs});if(t.error)throw Error(t.error.message||`Failed to connect`);let n=t.data?.accounts||[];return this._accounts=n,this.notifyChange({accounts:this._accounts}),e?.silent||this.internalEventEmitter.emit(`connect`),this.internalEventEmitter.emit(`accountsChanged`,this._accounts.map(e=>e.address)),{accounts:this._accounts}}async restoreSession(){try{let e=await this.getCanonicalAccountStatus();if(e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`))return this.loginMethod=e.loginMethod,e.loginMethod}catch{}return null}syncLoginMethodFromCanonicalStatus(e){let t=e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`)?e.loginMethod:null;t!==this.loginMethod&&this.setLoginMethod(t)}async disconnect(){await this.ensureInitialized(),await this.postRequestAndWait({method:`sui_disconnect`,params:[],interactionRequired:!1}),this._accounts=[],this.notifyChange({accounts:[]})}async signPersonalMessage(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.postRequestAndWait({method:`sui_signPersonalMessage`,params:[{message:Array.from(e.message),account:t,chain:e.chain}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to sign message`);return{bytes:n.data.bytes,signature:n.data.signature}}async extractTransferAddresses(e,t=!1){try{let{Transaction:n}=await import(`@mysten/sui/transactions`),r=(t?n.fromKind(e):n.from(e)).getData(),i=[];for(let e of r.commands){if(e.$kind!==`TransferObjects`)continue;let t=e.TransferObjects.address;if(t.$kind!==`Input`)continue;let n=t.Input,a=r.inputs[n];if(!a||a.$kind!==`Pure`)continue;let o=Uint8Array.from(atob(a.Pure.bytes),e=>e.charCodeAt(0));if(o.length!==32)continue;let s=`0x`+Array.from(o).map(e=>e.toString(16).padStart(2,`0`)).join(``);i.push(s)}return i}catch{return[]}}async resolveTransactionBytes(e,t=`sui:mainnet`){if(e instanceof Uint8Array)return{bytes:e,kind:`transaction-data`};if(Array.isArray(e))return{bytes:new Uint8Array(e),kind:`transaction-data`};if(typeof e==`string`)try{return{bytes:Uint8Array.from(atob(e),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{throw Error(`Transaction string must be base64 encoded bytes. If you have a serialized transaction JSON, please build it to bytes first.`)}else if(e&&typeof e==`object`){if(typeof e.build==`function`)try{let{SuiJsonRpcClient:n}=await import(`@mysten/sui/jsonRpc`),r=S(t),i=new n({url:x(t),network:r});return{bytes:await e.build({client:i,onlyTransactionKind:!0}),kind:`transaction-kind`}}catch(e){throw console.warn(`[SuiWallet] Failed to build transaction object:`,e),Error(`Failed to build transaction: ${e instanceof Error?e.message:String(e)}`)}if(typeof e.serialize==`function`)try{let t=await e.serialize();if(typeof t==`string`)return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`};if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] serialize() failed:`,e)}if(typeof e.toJSON==`function`)try{let t=await e.toJSON();if(typeof t==`string`)try{return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{try{let e=JSON.parse(t);if(e.bytes&&typeof e.bytes==`string`)return{bytes:Uint8Array.from(atob(e.bytes),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{}}}catch(e){console.warn(`[SuiWallet] toJSON() failed:`,e)}if(typeof e.getData==`function`)try{let t=e.getData();if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] getData() failed:`,e)}throw Error(`Unsupported transaction format. Keys: ${Object.keys(e).join(`, `)}`)}else throw Error(`Unsupported transaction format: ${typeof e}. Please pass Uint8Array bytes or a Transaction object.`)}async signTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.postRequestAndWait({method:`sui_signTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign transaction`);return{bytes:r.data.bytes,signature:r.data.signature}}async signAndExecuteTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.extractTransferAddresses(n.bytes,n.kind===`transaction-kind`),i=await this.postRequestAndWait({method:`sui_signAndExecuteTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain,options:e.options,requestType:e.requestType,toAddresses:r.length>0?r:void 0}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(i.error)throw Error(i.error.message||`Failed to sign and execute transaction`);return i.data}async switchChain(e){if(await this.ensureInitialized(),!this._chains.includes(e.chain))throw Error(`Chain ${e.chain} is not supported`);let t=await this.postRequestAndWait({method:`sui_switchChain`,params:[e],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to switch chain`);this.notifyChange({chains:this._chains,accounts:this._accounts})}on(e,t){return e===`change`?(this.changeListeners.add(t),()=>{this.changeListeners.delete(t)}):(this.internalEventEmitter.on(e,t),()=>{this.internalEventEmitter.removeListener(e,t)})}removeListener(e,t){if(e===`change`){this.changeListeners.delete(t);return}this.internalEventEmitter.removeListener(e,t)}get features(){return{"standard:connect":{version:`1.0.0`,connect:this.connect.bind(this)},"standard:disconnect":{version:`1.0.0`,disconnect:this.disconnect.bind(this)},"standard:events":{version:`1.0.0`,on:this.on.bind(this)},"sui:signPersonalMessage":{version:`1.1.0`,signPersonalMessage:this.signPersonalMessage.bind(this)},"sui:signTransaction":{version:`2.0.0`,signTransaction:this.signTransaction.bind(this)},"sui:signAndExecuteTransaction":{version:`1.0.0`,signAndExecuteTransaction:this.signAndExecuteTransaction.bind(this)},"sui:signTransactionBlock":{version:`2.0.0`,signTransactionBlock:this.signTransactionBlock.bind(this)},"sui:signAndExecuteTransactionBlock":{version:`1.0.0`,signAndExecuteTransactionBlock:this.signAndExecuteTransactionBlock.bind(this)},"sui:switchChain":{version:`1.0.0`,switchChain:this.switchChain.bind(this)}}}async signTransactionBlock(e){return this.signTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain})}async signAndExecuteTransactionBlock(e){return this.signAndExecuteTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,options:e.options,requestType:e.requestType})}async requestPermissionToken(t){await this.ensureInitialized();let n=await this.postRequestAndWait({method:e.waap_requestPermissionToken,params:[t],interactionRequired:!0});if(n.error)throw Error(n.error.message||`Failed to request permission token`);return n.data}async getPermissionTokenStatus(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.waap_getPermissionTokenStatus,params:[t],interactionRequired:!1})).data}async clearPermissionToken(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.waap_clearPermissionToken,params:[t],interactionRequired:!1})).data}async requestEmail(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.silk_requestEmail,params:[],interactionRequired:!0});if(t.error)throw Error(t.error.message||`Failed to request email`);return t.data}async postRequestAndWait(t){let r;try{t.interactionRequired&&d({layout:t.method===e.login?`auth`:`signing`}),r=await this.walletMessageManager.postSilkRequest({method:t.method,params:t.params,interactionRequired:t.interactionRequired});let n=await m({eventEmitter:this.internalEventEmitter,id:r,method:t.method,interactionRequired:t.interactionRequired,signal:t.signal,timeoutMs:t.timeoutMs,onCancel:()=>{this.walletMessageManager.cancelSilkRequest(r,t.method),t.interactionRequired&&s()}});if(n.error)throw Error(n.error.message);return n}catch(e){throw t.interactionRequired&&r===void 0&&s(),n(e,{chain:`sui`,method:String(t.method),requestId:r})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function w(e,t,n=!0){let r=()=>(v(e),h(t).contentWindow),i=e.deferIframe===!1,o=e.deferIframe===void 0,c=i?r():null;if(i&&!c)throw Error(`Failed to create WaaP iframe`);let l=new C(c,e,r,{...e,chains:[`sui`]});l.setAccountMode(t),n&&i&&l.preload().catch(()=>void 0);let u=l.destroy.bind(l);if(l.destroy=()=>{u(),a()},n&&o){let e=f(l),t=l.destroy.bind(l);l.destroy=()=>{e(),t()}}return l.ui.on(`show_modal`,()=>{d(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=`none`})}),l.ui.on(`hide_modal`,()=>{s(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=``})}),l}var T=class{constructor(t,n={},r,a=n){this.lastKnownConversion=`pending`,this.name=`WaaP`,this.version=`1.0.0`,this.icon=`data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiByeD0iMTYiIGZpbGw9IiMxMTE4MmMiLz48cGF0aCBkPSJNMTYgNDhoMzJMMzIgMTZ6IiBmaWxsPSIjN2NkNGZmIi8+PC9zdmc+`,this._accounts=[],this.accountMode=`tap`,this.loginMethod=null,this._chains=[`solana:mainnet`,`solana:devnet`,`solana:testnet`],this.internalEventEmitter=new y,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new l(t,_(n)),this.ensureIframe=r,this.iframeMounted=!r,this.initializerOptions=a,this.uiMessageManager=new i,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:t=>{t.method===e.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:async()=>{try{let e=await this.refreshAccounts();this.notifyChange({accounts:e.accounts})}catch(e){console.error(`Failed to refresh Solana accounts:`,e),this._accounts=[],this.notifyChange({accounts:[]})}}})}destroy(){this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.changeListeners.clear(),this._accounts=[]}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();if(!e)throw Error(`Failed to create WaaP iframe`);this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e)}async preload(){if(!this.ensureIframe)return;this.ensureIframeMounted();let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=r(e,()=>this.selectAccountMode(this.accountMode,this.initializerOptions));try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async ensureInitialized(){await this.preload()}get chains(){return this._chains}get accounts(){return this._accounts}get features(){return{"standard:connect":{version:`1.0.0`,connect:this.connect.bind(this)},"standard:disconnect":{version:`1.0.0`,disconnect:this.disconnect.bind(this)},"standard:events":{version:`1.0.0`,on:this.on.bind(this)},"solana:signMessage":{version:`1.1.0`,signMessage:this.signStandardMessages.bind(this)},"solana:signTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0],signTransaction:this.signStandardTransactions.bind(this)},"solana:signAndSendTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0],signAndSendTransaction:this.signAndSendStandardTransactions.bind(this)}}}get ui(){return this.uiMessageManager}getAccountStatus(){return{authenticated:this.loginMethod!==null,loginMethod:this.loginMethod,activeMode:this.loginMethod?this.accountMode:null,mode:this.accountMode,conversion:this.loginMethod?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this._accounts[0]?{solana:this._accounts[0].address}:{}}}get session(){return{login:()=>this.login(),logout:()=>this.logout(),getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.waap_getAccountStatus,params:[],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to read WaaP status`);let n=t.data;return this.syncLoginMethodFromCanonicalStatus(n),n?.conversion&&(this.lastKnownConversion=n.conversion),n}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(t,n={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:e.set_signing_mode,params:[c(t,n)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let t=await this.restoreSession();if(t)return t;let n=(await this.postRequestAndWait({method:e.login,params:[],interactionRequired:!0})).data;return n!==`waap`&&n!==`human`&&n!==`injected`&&n!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=n,n)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:e.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async refreshAccounts(){try{await this.ensureInitialized();let e=await this.postRequestAndWait({method:`solana_connect`,params:[{silent:!0}],interactionRequired:!1});if(e.error)return this._accounts=[],{accounts:[]};let t=this.normalizeAccounts(e.data?.accounts||[]);return this._accounts=t,{accounts:this._accounts}}catch{return this._accounts=[],{accounts:[]}}}normalizeAccounts(e){return e.map(e=>({address:e.address,publicKey:e.publicKey instanceof Uint8Array?e.publicKey:new Uint8Array(e.publicKey??[]),chains:e.chains??this._chains,features:e.features??[]}))}async connect(e){if(!this.loginMethod)throw new g(`not_authenticated`,`Not authenticated: call login() before connect().`,{operation:{chain:`solana`,method:`solana_connect`}});await this.ensureInitialized();let t=await this.postRequestAndWait({method:`solana_connect`,params:[e||{}],interactionRequired:!e?.silent,signal:e?.signal,timeoutMs:e?.timeoutMs});if(t.error)throw Error(t.error.message||`Failed to connect`);let n=this.normalizeAccounts(t.data?.accounts||[]);return this._accounts=n,this.notifyChange({accounts:this._accounts}),e?.silent||this.internalEventEmitter.emit(`connect`),this.internalEventEmitter.emit(`accountsChanged`,this._accounts.map(e=>e.address)),{accounts:this._accounts}}async restoreSession(){try{let e=await this.getCanonicalAccountStatus();if(e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`))return this.loginMethod=e.loginMethod,e.loginMethod}catch{}return null}syncLoginMethodFromCanonicalStatus(e){let t=e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`)?e.loginMethod:null;t!==this.loginMethod&&this.setLoginMethod(t)}async disconnect(){await this.ensureInitialized(),await this.postRequestAndWait({method:`solana_disconnect`,params:[],interactionRequired:!1}),this._accounts=[],this.notifyChange({accounts:[]})}async signMessage(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.postRequestAndWait({method:`solana_signMessage`,params:[{message:Array.from(e.message),account:t}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to sign message`);return{signedMessage:new Uint8Array(n.data.signedMessage),signature:new Uint8Array(n.data.signature)}}async signTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=this.resolveTransactionBytes(e.transaction),r=await this.postRequestAndWait({method:`solana_signTransaction`,params:[{transaction:Array.from(n),account:t,chain:e.chain,withPT:e.withPT}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign transaction`);return{signedTransaction:new Uint8Array(r.data.signedTransaction),signature:new Uint8Array(r.data.signature)}}async signAndSendTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=this.resolveTransactionBytes(e.transaction),r=await this.postRequestAndWait({method:`solana_signAndSendTransaction`,params:[{transaction:Array.from(n),account:t,chain:e.chain,options:e.options,withPT:e.withPT}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign and send transaction`);return{signature:r.data.signature}}async signStandardMessages(...e){let t=[];for(let n of e){let e=await this.signMessage({account:n.account,message:n.message});t.push({...e,signatureType:`ed25519`})}return t}async signStandardTransactions(...e){let t=[];for(let n of e){let e=await this.signTransaction({account:n.account,transaction:n.transaction,chain:this.asSupportedChain(n.chain)});t.push({signedTransaction:e.signedTransaction})}return t}async signAndSendStandardTransactions(...e){let t=[];for(let n of e){let e=await this.signAndSendTransaction({account:n.account,transaction:n.transaction,chain:this.asSupportedChain(n.chain),options:this.broadcastOptions(n.options)});t.push({signature:E(e.signature)})}return t}asSupportedChain(e){if(e!==void 0){if(this._chains.includes(e))return e;throw new g(`unsupported_input`,`Unsupported Solana Wallet Standard chain: ${e}`,{operation:{chain:`solana`,method:`wallet_standard`}})}}broadcastOptions(e){if(e?.preflightCommitment!==void 0||e?.minContextSlot!==void 0||e?.commitment!==void 0)throw new g(`unsupported_input`,`WaaP does not support Wallet Standard RPC commitment options; configure the dapp RPC instead.`,{operation:{chain:`solana`,method:`wallet_standard`}});return e?{skipPreflight:e.skipPreflight,maxRetries:e.maxRetries}:void 0}async requestPermissionToken(t){await this.ensureInitialized();let n=await this.postRequestAndWait({method:e.waap_requestPermissionToken,params:[t],interactionRequired:!0});if(n.error)throw Error(n.error.message||`Failed to request permission token`);return n.data}async getPermissionTokenStatus(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.waap_getPermissionTokenStatus,params:[t],interactionRequired:!1})).data}async clearPermissionToken(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.waap_clearPermissionToken,params:[t],interactionRequired:!1})).data}resolveTransactionBytes(e){if(e instanceof Uint8Array)return e;if(Array.isArray(e))return new Uint8Array(e);if(e&&typeof e.serialize==`function`){let t=e.serialize();return t instanceof Uint8Array?t:new Uint8Array(t)}throw Error(`Unsupported transaction format. Pass serialized bytes or a @solana/web3.js Transaction.`)}on(e,t){return e===`change`?(this.changeListeners.add(t),()=>{this.changeListeners.delete(t)}):(this.internalEventEmitter.on(e,t),()=>{this.internalEventEmitter.removeListener(e,t)})}removeListener(e,t){if(e===`change`){this.changeListeners.delete(t);return}this.internalEventEmitter.removeListener(e,t)}async postRequestAndWait(t){let r;try{t.interactionRequired&&d({layout:t.method===e.login?`auth`:`signing`}),r=await this.walletMessageManager.postSilkRequest({method:t.method,params:t.params,interactionRequired:t.interactionRequired});let n=await m({eventEmitter:this.internalEventEmitter,id:r,method:t.method,interactionRequired:t.interactionRequired,signal:t.signal,timeoutMs:t.timeoutMs,onCancel:()=>{this.walletMessageManager.cancelSilkRequest(r,t.method),t.interactionRequired&&s()}});if(n.error)throw Error(n.error.message);return n}catch(e){throw t.interactionRequired&&r===void 0&&s(),n(e,{chain:`solana`,method:String(t.method),requestId:r})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function E(e){let t=[];for(let n of e){let e=`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`.indexOf(n);if(e<0)throw Error(`Invalid base58 transaction signature`);for(let n=0;n<t.length;n+=1)e+=t[n]*58,t[n]=e&255,e>>=8;for(;e>0;)t.push(e&255),e>>=8}let n=0;for(;n<e.length&&e[n]===`1`;)n+=1;return new Uint8Array([...Array(n).fill(0),...t.reverse()])}function D(e={}){let t=()=>(v(e),h(`tap`).contentWindow),n=e.deferIframe===!1,r=e.deferIframe===void 0,i=n?t():null;if(n&&!i)throw Error(`Failed to create WaaP iframe`);let o=new T(i,e,t,{...e,chains:[`solana`]});n&&o.preload().catch(()=>void 0);let c=o.destroy.bind(o);if(o.destroy=()=>{c(),a()},r){let e=f(o),t=o.destroy.bind(o);o.destroy=()=>{e(),t()}}return o.ui.on(`show_modal`,()=>{d()}),o.ui.on(`hide_modal`,()=>{s()}),o}function O(e={}){if(`chains`in e)throw Error("initWaaP accepts one `chain`; use initWaaPMulti({ chains }) for TAP.");switch(e.chain){case`sui`:return w(e,`tap`);case`solana`:return D(e);default:return p(e)}}const k=[`evm`,`sui`,`solana`],A=[`evm`,`sui`,`solana`];function j(n={}){let r=Array.from(new Set(n.chains??k));if(r.length===0)throw Error(`initWaaPSquid requires at least one chain facade`);if(r.some(e=>!k.includes(e)))throw Error(`initWaaPSquid received an unsupported chain facade`);let i=r.includes(`evm`),s=r.includes(`sui`),c=r.includes(`solana`),l=u({referralCode:n.referralCode,config:n.config,project:n.project,environment:n.environment,walletOrigin:n.walletOrigin,useStaging:n.useStaging,walletConnectProjectId:n.walletConnectProjectId,asyncTxs:n.asyncTxs,deferIframe:n.deferIframe,sessionProtection:n.sessionProtection},`squid`,!1,r,i),d=s?w(n,`squid`,!1):void 0,p=()=>(v(n),h(`squid`).contentWindow),m=c?new T(n.deferIframe===!1?p():null,{useStaging:n.useStaging,environment:n.environment,walletOrigin:n.walletOrigin,referralCode:n.referralCode,project:n.project,config:n.config,deferIframe:n.deferIframe,sessionProtection:n.sessionProtection},p,{...n,chains:[`solana`]}):void 0;m?.setAccountMode(`squid`);let _;n.deferIframe===!1?l.preload().catch(()=>void 0):n.deferIframe===void 0&&(_=f(l));let y={state:`absent`},b=null,x=0,S=()=>{b=null,y={state:`absent`}},C=e=>!e.lifecycleId||e.lifecycleId===b,E=()=>y.state===`active`;l.on(t.squidPending,e=>{if(!C(e))return;let t=e?.transactionDigest;y={state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e?.message?{message:e.message}:{}}}),l.on(t.squidReady,e=>{C(e)&&(y={state:`active`})}),l.on(t.squidFailed,e=>{C(e)&&(y={state:`failed`,...e?.error?{message:e.error}:{}},b=null)});let D=e=>{if(l.getLoginMethod()===null)throw new g(`not_authenticated`,`Not authenticated: call login() before connecting or signing.`,{operation:{chain:e,method:`connect`}});if(!E())throw new g(`not_connected`,`Squid is not ready: call onboard() after login before connecting or signing.`)},O=l.request.bind(l);if(l.request=async e=>([`eth_requestAccounts`,`eth_accounts`,`eth_sendTransaction`,`eth_signTransaction`,`personal_sign`,`eth_signTypedData_v4`].includes(e.method)&&D(`evm`),O(e)),d){let e=d.connect.bind(d);d.connect=async t=>(D(`sui`),e(t))}if(m){let e=m.connect.bind(m);m.connect=async t=>(D(`solana`),e(t))}let A=async()=>{if(l.getLoginMethod()===null)throw new g(`not_authenticated`,`Not authenticated: call login() before onboarding Squid.`);if(E()||b)return;let t=`squid-${++x}`;b=t,y={state:`provisioning`};try{await l.walletMessageManager.pingIframe(),await o({method:e.enter_lite_mode,params:[window.location.origin,t]},!1,l.walletMessageManager,l.internalEventEmitter)}catch(e){throw b===t&&(b=null,y={state:`failed`,message:e instanceof Error?e.message:String(e)}),e}},j=()=>({...y}),M=e=>{if(y.state===`active`||!e.authenticated||e.activeMode!==`squid`||!e.squid)return;let n={...b?{lifecycleId:b}:{},evm:e.squid.sqd1.evm,sui:e.squid.sqd2.sui,solana:e.squid.sqd2.solana};y={state:`active`},b=null,l.emit(t.squidReady,n)},N=async()=>(await A(),j()),P=l.login.bind(l),F=async e=>{let t=await P(e);return d?.setLoginMethod(t),m?.setLoginMethod(t),(t?await l.session.getAccountStatus().catch(()=>null):null)?.squid&&(await l.reassertIframeAccountMode().catch(()=>void 0),await A()),t&&l.emit(`connect`),t},I=l.logout.bind(l),L=async()=>{await I(),d?.setLoginMethod(null),m?.setLoginMethod(null),S()},R;R={login:F,logout:L,getLoginMethod:()=>l.getLoginMethod(),getAccountStatus:async()=>{let e=await l.session.getAccountStatus();return M(e),e},getSquidStatus:j,on:(e,t)=>(l.on(e,t),R),removeListener:(e,t)=>(l.removeListener(e,t),R)},l.login=R.login,l.logout=R.logout,d&&(d.login=()=>R.login(),d.logout=()=>R.logout()),m&&(m.login=()=>R.login(),m.logout=()=>R.logout());let z={onboard:A,squid:{onboard:A,getStatus:j,onboardWithStatus:N},getSquidStatus:j,session:R,getAccountStatus:()=>{let e=l.getAccountStatus(),t=d?.getAccountStatus(),n=m?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`squid`:null,mode:`squid`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},preload:()=>l.preload(),destroy:()=>{_?.(),S(),l.destroy(),d?.destroy(),m?.destroy(),a()}};return i&&Object.assign(z,{evm:l,ethereum:l}),d&&Object.assign(z,{sui:d}),m&&Object.assign(z,{solana:m}),k.every(e=>r.includes(e))&&Object.assign(z,{auth:l}),z}function M(e){let t=Array.from(new Set(e.chains));if(t.length===0)throw Error(`initWaaPMulti requires at least one chain facade`);if(t.some(e=>!A.includes(e)))throw Error(`initWaaPMulti received an unsupported chain facade`);let n=t.includes(`evm`),r=t.includes(`sui`),i=t.includes(`solana`),o=u({referralCode:e.referralCode,config:e.config,project:e.project,environment:e.environment,walletOrigin:e.walletOrigin,useStaging:e.useStaging,walletConnectProjectId:e.walletConnectProjectId,asyncTxs:e.asyncTxs,deferIframe:e.deferIframe,sessionProtection:e.sessionProtection},`tap`,!1,t,n),s=r?w({...e,config:e.config},`tap`,!1):void 0,c=()=>(v(e),h(`tap`).contentWindow),l=i?new T(e.deferIframe===!1?c():null,{useStaging:e.useStaging,environment:e.environment,walletOrigin:e.walletOrigin,referralCode:e.referralCode,project:e.project,config:e.config,deferIframe:e.deferIframe,sessionProtection:e.sessionProtection},c,{...e,chains:[`solana`]}):void 0;l?.setAccountMode(`tap`);let d;e.deferIframe===!1?o.preload().catch(()=>void 0):e.deferIframe===void 0&&(d=f(o));let p=o.login.bind(o),m=async e=>{let t=await p(e);return s?.setLoginMethod(t),l?.setLoginMethod(t),t&&o.emit(`connect`),t},g=o.logout.bind(o),_=async()=>{await g(),s?.setLoginMethod(null),l?.setLoginMethod(null)},y;y={login:m,logout:_,getLoginMethod:()=>o.getLoginMethod(),getAccountStatus:()=>o.session.getAccountStatus(),on:(e,t)=>(o.on(e,t),y),removeListener:(e,t)=>(o.removeListener(e,t),y)},o.login=y.login,o.logout=y.logout,s&&(s.login=()=>y.login(),s.logout=()=>y.logout()),l&&(l.login=()=>y.login(),l.logout=()=>y.logout());let b=()=>{let e=o.getAccountStatus(),t=s?.getAccountStatus(),n=l?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`tap`:null,mode:`tap`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},x=o.destroy.bind(o),S=s?.destroy.bind(s),C=l?.destroy.bind(l),E=()=>{d?.(),x(),S?.(),C?.(),a()},D={session:y,getAccountStatus:b,preload:()=>o.preload(),destroy:E};return n&&(o.destroy=E,Object.assign(D,{evm:o,ethereum:o})),s&&(s.destroy=E,Object.assign(D,{sui:s})),l&&(l.destroy=E,Object.assign(D,{solana:l})),D}function N(e={}){return console.warn("[WaaP SDK] `initWaaPSui()` is deprecated. Use `initWaaP({ chain: 'sui' })` instead."),O({...e,chain:`sui`})}function P(e={}){return O({...e,chain:`solana`})}function F(e={}){return M({...e,chains:e.chains??A})}export{N as a,C as c,j as i,M as n,F as o,P as r,T as s,O as t};
|