@human.tech/waap-sdk 2.3.0 → 2.4.1

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 (88) hide show
  1. package/.agent/SKILL.md +28 -13
  2. package/CHANGELOG.md +152 -0
  3. package/README.md +16 -2
  4. package/dist/SolanaProvider-BdeBP_ro.js +1 -0
  5. package/dist/SolanaProvider-DP9J8JuJ.mjs +1 -0
  6. package/dist/UIMessageManager-4xqSTTBS.d.mts +11 -0
  7. package/dist/UIMessageManager-4xqSTTBS.d.ts +11 -0
  8. package/dist/UIMessageManager-CtnIZgIY.mjs +1 -0
  9. package/dist/UIMessageManager-D-OTya1E.js +1 -0
  10. package/dist/WaaPError-C2TOEGPx.d.mts +52 -0
  11. package/dist/WaaPError-C2TOEGPx.d.ts +52 -0
  12. package/dist/{WalletConnect-Dn40Omgo.js → WalletConnect-B21f4Vvh.js} +1 -1
  13. package/dist/{WalletConnect-UfxGn2M_.mjs → WalletConnect-DXiTxC-F.mjs} +1 -1
  14. package/dist/{WaaPError-CMOAWUlN.d.ts → WalletModalController-16mHsFv2.d.ts} +17 -55
  15. package/dist/{WaaPError-BjukImOz.d.mts → WalletModalController-DxiBiqDf.d.mts} +17 -55
  16. package/dist/bridge.d.mts +158 -0
  17. package/dist/bridge.d.ts +158 -0
  18. package/dist/bridge.js +1 -0
  19. package/dist/bridge.mjs +1 -0
  20. package/dist/evm-dDMLwSQe.mjs +2 -0
  21. package/dist/evm-rUSuf-iy.js +2 -0
  22. package/dist/evm.d.mts +3 -2
  23. package/dist/evm.d.ts +3 -2
  24. package/dist/evm.js +1 -1
  25. package/dist/evm.mjs +1 -1
  26. package/dist/{index-DOIss_GK.d.ts → index-BOExImk3.d.mts} +29 -192
  27. package/dist/{index-C0mLQs_a.d.mts → index-BkKBZpqc.d.ts} +29 -192
  28. package/dist/index.d.mts +33 -8
  29. package/dist/index.d.ts +33 -8
  30. package/dist/index.js +3 -3
  31. package/dist/index.mjs +3 -3
  32. package/dist/init-BkrqKNet.js +1 -0
  33. package/dist/init-C-52fEJS.d.ts +84 -0
  34. package/dist/init-C3zCj5Lc.d.mts +84 -0
  35. package/dist/init-CkYgm7Zu.mjs +1 -0
  36. package/dist/react.d.mts +1 -1
  37. package/dist/react.d.ts +1 -1
  38. package/dist/react.js +1 -1
  39. package/dist/react.mjs +1 -1
  40. package/dist/register-B2G1larb.mjs +1 -0
  41. package/dist/{register-9bEe9ATz.d.mts → register-BKCJXsHB.d.mts} +9 -6
  42. package/dist/register-BL_2Xqcc.js +1 -0
  43. package/dist/{register-XzDVa7r8.d.mts → register-C1hFwh4A.d.ts} +4 -3
  44. package/dist/register-CLpzYN7U.mjs +1 -0
  45. package/dist/{register-DgN7qh23.js → register-Diu5wxsG.js} +1 -1
  46. package/dist/{register-PWKDsSRv.d.ts → register-GiWQpcBY.d.ts} +9 -6
  47. package/dist/{register-Mb1D_xW4.d.ts → register-mq9fTaSt.d.mts} +4 -3
  48. package/dist/solana.d.mts +6 -4
  49. package/dist/solana.d.ts +6 -4
  50. package/dist/solana.js +1 -1
  51. package/dist/solana.mjs +1 -1
  52. package/dist/stellar.d.mts +6 -0
  53. package/dist/stellar.d.ts +6 -0
  54. package/dist/stellar.js +1 -0
  55. package/dist/stellar.mjs +1 -0
  56. package/dist/sui.d.mts +5 -4
  57. package/dist/sui.d.ts +5 -4
  58. package/dist/sui.js +1 -1
  59. package/dist/sui.mjs +1 -1
  60. package/dist/types-Bai14yLc.d.mts +95 -0
  61. package/dist/types-Bj5dDE-C.d.ts +198 -0
  62. package/dist/types-C7JDjWnt.d.mts +198 -0
  63. package/dist/{types-BmCqyQtu.d.mts → types-Cc6tc4ut.d.mts} +18 -1
  64. package/dist/{types-BmCqyQtu.d.ts → types-Cc6tc4ut.d.ts} +18 -1
  65. package/dist/types-DqdVfkaW.d.ts +95 -0
  66. package/dist/ui-CnG74RaM.js +1 -0
  67. package/dist/ui-lV9LVoom.mjs +1 -0
  68. package/dist/{useWaapAuth-vJAk2n_I.d.mts → useWaapAuth-Be1YJk-7.d.mts} +2 -2
  69. package/dist/useWaapAuth-C9Cwu4XG.js +1 -0
  70. package/dist/{useWaapAuth-DgYO5KxO.d.ts → useWaapAuth-DSFDwJtt.d.ts} +2 -2
  71. package/dist/useWaapAuth-Vh8gUs6Y.mjs +1 -0
  72. package/dist/walletconnect.js +1 -1
  73. package/dist/walletconnect.mjs +1 -1
  74. package/docs/solana-wallet-adapter.md +157 -0
  75. package/package.json +32 -4
  76. package/dist/esm-BUfmyWbN.mjs +0 -1
  77. package/dist/esm-DFwVZkjo.js +0 -1
  78. package/dist/evm-9r6LecIW.mjs +0 -2
  79. package/dist/evm-D_LHHo3z.js +0 -2
  80. package/dist/initializerContext-DIrqEE6B.d.ts +0 -20
  81. package/dist/initializerContext-_YjbVTiL.d.mts +0 -20
  82. package/dist/register-CEeLG7qz.mjs +0 -1
  83. package/dist/register-CodxV1XG.js +0 -1
  84. package/dist/register-I8d7v41B.mjs +0 -1
  85. package/dist/ui-BjcwM6px.js +0 -1
  86. package/dist/ui-CrnBoTQL.mjs +0 -1
  87. package/dist/useWaapAuth-BPvve-_3.js +0 -1
  88. package/dist/useWaapAuth-BcmVGb-D.mjs +0 -1
