@human.tech/waap-sdk 2.1.0 → 2.2.0-staging-7f56bf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/.agent/SKILL.md +179 -0
  2. package/CHANGELOG.md +69 -0
  3. package/README.md +264 -94
  4. package/dist/{WaaPError-XLgIXUgh.d.ts → WaaPError-DCJ9WDaR.d.ts} +1 -1
  5. package/dist/{WaaPError-C5nPcaKk.d.mts → WaaPError-DgDAQQKF.d.mts} +1 -1
  6. package/dist/{WalletConnect-G-lbqknM.js → WalletConnect-Dn40Omgo.js} +1 -1
  7. package/dist/{WalletConnect-Deg7_JmH.mjs → WalletConnect-UfxGn2M_.mjs} +1 -1
  8. package/dist/{esm-B4jz8Emb.mjs → esm-BUfmyWbN.mjs} +1 -1
  9. package/dist/esm-DFwVZkjo.js +1 -0
  10. package/dist/evm-BINU4e1N.mjs +2 -0
  11. package/dist/evm-BXkH-I90.js +2 -0
  12. package/dist/evm.d.mts +2 -2
  13. package/dist/evm.d.ts +2 -2
  14. package/dist/evm.js +1 -1
  15. package/dist/evm.mjs +1 -1
  16. package/dist/{index-CdKntlzX.d.mts → index-C0mLQs_a.d.mts} +44 -28
  17. package/dist/{index-CMSufeMa.d.ts → index-DOIss_GK.d.ts} +44 -28
  18. package/dist/index.d.mts +46 -10
  19. package/dist/index.d.ts +46 -10
  20. package/dist/index.js +4 -1
  21. package/dist/index.mjs +4 -1
  22. package/dist/{initializerContext-0oKHzvQG.d.ts → initializerContext-DIrqEE6B.d.ts} +1 -2
  23. package/dist/{initializerContext-C39PUnGi.d.mts → initializerContext-_YjbVTiL.d.mts} +1 -2
  24. package/dist/react.d.mts +1 -1
  25. package/dist/react.d.ts +1 -1
  26. package/dist/react.js +1 -1
  27. package/dist/react.mjs +1 -1
  28. package/dist/{register-QjrsOe7r.d.mts → register-9bEe9ATz.d.mts} +3 -3
  29. package/dist/register-BXqcetNF.mjs +1 -0
  30. package/dist/{register-CNgjA0yl.mjs → register-Bg4jW_HM.mjs} +1 -1
  31. package/dist/{register-4Afr2Jx8.js → register-CRhge1wE.js} +1 -1
  32. package/dist/{register-CxsUwgKJ.d.ts → register-Mb1D_xW4.d.ts} +5 -17
  33. package/dist/{register-CBlzg5ln.d.ts → register-PWKDsSRv.d.ts} +3 -3
  34. package/dist/{register-LmdJdvzn.d.mts → register-XzDVa7r8.d.mts} +5 -17
  35. package/dist/{register-ozKwGWOb.js → register-oYvnB41B.js} +1 -1
  36. package/dist/solana.d.mts +4 -4
  37. package/dist/solana.d.ts +4 -4
  38. package/dist/solana.js +1 -1
  39. package/dist/solana.mjs +1 -1
  40. package/dist/sui.d.mts +4 -4
  41. package/dist/sui.d.ts +4 -4
  42. package/dist/sui.js +1 -1
  43. package/dist/sui.mjs +1 -1
  44. package/dist/{types-DexmJNke.d.mts → types-BmCqyQtu.d.mts} +36 -15
  45. package/dist/{types-DexmJNke.d.ts → types-BmCqyQtu.d.ts} +36 -15
  46. package/dist/ui-Co16lVSp.mjs +1 -0
  47. package/dist/ui-lJmATPTt.js +1 -0
  48. package/dist/{useWaapAuth-Z_ONicYr.js → useWaapAuth-BPvve-_3.js} +1 -1
  49. package/dist/{useWaapAuth-DHIeb4yc.mjs → useWaapAuth-BcmVGb-D.mjs} +1 -1
  50. package/dist/{useWaapAuth-BrqAhAn2.d.ts → useWaapAuth-DgYO5KxO.d.ts} +2 -2
  51. package/dist/{useWaapAuth-C5I7QqyW.d.mts → useWaapAuth-vJAk2n_I.d.mts} +2 -2
  52. package/dist/walletconnect.js +1 -1
  53. package/dist/walletconnect.mjs +1 -1
  54. package/package.json +4 -2
  55. package/dist/esm-D5fDQenf.js +0 -1
  56. package/dist/evm-Ch-aWWat.js +0 -1
  57. package/dist/evm-DHVrAmEw.mjs +0 -1
  58. package/dist/register-DIZnKDHF.mjs +0 -1
  59. package/dist/ui-16QpbEyG.js +0 -1
  60. package/dist/ui-BAYRtDQg.mjs +0 -1