@@ -0,0 +1 @@
1
+ import{S as e,_ as t,c as n,d as r,f as i,g as a,h as o,i as s,l as c,m as l,o as u,r as d,t as f,v as p,w as m,x as h}from"./UIMessageManager-CtnIZgIY.mjs";import{t as g}from"./asyncSigning-CzqBbYDP.mjs";import{t as _}from"./SolanaProvider-DP9J8JuJ.mjs";import{t as v}from"./init-CkYgm7Zu.mjs";import{n as y,t as b}from"./evm-dDMLwSQe.mjs";import{EventEmitter as x}from"events";import{getWallets as S}from"@wallet-standard/app";function C(){try{if(typeof process<`u`&&process.env)return(process.env.NEXT_PUBLIC_WAAP_MAINTENANCE||process.env.VITE_WAAP_MAINTENANCE||process.env.REACT_APP_WAAP_MAINTENANCE||process.env.WAAP_MAINTENANCE)===`true`}catch{return!1}return!1}function w(){try{return typeof localStorage<`u`&&localStorage.getItem(`waap_maintenance_override`)===`1`}catch{return!1}}function T(){if(C()&&!w())throw new h(`maintenance`,`WaaP is temporarily unavailable for maintenance.`)}const E={"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`},D=e=>E[e],O=e=>e.slice(4);var k=class{constructor(e,t={},n,i=t){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 x,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new r(e,p(t)),this.ensureIframe=n,this.iframeMounted=!n,this.initializerOptions=i,this.uiMessageManager=new f,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:e=>{e.method===m.show_modal?this.uiMessageManager.emit(`show_modal`):e.method===m.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=l(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 e=await this.postRequestAndWait({method:m.waap_getAccountStatus,params:[],interactionRequired:!1});if(e.error)throw Error(e.error.message||`Failed to read WaaP status`);let t=e.data;return this.syncLoginMethodFromCanonicalStatus(t),t?.conversion&&(this.lastKnownConversion=t.conversion),t}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(e,t={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:m.set_signing_mode,params:[i(e,t)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let e=await this.restoreSession();if(e)return e;let t=(await this.postRequestAndWait({method:m.login,params:[],interactionRequired:!0})).data;return t!==`waap`&&t!==`human`&&t!==`injected`&&t!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=t,t)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:m.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async connect(e){if(!this.loginMethod){if(e?.silent)throw new h(`not_authenticated`,`Not authenticated: a silent connect cannot open login.`,{operation:{chain:`sui`,method:`sui_connect`}});if(!await this.login())throw new h(`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=O(t),i=new n({url:D(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,withPT:e.withPT}],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,withPT:e.withPT,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,signal:e.signal,timeoutMs:e.timeoutMs,withPT:e.withPT})}async signAndExecuteTransactionBlock(e){return this.signAndExecuteTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,options:e.options,requestType:e.requestType,signal:e.signal,timeoutMs:e.timeoutMs,withPT:e.withPT})}async requestPermissionToken(e){await this.ensureInitialized();let t={...e,walletMode:this.accountMode},n=await this.postRequestAndWait({method:m.waap_requestPermissionToken,params:[t],interactionRequired:!0});if(n.error)throw Error(n.error.message||`Failed to request permission token`);return n.data}async getPermissionTokenStatus(e){return await this.ensureInitialized(),(await this.postRequestAndWait({method:m.waap_getPermissionTokenStatus,params:[e],interactionRequired:!1})).data}async clearPermissionToken(e){return await this.ensureInitialized(),(await this.postRequestAndWait({method:m.waap_clearPermissionToken,params:[e],interactionRequired:!1})).data}async requestEmail(){await this.ensureInitialized();let e=await this.postRequestAndWait({method:m.silk_requestEmail,params:[],interactionRequired:!0});if(e.error)throw Error(e.error.message||`Failed to request email`);return e.data}async postRequestAndWait(t){let r;try{t.interactionRequired&&c({layout:t.method===m.login?`auth`:`signing`}),r=await this.walletMessageManager.postSilkRequest({method:t.method,params:t.params,interactionRequired:t.interactionRequired});let e=await 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()}});if(e.error)throw Error(e.error.message);return e}catch(i){throw t.interactionRequired&&r===void 0&&n(),e(i,{chain:`sui`,method:String(t.method),requestId:r})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function A(e,r,i=!0){let s=()=>(a(e),o(r).contentWindow),l=e.deferIframe===!1,u=e.deferIframe===void 0,f=l?s():null;if(l&&!f)throw Error(`Failed to create WaaP iframe`);let p=new k(f,e,s,{...e,chains:[`sui`]});p.setAccountMode(r),i&&l&&p.preload().catch(()=>void 0);let m=p.destroy.bind(p);if(p.destroy=()=>{m(),t()},i&&u){let e=d(p),t=p.destroy.bind(p);p.destroy=()=>{e(),t()}}return p.ui.on(`show_modal`,()=>{c(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=`none`})}),p.ui.on(`hide_modal`,()=>{n(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=``})}),p}function j(e){if(typeof window>`u`)return;let t=e.destroy.bind(e),n=new Set,r=new Set,i=!1,a=t=>{if(i||n.has(t.register))return;n.add(t.register);let a=t.register(e);i?a():r.add(a)},o=e=>{a(e.detail)};e.destroy=()=>{if(!i){i=!0,window.removeEventListener(`wallet-standard:app-ready`,o);for(let e of r)try{e()}catch(e){console.error(`Failed to unregister WaaP from a wallet registry`,e)}r.clear(),n.clear(),t()}},window.addEventListener(`wallet-standard:app-ready`,o),a(S()),!i&&window.dispatchEvent(new CustomEvent(`wallet-standard:register-wallet`,{detail:a}))}function M(e={}){let r=()=>(a(e),o(`tap`).contentWindow),i=e.deferIframe===!1,s=e.deferIframe===void 0,l=i?r():null;if(i&&!l)throw Error(`Failed to create WaaP iframe`);let u=new _(l,e,r,{...e,chains:[`solana`]});i&&u.preload().catch(()=>void 0);let f=u.destroy.bind(u);if(u.destroy=()=>{f(),t()},s){let e=d(u),t=u.destroy.bind(u);u.destroy=()=>{e(),t()}}return u.ui.on(`show_modal`,()=>{c()}),u.ui.on(`hide_modal`,()=>{n()}),j(u),u}function N(e={}){if(T(),`chains`in e)throw Error("initWaaP accepts one `chain`; use initWaaPMulti({ chains }) for TAP.");switch(e.chain){case`sui`:return A(e,`tap`);case`solana`:return M(e);case`stellar`:return v(e);case void 0:case`evm`:return b(e);default:throw Error(`initWaaP received an unsupported chain: ${String(e.chain)}`)}}const P=[`evm`,`sui`,`solana`],F=[`evm`,`sui`,`solana`];function I(e){T();let n=Array.from(new Set(e.chains??[]));if(n.length===0)throw Error(`initWaaPSquid requires at least one chain facade`);if(n.some(e=>!P.includes(e)))throw Error(`initWaaPSquid received an unsupported chain facade`);let r=n.includes(`evm`),i=n.includes(`sui`),c=n.includes(`solana`),l=y({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},`squid`,!1,n,r),u=i?A(e,`squid`,!1):void 0,f=()=>(a(e),o(`squid`).contentWindow),p=c?new _(e.deferIframe===!1?f():null,{useStaging:e.useStaging,environment:e.environment,walletOrigin:e.walletOrigin,referralCode:e.referralCode,project:e.project,config:e.config,deferIframe:e.deferIframe},f,{...e,chains:[`solana`]},!1):void 0;p?.setAccountMode(`squid`);let v;e.deferIframe===!1?l.preload().catch(()=>void 0):e.deferIframe===void 0&&(v=d(l));let b={state:`absent`},x=null,S=0,C=null,w=()=>{C!==null&&(clearTimeout(C),C=null)},E=()=>{w(),C=setTimeout(()=>{C=null,x&&l.emit(g.squidFailed,{lifecycleId:x,error:`Squid provisioning stalled; call onboard() to try again.`})},18e4),C.unref?.()},D=()=>{w(),x=null,b={state:`absent`}},O=e=>!e.lifecycleId||e.lifecycleId===x,k=()=>b.state===`active`;l.on(g.squidPending,e=>{if(!O(e))return;E();let t=e?.transactionDigest;b={state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e?.message?{message:e.message}:{}}}),l.on(g.squidReady,e=>{O(e)&&(w(),b={state:`active`})}),l.on(g.squidFailed,e=>{O(e)&&(w(),b={state:`failed`,...e?.error?{message:e.error}:{}},x=null)});let j=e=>{if(l.getLoginMethod()===null)throw new h(`not_authenticated`,`Not authenticated: call login() before connecting or signing.`,{operation:{chain:e,method:`connect`}});if(!k())throw new h(`not_connected`,`Squid is not ready: call onboard() after login before connecting or signing.`)},M=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)&&j(`evm`),M(e)),u){let e=u.connect.bind(u);u.connect=async t=>(j(`sui`),e(t))}if(p){let e=p.connect.bind(p);p.connect=async t=>(j(`solana`),e(t))}let N=async()=>{if(l.getLoginMethod()===null)throw new h(`not_authenticated`,`Not authenticated: call login() before onboarding Squid.`);if(k()||x)return;let e=`squid-${++S}`;x=e,b={state:`provisioning`},E();try{await l.walletMessageManager.pingIframe(),await s({method:m.enter_lite_mode,params:[window.location.origin,e]},!1,l.walletMessageManager,l.internalEventEmitter)}catch(t){throw x===e&&(w(),x=null,b={state:`failed`,message:t instanceof Error?t.message:String(t)}),t}},F=()=>({...b}),I=e=>{if(b.state===`active`||!e.authenticated||e.activeMode!==`squid`||!e.squid)return;let t={...x?{lifecycleId:x}:{},evm:e.squid.sqd1.evm,sui:e.squid.sqd2.sui,solana:e.squid.sqd2.solana};w(),b={state:`active`},x=null,l.emit(g.squidReady,t)},L=async()=>(await N(),F()),R=l.login.bind(l),z=async e=>{let t=await R(e);return u?.setLoginMethod(t),p?.setLoginMethod(t),(t?await l.session.getAccountStatus().catch(()=>null):null)?.squid&&(await l.reassertIframeAccountMode().catch(()=>void 0),await N()),t&&l.emit(`connect`),t},B=l.logout.bind(l),V=async()=>{await B(),u?.setLoginMethod(null),p?.setLoginMethod(null),D()},H;H={login:z,logout:V,getLoginMethod:()=>l.getLoginMethod(),getAccountStatus:async()=>{let e=await l.session.getAccountStatus();return I(e),e},getSquidStatus:F,on:(e,t)=>(l.on(e,t),H),removeListener:(e,t)=>(l.removeListener(e,t),H)},l.login=H.login,l.logout=H.logout,u&&(u.login=()=>H.login(),u.logout=()=>H.logout()),p&&(p.login=()=>H.login(),p.logout=()=>H.logout());let U={onboard:N,squid:{onboard:N,getStatus:F,onboardWithStatus:L},getSquidStatus:F,session:H,getAccountStatus:()=>{let e=l.getAccountStatus(),t=u?.getAccountStatus(),n=p?.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:()=>{v?.(),D(),l.destroy(),u?.destroy(),p?.destroy(),t()}};return r&&Object.assign(U,{evm:l,ethereum:l}),u&&Object.assign(U,{sui:u}),p&&Object.assign(U,{solana:p}),P.every(e=>n.includes(e))&&Object.assign(U,{auth:l}),U}function L(e){T();let n=Array.from(new Set(e.chains));if(n.length===0)throw Error(`initWaaPMulti requires at least one chain facade`);if(n.some(e=>!F.includes(e)))throw Error(`initWaaPMulti received an unsupported chain facade`);let r=n.includes(`evm`),i=n.includes(`sui`),s=n.includes(`solana`),c=y({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},`tap`,!1,n,r),l=i?A({...e,config:e.config},`tap`,!1):void 0,u=()=>(a(e),o(`tap`).contentWindow),f=s?new _(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},u,{...e,chains:[`solana`]},!1):void 0;f?.setAccountMode(`tap`);let p;e.deferIframe===!1?c.preload().catch(()=>void 0):e.deferIframe===void 0&&(p=d(c));let m=c.login.bind(c),h=async e=>{let t=await m(e);return l?.setLoginMethod(t),f?.setLoginMethod(t),t&&c.emit(`connect`),t},g=c.logout.bind(c),v=async()=>{await g(),l?.setLoginMethod(null),f?.setLoginMethod(null)},b;b={login:h,logout:v,getLoginMethod:()=>c.getLoginMethod(),getAccountStatus:()=>c.session.getAccountStatus(),on:(e,t)=>(c.on(e,t),b),removeListener:(e,t)=>(c.removeListener(e,t),b)},c.login=b.login,c.logout=b.logout,l&&(l.login=()=>b.login(),l.logout=()=>b.logout()),f&&(f.login=()=>b.login(),f.logout=()=>b.logout());let x=()=>{let e=c.getAccountStatus(),t=l?.getAccountStatus(),n=f?.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}}},S=c.destroy.bind(c),C=l?.destroy.bind(l),w=f?.destroy.bind(f),E=()=>{p?.(),S(),C?.(),w?.(),t()},D={session:b,getAccountStatus:x,preload:()=>c.preload(),destroy:E};return r&&(c.destroy=E,Object.assign(D,{evm:c,ethereum:c})),l&&(l.destroy=E,Object.assign(D,{sui:l})),f&&(f.destroy=E,Object.assign(D,{solana:f})),D}function R(e={}){return console.warn("[WaaP SDK] `initWaaPSui()` is deprecated. Use `initWaaP({ chain: 'sui' })` instead."),N({...e,chain:`sui`})}function z(e={}){return N({...e,chain:`solana`})}function B(e={}){return L({...e,chains:e.chains??F})}export{R as a,k as c,I as i,L as n,B as o,z as r,j as s,N as t};
@@ -1,5 +1,5 @@
1
- import { s as RequestArguments } from "./types-BmCqyQtu.mjs";
2
- import { u as WaaPSquidStatus } from "./index-C0mLQs_a.mjs";
1
+ import { c as RequestArguments } from "./types-Cc6tc4ut.mjs";
2
+ import { d as WaaPSquidStatus } from "./index-BOExImk3.mjs";
3
3
  //#region ../silk-interface-core/dist/esm/types/asyncSigning.d.ts
4
4
  /**
5
5
  * Types for async transaction feature.
@@ -0,0 +1 @@
1
+ const e=require("./asyncSigning-B0KrmKk7.js");let t=require("react");function n(e,n){let r=e&&`request`in e?e:void 0,i=r?n:e,[a,o]=(0,t.useState)(new Map),s=(0,t.useRef)(i);return(0,t.useEffect)(()=>{s.current=i},[i]),(0,t.useEffect)(()=>{let e=r||window.waap||window.silk;if(!e){console.warn(`[useWaapTransaction] WaaP provider not found. Make sure initWaaP() was called.`);return}let t=e=>{o(t=>{let n=new Map(t);return n.set(e.txHash,{status:`signed`,txHash:e.txHash,pendingTxId:e.pendingTxId,signature:e.signature,serializedTx:e.serializedTx}),n}),s.current?.onSigned?.(e)},n=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`tx_pending`,txHash:e.txHash,pendingTxId:e.pendingTxId}),n}),s.current?.onTxPending?.(e)},i=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`confirmed`,txHash:e.txHash,pendingTxId:e.pendingTxId,receipt:e.receipt}),n}),s.current?.onConfirmed?.(e)},a=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`failed`,txHash:e.txHash,pendingTxId:e.pendingTxId,error:e.error,stage:e.stage}),n}),s.current?.onFailed?.(e)};return e.on(`waap_sign_complete`,t),e.on(`waap_tx_pending`,n),e.on(`waap_tx_confirmed`,i),e.on(`waap_tx_failed`,a),()=>{e.removeListener?.(`waap_sign_complete`,t),e.removeListener?.(`waap_tx_pending`,n),e.removeListener?.(`waap_tx_confirmed`,i),e.removeListener?.(`waap_tx_failed`,a)}},[r]),{sendTransaction:(0,t.useCallback)(async e=>{let t=r||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return await t.request({method:`eth_sendTransaction`,params:e})},[r]),signTransaction:(0,t.useCallback)(async e=>{let t=r||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return t.request({method:`eth_signTransaction`,params:e})},[r]),pendingTransactions:a,isAnyPending:Array.from(a.values()).some(e=>e.status===`signed`||e.status===`tx_pending`)}}const r=()=>({state:`absent`}),i=(e,t)=>e?.getSquidStatus?.()??t;function a(n){let[a,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(()=>i(n,r())),[l,u]=(0,t.useState)(null),[d,f]=(0,t.useState)(null),[p,m]=(0,t.useState)(null);return(0,t.useEffect)(()=>{if(!n)return;let t=e=>{let t=i(n,e);return c(t),t};t(r());let a=e=>{let n=e.transactionDigest;t({state:n?`awaiting-network`:`provisioning`,...n?{operationId:n,transactionDigest:n}:{},...e.message?{message:e.message}:{}})},s=e=>{t({state:`active`}).state===`active`&&(u(e.evm),f(e.sui??null),m(e.solana??null))},l=e=>{t({state:`failed`,message:e.error})},d=()=>o(!0),p=e=>{u(e.length>0?e[0]:null)},h=()=>{o(!1),c(r()),u(null),f(null),m(null)};return n.on(e.t.squidPending,a),n.on(e.t.squidReady,s),n.on(e.t.squidFailed,l),n.on(`connect`,d),n.on(`accountsChanged`,p),n.on(`disconnect`,h),()=>{n.removeListener(e.t.squidPending,a),n.removeListener(e.t.squidReady,s),n.removeListener(e.t.squidFailed,l),n.removeListener(`connect`,d),n.removeListener(`accountsChanged`,p),n.removeListener(`disconnect`,h)}},[n]),{isConnected:a,isPending:s.state===`provisioning`||s.state===`awaiting-network`,squidReady:s.state===`active`,error:s.state===`failed`?s.message??null:null,address:l,suiAddress:d,solanaAddress:p,squidStatus:s}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
@@ -1,5 +1,5 @@
1
- import { s as RequestArguments } from "./types-BmCqyQtu.js";
2
- import { u as WaaPSquidStatus } from "./index-DOIss_GK.js";
1
+ import { c as RequestArguments } from "./types-Cc6tc4ut.js";
2
+ import { d as WaaPSquidStatus } from "./index-BkKBZpqc.js";
3
3
  //#region ../silk-interface-core/dist/esm/types/asyncSigning.d.ts
4
4
  /**
5
5
  * Types for async transaction feature.
@@ -0,0 +1 @@
1
+ import{t as e}from"./asyncSigning-CzqBbYDP.mjs";import{useCallback as t,useEffect as n,useRef as r,useState as i}from"react";function a(e,a){let o=e&&`request`in e?e:void 0,s=o?a:e,[c,l]=i(new Map),u=r(s);return n(()=>{u.current=s},[s]),n(()=>{let e=o||window.waap||window.silk;if(!e){console.warn(`[useWaapTransaction] WaaP provider not found. Make sure initWaaP() was called.`);return}let t=e=>{l(t=>{let n=new Map(t);return n.set(e.txHash,{status:`signed`,txHash:e.txHash,pendingTxId:e.pendingTxId,signature:e.signature,serializedTx:e.serializedTx}),n}),u.current?.onSigned?.(e)},n=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`tx_pending`,txHash:e.txHash,pendingTxId:e.pendingTxId}),n}),u.current?.onTxPending?.(e)},r=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`confirmed`,txHash:e.txHash,pendingTxId:e.pendingTxId,receipt:e.receipt}),n}),u.current?.onConfirmed?.(e)},i=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`failed`,txHash:e.txHash,pendingTxId:e.pendingTxId,error:e.error,stage:e.stage}),n}),u.current?.onFailed?.(e)};return e.on(`waap_sign_complete`,t),e.on(`waap_tx_pending`,n),e.on(`waap_tx_confirmed`,r),e.on(`waap_tx_failed`,i),()=>{e.removeListener?.(`waap_sign_complete`,t),e.removeListener?.(`waap_tx_pending`,n),e.removeListener?.(`waap_tx_confirmed`,r),e.removeListener?.(`waap_tx_failed`,i)}},[o]),{sendTransaction:t(async e=>{let t=o||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return await t.request({method:`eth_sendTransaction`,params:e})},[o]),signTransaction:t(async e=>{let t=o||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return t.request({method:`eth_signTransaction`,params:e})},[o]),pendingTransactions:c,isAnyPending:Array.from(c.values()).some(e=>e.status===`signed`||e.status===`tx_pending`)}}const o=()=>({state:`absent`}),s=(e,t)=>e?.getSquidStatus?.()??t;function c(t){let[r,a]=i(!1),[c,l]=i(()=>s(t,o())),[u,d]=i(null),[f,p]=i(null),[m,h]=i(null);return n(()=>{if(!t)return;let n=e=>{let n=s(t,e);return l(n),n};n(o());let r=e=>{let t=e.transactionDigest;n({state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e.message?{message:e.message}:{}})},i=e=>{n({state:`active`}).state===`active`&&(d(e.evm),p(e.sui??null),h(e.solana??null))},c=e=>{n({state:`failed`,message:e.error})},u=()=>a(!0),f=e=>{d(e.length>0?e[0]:null)},m=()=>{a(!1),l(o()),d(null),p(null),h(null)};return t.on(e.squidPending,r),t.on(e.squidReady,i),t.on(e.squidFailed,c),t.on(`connect`,u),t.on(`accountsChanged`,f),t.on(`disconnect`,m),()=>{t.removeListener(e.squidPending,r),t.removeListener(e.squidReady,i),t.removeListener(e.squidFailed,c),t.removeListener(`connect`,u),t.removeListener(`accountsChanged`,f),t.removeListener(`disconnect`,m)}},[t]),{isConnected:r,isPending:c.state===`provisioning`||c.state===`awaiting-network`,squidReady:c.state===`active`,error:c.state===`failed`?c.message??null:null,address:u,suiAddress:f,solanaAddress:m,squidStatus:c}}export{a as n,c as t};
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./WalletConnect-Dn40Omgo.js");exports.SilkWalletConnect=e.t,exports.WaaPWalletConnect=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./WalletConnect-B21f4Vvh.js");exports.SilkWalletConnect=e.t,exports.WaaPWalletConnect=e.t;
@@ -1 +1 @@
1
- import{t as e}from"./WalletConnect-UfxGn2M_.mjs";export{e as SilkWalletConnect,e as WaaPWalletConnect};
1
+ import{t as e}from"./WalletConnect-DXiTxC-F.mjs";export{e as SilkWalletConnect,e as WaaPWalletConnect};
@@ -0,0 +1,157 @@
1
+ # Solana wallet-adapter integration
2
+
3
+ WaaP implements Solana Wallet Standard. A compatible
4
+ `@solana/wallet-adapter-react` discovers it and creates the generic adapter for
5
+ its existing `WalletProvider`, wallet picker, and `useWallet()` consumers. You
6
+ do not need a `waap-wallet-adapter` package.
7
+
8
+ The behavior below describes this source revision. Use an SDK release containing
9
+ the Solana Wallet Standard connection changes; older releases require manual
10
+ registration and prior authentication. This guide does not establish a minimum
11
+ compatible version of every wallet-adapter release.
12
+
13
+ ## Initialize once in the browser
14
+
15
+ Install `@human.tech/waap-sdk`, `@solana/wallet-adapter-react`,
16
+ `@solana/web3.js`, and your existing wallet picker in your app. For Next.js,
17
+ put the integration in a client component. Do not initialize during server
18
+ rendering or a React component render.
19
+
20
+ ```tsx
21
+ import { useEffect, type ReactNode } from 'react'
22
+ import { initWaaP } from '@human.tech/waap-sdk'
23
+ import {
24
+ ConnectionProvider,
25
+ WalletProvider
26
+ } from '@solana/wallet-adapter-react'
27
+ import { clusterApiUrl } from '@solana/web3.js'
28
+
29
+ const endpoint = clusterApiUrl('devnet')
30
+
31
+ export function SolanaWallets({ children }: { children: ReactNode }) {
32
+ useEffect(() => {
33
+ const waap = initWaaP({
34
+ chain: 'solana',
35
+ defaultChain: 'solana:devnet',
36
+ environment: 'production'
37
+ })
38
+ return () => waap.destroy()
39
+ }, [])
40
+
41
+ return (
42
+ <ConnectionProvider endpoint={endpoint}>
43
+ <WalletProvider wallets={[]} autoConnect>
44
+ {children /* Your existing picker and useWallet() consumers */}
45
+ </WalletProvider>
46
+ </ConnectionProvider>
47
+ )
48
+ }
49
+ ```
50
+
51
+ Initialization registers WaaP automatically. The registry notifies mounted
52
+ consumers, so initialization after `WalletProvider` mounts is supported. Do not
53
+ add WaaP to `wallets` or register it again. `wallets={[]}` still permits Wallet
54
+ Standard discovery, including other installed wallets.
55
+
56
+ Keep one active WaaP initializer for the embedding UI. `destroy()` removes its
57
+ registration and releases its resources; React effect cleanup handles route
58
+ changes and development Strict Mode remounts. Destroy the old owner before
59
+ creating one with another wallet origin or environment. `environment` selects
60
+ the WaaP wallet deployment, while the RPC endpoint selects the Solana cluster.
61
+
62
+ Set `defaultChain` to match that RPC endpoint. Wallet-adapter's sign-only and
63
+ batch methods omit the optional Wallet Standard `chain`, and serialized Solana
64
+ transactions do not identify their cluster. WaaP uses `defaultChain` for those
65
+ requests (mainnet when omitted); an explicit per-request `chain` takes precedence.
66
+ If the app switches clusters, reinitialize WaaP with the matching default.
67
+
68
+ ## Connect and reconnect
69
+
70
+ | Action | Behavior |
71
+ | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
72
+ | User selects WaaP and connects | Probes the current WaaP session; reuses a valid session or opens login, then connects the Solana account. |
73
+ | Previously selected WaaP is restored by `autoConnect` | The generic adapter calls silent connect. WaaP checks the current session without a login modal. |
74
+ | Silent reconnect has no valid session | Returns empty accounts and stays disconnected; the user can explicitly connect. |
75
+ | Silent session check fails because of a transport error | Reports the error; it does not claim the cached account is authenticated. |
76
+ | Disconnect | Clears the connected account in the adapter; handle errors through `WalletProvider`'s `onError`. |
77
+
78
+ `autoConnect` restores a previously selected wallet; it does not select WaaP on
79
+ behalf of the user. Do not call explicit `connect()` at startup to emulate silent
80
+ reconnect. Use an explicit user action to open login when reconnection cannot
81
+ restore a session.
82
+
83
+ These rules describe standalone `initWaaP({ chain: 'solana' })`. A composite
84
+ `initWaaPSquid` integration still owns `session.login()` and `squid.onboard()`;
85
+ this example does not implicitly create a Squid account.
86
+
87
+ ## Signing and sending
88
+
89
+ Use the existing `useWallet()` methods: `signMessage`, `signTransaction`,
90
+ `signAllTransactions`, and `sendTransaction`. As with any adapter, check optional
91
+ signing methods before calling them and show errors to the user.
92
+
93
+ - Both legacy and v0 serialized transactions are supported.
94
+ - `signTransaction` signs without broadcasting. `sendTransaction` returns a
95
+ cluster signature; use the Solana connection to check confirmation.
96
+ - Submission honors `preflightCommitment`, `minContextSlot`, `skipPreflight`,
97
+ and `maxRetries`. These affect RPC submission only; they do not bypass wallet
98
+ review or policy checks. The separate Wallet Standard `commitment` option is
99
+ unsupported because the wallet does not wait for confirmation.
100
+ Custom broadcast settings require the matching wallet deployment containing
101
+ the send-options changes, as well as this SDK.
102
+ - The generic adapter supplies `signAllTransactions` by calling the variadic
103
+ `solana:signTransaction` feature. WaaP processes inputs sequentially, with
104
+ separate iframe requests and normal approval policy for each transaction.
105
+ There is no direct facade `signAllTransactions` helper, atomic batch, or one
106
+ Squid roundtrip for the entire batch. An error stops remaining inputs; an
107
+ earlier input may already have been approved and signed.
108
+ - Obtain a fresh blockhash near signing. WaaP preserves the transaction bytes,
109
+ and human approval or sequential batch processing can outlast a blockhash.
110
+ - No dedicated Solana signing-progress interface is exposed. Use pending state
111
+ around the returned promise; do not rely on EVM transaction lifecycle events.
112
+
113
+ ## Reference app and verification
114
+
115
+ The internal demo route `/solana-wallet-adapter` uses the actual `WalletProvider`,
116
+ standard adapter, and wallet picker. Start it with:
117
+
118
+ ```bash
119
+ pnpm --filter internal-waap-demo dev
120
+ ```
121
+
122
+ Open the printed local URL at `/solana-wallet-adapter`. Append `?env=staging`
123
+ for the staging wallet. The example uses a devnet connection and a native wallet
124
+ selector backed by `useWallet()`.
125
+ Wallet deployment selection is separate from cluster selection.
126
+
127
+ The reference app pins `@solana/wallet-adapter-react` **0.15.40**,
128
+ `@solana/wallet-standard-wallet-adapter-base` **1.1.6**, and `@solana/web3.js`
129
+ **1.99.0**, with React **18.3.1**. These are the integration test targets, not a
130
+ claim of compatibility with every prior release.
131
+
132
+ Before a release is called live-validated, record the exact SDK build, wallet
133
+ origin, browser, dependency versions, test account, and these outcomes:
134
+
135
+ - [ ] WaaP appears alongside an installed Wallet Standard wallet, without a
136
+ manually supplied WaaP adapter.
137
+ - [ ] A signed-out connect opens login; cancelling leaves the adapter
138
+ disconnected and allows a later retry.
139
+ - [ ] A valid session connects and restores after reload through `autoConnect`
140
+ without a login modal.
141
+ - [ ] An expired or logged-out session stays disconnected after reload without
142
+ a login modal; explicit connect can authenticate again.
143
+ - [ ] Disconnect clears the displayed account; unmount/remount leaves one WaaP
144
+ registration.
145
+ - [ ] A signed message verifies locally against the selected public key.
146
+ - [ ] Legacy and v0 sign-only transactions preserve the expected transaction
147
+ and have a valid signature.
148
+ - [ ] `signAllTransactions` returns valid signatures in input order and surfaces
149
+ rejection without continuing the batch.
150
+ - [ ] A funded devnet send returns a signature that confirms on devnet.
151
+
152
+ Automated tests with a mocked iframe prove consumer integration and transport
153
+ contracts. They do not prove social login, a live signer, or on-chain submission.
154
+ Live validation and npm publication are separate release steps; neither is
155
+ implied by this guide. Follow the repository's
156
+ [SDK release process](../../../docs/package-release-management.md#develop-and-release-the-sdk)
157
+ to publish a staging snapshot, test those exact bytes, and promote the release.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@human.tech/waap-sdk",
3
- "version": "2.3.0",
3
+ "version": "2.4.1",
4
4
  "description": "SDK for interacting with WaaP",
5
5
  "types": "./dist/index.d.ts",
6
6
  "exports": {
@@ -24,6 +24,11 @@
24
24
  "require": "./dist/solana.js",
25
25
  "import": "./dist/solana.mjs"
26
26
  },
27
+ "./stellar": {
28
+ "types": "./dist/stellar.d.ts",
29
+ "require": "./dist/stellar.js",
30
+ "import": "./dist/stellar.mjs"
31
+ },
27
32
  "./react": {
28
33
  "types": "./dist/react.d.ts",
29
34
  "require": "./dist/react.js",
@@ -33,6 +38,11 @@
33
38
  "types": "./dist/walletconnect.d.ts",
34
39
  "require": "./dist/walletconnect.js",
35
40
  "import": "./dist/walletconnect.mjs"
41
+ },
42
+ "./bridge": {
43
+ "types": "./dist/bridge.d.ts",
44
+ "require": "./dist/bridge.js",
45
+ "import": "./dist/bridge.mjs"
36
46
  }
37
47
  },
38
48
  "main": "./dist/index.js",
@@ -47,12 +57,25 @@
47
57
  "url": "git+https://github.com/holonym-foundation/silk.git",
48
58
  "directory": "packages/waap-sdk"
49
59
  },
60
+ "homepage": "https://docs.waap.human.tech/for-apps",
61
+ "keywords": [
62
+ "wallet",
63
+ "embedded-wallet",
64
+ "web3",
65
+ "evm",
66
+ "sui",
67
+ "solana",
68
+ "human.tech",
69
+ "waap",
70
+ "wallet-protocol"
71
+ ],
50
72
  "private": false,
51
73
  "publishConfig": {
52
74
  "access": "public"
53
75
  },
54
76
  "files": [
55
77
  "/dist",
78
+ "/docs",
56
79
  "src/global.d.ts",
57
80
  ".agent",
58
81
  "CHANGELOG.md"
@@ -67,6 +90,7 @@
67
90
  "@types/react": "^18.0.0",
68
91
  "@types/react-dom": "^18.0.0",
69
92
  "@typescript/native": "npm:typescript@^7.0.2",
93
+ "esbuild": "0.27.4",
70
94
  "jsdom": "^22.0.0",
71
95
  "react": "18.3.1",
72
96
  "react-dom": "^18.0.0",
@@ -89,14 +113,18 @@
89
113
  "@reown/appkit-adapter-ethers": "1.8.22",
90
114
  "@wallet-standard/wallet": "1.1.1",
91
115
  "ethers": "^6.16.0",
92
- "events": "^3.3.0"
116
+ "events": "^3.3.0",
117
+ "@wallet-standard/app": "1.1.1"
93
118
  },
94
119
  "scripts": {
95
120
  "build": "tsdown --config-loader native",
96
121
  "build-to-publish": "NODE_ENV=production tsdown --config-loader native",
97
122
  "dev": "tsdown --config-loader native --watch",
98
- "test": "vitest run && pnpm type-check && pnpm test:types",
123
+ "test": "vitest run && pnpm check:docs && pnpm type-check && pnpm test:types",
99
124
  "type-check": "tsc --noEmit",
100
- "test:types": "pnpm build && pnpm exec tsc --noEmit -p tsconfig.public-api.json"
125
+ "test:types": "pnpm build && pnpm test:bundle && pnpm exec tsc --noEmit -p tsconfig.public-api.json",
126
+ "test:bundle": "node scripts/assert-no-react-native-fallbacks.mjs",
127
+ "build:bridge-page": "node scripts/build-bridge-page.mjs",
128
+ "check:docs": "node ../../scripts/check-documented-imports.mjs ."
101
129
  }
102
130
  }
@@ -1 +0,0 @@
1
- var e;(function(e){e.request=`request`,e.response=`response`,e.notification=`notification`})(e||={});var t;(function(e){e.eth_requestAccounts=`eth_requestAccounts`,e.eth_accounts=`eth_accounts`,e.eth_sendTransaction=`eth_sendTransaction`,e.eth_signTransaction=`eth_signTransaction`,e.eth_getBalance=`eth_getBalance`,e.personal_sign=`personal_sign`,e.eth_signTypedData_v4=`eth_signTypedData_v4`,e.eth_chainId=`eth_chainId`,e.net_version=`net_version`,e.wallet_switchEthereumChain=`wallet_switchEthereumChain`,e.wallet_addEthereumChain=`wallet_addEthereumChain`,e.eth_estimateGas=`eth_estimateGas`,e.eth_blockNumber=`eth_blockNumber`,e.eth_getCode=`eth_getCode`,e.eth_call=`eth_call`,e.eth_getTransactionReceipt=`eth_getTransactionReceipt`,e.eth_getTransactionByHash=`eth_getTransactionByHash`,e.eth_accountsChanged=`eth_accountsChanged`,e.sui_connect=`sui_connect`,e.sui_disconnect=`sui_disconnect`,e.sui_getAccounts=`sui_getAccounts`,e.sui_signPersonalMessage=`sui_signPersonalMessage`,e.sui_signTransaction=`sui_signTransaction`,e.sui_signAndExecuteTransaction=`sui_signAndExecuteTransaction`,e.sui_switchChain=`sui_switchChain`,e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e.login=`login`,e.auto_conn=`auto_conn`,e.logout=`logout`,e.set_points_referral_code=`set_points_referral_code`,e.set_project=`set_project`,e.silk_requestEmail=`silk_requestEmail`,e.silk_requestSbt=`silk_requestSbt`,e.set_custom_config=`set_custom_config`,e.safe=`safe`,e.set_is_mobile=`set_is_mobile`,e.project_init=`project_init`,e.gastank_get_settings=`gastank_get_settings`,e.gastank_update_settings=`gastank_update_settings`,e.gastank_topup=`gastank_topup`,e.customization_get=`customization_get`,e.customization_update=`customization_update`,e.orcid=`orcid`,e.waap_requestPermissionToken=`waap_requestPermissionToken`,e.waap_getAccountStatus=`waap_getAccountStatus`,e.waap_getPermissionTokenStatus=`waap_getPermissionTokenStatus`,e.waap_clearPermissionToken=`waap_clearPermissionToken`,e.waap_getLinkedAddresses=`waap_getLinkedAddresses`,e.waap_linkAddress=`waap_linkAddress`,e.waap_unlinkAddress=`waap_unlinkAddress`,e.waap_getLinkAddressNonce=`waap_getLinkAddressNonce`,e.solana_connect=`solana_connect`,e.solana_disconnect=`solana_disconnect`,e.solana_signMessage=`solana_signMessage`,e.solana_signTransaction=`solana_signTransaction`,e.solana_signAllTransactions=`solana_signAllTransactions`,e.solana_signAndSendTransaction=`solana_signAndSendTransaction`,e.set_signing_mode=`set_signing_mode`,e.enter_lite_mode=`enter_lite_mode`})(t||={});var n;(function(e){e.eth_requestAccounts=`eth_requestAccounts`,e.eth_accounts=`eth_accounts`,e.eth_sendTransaction=`eth_sendTransaction`,e.eth_signTransaction=`eth_signTransaction`,e.eth_getBalance=`eth_getBalance`,e.personal_sign=`personal_sign`,e.eth_signTypedData_v4=`eth_signTypedData_v4`,e.eth_chainId=`eth_chainId`,e.net_version=`net_version`,e.wallet_switchEthereumChain=`wallet_switchEthereumChain`,e.wallet_addEthereumChain=`wallet_addEthereumChain`,e.eth_estimateGas=`eth_estimateGas`,e.eth_blockNumber=`eth_blockNumber`,e.eth_getCode=`eth_getCode`,e.eth_call=`eth_call`,e.eth_getTransactionReceipt=`eth_getTransactionReceipt`,e.eth_getTransactionByHash=`eth_getTransactionByHash`})(n||={});var r;(function(e){e.ready=`ready`,e.connect=`connect`,e.account_changed=`account_changed`,e.mobile_oauth_success=`mobile_oauth_success`,e.mobile_oauth_error=`mobile_oauth_error`,e.tx_pending=`waap_txPending`,e.tx_2fa_required=`waap_tx2faRequired`,e.tx_signed=`waap_txSigned`,e.tx_confirmed=`waap_txConfirmed`,e.tx_failed=`waap_txFailed`,e.squid_pending=`waap_squid_pending`,e.squid_ready=`waap_squid_ready`,e.squid_failed=`waap_squid_failed`,e.request_cancel=`waap_requestCancel`})(r||={});export{r as i,e as n,t as r,n as t};
@@ -1 +0,0 @@
1
- var e;(function(e){e.request=`request`,e.response=`response`,e.notification=`notification`})(e||={});var t;(function(e){e.eth_requestAccounts=`eth_requestAccounts`,e.eth_accounts=`eth_accounts`,e.eth_sendTransaction=`eth_sendTransaction`,e.eth_signTransaction=`eth_signTransaction`,e.eth_getBalance=`eth_getBalance`,e.personal_sign=`personal_sign`,e.eth_signTypedData_v4=`eth_signTypedData_v4`,e.eth_chainId=`eth_chainId`,e.net_version=`net_version`,e.wallet_switchEthereumChain=`wallet_switchEthereumChain`,e.wallet_addEthereumChain=`wallet_addEthereumChain`,e.eth_estimateGas=`eth_estimateGas`,e.eth_blockNumber=`eth_blockNumber`,e.eth_getCode=`eth_getCode`,e.eth_call=`eth_call`,e.eth_getTransactionReceipt=`eth_getTransactionReceipt`,e.eth_getTransactionByHash=`eth_getTransactionByHash`,e.eth_accountsChanged=`eth_accountsChanged`,e.sui_connect=`sui_connect`,e.sui_disconnect=`sui_disconnect`,e.sui_getAccounts=`sui_getAccounts`,e.sui_signPersonalMessage=`sui_signPersonalMessage`,e.sui_signTransaction=`sui_signTransaction`,e.sui_signAndExecuteTransaction=`sui_signAndExecuteTransaction`,e.sui_switchChain=`sui_switchChain`,e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e.login=`login`,e.auto_conn=`auto_conn`,e.logout=`logout`,e.set_points_referral_code=`set_points_referral_code`,e.set_project=`set_project`,e.silk_requestEmail=`silk_requestEmail`,e.silk_requestSbt=`silk_requestSbt`,e.set_custom_config=`set_custom_config`,e.safe=`safe`,e.set_is_mobile=`set_is_mobile`,e.project_init=`project_init`,e.gastank_get_settings=`gastank_get_settings`,e.gastank_update_settings=`gastank_update_settings`,e.gastank_topup=`gastank_topup`,e.customization_get=`customization_get`,e.customization_update=`customization_update`,e.orcid=`orcid`,e.waap_requestPermissionToken=`waap_requestPermissionToken`,e.waap_getAccountStatus=`waap_getAccountStatus`,e.waap_getPermissionTokenStatus=`waap_getPermissionTokenStatus`,e.waap_clearPermissionToken=`waap_clearPermissionToken`,e.waap_getLinkedAddresses=`waap_getLinkedAddresses`,e.waap_linkAddress=`waap_linkAddress`,e.waap_unlinkAddress=`waap_unlinkAddress`,e.waap_getLinkAddressNonce=`waap_getLinkAddressNonce`,e.solana_connect=`solana_connect`,e.solana_disconnect=`solana_disconnect`,e.solana_signMessage=`solana_signMessage`,e.solana_signTransaction=`solana_signTransaction`,e.solana_signAllTransactions=`solana_signAllTransactions`,e.solana_signAndSendTransaction=`solana_signAndSendTransaction`,e.set_signing_mode=`set_signing_mode`,e.enter_lite_mode=`enter_lite_mode`})(t||={});var n;(function(e){e.eth_requestAccounts=`eth_requestAccounts`,e.eth_accounts=`eth_accounts`,e.eth_sendTransaction=`eth_sendTransaction`,e.eth_signTransaction=`eth_signTransaction`,e.eth_getBalance=`eth_getBalance`,e.personal_sign=`personal_sign`,e.eth_signTypedData_v4=`eth_signTypedData_v4`,e.eth_chainId=`eth_chainId`,e.net_version=`net_version`,e.wallet_switchEthereumChain=`wallet_switchEthereumChain`,e.wallet_addEthereumChain=`wallet_addEthereumChain`,e.eth_estimateGas=`eth_estimateGas`,e.eth_blockNumber=`eth_blockNumber`,e.eth_getCode=`eth_getCode`,e.eth_call=`eth_call`,e.eth_getTransactionReceipt=`eth_getTransactionReceipt`,e.eth_getTransactionByHash=`eth_getTransactionByHash`})(n||={});var r;(function(e){e.ready=`ready`,e.connect=`connect`,e.account_changed=`account_changed`,e.mobile_oauth_success=`mobile_oauth_success`,e.mobile_oauth_error=`mobile_oauth_error`,e.tx_pending=`waap_txPending`,e.tx_2fa_required=`waap_tx2faRequired`,e.tx_signed=`waap_txSigned`,e.tx_confirmed=`waap_txConfirmed`,e.tx_failed=`waap_txFailed`,e.squid_pending=`waap_squid_pending`,e.squid_ready=`waap_squid_ready`,e.squid_failed=`waap_squid_failed`,e.request_cancel=`waap_requestCancel`})(r||={}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return n}});
@@ -1,2 +0,0 @@
1
- import{i as e,n as t,r as n,t as r}from"./esm-BUfmyWbN.mjs";import{t as i}from"./WalletConnect-UfxGn2M_.mjs";import{EventEmitter as a}from"events";import{getAddress as o}from"ethers";var s=class extends Error{constructor(e,t,n={}){super(t),this.name=`WaaPError`,this.code=e,this.operation=n.operation,this.cause=n.cause}};function c(e,t){if(e instanceof s)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 s(a.includes(`cancelled`)||a.includes(`canceled`)?`cancelled`:a.includes(`timed out`)?`timeout`:a.includes(`insufficient balance`)?`insufficient_balance`: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 l=`waap-wallet`,u=`waap-component-container`,d=typeof window<`u`&&typeof document<`u`&&typeof HTMLElement<`u`;let f;d?(f=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=u,this.setAttribute(`data-waap-mounted`,`true`)}disconnectedCallback(){this.removeAttribute(`data-waap-mounted`)}},typeof customElements<`u`&&!customElements.get(l)&&customElements.define(l,f)):f=class{};function p(){return d?!!document.getElementById(u)||!!document.querySelector(l):!1}function m(){return d?document.getElementById(u)||document.querySelector(l):null}const h=`https://staging.waap.xyz`,g={development:`http://localhost:3000`,staging:h,production:`https://waap.xyz`},ee=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:`&&ee(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?_(g[e.environment]):e.useStaging?_(h):_(g.production)}const y=new WeakMap,b=new WeakMap,te=()=>typeof performance<`u`?performance.now():Date.now(),x=e=>({generation:e.generation,navigationStartedAt:e.navigationStartedAt,loadedAt:e.loadedAt}),S=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:te(),loadedAt:null,listeners:new Set,cleanup:()=>{}},a=()=>{i.generation+=1,i.loadedAt=te();let e=x(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)},ne=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))},C=e=>{let t=y.get(e);return t?x(t):null},re=(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(x(n)):Promise.resolve(null)},ie=(e,t)=>{let n=y.get(e);return n?(n.listeners.add(t),()=>n.listeners.delete(t)):()=>{}},ae=`waap-wallet-loading-styles`,w=`waap-iframe-visual-ready`,T=typeof window<`u`&&typeof document<`u`,oe=()=>{if(!T||document.getElementById(ae))return;let e=document.createElement(`style`);e.id=ae,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)},se=(e={})=>v(e),E=()=>T?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,D=()=>T?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,O=()=>T?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,k=(e=O())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},ce=(e=O())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},A=(e,t)=>{if(e){if(t===null){delete e.dataset.waapVisualReadySupported;return}e.dataset.waapVisualReadySupported=String(t)}},le=(e,t)=>{let n=e.__silkCleanup;e.__silkCleanup=()=>{n?.(),t()}},ue=e=>{let t=O();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},de=e=>{if(T)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{}},fe=(e,t)=>{e.dataset.waapTheme=t?`dark`:`light`},pe=(e,t)=>{let n=e;de(n);let r=document.createElement(`iframe`);return r.id=`waap-wallet-iframe`,r.dataset.waapOrigin=n,fe(r,t),S(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},me=()=>{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},he=()=>{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},ge=(e,t)=>{let n=e,r,i,a,o,s=()=>{if(r=void 0,!o)return;let e=D();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(w,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(w,l)};return le(t,d),d},_e=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,A(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<=k(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(w,{detail:{revision:r}})))};t.addEventListener(`load`,n),window.addEventListener(`message`,r);let i=()=>{t.removeEventListener(`load`,n),window.removeEventListener(`message`,r)};return le(t,i),i},ve=()=>{setTimeout(()=>{if(typeof document>`u`)return;let e=D();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},j=e=>{let t=O();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},ye=(e,t)=>{let n=m();if(!n)throw Error(`WaaP component not found in DOM`);if(j(e))return;let r=me(),i=pe(e,t);ge(e,i),_e(e,i),ve(),r.appendChild(i),n.appendChild(r),S(i)},be=(e,t)=>{if(j(e))return;let n=he(),r=me();n.appendChild(r);let i=pe(e,t);ge(e,i),_e(e,i),ve(),r.appendChild(i),document.body.appendChild(n),S(i)},M=(e={})=>{if(!T)return;oe();let t=se(e),n=e.config?.styles?.darkMode===!0,r=O();r&&fe(r,n),p()?ye(t,n):be(t,n)},N=()=>{if(!T)return;Fe();let e=O(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&ne(e);let n=D(),r=E();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let P=0;async function xe(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 F(new Uint8Array(e))}return P+=1,F(new TextEncoder().encode(`${t}:${P}:${Math.random()}:${JSON.stringify(e)}`)).padEnd(64,`0`).slice(0,64)}function F(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}const I=new WeakMap,Se=(e,t)=>{let n=I.get(e);if(n)return n;let r=t();return I.set(e,r),r.catch(()=>{I.get(e)===r&&I.delete(e)}),r},Ce=e=>{I.delete(e)},L=(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}:{}}),R=new Set;let z=!1,B;const V=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}}},H=e=>{let t=V.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 V.set(e,n),n},U=(e,t)=>{let n=V.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=O();i?.contentWindow===e&&A(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=()=>{z||typeof window>`u`||(z=!0,B=e=>{for(let{manager:t,config:n}of Array.from(R))Oe(e,t,n)},window.addEventListener(`message`,B))},Ae=()=>{R.size>0||!z||!B||typeof window>`u`||(window.removeEventListener(`message`,B),B=void 0,z=!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=ie(e,()=>{let t=H(e);(t.ready||t.readyPingStartedAt!==null)&&(Ce(e),U(e,Error(`WaaP iframe reloaded; readiness must be re-established`)),this.terminalResponseDeduper.clear())})}setIframeWindow(e){this.iframeWindow&&this.iframeWindow!==e&&(U(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?C(e):null,n=e?H(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=H(n),i=C(n);return r.ready&&(!i||r.navigationGeneration===i.generation)?Promise.resolve():(r.ready&&U(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,re(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=C(n)?.generation??i?.generation??null,r.readyAt=Te(),r.visualReadySupported=o.data?.capabilities?.visualReady===1;let e=O();e?.contentWindow===n&&A(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 xe(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};R.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(R.delete(t),Ae())};return this.unregisterListeners.add(n),n}dispose(){this.disposed||(this.disposed=!0,this.iframeWindow&&U(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 W=`waap-wallet-iframe-loading`,G=new Set,K=()=>typeof performance<`u`?performance.now():Date.now(),q=e=>{G.forEach(t=>{try{t(e)}catch{}})},Me=e=>(G.add(e),()=>G.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(w,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=D();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=k(this.iframe)+1,this.phase=`pending`,this.requestedAt=K(),this.visibleAt=null,this.usedVisualFallback=!1,q({phase:`modal_requested`,at:this.requestedAt,visualRevision:this.pendingRevision}),this.hideIframeUntilPaint(t),n===`modal`?this.showModalSurface():t.style.display=`flex`;let r=ce(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=K();e&&q({phase:`modal_cancelled`,at:t,visualRevision:k(this.iframe)}),q({phase:`modal_hidden`,at:t,visualRevision:k(this.iframe)});let n=D();if(n&&delete n.dataset.waapSizeLocked,p()){n&&(n.style.display=`none`);return}let r=E();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(w,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(p()){let t=m();return t&&e.parentElement!==t&&t.appendChild(e),`component`}let t=E();return t||(t=he(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=E();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=k(this.iframe);this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`visible`,this.visibleAt=K(),this.usedVisualFallback=e,q({phase:`modal_visible`,at:this.visibleAt,visualRevision:t,fallback:e});let n=D();if(!n)return;delete n.dataset.waapSizeLocked;let r=n.querySelector(`#${W}`);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(`#${W}`);if(t)return this.applyLoadingTheme(t),t;t=document.createElement(`div`),t.id=W,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 J;const Pe=()=>{let e=O();return e?(J&&!J.isFor(e)&&(J.dispose(),J=void 0),J??=new Ne(e),J):null},Y=e=>{Pe()?.show(e)},X=()=>{Pe()?.hide()},Fe=()=>{J?.dispose(),J=void 0},Ie=()=>{let e=O(),t=e?.contentWindow?C(e.contentWindow):null,n=J?.getDiagnostics(),r=Number(e?.dataset.waapVisualReadyAt??``);return{walletOrigin:e?.dataset.waapOrigin??null,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,visualRevision:k(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})})}function Be(e){if(typeof e!=`object`||!e)return e;try{e.waapCode=c(e).code}catch{}return e}async function Z(e,t,r,i,a){let o=e.method,s=e.params,{timeoutMs:c,signal:l,...u}=a??{};t&&Y({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&&X()}});if(t&&X(),e.error)throw Be(e.error);return e.data}catch(e){throw t&&d===void 0&&X(),e}}const Ve=(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 He=function(e){return e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e}(He||{}),Q=class extends a{constructor(){super()}};function Ue(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 We(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 Ge={styles:{darkMode:!1}},$=[`waap`,`human`,`injected`,`walletconnect`],Ke=[r.eth_sendTransaction,r.eth_signTransaction,r.eth_signTypedData_v4,r.personal_sign];function qe(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 Je=class extends a{constructor(e,t,r,i,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 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.uiMessageManager=new Q,this.walletMessageManager=new je(e,o),this.config={...Ge,...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),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: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 Z({method:n.set_signing_mode,params:[L(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 Z({method:n.set_signing_mode,params:[L(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 e=await Z({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(Ke.includes(e.method)&&!(this.getLoginMethod()!==null||await this.restorePersistedWaaPSession()!==null))return Promise.reject(new s(`not_authenticated`,`Not authenticated: call login() before signing.`,{operation:{chain:`evm`,method:e.method}}));if(We(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 Z(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&&Ue(a)?`MetaMask`:`Browser Wallet`,s=qe(await Z({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 Z({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 Z({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 Z({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 Z({method:n.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await Z({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 Z({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),Z({method:n.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(e){await this.ensureInitialized();let t={...e,walletMode:this.accountMode};return Z({method:n.waap_requestPermissionToken,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(e){return await this.ensureInitialized(),await Z({method:n.waap_getPermissionTokenStatus,params:[e]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(e){return await this.ensureInitialized(),await Z({method:n.waap_clearPermissionToken,params:[e]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(e){return await this.ensureInitialized(),Z({method:n.silk_requestSbt,params:[e]},!0,this.walletMessageManager,this.internalEventEmitter)}async getLinkedAddresses(){return await this.walletMessageManager.pingIframe(),(await Z({method:n.waap_getLinkedAddresses,params:[]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}async linkAddress(e){if(typeof window>`u`)throw Error(`linkAddress requires a browser environment`);this.walletConnectProvider||await this.initializeWalletConnect(),i.isConnected()||(await this.walletConnectProvider.open({view:`Connect`}),await i.listenToAccountChangeEvent());let t=i.getWalletProvider();if(!t)throw Error(`No wallet provider available after connection`);let r=(await t.request({method:`eth_accounts`}))[0];if(!r||r.toLowerCase()!==e.toLowerCase())throw Error(`Connected wallet account ${r??`(none)`} does not match requested address ${e}`);await this.walletMessageManager.pingIframe();let a=await Z({method:n.waap_getLinkAddressNonce,params:[]},!1,this.walletMessageManager,this.internalEventEmitter),o=Ye({domain:window.location.host,address:e,uri:window.location.origin,nonce:a.nonce,issuedAt:new Date().toISOString()}),s=await t.request({method:`personal_sign`,params:[o,e]});return(await Z({method:n.waap_linkAddress,params:[{message:o,signature:s}]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}async unlinkAddress(e){return await this.walletMessageManager.pingIframe(),(await Z({method:n.waap_unlinkAddress,params:[{address:e}]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}};function Ye(e){let t=o(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 Xe=(e,t,n=!0,r=[`evm`],a=!0)=>{let{referralCode:o,config:s,project:c,asyncTxs:l,asyncSigning:u,deferIframe:d}=e,f=v(e),p=!!u&&!l;e.walletConnectProjectId&&i.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:(M(e),ue(t).contentWindow),g=d===!1&&!m,ee=d===void 0&&!m,_=g?h():null;if(g&&!_)throw Error(`WaaP iframe does not exist on page`);let y=new Je(_,o,s||{},c||{},f,l||u||!1,p,g?void 0:h,r);if(y.setAccountMode(t),!m&&n&&g&&y.initializeIframeContext().catch(()=>void 0),y.uiMessageManager.on(`show_modal`,()=>{Y()}),y.uiMessageManager.on(`hide_modal`,()=>{X()}),!m&&a&&(window.silk=y,window.waap=y),n&&ee){let e=Ve(y),t=y.destroy.bind(y);y.destroy=()=>{e(),t()}}return y},Ze=(e={})=>Xe(e,`tap`);export{f as C,_ as S,c as T,Se as _,Q as a,N as b,Z as c,Ie as d,X as f,L as g,je as h,Ge as i,Re as l,Me as m,Xe as n,He as o,Y as p,Je as r,Ve as s,Ze as t,ze as u,ue as v,s as w,v as x,M as y};
@@ -1,2 +0,0 @@
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(`insufficient balance`)?`insufficient_balance`: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)):()=>{}},C=`waap-wallet-loading-styles`,w=`waap-iframe-visual-ready`,T=typeof window<`u`&&typeof document<`u`,re=()=>{if(!T||document.getElementById(C))return;let e=document.createElement(`style`);e.id=C,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)},ie=(e={})=>g(e),E=()=>T?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,D=()=>T?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,O=()=>T?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,k=(e=O())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},ae=(e=O())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},A=(e,t)=>{if(e){if(t===null){delete e.dataset.waapVisualReadySupported;return}e.dataset.waapVisualReadySupported=String(t)}},oe=(e,t)=>{let n=e.__silkCleanup;e.__silkCleanup=()=>{n?.(),t()}},se=e=>{let t=O();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},ce=e=>{if(T)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{}},le=(e,t)=>{e.dataset.waapTheme=t?`dark`:`light`},ue=(e,t)=>{let n=e;ce(n);let r=document.createElement(`iframe`);return r.id=`waap-wallet-iframe`,r.dataset.waapOrigin=n,le(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},de=()=>{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},fe=()=>{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},pe=(e,t)=>{let n=e,r,i,a,o,s=()=>{if(r=void 0,!o)return;let e=D();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(w,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(w,l)};return oe(t,d),d},me=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,A(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<=k(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(w,{detail:{revision:r}})))};t.addEventListener(`load`,n),window.addEventListener(`message`,r);let i=()=>{t.removeEventListener(`load`,n),window.removeEventListener(`message`,r)};return oe(t,i),i},he=()=>{setTimeout(()=>{if(typeof document>`u`)return;let e=D();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},ge=e=>{let t=O();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},_e=(e,t)=>{let n=d();if(!n)throw Error(`WaaP component not found in DOM`);if(ge(e))return;let r=de(),i=ue(e,t);pe(e,i),me(e,i),he(),r.appendChild(i),n.appendChild(r),x(i)},ve=(e,t)=>{if(ge(e))return;let n=fe(),r=de();n.appendChild(r);let i=ue(e,t);pe(e,i),me(e,i),he(),r.appendChild(i),document.body.appendChild(n),x(i)},j=(e={})=>{if(!T)return;re();let t=ie(e),n=e.config?.styles?.darkMode===!0,r=O();r&&le(r,n),u()?_e(t,n):ve(t,n)},M=()=>{if(!T)return;Me();let e=O(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&ee(e);let n=D(),r=E();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let N=0;async function ye(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,I=(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)},L=(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}:{}}),R=new Set;let z=!1,B;const V=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}}},H=e=>{let t=V.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 V.set(e,n),n},U=(e,t)=>{let n=V.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=O();i?.contentWindow===e&&A(i,null),r?.(t)},Se=()=>typeof performance<`u`?performance.now():Date.now();let Ce=null;const we=()=>Ce,Te=(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}))},Ee=()=>{z||typeof window>`u`||(z=!0,B=e=>{for(let{manager:t,config:n}of Array.from(R))Te(e,t,n)},window.addEventListener(`message`,B))},De=()=>{R.size>0||!z||!B||typeof window>`u`||(window.removeEventListener(`message`,B),B=void 0,z=!1)};var Oe=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:g(t===!0?{useStaging:!0}:{}),e&&this.observeIframeNavigation(e)}observeIframeNavigation(e){this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=ne(e,()=>{let t=H(e);(t.ready||t.readyPingStartedAt!==null)&&(be(e),U(e,Error(`WaaP iframe reloaded; readiness must be re-established`)),this.terminalResponseDeduper.clear())})}setIframeWindow(e){this.iframeWindow&&this.iframeWindow!==e&&(U(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?H(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 Ce=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=H(t),r=S(t);return n.ready&&(!r||n.navigationGeneration===r.generation)?Promise.resolve():(n.ready&&U(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=Se(),n.visualReadySupported=a.data?.capabilities?.visualReady===1;let e=O();e?.contentWindow===t&&A(e,n.visualReadySupported),f(),i()}},s=()=>{try{n.readyAttempts+=1,this.postReadyNotification()}catch(e){f(),a(e)}};n.readyPingStartedAt=Se();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 ye(i);return this.iframeWindow.postMessage({...i,id:a},this.walletOrigin),a}addListener(e){if(this.disposed)throw Error(`Wallet message manager is disposed`);Ee();let t={manager:this,config:e};R.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(R.delete(t),De())};return this.unregisterListeners.add(n),n}dispose(){this.disposed||(this.disposed=!0,this.iframeWindow&&U(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 W=`waap-wallet-iframe-loading`,G=new Set,K=()=>typeof performance<`u`?performance.now():Date.now(),q=e=>{G.forEach(t=>{try{t(e)}catch{}})},ke=e=>(G.add(e),()=>G.delete(e));var Ae=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(w,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=D();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=k(this.iframe)+1,this.phase=`pending`,this.requestedAt=K(),this.visibleAt=null,this.usedVisualFallback=!1,q({phase:`modal_requested`,at:this.requestedAt,visualRevision:this.pendingRevision}),this.hideIframeUntilPaint(t),n===`modal`?this.showModalSurface():t.style.display=`flex`;let r=ae(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=K();e&&q({phase:`modal_cancelled`,at:t,visualRevision:k(this.iframe)}),q({phase:`modal_hidden`,at:t,visualRevision:k(this.iframe)});let n=D();if(n&&delete n.dataset.waapSizeLocked,u()){n&&(n.style.display=`none`);return}let r=E();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(w,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=E();return t||(t=fe(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=E();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=k(this.iframe);this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`visible`,this.visibleAt=K(),this.usedVisualFallback=e,q({phase:`modal_visible`,at:this.visibleAt,visualRevision:t,fallback:e});let n=D();if(!n)return;delete n.dataset.waapSizeLocked;let r=n.querySelector(`#${W}`);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(`#${W}`);if(t)return this.applyLoadingTheme(t),t;t=document.createElement(`div`),t.id=W,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 J;const je=()=>{let e=O();return e?(J&&!J.isFor(e)&&(J.dispose(),J=void 0),J??=new Ae(e),J):null},Y=e=>{je()?.show(e)},X=()=>{je()?.hide()},Me=()=>{J?.dispose(),J=void 0},Ne=()=>{let e=O(),t=e?.contentWindow?S(e.contentWindow):null,n=J?.getDiagnostics(),r=Number(e?.dataset.waapVisualReadyAt??``);return{walletOrigin:e?.dataset.waapOrigin??null,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,visualRevision:k(e),visualReadyAt:Number.isFinite(r)?r:null,modalPhase:n?.modalPhase??`idle`,modalRequestedAt:n?.modalRequestedAt??null,modalVisibleAt:n?.modalVisibleAt??null,usedVisualFallback:n?.usedVisualFallback??!1,handshake:we()}},Pe=new Set([e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.personal_sign,e.t.eth_signTypedData_v4]),Fe=e=>Pe.has(e);function Ie(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})})}function Le(e){if(typeof e!=`object`||!e)return e;try{e.waapCode=a(e).code}catch{}return e}async function Z(t,n,r,i,a){let o=t.method,s=t.params,{timeoutMs:c,signal:l,...u}=a??{};n&&Y({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 Ie({eventEmitter:i,id:d,method:o,interactionRequired:n,timeoutMs:c,signal:l,onCancel:()=>{r.cancelSilkRequest(d,o),n&&X()}});if(n&&X(),e.error)throw Le(e.error);return e.data}catch(e){throw n&&d===void 0&&X(),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||{}),Be=class extends n.EventEmitter{constructor(){super()}};function Ve(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 He(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 Ue={styles:{darkMode:!1}},Q=[`waap`,`human`,`injected`,`walletconnect`],We=[e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.eth_signTypedData_v4,e.t.personal_sign];function Ge(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 Ke=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 Be,this.walletMessageManager=new Oe(t,o),this.config={...Ue,...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=I(t,async()=>{await this.walletMessageManager.pingIframe(),await Z({method:e.r.set_signing_mode,params:[L(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 Z({method:e.r.set_signing_mode,params:[L(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 Z({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(We.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(He(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 Z(t,Fe(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&&Ve(a)?`MetaMask`:`Browser Wallet`,s=Ge(await Z({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 Z({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}M()}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 Z({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 Z({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 Z({method:e.r.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await Z({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 Z({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),Z({method:e.r.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(t){await this.ensureInitialized();let n={...t,walletMode:this.accountMode};return Z({method:e.r.waap_requestPermissionToken,params:[n]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(t){return await this.ensureInitialized(),await Z({method:e.r.waap_getPermissionTokenStatus,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(t){return await this.ensureInitialized(),await Z({method:e.r.waap_clearPermissionToken,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(t){return await this.ensureInitialized(),Z({method:e.r.silk_requestSbt,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}async getLinkedAddresses(){return await this.walletMessageManager.pingIframe(),(await Z({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 Z({method:e.r.waap_getLinkAddressNonce,params:[]},!1,this.walletMessageManager,this.internalEventEmitter),o=qe({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 Z({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 Z({method:e.r.waap_unlinkAddress,params:[{address:t}]},!1,this.walletMessageManager,this.internalEventEmitter)).addresses}};function qe(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:(j(e),se(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 Ke(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`,()=>{Y()}),b.uiMessageManager.on(`hide_modal`,()=>{X()}),!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},Je=(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 I}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return ke}}),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 Y}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return se}}),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 j}});
@@ -1,20 +0,0 @@
1
- import { C as ProjectConfig, b as CustomConfig } from "./types-BmCqyQtu.js";
2
- import { EventEmitter } from "events";
3
- //#region src/lib/UIMessageManager.d.ts
4
- declare enum UI_EVENT_NAMES {
5
- show_modal = "show_modal",
6
- hide_modal = "hide_modal"
7
- }
8
- declare class UIMessageManager extends EventEmitter {
9
- constructor();
10
- }
11
- //#endregion
12
- //#region src/lib/initializerContext.d.ts
13
- type WaaPInitializerOptions = {
14
- referralCode?: string;
15
- project?: ProjectConfig;
16
- config?: CustomConfig;
17
- chains?: readonly ('evm' | 'sui' | 'solana')[];
18
- };
19
- //#endregion
20
- export { UIMessageManager as n, UI_EVENT_NAMES as r, WaaPInitializerOptions as t };