@@ -0,0 +1,2 @@
1
+ const e=require("./esm-DFwVZkjo.js"),t=require("./WalletConnect-Dn40Omgo.js");let n=require("events"),r=require("ethers");var i=class extends Error{constructor(e,t,n={}){super(t),this.name=`WaaPError`,this.code=e,this.operation=n.operation,this.cause=n.cause}};function a(e,t){if(e instanceof i)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`),a=n?.code,o=r.toLowerCase();return new i(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`,r,{cause:e,operation:t})}const o=`waap-wallet`,s=`waap-component-container`,c=typeof window<`u`&&typeof document<`u`&&typeof HTMLElement<`u`;let l;c?(l=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=s,this.setAttribute(`data-waap-mounted`,`true`)}disconnectedCallback(){this.removeAttribute(`data-waap-mounted`)}},typeof customElements<`u`&&!customElements.get(o)&&customElements.define(o,l)):l=class{};function u(){return c?!!document.getElementById(s)||!!document.querySelector(o):!1}function d(){return c?document.getElementById(s)||document.querySelector(o):null}const f=`https://staging.waap.xyz`,p={development:`http://localhost:3000`,staging:f,production:`https://waap.xyz`},m=e=>e===`localhost`||e===`127.0.0.1`||e===`[::1]`;function h(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:`&&m(t.hostname)))throw Error(`WaaP walletOrigin must use HTTPS unless it is a loopback host`);return t.origin}function g(e={}){return e.walletOrigin?h(e.walletOrigin):e.environment?h(p[e.environment]):e.useStaging?h(f):h(p.production)}const _=new WeakMap,v=new WeakMap,y=()=>typeof performance<`u`?performance.now():Date.now(),b=e=>({generation:e.generation,navigationStartedAt:e.navigationStartedAt,loadedAt:e.loadedAt}),x=e=>{let t=e.contentWindow;if(!t)return;let n=v.get(e);if(n&&_.get(t)===n)return;n?.cleanup(),n&&(v.delete(e),_.get(t)===n&&_.delete(t));let r=_.get(t);if(r?.iframe===e)return;r?.cleanup(),r&&v.delete(r.iframe);let i={iframe:e,generation:0,navigationStartedAt:y(),loadedAt:null,listeners:new Set,cleanup:()=>{}},a=()=>{i.generation+=1,i.loadedAt=y();let e=b(i);for(let t of Array.from(i.listeners))t(e)};i.cleanup=()=>{e.removeEventListener(`load`,a),i.listeners.clear()},e.addEventListener(`load`,a),_.set(t,i),v.set(e,i)},ee=e=>{let t=v.get(e);if(t){t.cleanup(),v.delete(e);let n=e.contentWindow;n&&_.get(n)===t&&_.delete(n);return}let n=e.contentWindow;if(!n)return;let r=_.get(n);!r||r.iframe!==e||(r.cleanup(),_.delete(n))},S=e=>{let t=_.get(e);return t?b(t):null},te=(e,t)=>{let n=_.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(b(n)):Promise.resolve(null)},ne=(e,t)=>{let n=_.get(e);return n?(n.listeners.add(t),()=>n.listeners.delete(t)):()=>{}},re=`waap-wallet-loading-styles`,C=`waap-iframe-visual-ready`,w=typeof window<`u`&&typeof document<`u`,ie=()=>{if(!w||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={})=>g(e),T=()=>w?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,E=()=>w?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,D=()=>w?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,O=(e=D())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},oe=(e=D())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},k=(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=D();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(w)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),x(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=E();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(C,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(C,l)};return se(t,d),d},he=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,k(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<=O(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(C,{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=E();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},_e=e=>{let t=D();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=d();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),x(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),x(i)},A=(e={})=>{if(!w)return;ie();let t=ae(e),n=e.config?.styles?.darkMode===!0,r=D();r&&ue(r,n),u()?ve(t,n):ye(t,n)},j=()=>{if(!w)return;Ne();let e=D(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&ee(e);let n=E(),r=T();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let M=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 N(new Uint8Array(e))}return M+=1,N(new TextEncoder().encode(`${t}:${M}:${Math.random()}:${JSON.stringify(e)}`)).padEnd(64,`0`).slice(0,64)}function N(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}const P=new WeakMap,F=(e,t)=>{let n=P.get(e);if(n)return n;let r=t();return P.set(e,r),r.catch(()=>{P.get(e)===r&&P.delete(e)}),r},xe=e=>{P.delete(e)},I=(e,t={})=>({schemaVersion:1,accountMode:e,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,Se=(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=D();i?.contentWindow===e&&k(i,null),r?.(t)},Ce=()=>typeof performance<`u`?performance.now():Date.now();let we=null;const Te=()=>we,Ee=(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}))},De=()=>{R||typeof window>`u`||(R=!0,z=e=>{for(let{manager:t,config:n}of Array.from(L))Ee(e,t,n)},window.addEventListener(`message`,z))},Oe=()=>{L.size>0||!R||!z||typeof window>`u`||(window.removeEventListener(`message`,z),z=void 0,R=!1)};var ke=class{constructor(e,t){this.iframeWindow=null,this.unregisterListeners=new Set,this.terminalResponseDeduper=Se(),this.unsubscribeIframeNavigation=null,this.disposed=!1,this.iframeWindow=e,this.walletOrigin=typeof t==`string`?t:g(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)&&(xe(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?S(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 we=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=S(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=S(t)?.generation??r?.generation??null,n.readyAt=Ce(),n.visualReadySupported=a.data?.capabilities?.visualReady===1;let e=D();e?.contentWindow===t&&k(e,n.visualReadySupported),f(),i()}},s=()=>{try{n.readyAttempts+=1,this.postReadyNotification()}catch(e){f(),a(e)}};n.readyPingStartedAt=Ce();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 be(i);return this.iframeWindow.postMessage({...i,id:a},this.walletOrigin),a}addListener(e){if(this.disposed)throw Error(`Wallet message manager is disposed`);De();let t={manager:this,config:e};L.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(L.delete(t),Oe())};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{}})},Ae=e=>(W.add(e),()=>W.delete(e));var je=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(C,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=E();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=O(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:O(this.iframe)}),K({phase:`modal_hidden`,at:t,visualRevision:O(this.iframe)});let n=E();if(n&&delete n.dataset.waapSizeLocked,u()){n&&(n.style.display=`none`);return}let r=T();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(C,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(u()){let t=d();return t&&e.parentElement!==t&&t.appendChild(e),`component`}let t=T();return t||(t=pe(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=T();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=O(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=E();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 Me=()=>{let e=D();return e?(q&&!q.isFor(e)&&(q.dispose(),q=void 0),q??=new je(e),q):null},J=e=>{Me()?.show(e)},Y=()=>{Me()?.hide()},Ne=()=>{q?.dispose(),q=void 0},Pe=()=>{let e=D(),t=e?.contentWindow?S(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:O(e),visualReadyAt:Number.isFinite(r)?r:null,modalPhase:n?.modalPhase??`idle`,modalRequestedAt:n?.modalRequestedAt??null,modalVisibleAt:n?.modalVisibleAt??null,usedVisualFallback:n?.usedVisualFallback??!1,handshake:Te()}},Fe=new Set([e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.personal_sign,e.t.eth_signTypedData_v4]),Ie=e=>Fe.has(e);function Le(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(t,n,r,i,a){let o=t.method,s=t.params,{timeoutMs:c,signal:l,...u}=a??{};n&&J({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 Le({eventEmitter:i,id:d,method:o,interactionRequired:n,timeoutMs:c,signal:l,onCancel:()=>{r.cancelSilkRequest(d,o),n&&Y()}});if(n&&Y(),e.error)throw e.error;return e.data}catch(e){throw n&&d===void 0&&Y(),e}}const Re=(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 ze=function(e){return e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e}(ze||{}),Z=class extends n.EventEmitter{constructor(){super()}};function Be(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 Ve(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 He={styles:{darkMode:!1}},Q=[`waap`,`human`,`injected`,`walletconnect`],Ue=[e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.eth_signTypedData_v4,e.t.personal_sign];function We(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 Ge=class extends n.EventEmitter{constructor(t,r,i,a,o,s=!1,c=!1,l,u=[`evm`]){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.uiMessageManager=new Z,this.walletMessageManager=new ke(t,o),this.config={...He,...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),getLinkedAddresses:this.getLinkedAddresses.bind(this),linkAddress:this.linkAddress.bind(this),unlinkAddress:this.unlinkAddress.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=F(t,async()=>{await this.walletMessageManager.pingIframe(),await X({method:e.r.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains})]},!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:e.r.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains})]},!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 X({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(Ue.includes(t.method)&&!(this.getLoginMethod()!==null||await this.restorePersistedWaaPSession()!==null))return Promise.reject(new i(`not_authenticated`,`Not authenticated: call login() before signing.`,{operation:{chain:`evm`,method:t.method}}));if(Ve(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 r=(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=r||t.withPT||t.timeoutMs!==void 0||t.signal?this.legacyAsyncSigning?{asyncSigning:r||void 0,withPT:t.withPT,timeoutMs:t.timeoutMs,signal:t.signal}:{async:r,withPT:t.withPT,timeoutMs:t.timeoutMs,signal:t.signal}:void 0,o=await X(t,Ie(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&&Be(a)?`MetaMask`:`Browser Wallet`,s=We(await X({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 X({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}j()}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 X({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 X({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 X({method:e.r.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await X({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 X({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),X({method:e.r.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(t){await this.ensureInitialized();let n={...t,walletMode:this.accountMode};return X({method:e.r.waap_requestPermissionToken,params:[n]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(t){return await this.ensureInitialized(),await X({method:e.r.waap_getPermissionTokenStatus,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(t){return await this.ensureInitialized(),await X({method:e.r.waap_clearPermissionToken,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(t){return await this.ensureInitialized(),X({method:e.r.silk_requestSbt,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}async getLinkedAddresses(){return await this.walletMessageManager.pingIframe(),(await X({method:e.r.waap_getLinkedAddresses,params:[]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}async linkAddress(n){if(typeof window>`u`)throw Error(`linkAddress requires a browser environment`);this.walletConnectProvider||await this.initializeWalletConnect(),t.t.isConnected()||(await this.walletConnectProvider.open({view:`Connect`}),await t.t.listenToAccountChangeEvent());let r=t.t.getWalletProvider();if(!r)throw Error(`No wallet provider available after connection`);let i=(await r.request({method:`eth_accounts`}))[0];if(!i||i.toLowerCase()!==n.toLowerCase())throw Error(`Connected wallet account ${i??`(none)`} does not match requested address ${n}`);await this.walletMessageManager.pingIframe();let a=await X({method:e.r.waap_getLinkAddressNonce,params:[]},!1,this.walletMessageManager,this.internalEventEmitter),o=Ke({domain:window.location.host,address:n,uri:window.location.origin,nonce:a.nonce,issuedAt:new Date().toISOString()}),s=await r.request({method:`personal_sign`,params:[o,n]});return(await X({method:e.r.waap_linkAddress,params:[{message:o,signature:s}]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}async unlinkAddress(t){return await this.walletMessageManager.pingIframe(),(await X({method:e.r.waap_unlinkAddress,params:[{address:t}]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}};function Ke(e){let t=(0,r.getAddress)(e.address);return`${`${e.domain} wants you to sign in with your Ethereum account:\n${t}`}\n\nLink this wallet to your Human Wallet account.\n\n${[`URI: ${e.uri}`,`Version: 1`,`Chain ID: 1`,`Nonce: ${e.nonce}`,`Issued At: ${e.issuedAt}`].join(`
2
+ `)}`}const $=(e,n,r=!0,i=[`evm`],a=!0)=>{let{referralCode:o,config:s,project:c,asyncTxs:l,asyncSigning:u,deferIframe:d}=e,f=g(e),p=!!u&&!l;e.walletConnectProjectId&&t.t.setProjectId(e.walletConnectProjectId),u&&!l&&console.warn("[WaaP SDK] `asyncSigning` is deprecated. Use `asyncTxs` instead.");let m=typeof window>`u`||typeof document>`u`,h=()=>typeof window>`u`||typeof document>`u`?null:(A(e),ce(n).contentWindow),_=d===!1&&!m,v=d===void 0&&!m,y=_?h():null;if(_&&!y)throw Error(`WaaP iframe does not exist on page`);let b=new Ge(y,o,s||{},c||{},f,l||u||!1,p,_?void 0:h,i);if(b.setAccountMode(n),!m&&r&&_&&b.initializeIframeContext().catch(()=>void 0),b.uiMessageManager.on(`show_modal`,()=>{J()}),b.uiMessageManager.on(`hide_modal`,()=>{Y()}),!m&&a&&(window.silk=b,window.waap=b),r&&v){let e=Re(b),t=b.destroy.bind(b);b.destroy=()=>{e(),t()}}return b},qe=(e={})=>$(e,`tap`);Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return A}});
package/dist/evm.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { M as WaaPSessionProtection, _ as validateWalletOrigin, a as PermissionTokenQuery, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, f as WaaPLoginOptions, g as resolveWalletOrigin, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, l as SilkProvider, m as WaaPEnvironment, n as InitSilkOptions, o as PermissionTokenStatus, u as WaaPAccountMode } from "./types-DexmJNke.mjs";
2
- import { a as CancelWaaPPreload, c as preloadWaaPOnIdle, d as WaaPIframeLifecyclePhase, f as getWaaPIframeDiagnostics, i as normalizeWaaPError, l as WaaPIframeDiagnostics, n as WaaPErrorCode, o as WaaPIdlePreloadOptions, p as subscribeWaaPIframeLifecycle, r as WaaPOperationMetadata, s as WaaPPreloadTarget, t as WaaPError, u as WaaPIframeLifecycleEvent } from "./WaaPError-C5nPcaKk.mjs";
1
+ import { P as WaaPSessionProtection, _ as validateWalletOrigin, a as PermissionTokenQuery, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, f as WaaPLoginOptions, g as resolveWalletOrigin, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, l as SilkProvider, m as WaaPEnvironment, n as InitSilkOptions, o as PermissionTokenStatus, u as WaaPAccountMode } from "./types-BmCqyQtu.mjs";
2
+ import { a as CancelWaaPPreload, c as preloadWaaPOnIdle, d as WaaPIframeLifecyclePhase, f as getWaaPIframeDiagnostics, i as normalizeWaaPError, l as WaaPIframeDiagnostics, n as WaaPErrorCode, o as WaaPIdlePreloadOptions, p as subscribeWaaPIframeLifecycle, r as WaaPOperationMetadata, s as WaaPPreloadTarget, t as WaaPError, u as WaaPIframeLifecycleEvent } from "./WaaPError-DgDAQQKF.mjs";
3
3
  //#region src/ui/evm.d.ts
4
4
  /** Initialize the TAP t1 EVM EIP-1193 provider. */
5
5
  declare const initWaaP: (params?: InitSilkOptions) => SilkEthereumProviderInterface;
package/dist/evm.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { M as WaaPSessionProtection, _ as validateWalletOrigin, a as PermissionTokenQuery, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, f as WaaPLoginOptions, g as resolveWalletOrigin, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, l as SilkProvider, m as WaaPEnvironment, n as InitSilkOptions, o as PermissionTokenStatus, u as WaaPAccountMode } from "./types-DexmJNke.js";
2
- import { a as CancelWaaPPreload, c as preloadWaaPOnIdle, d as WaaPIframeLifecyclePhase, f as getWaaPIframeDiagnostics, i as normalizeWaaPError, l as WaaPIframeDiagnostics, n as WaaPErrorCode, o as WaaPIdlePreloadOptions, p as subscribeWaaPIframeLifecycle, r as WaaPOperationMetadata, s as WaaPPreloadTarget, t as WaaPError, u as WaaPIframeLifecycleEvent } from "./WaaPError-XLgIXUgh.js";
1
+ import { P as WaaPSessionProtection, _ as validateWalletOrigin, a as PermissionTokenQuery, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, f as WaaPLoginOptions, g as resolveWalletOrigin, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, l as SilkProvider, m as WaaPEnvironment, n as InitSilkOptions, o as PermissionTokenStatus, u as WaaPAccountMode } from "./types-BmCqyQtu.js";
2
+ import { a as CancelWaaPPreload, c as preloadWaaPOnIdle, d as WaaPIframeLifecyclePhase, f as getWaaPIframeDiagnostics, i as normalizeWaaPError, l as WaaPIframeDiagnostics, n as WaaPErrorCode, o as WaaPIdlePreloadOptions, p as subscribeWaaPIframeLifecycle, r as WaaPOperationMetadata, s as WaaPPreloadTarget, t as WaaPError, u as WaaPIframeLifecycleEvent } from "./WaaPError-DCJ9WDaR.js";
3
3
  //#region src/ui/evm.d.ts
4
4
  /** Initialize the TAP t1 EVM EIP-1193 provider. */
5
5
  declare const initWaaP: (params?: InitSilkOptions) => SilkEthereumProviderInterface;
package/dist/evm.js CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./evm-Ch-aWWat.js");exports.WaaPError=e.w,exports.getWaaPIframeDiagnostics=e.d,exports.initWaaP=e.t,exports.normalizeWaaPError=e.T,exports.preloadWaaPOnIdle=e.s,exports.resolveWalletOrigin=e.x,exports.subscribeWaaPIframeLifecycle=e.m,exports.validateWalletOrigin=e.S;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./evm-BXkH-I90.js");exports.WaaPError=e.w,exports.getWaaPIframeDiagnostics=e.d,exports.initWaaP=e.t,exports.normalizeWaaPError=e.T,exports.preloadWaaPOnIdle=e.s,exports.resolveWalletOrigin=e.x,exports.subscribeWaaPIframeLifecycle=e.m,exports.validateWalletOrigin=e.S;
package/dist/evm.mjs CHANGED
@@ -1 +1 @@
1
- import{S as e,T as t,d as n,m as r,s as i,t as a,w as o,x as s}from"./evm-DHVrAmEw.mjs";export{o as WaaPError,n as getWaaPIframeDiagnostics,a as initWaaP,t as normalizeWaaPError,i as preloadWaaPOnIdle,s as resolveWalletOrigin,r as subscribeWaaPIframeLifecycle,e as validateWalletOrigin};
1
+ import{S as e,T as t,d as n,m as r,s as i,t as a,w as o,x as s}from"./evm-BINU4e1N.mjs";export{o as WaaPError,n as getWaaPIframeDiagnostics,a as initWaaP,t as normalizeWaaPError,i as preloadWaaPOnIdle,s as resolveWalletOrigin,r as subscribeWaaPIframeLifecycle,e as validateWalletOrigin};
@@ -1,4 +1,4 @@
1
- import { C as RequestPermissionTokenResult, M as WaaPSessionProtection, S as RequestPermissionTokenParams, a as PermissionTokenQuery, b as CustomConfig, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, n as InitSilkOptions, o as PermissionTokenStatus, p as WaaPSessionExtension, r as LoginResponse, v as AuthenticationMethod, x as ProjectConfig } from "./types-DexmJNke.mjs";
1
+ import { C as ProjectConfig, T as RequestPermissionTokenResult, a as PermissionTokenQuery, b as CustomConfig, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, n as InitSilkOptions, o as PermissionTokenStatus, p as WaaPSessionExtension, r as LoginResponse, v as AuthenticationMethod, w as RequestPermissionTokenParams } from "./types-BmCqyQtu.mjs";
2
2
  //#region src/lib/sui/types.d.ts
3
3
  /**
4
4
  * Sui chain identifiers.
@@ -67,6 +67,8 @@ interface SuiSignTransactionInput {
67
67
  chain?: SuiChain;
68
68
  signal?: AbortSignal;
69
69
  timeoutMs?: number;
70
+ /** Use a matching permission token when the wallet has one. */
71
+ withPT?: boolean;
70
72
  }
71
73
  /**
72
74
  * Output from sui:signTransaction feature.
@@ -93,6 +95,8 @@ interface SuiSignAndExecuteTransactionInput {
93
95
  requestType?: 'WaitForEffectsCert' | 'WaitForLocalExecution';
94
96
  signal?: AbortSignal;
95
97
  timeoutMs?: number;
98
+ /** Use a matching permission token when the wallet has one. */
99
+ withPT?: boolean;
96
100
  }
97
101
  /**
98
102
  * Output from sui:signAndExecuteTransaction feature.
@@ -131,6 +135,8 @@ interface SuiSignTransactionBlockInput {
131
135
  chain?: SuiChain;
132
136
  signal?: AbortSignal;
133
137
  timeoutMs?: number;
138
+ /** Use a matching permission token when the wallet has one. */
139
+ withPT?: boolean;
134
140
  }
135
141
  /**
136
142
  * Output for legacy sui:signTransactionBlock feature.
@@ -152,6 +158,8 @@ interface SuiSignAndExecuteTransactionBlockInput {
152
158
  requestType?: 'WaitForEffectsCert' | 'WaitForLocalExecution';
153
159
  signal?: AbortSignal;
154
160
  timeoutMs?: number;
161
+ /** Use a matching permission token when the wallet has one. */
162
+ withPT?: boolean;
155
163
  }
156
164
  /**
157
165
  * Output for legacy sui:signAndExecuteTransactionBlock feature.
@@ -327,8 +335,6 @@ interface InitWaaPSuiOptions extends WaaPWalletTargetOptions {
327
335
  project?: ProjectConfig;
328
336
  /** WaaP custom UI configuration */
329
337
  config?: SuiCustomConfig;
330
- /** Wallet session transport; defaults to DPoP, with explicit bearer fallback. */
331
- sessionProtection?: WaaPSessionProtection;
332
338
  /**
333
339
  * Defer iframe navigation until `preload()` or the first wallet operation.
334
340
  * The default warms the iframe at browser idle; pass `false` to mount eagerly.
@@ -471,8 +477,6 @@ interface InitWaaPSolanaOptions extends WaaPWalletTargetOptions {
471
477
  referralCode?: string;
472
478
  project?: ProjectConfig;
473
479
  config?: CustomConfig;
474
- /** Wallet session transport; defaults to DPoP, with explicit bearer fallback. */
475
- sessionProtection?: WaaPSessionProtection;
476
480
  /**
477
481
  * Defer iframe navigation until `preload()` or the first wallet operation.
478
482
  * The default warms the iframe at browser idle; pass `false` to mount eagerly.
@@ -524,10 +528,13 @@ interface WaaPSolanaProviderInterface {
524
528
  /** Chain selected by a direct WaaP initializer. */
525
529
  type WaaPChain = 'evm' | 'sui' | 'solana';
526
530
  /**
527
- * Shared options for the direct WaaP initializers.
531
+ * Options for the direct WaaP initializers.
528
532
  *
529
- * This deliberately has no chain selector so the published `2.0.0`
530
- * `InitWaaPOptions` remains assignable to the legacy EVM overload.
533
+ * Deliberately carries no `chain`. A variable annotated with this type must
534
+ * keep selecting the EVM overload, as it did in the published `2.0.0`; adding
535
+ * an optional `chain: WaaPChain` here would let such a variable hold `'sui'`,
536
+ * so `initWaaP(options)` would widen to a union of every facade. The overloads
537
+ * below intersect their own `chain` literal, which is what discriminates.
531
538
  */
532
539
  interface InitWaaPOptions extends Omit<InitWaaPSuiOptions, 'config'> {
533
540
  /** Shared wallet configuration; EVM may additionally allow `wallet`. */
@@ -539,22 +546,14 @@ interface InitWaaPOptions extends Omit<InitWaaPSuiOptions, 'config'> {
539
546
  /** @deprecated Use `asyncTxs` instead. */
540
547
  asyncSigning?: boolean;
541
548
  }
542
- /**
543
- * `InitWaaPOptions` plus a direct native-chain selector.
544
- *
545
- * Omit `chain` to retain the published EVM EIP-1193 return type.
546
- */
547
- interface InitWaaPChainOptions extends InitWaaPOptions {
548
- chain?: WaaPChain;
549
- }
550
549
  type LegacyInitWaaPEvmOptions = InitWaaPOptions & {
551
550
  chain?: 'evm';
552
551
  };
553
- type LegacyInitWaaPSuiOptions = Omit<InitWaaPChainOptions, 'chain' | 'config'> & {
552
+ type LegacyInitWaaPSuiOptions = Omit<InitWaaPOptions, 'chain' | 'config'> & {
554
553
  chain: 'sui';
555
554
  config?: InitWaaPSuiOptions['config'];
556
555
  };
557
- type LegacyInitWaaPSolanaOptions = InitWaaPChainOptions & {
556
+ type LegacyInitWaaPSolanaOptions = InitWaaPOptions & {
558
557
  chain: 'solana';
559
558
  };
560
559
  /**
@@ -568,7 +567,9 @@ declare function initWaaP(options?: LegacyInitWaaPEvmOptions): SilkEthereumProvi
568
567
  declare function initWaaP(options: LegacyInitWaaPSuiOptions): WaaPSuiWalletInterface;
569
568
  declare function initWaaP(options: LegacyInitWaaPSolanaOptions): WaaPSolanaProviderInterface;
570
569
  /** Accepts a runtime-selected chain when callers cannot preserve a literal. */
571
- declare function initWaaP(options: InitWaaPChainOptions): SilkEthereumProviderInterface | WaaPSuiWalletInterface | WaaPSolanaProviderInterface;
570
+ declare function initWaaP(options: InitWaaPOptions & {
571
+ chain?: WaaPChain;
572
+ }): SilkEthereumProviderInterface | WaaPSuiWalletInterface | WaaPSolanaProviderInterface;
572
573
  /**
573
574
  * Options for the multichain `initWaaPSquid` entry point.
574
575
  *
@@ -583,10 +584,14 @@ declare function initWaaP(options: InitWaaPChainOptions): SilkEthereumProviderIn
583
584
  */
584
585
  interface InitWaaPSquidOptions extends InitWaaPSuiOptions {
585
586
  /**
586
- * Chain facades to expose. Defaults to all three Squid chains; this scopes
587
- * SDK/UI loading, not the current dual-curve Squid provisioning transaction.
587
+ * Chain facades to expose; at least one is required. This scopes SDK/UI
588
+ * loading, not the current dual-curve Squid provisioning transaction.
589
+ *
590
+ * Naming the facades is deliberate rather than defaulting to all three: the
591
+ * default loaded Sui and Solana surfaces for callers that only ever used EVM,
592
+ * and the set a caller wants is not inferable from anything else.
588
593
  */
589
- chains?: readonly WaaPSquidChain[];
594
+ chains: readonly [WaaPSquidChain, ...WaaPSquidChain[]];
590
595
  /** WalletConnect project ID (required only when offering the `wallet` auth method). */
591
596
  walletConnectProjectId?: string;
592
597
  /** Forwarded to the EVM provider: resolve eth_sendTransaction on tx-hash. */
@@ -666,7 +671,13 @@ type WaaPTap<Chains extends readonly WaaPChain[] = typeof ALL_TAP_CHAINS> = {
666
671
  destroy: () => void;
667
672
  } & FacadeFor<Chains, 'evm', {
668
673
  /** EIP-1193 provider (EVM). */ evm: SilkEthereumProviderInterface;
669
- /** @deprecated Use `evm`. */ ethereum: SilkEthereumProviderInterface;
674
+ /**
675
+ * Alias for `evm`, kept because it is what the published integrations
676
+ * use. `evm` is the preferred spelling: it matches the `chains` value
677
+ * that produced the facade, and the facade serves every EVM chain
678
+ * rather than Ethereum specifically.
679
+ */
680
+ ethereum: SilkEthereumProviderInterface;
670
681
  }> & FacadeFor<Chains, 'sui', {
671
682
  sui: WaaPSuiWalletInterface;
672
683
  }> & FacadeFor<Chains, 'solana', {
@@ -713,7 +724,13 @@ type WaaPSquid<Chains extends readonly WaaPSquidChain[] = typeof ALL_SQUID_CHAIN
713
724
  destroy: () => void;
714
725
  } & FacadeFor<Chains, 'evm', {
715
726
  /** EIP-1193 provider (EVM). */ evm: SilkEthereumProviderInterface;
716
- /** @deprecated Use `evm`. */ ethereum: SilkEthereumProviderInterface;
727
+ /**
728
+ * Alias for `evm`, kept because it is what the published integrations
729
+ * use. `evm` is the preferred spelling: it matches the `chains` value
730
+ * that produced the facade, and the facade serves every EVM chain
731
+ * rather than Ethereum specifically.
732
+ */
733
+ ethereum: SilkEthereumProviderInterface;
717
734
  }> & FacadeFor<Chains, 'sui', {
718
735
  sui: WaaPSuiWalletInterface;
719
736
  }> & FacadeFor<Chains, 'solana', {
@@ -729,16 +746,15 @@ type WaaPSquid<Chains extends readonly WaaPSquidChain[] = typeof ALL_SQUID_CHAIN
729
746
  *
730
747
  * @example
731
748
  * ```ts
732
- * const waap = initWaaPSquid({ chains: ['evm', 'sui'] })
749
+ * const waap = initWaaPSquid({ chains: ['evm', 'sui'] }) // `chains` is required
733
750
  * await waap.session.login()
734
751
  * await waap.squid.onboard() // explicit create/restore for sqd1 + sqd2
735
752
  * const { accounts } = await waap.sui.connect()
736
753
  * ```
737
754
  */
738
- declare function initWaaPSquid<const Chains extends readonly WaaPSquidChain[]>(options: InitWaaPSquidOptions & {
755
+ declare function initWaaPSquid<const Chains extends readonly [WaaPSquidChain, ...WaaPSquidChain[]]>(options: InitWaaPSquidOptions & {
739
756
  chains: Chains;
740
757
  }): WaaPSquid<Chains>;
741
- declare function initWaaPSquid(options?: InitWaaPSquidOptions): WaaPSquid;
742
758
  /**
743
759
  * Initialize a shared multichain TAP wallet. TAP accounts are restored by the
744
760
  * normal authenticated wallet session.
@@ -772,4 +788,4 @@ declare function initWaaPTap<const Chains extends readonly WaaPChain[]>(options:
772
788
  }): WaaPTap<Chains>;
773
789
  declare function initWaaPTap(options?: Partial<InitWaaPTapOptions>): WaaPTap;
774
790
  //#endregion
775
- export { SuiSignTransactionBlockOutput as $, SolanaSignTransactionInput as A, WaaPSolanaWalletFeatures as B, SolanaChain as C, SolanaSignAndSendTransactionOutput as D, SolanaSignAndSendTransactionInput as E, SolanaStandardSignMessageOutput as F, SuiConnectOutput as G, SuiAccount as H, SolanaStandardSignTransactionInput as I, SuiSignAndExecuteTransactionInput as J, SuiSignAndExecuteTransactionBlockInput as K, SolanaStandardSignTransactionOutput as L, SolanaStandardSignAndSendTransactionInput as M, SolanaStandardSignAndSendTransactionOutput as N, SolanaSignMessageInput as O, SolanaStandardSignMessageInput as P, SuiSignTransactionBlockInput as Q, SolanaWalletEventListener as R, SolanaAccount as S, SolanaConnectOutput as T, SuiChain as U, InitWaaPSuiOptions as V, SuiConnectInput as W, SuiSignPersonalMessageInput as X, SuiSignAndExecuteTransactionOutput as Y, SuiSignPersonalMessageOutput as Z, initWaaPSolana as _, InitWaaPTapOptions as a, WaaPSuiWalletInterface as at, initWaaPTap as b, WaaPSquidChain as c, WaaPSquidStatus as d, SuiSignTransactionInput as et, WaaPSquidStatusState as f, initWaaPMulti as g, initWaaP as h, InitWaaPSquidOptions as i, WaaPSuiWalletFeatures as it, SolanaSignTransactionOutput as j, SolanaSignMessageOutput as k, WaaPSquidLifecycle as l, WaaPTapSession as m, InitWaaPMultiOptions as n, SuiTransactionInput as nt, WaaPChain as o, WalletIcon as ot, WaaPTap as p, SuiSignAndExecuteTransactionBlockOutput as q, InitWaaPOptions as r, SuiWalletEventListener as rt, WaaPSquid as s, InitWaaPChainOptions as t, SuiSignTransactionOutput as tt, WaaPSquidSession as u, initWaaPSquid as v, SolanaConnectInput as w, InitWaaPSolanaOptions as x, initWaaPSui as y, WaaPSolanaProviderInterface as z };
791
+ export { SuiSignTransactionInput as $, SolanaSignTransactionOutput as A, InitWaaPSuiOptions as B, SolanaConnectInput as C, SolanaSignMessageInput as D, SolanaSignAndSendTransactionOutput as E, SolanaStandardSignTransactionInput as F, SuiSignAndExecuteTransactionBlockInput as G, SuiChain as H, SolanaStandardSignTransactionOutput as I, SuiSignAndExecuteTransactionOutput as J, SuiSignAndExecuteTransactionBlockOutput as K, SolanaWalletEventListener as L, SolanaStandardSignAndSendTransactionOutput as M, SolanaStandardSignMessageInput as N, SolanaSignMessageOutput as O, SolanaStandardSignMessageOutput as P, SuiSignTransactionBlockOutput as Q, WaaPSolanaProviderInterface as R, SolanaChain as S, SolanaSignAndSendTransactionInput as T, SuiConnectInput as U, SuiAccount as V, SuiConnectOutput as W, SuiSignPersonalMessageOutput as X, SuiSignPersonalMessageInput as Y, SuiSignTransactionBlockInput as Z, initWaaPSquid as _, WaaPChain as a, WalletIcon as at, InitWaaPSolanaOptions as b, WaaPSquidLifecycle as c, WaaPSquidStatusState as d, SuiSignTransactionOutput as et, WaaPTap as f, initWaaPSolana as g, initWaaPMulti as h, InitWaaPTapOptions as i, WaaPSuiWalletInterface as it, SolanaStandardSignAndSendTransactionInput as j, SolanaSignTransactionInput as k, WaaPSquidSession as l, initWaaP as m, InitWaaPOptions as n, SuiWalletEventListener as nt, WaaPSquid as o, WaaPTapSession as p, SuiSignAndExecuteTransactionInput as q, InitWaaPSquidOptions as r, WaaPSuiWalletFeatures as rt, WaaPSquidChain as s, InitWaaPMultiOptions as t, SuiTransactionInput as tt, WaaPSquidStatus as u, initWaaPSui as v, SolanaConnectOutput as w, SolanaAccount as x, initWaaPTap as y, WaaPSolanaWalletFeatures as z };
@@ -1,4 +1,4 @@
1
- import { C as RequestPermissionTokenResult, M as WaaPSessionProtection, S as RequestPermissionTokenParams, a as PermissionTokenQuery, b as CustomConfig, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, n as InitSilkOptions, o as PermissionTokenStatus, p as WaaPSessionExtension, r as LoginResponse, v as AuthenticationMethod, x as ProjectConfig } from "./types-DexmJNke.js";
1
+ import { C as ProjectConfig, T as RequestPermissionTokenResult, a as PermissionTokenQuery, b as CustomConfig, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, n as InitSilkOptions, o as PermissionTokenStatus, p as WaaPSessionExtension, r as LoginResponse, v as AuthenticationMethod, w as RequestPermissionTokenParams } from "./types-BmCqyQtu.js";
2
2
  //#region src/lib/sui/types.d.ts
3
3
  /**
4
4
  * Sui chain identifiers.
@@ -67,6 +67,8 @@ interface SuiSignTransactionInput {
67
67
  chain?: SuiChain;
68
68
  signal?: AbortSignal;
69
69
  timeoutMs?: number;
70
+ /** Use a matching permission token when the wallet has one. */
71
+ withPT?: boolean;
70
72
  }
71
73
  /**
72
74
  * Output from sui:signTransaction feature.
@@ -93,6 +95,8 @@ interface SuiSignAndExecuteTransactionInput {
93
95
  requestType?: 'WaitForEffectsCert' | 'WaitForLocalExecution';
94
96
  signal?: AbortSignal;
95
97
  timeoutMs?: number;
98
+ /** Use a matching permission token when the wallet has one. */
99
+ withPT?: boolean;
96
100
  }
97
101
  /**
98
102
  * Output from sui:signAndExecuteTransaction feature.
@@ -131,6 +135,8 @@ interface SuiSignTransactionBlockInput {
131
135
  chain?: SuiChain;
132
136
  signal?: AbortSignal;
133
137
  timeoutMs?: number;
138
+ /** Use a matching permission token when the wallet has one. */
139
+ withPT?: boolean;
134
140
  }
135
141
  /**
136
142
  * Output for legacy sui:signTransactionBlock feature.
@@ -152,6 +158,8 @@ interface SuiSignAndExecuteTransactionBlockInput {
152
158
  requestType?: 'WaitForEffectsCert' | 'WaitForLocalExecution';
153
159
  signal?: AbortSignal;
154
160
  timeoutMs?: number;
161
+ /** Use a matching permission token when the wallet has one. */
162
+ withPT?: boolean;
155
163
  }
156
164
  /**
157
165
  * Output for legacy sui:signAndExecuteTransactionBlock feature.
@@ -327,8 +335,6 @@ interface InitWaaPSuiOptions extends WaaPWalletTargetOptions {
327
335
  project?: ProjectConfig;
328
336
  /** WaaP custom UI configuration */
329
337
  config?: SuiCustomConfig;
330
- /** Wallet session transport; defaults to DPoP, with explicit bearer fallback. */
331
- sessionProtection?: WaaPSessionProtection;
332
338
  /**
333
339
  * Defer iframe navigation until `preload()` or the first wallet operation.
334
340
  * The default warms the iframe at browser idle; pass `false` to mount eagerly.
@@ -471,8 +477,6 @@ interface InitWaaPSolanaOptions extends WaaPWalletTargetOptions {
471
477
  referralCode?: string;
472
478
  project?: ProjectConfig;
473
479
  config?: CustomConfig;
474
- /** Wallet session transport; defaults to DPoP, with explicit bearer fallback. */
475
- sessionProtection?: WaaPSessionProtection;
476
480
  /**
477
481
  * Defer iframe navigation until `preload()` or the first wallet operation.
478
482
  * The default warms the iframe at browser idle; pass `false` to mount eagerly.
@@ -524,10 +528,13 @@ interface WaaPSolanaProviderInterface {
524
528
  /** Chain selected by a direct WaaP initializer. */
525
529
  type WaaPChain = 'evm' | 'sui' | 'solana';
526
530
  /**
527
- * Shared options for the direct WaaP initializers.
531
+ * Options for the direct WaaP initializers.
528
532
  *
529
- * This deliberately has no chain selector so the published `2.0.0`
530
- * `InitWaaPOptions` remains assignable to the legacy EVM overload.
533
+ * Deliberately carries no `chain`. A variable annotated with this type must
534
+ * keep selecting the EVM overload, as it did in the published `2.0.0`; adding
535
+ * an optional `chain: WaaPChain` here would let such a variable hold `'sui'`,
536
+ * so `initWaaP(options)` would widen to a union of every facade. The overloads
537
+ * below intersect their own `chain` literal, which is what discriminates.
531
538
  */
532
539
  interface InitWaaPOptions extends Omit<InitWaaPSuiOptions, 'config'> {
533
540
  /** Shared wallet configuration; EVM may additionally allow `wallet`. */
@@ -539,22 +546,14 @@ interface InitWaaPOptions extends Omit<InitWaaPSuiOptions, 'config'> {
539
546
  /** @deprecated Use `asyncTxs` instead. */
540
547
  asyncSigning?: boolean;
541
548
  }
542
- /**
543
- * `InitWaaPOptions` plus a direct native-chain selector.
544
- *
545
- * Omit `chain` to retain the published EVM EIP-1193 return type.
546
- */
547
- interface InitWaaPChainOptions extends InitWaaPOptions {
548
- chain?: WaaPChain;
549
- }
550
549
  type LegacyInitWaaPEvmOptions = InitWaaPOptions & {
551
550
  chain?: 'evm';
552
551
  };
553
- type LegacyInitWaaPSuiOptions = Omit<InitWaaPChainOptions, 'chain' | 'config'> & {
552
+ type LegacyInitWaaPSuiOptions = Omit<InitWaaPOptions, 'chain' | 'config'> & {
554
553
  chain: 'sui';
555
554
  config?: InitWaaPSuiOptions['config'];
556
555
  };
557
- type LegacyInitWaaPSolanaOptions = InitWaaPChainOptions & {
556
+ type LegacyInitWaaPSolanaOptions = InitWaaPOptions & {
558
557
  chain: 'solana';
559
558
  };
560
559
  /**
@@ -568,7 +567,9 @@ declare function initWaaP(options?: LegacyInitWaaPEvmOptions): SilkEthereumProvi
568
567
  declare function initWaaP(options: LegacyInitWaaPSuiOptions): WaaPSuiWalletInterface;
569
568
  declare function initWaaP(options: LegacyInitWaaPSolanaOptions): WaaPSolanaProviderInterface;
570
569
  /** Accepts a runtime-selected chain when callers cannot preserve a literal. */
571
- declare function initWaaP(options: InitWaaPChainOptions): SilkEthereumProviderInterface | WaaPSuiWalletInterface | WaaPSolanaProviderInterface;
570
+ declare function initWaaP(options: InitWaaPOptions & {
571
+ chain?: WaaPChain;
572
+ }): SilkEthereumProviderInterface | WaaPSuiWalletInterface | WaaPSolanaProviderInterface;
572
573
  /**
573
574
  * Options for the multichain `initWaaPSquid` entry point.
574
575
  *
@@ -583,10 +584,14 @@ declare function initWaaP(options: InitWaaPChainOptions): SilkEthereumProviderIn
583
584
  */
584
585
  interface InitWaaPSquidOptions extends InitWaaPSuiOptions {
585
586
  /**
586
- * Chain facades to expose. Defaults to all three Squid chains; this scopes
587
- * SDK/UI loading, not the current dual-curve Squid provisioning transaction.
587
+ * Chain facades to expose; at least one is required. This scopes SDK/UI
588
+ * loading, not the current dual-curve Squid provisioning transaction.
589
+ *
590
+ * Naming the facades is deliberate rather than defaulting to all three: the
591
+ * default loaded Sui and Solana surfaces for callers that only ever used EVM,
592
+ * and the set a caller wants is not inferable from anything else.
588
593
  */
589
- chains?: readonly WaaPSquidChain[];
594
+ chains: readonly [WaaPSquidChain, ...WaaPSquidChain[]];
590
595
  /** WalletConnect project ID (required only when offering the `wallet` auth method). */
591
596
  walletConnectProjectId?: string;
592
597
  /** Forwarded to the EVM provider: resolve eth_sendTransaction on tx-hash. */
@@ -666,7 +671,13 @@ type WaaPTap<Chains extends readonly WaaPChain[] = typeof ALL_TAP_CHAINS> = {
666
671
  destroy: () => void;
667
672
  } & FacadeFor<Chains, 'evm', {
668
673
  /** EIP-1193 provider (EVM). */ evm: SilkEthereumProviderInterface;
669
- /** @deprecated Use `evm`. */ ethereum: SilkEthereumProviderInterface;
674
+ /**
675
+ * Alias for `evm`, kept because it is what the published integrations
676
+ * use. `evm` is the preferred spelling: it matches the `chains` value
677
+ * that produced the facade, and the facade serves every EVM chain
678
+ * rather than Ethereum specifically.
679
+ */
680
+ ethereum: SilkEthereumProviderInterface;
670
681
  }> & FacadeFor<Chains, 'sui', {
671
682
  sui: WaaPSuiWalletInterface;
672
683
  }> & FacadeFor<Chains, 'solana', {
@@ -713,7 +724,13 @@ type WaaPSquid<Chains extends readonly WaaPSquidChain[] = typeof ALL_SQUID_CHAIN
713
724
  destroy: () => void;
714
725
  } & FacadeFor<Chains, 'evm', {
715
726
  /** EIP-1193 provider (EVM). */ evm: SilkEthereumProviderInterface;
716
- /** @deprecated Use `evm`. */ ethereum: SilkEthereumProviderInterface;
727
+ /**
728
+ * Alias for `evm`, kept because it is what the published integrations
729
+ * use. `evm` is the preferred spelling: it matches the `chains` value
730
+ * that produced the facade, and the facade serves every EVM chain
731
+ * rather than Ethereum specifically.
732
+ */
733
+ ethereum: SilkEthereumProviderInterface;
717
734
  }> & FacadeFor<Chains, 'sui', {
718
735
  sui: WaaPSuiWalletInterface;
719
736
  }> & FacadeFor<Chains, 'solana', {
@@ -729,16 +746,15 @@ type WaaPSquid<Chains extends readonly WaaPSquidChain[] = typeof ALL_SQUID_CHAIN
729
746
  *
730
747
  * @example
731
748
  * ```ts
732
- * const waap = initWaaPSquid({ chains: ['evm', 'sui'] })
749
+ * const waap = initWaaPSquid({ chains: ['evm', 'sui'] }) // `chains` is required
733
750
  * await waap.session.login()
734
751
  * await waap.squid.onboard() // explicit create/restore for sqd1 + sqd2
735
752
  * const { accounts } = await waap.sui.connect()
736
753
  * ```
737
754
  */
738
- declare function initWaaPSquid<const Chains extends readonly WaaPSquidChain[]>(options: InitWaaPSquidOptions & {
755
+ declare function initWaaPSquid<const Chains extends readonly [WaaPSquidChain, ...WaaPSquidChain[]]>(options: InitWaaPSquidOptions & {
739
756
  chains: Chains;
740
757
  }): WaaPSquid<Chains>;
741
- declare function initWaaPSquid(options?: InitWaaPSquidOptions): WaaPSquid;
742
758
  /**
743
759
  * Initialize a shared multichain TAP wallet. TAP accounts are restored by the
744
760
  * normal authenticated wallet session.
@@ -772,4 +788,4 @@ declare function initWaaPTap<const Chains extends readonly WaaPChain[]>(options:
772
788
  }): WaaPTap<Chains>;
773
789
  declare function initWaaPTap(options?: Partial<InitWaaPTapOptions>): WaaPTap;
774
790
  //#endregion
775
- export { SuiSignTransactionBlockOutput as $, SolanaSignTransactionInput as A, WaaPSolanaWalletFeatures as B, SolanaChain as C, SolanaSignAndSendTransactionOutput as D, SolanaSignAndSendTransactionInput as E, SolanaStandardSignMessageOutput as F, SuiConnectOutput as G, SuiAccount as H, SolanaStandardSignTransactionInput as I, SuiSignAndExecuteTransactionInput as J, SuiSignAndExecuteTransactionBlockInput as K, SolanaStandardSignTransactionOutput as L, SolanaStandardSignAndSendTransactionInput as M, SolanaStandardSignAndSendTransactionOutput as N, SolanaSignMessageInput as O, SolanaStandardSignMessageInput as P, SuiSignTransactionBlockInput as Q, SolanaWalletEventListener as R, SolanaAccount as S, SolanaConnectOutput as T, SuiChain as U, InitWaaPSuiOptions as V, SuiConnectInput as W, SuiSignPersonalMessageInput as X, SuiSignAndExecuteTransactionOutput as Y, SuiSignPersonalMessageOutput as Z, initWaaPSolana as _, InitWaaPTapOptions as a, WaaPSuiWalletInterface as at, initWaaPTap as b, WaaPSquidChain as c, WaaPSquidStatus as d, SuiSignTransactionInput as et, WaaPSquidStatusState as f, initWaaPMulti as g, initWaaP as h, InitWaaPSquidOptions as i, WaaPSuiWalletFeatures as it, SolanaSignTransactionOutput as j, SolanaSignMessageOutput as k, WaaPSquidLifecycle as l, WaaPTapSession as m, InitWaaPMultiOptions as n, SuiTransactionInput as nt, WaaPChain as o, WalletIcon as ot, WaaPTap as p, SuiSignAndExecuteTransactionBlockOutput as q, InitWaaPOptions as r, SuiWalletEventListener as rt, WaaPSquid as s, InitWaaPChainOptions as t, SuiSignTransactionOutput as tt, WaaPSquidSession as u, initWaaPSquid as v, SolanaConnectInput as w, InitWaaPSolanaOptions as x, initWaaPSui as y, WaaPSolanaProviderInterface as z };
791
+ export { SuiSignTransactionInput as $, SolanaSignTransactionOutput as A, InitWaaPSuiOptions as B, SolanaConnectInput as C, SolanaSignMessageInput as D, SolanaSignAndSendTransactionOutput as E, SolanaStandardSignTransactionInput as F, SuiSignAndExecuteTransactionBlockInput as G, SuiChain as H, SolanaStandardSignTransactionOutput as I, SuiSignAndExecuteTransactionOutput as J, SuiSignAndExecuteTransactionBlockOutput as K, SolanaWalletEventListener as L, SolanaStandardSignAndSendTransactionOutput as M, SolanaStandardSignMessageInput as N, SolanaSignMessageOutput as O, SolanaStandardSignMessageOutput as P, SuiSignTransactionBlockOutput as Q, WaaPSolanaProviderInterface as R, SolanaChain as S, SolanaSignAndSendTransactionInput as T, SuiConnectInput as U, SuiAccount as V, SuiConnectOutput as W, SuiSignPersonalMessageOutput as X, SuiSignPersonalMessageInput as Y, SuiSignTransactionBlockInput as Z, initWaaPSquid as _, WaaPChain as a, WalletIcon as at, InitWaaPSolanaOptions as b, WaaPSquidLifecycle as c, WaaPSquidStatusState as d, SuiSignTransactionOutput as et, WaaPTap as f, initWaaPSolana as g, initWaaPMulti as h, InitWaaPTapOptions as i, WaaPSuiWalletInterface as it, SolanaStandardSignAndSendTransactionInput as j, SolanaSignTransactionInput as k, WaaPSquidSession as l, initWaaP as m, InitWaaPOptions as n, SuiWalletEventListener as nt, WaaPSquid as o, WaaPTapSession as p, SuiSignAndExecuteTransactionInput as q, InitWaaPSquidOptions as r, WaaPSuiWalletFeatures as rt, WaaPSquidChain as s, InitWaaPMultiOptions as t, SuiTransactionInput as tt, WaaPSquidStatus as u, initWaaPSui as v, SolanaConnectOutput as w, SolanaAccount as x, initWaaPTap as y, WaaPSolanaWalletFeatures as z };