@human.tech/waap-sdk 2.0.0 → 2.1.0-staging-fb27bb

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 (59) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +167 -216
  3. package/dist/WaaPError-C5nPcaKk.d.mts +168 -0
  4. package/dist/WaaPError-XLgIXUgh.d.ts +168 -0
  5. package/dist/WalletConnect-BTT6LtUu.d.mts +33 -0
  6. package/dist/WalletConnect-BTT6LtUu.d.ts +33 -0
  7. package/dist/WalletConnect-Deg7_JmH.mjs +4 -0
  8. package/dist/WalletConnect-G-lbqknM.js +4 -0
  9. package/dist/asyncSigning-B0KrmKk7.js +1 -0
  10. package/dist/asyncSigning-CzqBbYDP.mjs +1 -0
  11. package/dist/esm-B4jz8Emb.mjs +1 -0
  12. package/dist/esm-D5fDQenf.js +1 -0
  13. package/dist/evm-Ch-aWWat.js +1 -0
  14. package/dist/evm-DHVrAmEw.mjs +1 -0
  15. package/dist/evm.d.mts +7 -0
  16. package/dist/evm.d.ts +7 -0
  17. package/dist/evm.js +1 -0
  18. package/dist/evm.mjs +1 -0
  19. package/dist/index-CMSufeMa.d.ts +775 -0
  20. package/dist/index-CdKntlzX.d.mts +775 -0
  21. package/dist/index.d.mts +239 -933
  22. package/dist/index.d.ts +239 -933
  23. package/dist/index.js +1 -2191
  24. package/dist/index.mjs +1 -2162
  25. package/dist/initializerContext-0oKHzvQG.d.ts +21 -0
  26. package/dist/initializerContext-C39PUnGi.d.mts +21 -0
  27. package/dist/react.d.mts +2 -0
  28. package/dist/react.d.ts +2 -0
  29. package/dist/react.js +1 -0
  30. package/dist/react.mjs +1 -0
  31. package/dist/register-4Afr2Jx8.js +1 -0
  32. package/dist/register-CBlzg5ln.d.ts +107 -0
  33. package/dist/register-CNgjA0yl.mjs +1 -0
  34. package/dist/register-CxsUwgKJ.d.ts +282 -0
  35. package/dist/register-DIZnKDHF.mjs +1 -0
  36. package/dist/register-LmdJdvzn.d.mts +282 -0
  37. package/dist/register-QjrsOe7r.d.mts +107 -0
  38. package/dist/register-ozKwGWOb.js +1 -0
  39. package/dist/solana.d.mts +5 -0
  40. package/dist/solana.d.ts +5 -0
  41. package/dist/solana.js +1 -0
  42. package/dist/solana.mjs +1 -0
  43. package/dist/sui.d.mts +5 -0
  44. package/dist/sui.d.ts +5 -0
  45. package/dist/sui.js +1 -0
  46. package/dist/sui.mjs +1 -0
  47. package/dist/types-DexmJNke.d.mts +397 -0
  48. package/dist/types-DexmJNke.d.ts +397 -0
  49. package/dist/ui-16QpbEyG.js +1 -0
  50. package/dist/ui-BAYRtDQg.mjs +1 -0
  51. package/dist/useWaapAuth-BrqAhAn2.d.ts +246 -0
  52. package/dist/useWaapAuth-C5I7QqyW.d.mts +246 -0
  53. package/dist/useWaapAuth-DHIeb4yc.mjs +1 -0
  54. package/dist/useWaapAuth-Z_ONicYr.js +1 -0
  55. package/dist/walletconnect.d.mts +2 -0
  56. package/dist/walletconnect.d.ts +2 -0
  57. package/dist/walletconnect.js +1 -0
  58. package/dist/walletconnect.mjs +1 -0
  59. package/package.json +53 -18
@@ -0,0 +1,168 @@
1
+ import { A as SILK_METHOD, E as SilkResponse, T as SilkRequestCancellation, j as SilkNotificationData, w as SilkRequest } from "./types-DexmJNke.js";
2
+ //#region src/lib/WalletMessageManager.d.ts
3
+ type PostSilkRequestArgs = {
4
+ method: keyof typeof SILK_METHOD;
5
+ params: any[];
6
+ interactionRequired: boolean;
7
+ silkOptions?: {
8
+ async?: boolean;
9
+ };
10
+ };
11
+ /**
12
+ * Async transaction notification from iframe
13
+ */
14
+ interface AsyncTxNotification {
15
+ type: string;
16
+ payload: any;
17
+ }
18
+ /**
19
+ * Squid lifecycle notification from iframe
20
+ */
21
+ interface SquidLifecycleNotification {
22
+ type: string;
23
+ payload: any;
24
+ }
25
+ /**
26
+ * Listener interface for WalletMessageManager
27
+ */
28
+ interface MessageListenerConfig {
29
+ handleResponse: (response: SilkResponse) => void;
30
+ handleRequest: (request: SilkRequest) => void;
31
+ onReceiveConnectNotif?: () => void;
32
+ onAccountChanged?: (newAccount: string) => void;
33
+ onAsyncTxNotification?: (notification: AsyncTxNotification) => void;
34
+ onSquidLifecycleNotification?: (notification: SquidLifecycleNotification) => void;
35
+ }
36
+ type WalletHandshakeDiagnostics = {
37
+ walletOrigin: string;
38
+ iframeNavigationStartedAt: number | null;
39
+ iframeLoadedAt: number | null;
40
+ readyPingStartedAt: number | null;
41
+ readyAt: number | null;
42
+ readyAttempts: number;
43
+ visualReadySupported: boolean | null;
44
+ navigationGeneration: number | null;
45
+ lastError: string | null;
46
+ };
47
+ declare class WalletMessageManager {
48
+ private iframeWindow;
49
+ private unregisterListeners;
50
+ private readonly terminalResponseDeduper;
51
+ private unsubscribeIframeNavigation;
52
+ private disposed;
53
+ /** Public so the shared window-listener dispatcher can origin-filter per manager. */
54
+ readonly walletOrigin: string;
55
+ constructor(iframeWindow: Window | null, walletOrigin?: string | boolean);
56
+ private observeIframeNavigation;
57
+ /**
58
+ * Rebind the target iframe window. Used by `deferIframe` mode, where the
59
+ * iframe is created on first use rather than at init, so the manager starts
60
+ * with a null window and is pointed at the real one once it exists.
61
+ */
62
+ setIframeWindow(iframeWindow: Window): void;
63
+ getIframeWindow(): Window | null;
64
+ isDisposed(): boolean;
65
+ shouldHandleTerminalResponse(id: string): boolean;
66
+ getHandshakeDiagnostics(): WalletHandshakeDiagnostics;
67
+ /**
68
+ * Post a Silk notification to the given iframeWindow
69
+ */
70
+ postSilkNotification(data: SilkNotificationData | SilkRequestCancellation): void;
71
+ postReadyNotification(): void;
72
+ postConnectNotification(): void;
73
+ /** Tell the iframe to drop a request the SDK has already abandoned locally. */
74
+ cancelSilkRequest(requestId: string, method: string): void;
75
+ /**
76
+ * Post a 'ready' notification to the iframe, and wait
77
+ * for the iframe to respond with a 'ready' notification.
78
+ */
79
+ pingIframe(): Promise<void>;
80
+ /**
81
+ * Post a SilkRequest to the iframeWindow. Don't wait for a response.
82
+ */
83
+ postSilkRequest(req: PostSilkRequestArgs): Promise<string>;
84
+ /**
85
+ * Register this manager's callbacks with the shared window `message`
86
+ * listener (top frame). All managers share ONE global listener; each is
87
+ * still origin-filtered and id-routed independently. Returns an unregister
88
+ * function.
89
+ * @param config - Configuration that includes callbacks for handling specific messages.
90
+ */
91
+ addListener(config: MessageListenerConfig): () => void;
92
+ dispose(): void;
93
+ }
94
+ //#endregion
95
+ //#region src/lib/WalletModalController.d.ts
96
+ type WaaPIframeLifecyclePhase = 'modal_requested' | 'modal_visible' | 'modal_hidden' | 'modal_cancelled';
97
+ type WaaPIframeLifecycleEvent = {
98
+ phase: WaaPIframeLifecyclePhase;
99
+ at: number;
100
+ visualRevision: number;
101
+ fallback?: boolean;
102
+ };
103
+ type WaaPIframeDiagnostics = {
104
+ walletOrigin: string | null;
105
+ iframeNavigationStartedAt: number | null;
106
+ iframeLoadedAt: number | null;
107
+ visualRevision: number;
108
+ visualReadyAt: number | null;
109
+ modalPhase: 'idle' | 'pending' | 'visible' | 'hidden';
110
+ modalRequestedAt: number | null;
111
+ modalVisibleAt: number | null;
112
+ usedVisualFallback: boolean;
113
+ /** Redacted request-readiness timing, when an SDK facade has mounted. */
114
+ handshake: WalletHandshakeDiagnostics | null;
115
+ };
116
+ /** Subscribe to presentation-only iframe lifecycle timing events. */
117
+ declare const subscribeWaaPIframeLifecycle: (listener: (event: WaaPIframeLifecycleEvent) => void) => (() => void);
118
+ /**
119
+ * Snapshot startup and presentation timings without exposing message payloads,
120
+ * account data, or signing material. Useful for partner telemetry and support.
121
+ */
122
+ declare const getWaaPIframeDiagnostics: () => WaaPIframeDiagnostics;
123
+ //#endregion
124
+ //#region src/lib/preload.d.ts
125
+ /** Any public WaaP facade that can warm the shared wallet iframe. */
126
+ interface WaaPPreloadTarget {
127
+ preload(): Promise<void>;
128
+ }
129
+ interface WaaPIdlePreloadOptions {
130
+ /** Browser deadline for an idle callback. Default: 2 seconds. */
131
+ timeoutMs?: number;
132
+ /** Observes a best-effort warmup failure without making page startup fail. */
133
+ onError?: (error: unknown) => void;
134
+ }
135
+ type CancelWaaPPreload = () => void;
136
+ /**
137
+ * Warm an already-created WaaP facade when the browser is idle. It never opens
138
+ * wallet UI, and cancellation is useful when the embedding route unmounts.
139
+ *
140
+ * Use this after the host page's LCP. For a likely immediate action (for
141
+ * example Connect button hover/focus), call `target.preload()` directly.
142
+ */
143
+ declare const preloadWaaPOnIdle: (target: WaaPPreloadTarget, options?: WaaPIdlePreloadOptions) => CancelWaaPPreload;
144
+ //#endregion
145
+ //#region src/lib/WaaPError.d.ts
146
+ /** Stable, safe error vocabulary for non-EIP-1193 SDK facades. */
147
+ type WaaPErrorCode = 'cancelled' | 'timeout' | 'user_rejected' | 'policy_rejected' | 'not_authenticated' | 'not_connected' | 'unsupported_input' | 'wallet_error' | 'unknown';
148
+ type WaaPOperationMetadata = {
149
+ /**
150
+ * The chain the failed operation targeted. Declared structurally rather than
151
+ * as `WaaPChain` so the error vocabulary stays free of the initializer graph.
152
+ */
153
+ chain?: 'evm' | 'sui' | 'solana';
154
+ method?: string;
155
+ requestId?: string;
156
+ };
157
+ declare class WaaPError extends Error {
158
+ readonly code: WaaPErrorCode;
159
+ readonly operation?: WaaPOperationMetadata;
160
+ readonly cause?: unknown;
161
+ constructor(code: WaaPErrorCode, message: string, options?: {
162
+ cause?: unknown;
163
+ operation?: WaaPOperationMetadata;
164
+ });
165
+ }
166
+ declare function normalizeWaaPError(error: unknown, operation?: WaaPOperationMetadata): WaaPError;
167
+ //#endregion
168
+ export { CancelWaaPPreload as a, preloadWaaPOnIdle as c, WaaPIframeLifecyclePhase as d, getWaaPIframeDiagnostics as f, WalletMessageManager as h, normalizeWaaPError as i, WaaPIframeDiagnostics as l, PostSilkRequestArgs as m, WaaPErrorCode as n, WaaPIdlePreloadOptions as o, subscribeWaaPIframeLifecycle as p, WaaPOperationMetadata as r, WaaPPreloadTarget as s, WaaPError as t, WaaPIframeLifecycleEvent as u };
@@ -0,0 +1,33 @@
1
+ //#region src/lib/WalletConnect.d.ts
2
+ declare class SilkWalletConnect {
3
+ private static instance;
4
+ private static projectId;
5
+ private static chains;
6
+ /**
7
+ * Set the WalletConnect project ID programmatically
8
+ * Use this if environment variables aren't working in your setup
9
+ *
10
+ * @param id - The WalletConnect project ID to use
11
+ */
12
+ static setProjectId(id: string): void;
13
+ static getProjectIdFromEnv(): string | undefined;
14
+ static getInstance(): Promise<any>;
15
+ static listenToAccountChangeEvent(): Promise<void>;
16
+ /**
17
+ * Wait for WalletConnect to be properly initialized and connected
18
+ * @returns Promise<boolean> - true if connected, false if timeout reached
19
+ */
20
+ static waitForReadyAndCheckConnection(): Promise<boolean>;
21
+ /**
22
+ * Check if WalletConnect is currently connected (immediate check, no waiting)
23
+ * @returns boolean - true if connected, false otherwise
24
+ */
25
+ static isConnected(): boolean;
26
+ /**
27
+ * Get the wallet provider from the WalletConnect instance
28
+ * @returns The wallet provider or null if not available
29
+ */
30
+ static getWalletProvider(): any;
31
+ }
32
+ //#endregion
33
+ export { SilkWalletConnect as t };
@@ -0,0 +1,33 @@
1
+ //#region src/lib/WalletConnect.d.ts
2
+ declare class SilkWalletConnect {
3
+ private static instance;
4
+ private static projectId;
5
+ private static chains;
6
+ /**
7
+ * Set the WalletConnect project ID programmatically
8
+ * Use this if environment variables aren't working in your setup
9
+ *
10
+ * @param id - The WalletConnect project ID to use
11
+ */
12
+ static setProjectId(id: string): void;
13
+ static getProjectIdFromEnv(): string | undefined;
14
+ static getInstance(): Promise<any>;
15
+ static listenToAccountChangeEvent(): Promise<void>;
16
+ /**
17
+ * Wait for WalletConnect to be properly initialized and connected
18
+ * @returns Promise<boolean> - true if connected, false if timeout reached
19
+ */
20
+ static waitForReadyAndCheckConnection(): Promise<boolean>;
21
+ /**
22
+ * Check if WalletConnect is currently connected (immediate check, no waiting)
23
+ * @returns boolean - true if connected, false otherwise
24
+ */
25
+ static isConnected(): boolean;
26
+ /**
27
+ * Get the wallet provider from the WalletConnect instance
28
+ * @returns The wallet provider or null if not available
29
+ */
30
+ static getWalletProvider(): any;
31
+ }
32
+ //#endregion
33
+ export { SilkWalletConnect as t };
@@ -0,0 +1,4 @@
1
+ var e=class e{static{this.instance=null}static{this.projectId=void 0}static{this.chains=[1,10,100,137,8453,43114,42161,42220,84532,11155111]}static setProjectId(t){e.projectId=t}static getProjectIdFromEnv(){try{if(typeof process<`u`&&process.env)return process.env.NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID||process.env.VITE_WALLET_CONNECT_PROJECT_ID||process.env.REACT_APP_WALLET_CONNECT_PROJECT_ID||process.env.WALLET_CONNECT_PROJECT_ID}catch{return}}static async getInstance(){if(typeof window>`u`||typeof document>`u`)return null;let{createAppKit:t}=await import(`@reown/appkit`),{mainnet:n,sepolia:r,optimism:i,arbitrum:a,optimismGoerli:o,polygon:s,gnosis:c,avalanche:l,aurora:u,fantom:d,base:f,celo:p}=await import(`@reown/appkit/networks`);try{let o={name:`Human Wallet`,description:`Silk lets you create human keys for web3 wallets that are recoverable with private identity proofs and secured by zero trust protocols.`,url:window.location.origin,icons:[`https://imagedelivery.net/_aTEfDRm7z3tKgu9JhfeKA/f11f5753-616a-4aa0-2aee-9b75befea700/sm`]},m=e.projectId||e.getProjectIdFromEnv();if(!m)return console.error(`WalletConnect project ID not found. Please set it using one of these methods:
2
+ 1. Pass walletConnectProjectId when calling initSilk
3
+ 2. Call SilkWalletConnect.setProjectId("your-project-id")
4
+ 3. Set WALLET_CONNECT_PROJECT_ID (NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID for Next projects) environment variable`),null;if(e.projectId=m,!e.instance){let{EthersAdapter:h}=await import(`@reown/appkit-adapter-ethers`);e.instance=t({adapters:[new h],projectId:m,metadata:o,networks:[n,r,a,i,s,c,l,u,d,f,p],features:{socials:!1,email:!1}})}return e.instance}catch(e){return console.error(`Error importing or initializing WalletConnect:`,e),null}}static async listenToAccountChangeEvent(){await new Promise(t=>{e.instance.subscribeAccount(e=>{e?.isConnected&&t()})})}static async waitForReadyAndCheckConnection(){if(!e.instance)return!1;let t=!1,n=0;for(;!t&&n<15;){let r=n<5?500:1e3;await new Promise(e=>setTimeout(e,r)),t=e.instance.getIsConnectedState(),n++,console.log(`WalletConnect connection check attempt ${n}: ${t}`)}return t}static isConnected(){return e.instance?.getIsConnectedState()??!1}static getWalletProvider(){return e.instance?.getWalletProvider()??null}};export{e as t};
@@ -0,0 +1,4 @@
1
+ var e=class e{static{this.instance=null}static{this.projectId=void 0}static{this.chains=[1,10,100,137,8453,43114,42161,42220,84532,11155111]}static setProjectId(t){e.projectId=t}static getProjectIdFromEnv(){try{if(typeof process<`u`&&process.env)return process.env.NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID||process.env.VITE_WALLET_CONNECT_PROJECT_ID||process.env.REACT_APP_WALLET_CONNECT_PROJECT_ID||process.env.WALLET_CONNECT_PROJECT_ID}catch{return}}static async getInstance(){if(typeof window>`u`||typeof document>`u`)return null;let{createAppKit:t}=await import(`@reown/appkit`),{mainnet:n,sepolia:r,optimism:i,arbitrum:a,optimismGoerli:o,polygon:s,gnosis:c,avalanche:l,aurora:u,fantom:d,base:f,celo:p}=await import(`@reown/appkit/networks`);try{let o={name:`Human Wallet`,description:`Silk lets you create human keys for web3 wallets that are recoverable with private identity proofs and secured by zero trust protocols.`,url:window.location.origin,icons:[`https://imagedelivery.net/_aTEfDRm7z3tKgu9JhfeKA/f11f5753-616a-4aa0-2aee-9b75befea700/sm`]},m=e.projectId||e.getProjectIdFromEnv();if(!m)return console.error(`WalletConnect project ID not found. Please set it using one of these methods:
2
+ 1. Pass walletConnectProjectId when calling initSilk
3
+ 2. Call SilkWalletConnect.setProjectId("your-project-id")
4
+ 3. Set WALLET_CONNECT_PROJECT_ID (NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID for Next projects) environment variable`),null;if(e.projectId=m,!e.instance){let{EthersAdapter:h}=await import(`@reown/appkit-adapter-ethers`);e.instance=t({adapters:[new h],projectId:m,metadata:o,networks:[n,r,a,i,s,c,l,u,d,f,p],features:{socials:!1,email:!1}})}return e.instance}catch(e){return console.error(`Error importing or initializing WalletConnect:`,e),null}}static async listenToAccountChangeEvent(){await new Promise(t=>{e.instance.subscribeAccount(e=>{e?.isConnected&&t()})})}static async waitForReadyAndCheckConnection(){if(!e.instance)return!1;let t=!1,n=0;for(;!t&&n<15;){let r=n<5?500:1e3;await new Promise(e=>setTimeout(e,r)),t=e.instance.getIsConnectedState(),n++,console.log(`WalletConnect connection check attempt ${n}: ${t}`)}return t}static isConnected(){return e.instance?.getIsConnectedState()??!1}static getWalletProvider(){return e.instance?.getWalletProvider()??null}};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return e}});
@@ -0,0 +1 @@
1
+ const e={signPending:`waap_sign_pending`,twoFactorRequired:`waap_2fa_required`,signComplete:`waap_sign_complete`,signFailed:`waap_sign_failed`,txPending:`waap_tx_pending`,txConfirmed:`waap_tx_confirmed`,txFailed:`waap_tx_failed`,squidPending:`waap_squid_pending`,squidReady:`waap_squid_ready`,squidFailed:`waap_squid_failed`};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return e}});
@@ -0,0 +1 @@
1
+ const e={signPending:`waap_sign_pending`,twoFactorRequired:`waap_2fa_required`,signComplete:`waap_sign_complete`,signFailed:`waap_sign_failed`,txPending:`waap_tx_pending`,txConfirmed:`waap_tx_confirmed`,txFailed:`waap_tx_failed`,squidPending:`waap_squid_pending`,squidReady:`waap_squid_ready`,squidFailed:`waap_squid_failed`};export{e as t};
@@ -0,0 +1 @@
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.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};
@@ -0,0 +1 @@
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.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}});
@@ -0,0 +1 @@
1
+ const e=require("./esm-D5fDQenf.js"),t=require("./WalletConnect-G-lbqknM.js");let n=require("events");var r=class extends Error{constructor(e,t,n={}){super(t),this.name=`WaaPError`,this.code=e,this.operation=n.operation,this.cause=n.cause}};function i(e,t){if(e instanceof r)return e;let n=e&&typeof e==`object`?e:void 0,i=n&&typeof n.message==`string`&&n.message||e instanceof Error&&e.message||String(e||`WaaP request failed`),a=n?.code,o=i.toLowerCase();return new r(o.includes(`cancelled`)||o.includes(`canceled`)?`cancelled`:o.includes(`timed out`)?`timeout`:o.includes(`policy`)||o.includes(`permission token`)?`policy_rejected`:a===4001||o.includes(`rejected`)?`user_rejected`:o.includes(`not connected`)?`not_connected`:o.includes(`not authenticated`)||o.includes(`log in first`)?`not_authenticated`:o.includes(`unsupported`)||o.includes(`must be base64`)?`unsupported_input`:n?`wallet_error`:`unknown`,i,{cause:e,operation:t})}const a=`waap-wallet`,o=`waap-component-container`,s=typeof window<`u`&&typeof document<`u`&&typeof HTMLElement<`u`;let c;s?(c=class extends HTMLElement{constructor(){super()}connectedCallback(){(!this.style.display||this.style.display===``)&&(this.style.display=`flex`,this.style.alignItems=`center`,this.style.justifyContent=`center`),(!this.style.width||this.style.width===``)&&(this.style.width=`100%`),(!this.style.height||this.style.height===``)&&(this.style.height=`100%`),this.id=o,this.setAttribute(`data-waap-mounted`,`true`)}disconnectedCallback(){this.removeAttribute(`data-waap-mounted`)}},typeof customElements<`u`&&!customElements.get(a)&&customElements.define(a,c)):c=class{};function l(){return s?!!document.getElementById(o)||!!document.querySelector(a):!1}function u(){return s?document.getElementById(o)||document.querySelector(a):null}const d=`https://staging.waap.xyz`,f={development:`http://localhost:3000`,staging:d,production:`https://waap.xyz`},ee=e=>e===`localhost`||e===`127.0.0.1`||e===`[::1]`;function p(e){let t;try{t=new URL(e)}catch{throw Error(`Invalid WaaP wallet origin: ${e}`)}if(t.origin!==e||t.pathname!==`/`||t.search||t.hash||t.username||t.password)throw Error(`WaaP walletOrigin must be an absolute origin without a path, query, or credentials`);if(t.protocol!==`https:`&&!(t.protocol===`http:`&&ee(t.hostname)))throw Error(`WaaP walletOrigin must use HTTPS unless it is a loopback host`);return t.origin}function m(e={}){return e.walletOrigin?p(e.walletOrigin):e.environment?p(f[e.environment]):e.useStaging?p(d):p(f.production)}const h=new WeakMap,g=new WeakMap,_=()=>typeof performance<`u`?performance.now():Date.now(),v=e=>({generation:e.generation,navigationStartedAt:e.navigationStartedAt,loadedAt:e.loadedAt}),y=e=>{let t=e.contentWindow;if(!t)return;let n=g.get(e);if(n&&h.get(t)===n)return;n?.cleanup(),n&&(g.delete(e),h.get(t)===n&&h.delete(t));let r=h.get(t);if(r?.iframe===e)return;r?.cleanup(),r&&g.delete(r.iframe);let i={iframe:e,generation:0,navigationStartedAt:_(),loadedAt:null,listeners:new Set,cleanup:()=>{}},a=()=>{i.generation+=1,i.loadedAt=_();let e=v(i);for(let t of Array.from(i.listeners))t(e)};i.cleanup=()=>{e.removeEventListener(`load`,a),i.listeners.clear()},e.addEventListener(`load`,a),h.set(t,i),g.set(e,i)},b=e=>{let t=g.get(e);if(t){t.cleanup(),g.delete(e);let n=e.contentWindow;n&&h.get(n)===t&&h.delete(n);return}let n=e.contentWindow;if(!n)return;let r=h.get(n);!r||r.iframe!==e||(r.cleanup(),h.delete(n))},x=e=>{let t=h.get(e);return t?v(t):null},te=(e,t)=>{let n=h.get(e);return n?n.loadedAt===null?new Promise((e,r)=>{let i=window.setTimeout(()=>{n.listeners.delete(a),r(Error(`WaaP iframe navigation timed out after ${Math.round(t/1e3)}s.`))},t),a=t=>{window.clearTimeout(i),n.listeners.delete(a),e(t)};n.listeners.add(a)}):Promise.resolve(v(n)):Promise.resolve(null)},ne=(e,t)=>{let n=h.get(e);return n?(n.listeners.add(t),()=>n.listeners.delete(t)):()=>{}},re=`waap-wallet-loading-styles`,S=`waap-iframe-visual-ready`,C=typeof window<`u`&&typeof document<`u`,ie=()=>{if(!C||document.getElementById(re))return;let e=document.createElement(`style`);e.id=re,e.textContent=`@keyframes waap-loading-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @media (prefers-reduced-motion: reduce) { [data-waap-loading-part] { animation: none !important; } }`,document.head.appendChild(e)},ae=(e={})=>m(e),w=()=>C?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,T=()=>C?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,E=()=>C?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,D=(e=E())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},oe=(e=E())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},O=(e,t)=>{if(e){if(t===null){delete e.dataset.waapVisualReadySupported;return}e.dataset.waapVisualReadySupported=String(t)}},se=(e,t)=>{let n=e.__silkCleanup;e.__silkCleanup=()=>{n?.(),t()}},ce=e=>{let t=E();if(!t)throw Error(`WaaP iframe does not exist on page`);let n=t.dataset.waapAccountMode;if(n&&n!==e)throw Error(`WaaP iframe is already bound to ${n}; destroy it before initializing ${e}.`);return t.dataset.waapAccountMode=e,t},le=e=>{if(C)try{if(document.querySelector(`link[data-waap-preconnect="${e}"]`))return;let t=document.createElement(`link`);t.rel=`preconnect`,t.href=e,t.crossOrigin=`anonymous`,t.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(t);let n=document.createElement(`link`);n.rel=`dns-prefetch`,n.href=e,n.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(n)}catch{}},ue=(e,t)=>{e.dataset.waapTheme=t?`dark`:`light`},de=(e,t)=>{let n=e;le(n);let r=document.createElement(`iframe`);return r.id=`waap-wallet-iframe`,r.dataset.waapOrigin=n,ue(r,t),y(r),r.src=`${n}/iframe`,r.allow=`publickey-credentials-get; publickey-credentials-create`,r.style.width=`100%`,r.style.height=`100%`,r.style.border=`none`,r.style.borderRadius=`24px`,r.style.backgroundColor=`transparent`,r.style.background=`transparent`,r.style.padding=`0`,r.style.margin=`0`,r},k=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-wrapper`,e.style.position=`relative`,e.style.display=`flex`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.padding=`0`,e.style.margin=`0`,e.style.height=`600px`,e.style.width=`380px`,e},A=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-container`,e.style.position=`fixed`,e.style.top=`0`,e.style.left=`0`,e.style.right=`0`,e.style.bottom=`0`,e.style.width=`100%`,e.style.height=`100%`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.backgroundColor=`rgba(0, 0, 0, 0.5)`,e.style.zIndex=`9999999999`,e.style.display=`flex`,e.style.visibility=`hidden`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.style.transition=typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches?`none`:`opacity 140ms ease`,e},j=(e,t)=>{let n=e,r,i,a,o,s=()=>{if(r=void 0,!o)return;let e=T();e&&e.dataset.waapSizeLocked!==`true`&&(i=o.width,a=o.height,e.style.height=`${o.height}px`,e.style.width=`${o.width}px`,o=void 0)},c=()=>{r===void 0&&(r=window.requestAnimationFrame(s))},l=()=>{!o&&i!==void 0&&a!==void 0&&(o={width:i,height:a}),c()},u=e=>{if(e.origin!==n||e.source!==t.contentWindow||!e.data||typeof e.data!=`object`||e.data.type!==`silk-iframe-size`)return;let r=e.data.height,s=e.data.width,l=2e3;if(typeof r!=`number`||typeof s!=`number`||r<50||r>l||s<50||s>l||!Number.isFinite(r)||!Number.isFinite(s))return;let u=Math.floor(s),d=Math.floor(r);u===i&&d===a||(o={width:u,height:d},c())};window.addEventListener(`message`,u),t.addEventListener(S,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(S,l)};return se(t,d),d},fe=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,O(t,null)},r=n=>{if(n.origin!==e||n.source!==t.contentWindow||!n.data||typeof n.data!=`object`||n.data.type!==`silk-iframe-visual-ready`)return;let r=n.data.revision;!Number.isSafeInteger(r)||r<=0||r<=D(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(S,{detail:{revision:r}})))};t.addEventListener(`load`,n),window.addEventListener(`message`,r);let i=()=>{t.removeEventListener(`load`,n),window.removeEventListener(`message`,r)};return se(t,i),i},pe=()=>{setTimeout(()=>{if(typeof document>`u`)return;let e=T();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},me=e=>{let t=E();if(!t)return!1;let n=t.dataset.waapOrigin??(()=>{try{return new URL(t.src).origin}catch{return}})();if(n&&n!==e)throw Error(`WaaP wallet iframe already exists for ${n}; destroy it before switching to ${e}`);return!0},he=(e,t)=>{let n=u();if(!n)throw Error(`WaaP component not found in DOM`);if(me(e))return;let r=k(),i=de(e,t);j(e,i),fe(e,i),pe(),r.appendChild(i),n.appendChild(r),y(i)},ge=(e,t)=>{if(me(e))return;let n=A(),r=k();n.appendChild(r);let i=de(e,t);j(e,i),fe(e,i),pe(),r.appendChild(i),document.body.appendChild(n),y(i)},M=(e={})=>{if(!C)return;ie();let t=ae(e),n=e.config?.styles?.darkMode===!0,r=E();r&&ue(r,n),l()?he(t,n):ge(t,n)},_e=()=>{if(!C)return;Ae();let e=E(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&b(e);let n=T(),r=w();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let N=0;async function ve(e){let t=Date.now().toString(),n=new TextEncoder().encode(JSON.stringify(e)+t),r=globalThis.crypto;if(r?.subtle?.digest){let e=await r.subtle.digest(`SHA-256`,new Uint8Array(n));return P(new Uint8Array(e))}return N+=1,P(new TextEncoder().encode(`${t}:${N}:${Math.random()}:${JSON.stringify(e)}`)).padEnd(64,`0`).slice(0,64)}function P(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}const F=new WeakMap,ye=(e,t)=>{let n=F.get(e);if(n)return n;let r=t();return F.set(e,r),r.catch(()=>{F.get(e)===r&&F.delete(e)}),r},be=e=>{F.delete(e)},I=(e,t={})=>({schemaVersion:1,accountMode:e,sessionProtection:t.sessionProtection??`dpop`,...t.chains?.length?{chains:t.chains}:{},parentOrigin:typeof window>`u`?void 0:window.location?.origin,...t.referralCode?{referralCode:t.referralCode}:{},...t.project?{project:t.project}:{},...t.config?{config:t.config}:{}}),L=new Set;let R=!1,z;const B=new WeakMap,xe=(e=256)=>{let t=new Set;return{accept(n){if(t.has(n))return!1;if(t.add(n),t.size>e){let e=t.values().next().value;e&&t.delete(e)}return!0},clear(){t.clear()},size(){return t.size}}},V=e=>{let t=B.get(e);if(t)return t;let n={ready:!1,promise:null,reject:null,cleanup:null,navigationGeneration:null,readyPingStartedAt:null,readyAt:null,readyAttempts:0,visualReadySupported:null,lastError:null};return B.set(e,n),n},H=(e,t)=>{let n=B.get(e);if(!n)return;n.ready=!1,n.cleanup?.(),n.cleanup=null;let r=n.reject;n.reject=null,n.promise=null,n.navigationGeneration=null,n.visualReadySupported=null;let i=E();i?.contentWindow===e&&O(i,null),r?.(t)},U=()=>typeof performance<`u`?performance.now():Date.now();let Se=null;const Ce=()=>Se,we=(t,n,r)=>{let{handleResponse:i,handleRequest:a,onReceiveConnectNotif:o,onAccountChanged:s,onAsyncTxNotification:c,onSquidLifecycleNotification:l}=r;if(t.origin===n.walletOrigin&&t.source===n.getIframeWindow()&&t.data?.target===`silk`)if(t.data?.messageType===e.n.request)a(t.data);else if(t.data?.messageType===e.n.response){let e=t.data;n.shouldHandleTerminalResponse(e.id)&&i(e)}else t.data?.messageType===e.n.notification&&(t.data?.data===e.i.connect?o?.():t.data?.data?.type===e.i.account_changed&&s?s(t.data.data.account):(t.data?.data?.type?.startsWith(`waap_sign_`)||t.data?.data?.type?.startsWith(`waap_tx_`))&&c?c({type:t.data.data.type,payload:t.data.data.payload}):t.data?.data?.type?.startsWith(`waap_squid_`)&&l&&l({type:t.data.data.type,payload:t.data.data.payload}))},Te=()=>{R||typeof window>`u`||(R=!0,z=e=>{for(let{manager:t,config:n}of Array.from(L))we(e,t,n)},window.addEventListener(`message`,z))},Ee=()=>{L.size>0||!R||!z||typeof window>`u`||(window.removeEventListener(`message`,z),z=void 0,R=!1)};var W=class{constructor(e,t){this.iframeWindow=null,this.unregisterListeners=new Set,this.terminalResponseDeduper=xe(),this.unsubscribeIframeNavigation=null,this.disposed=!1,this.iframeWindow=e,this.walletOrigin=typeof t==`string`?t:m(t===!0?{useStaging:!0}:{}),e&&this.observeIframeNavigation(e)}observeIframeNavigation(e){this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=ne(e,()=>{let t=V(e);(t.ready||t.readyPingStartedAt!==null)&&(be(e),H(e,Error(`WaaP iframe reloaded; readiness must be re-established`)),this.terminalResponseDeduper.clear())})}setIframeWindow(e){this.iframeWindow&&this.iframeWindow!==e&&(H(this.iframeWindow,Error(`Wallet iframe window changed`)),this.terminalResponseDeduper.clear()),this.iframeWindow=e,this.observeIframeNavigation(e)}getIframeWindow(){return this.iframeWindow}isDisposed(){return this.disposed}shouldHandleTerminalResponse(e){return this.terminalResponseDeduper.accept(e)}getHandshakeDiagnostics(){let e=this.iframeWindow,t=e?x(e):null,n=e?V(e):null,r={walletOrigin:this.walletOrigin,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,readyPingStartedAt:n?.readyPingStartedAt??null,readyAt:n?.readyAt??null,readyAttempts:n?.readyAttempts??0,visualReadySupported:n?.visualReadySupported??null,navigationGeneration:n?.navigationGeneration??null,lastError:n?.lastError??null};return Se=r,r}postSilkNotification(t){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);this.iframeWindow.postMessage({target:`silk`,messageType:e.n.notification,data:t},this.walletOrigin)}postReadyNotification(){this.postSilkNotification(e.i.ready)}postConnectNotification(){this.postSilkNotification(e.i.connect)}cancelSilkRequest(t,n){this.postSilkNotification({type:e.i.request_cancel,requestId:t,method:n})}pingIframe(){if(this.disposed)return Promise.reject(Error(`Wallet message manager is disposed`));let t=this.iframeWindow;if(!t||typeof window>`u`)return Promise.reject(Error(`WaaP iframe is not mounted`));let n=V(t),r=x(t);return n.ready&&(!r||n.navigationGeneration===r.generation)?Promise.resolve():(n.ready&&H(t,Error(`WaaP iframe navigation changed; readiness must be re-established`)),n.promise?n.promise:(n.lastError=null,n.readyPingStartedAt=null,n.readyAt=null,n.readyAttempts=0,n.visualReadySupported=null,n.promise=new Promise((r,i)=>{n.reject=i,te(t,3e4).then(r=>{if(this.disposed||this.iframeWindow!==t)throw Error(`Wallet message manager is disposed`);return new Promise((i,a)=>{let o=a=>{if(a.origin===this.walletOrigin&&a.source===t&&a.data?.target===`silk`&&a.data.messageType===e.n.notification&&a.data.data===e.i.ready){n.ready=!0,n.navigationGeneration=x(t)?.generation??r?.generation??null,n.readyAt=U(),n.visualReadySupported=a.data?.capabilities?.visualReady===1;let e=E();e?.contentWindow===t&&O(e,n.visualReadySupported),f(),i()}},s=()=>{try{n.readyAttempts+=1,this.postReadyNotification()}catch(e){f(),a(e)}};n.readyPingStartedAt=U();let c=250,l,u=()=>{l=window.setTimeout(()=>{s(),c=Math.min(c*2,1e3),u()},c)},d=window.setTimeout(()=>{f(),a(Error(`WaaP wallet ready handshake timed out after 10s.`))},1e4),f=()=>{l!==void 0&&window.clearTimeout(l),window.clearTimeout(d),window.removeEventListener(`message`,o),n.cleanup===f&&(n.cleanup=null,n.reject=null)};n.cleanup=f,n.reject=a,window.addEventListener(`message`,o),s(),u()})}).then(r,i)}),n.promise=n.promise.finally(()=>{n.ready||(n.lastError=n.lastError??`Wallet readiness failed`,n.promise=null)}),n.promise.catch(e=>{n.lastError=e instanceof Error?e.message:String(e)}),n.promise))}async postSilkRequest(t){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);let{silkOptions:n,...r}=t,i={...r,target:`silk`,messageType:e.n.request,...n&&{silkOptions:n}},a=await ve(i);return this.iframeWindow.postMessage({...i,id:a},this.walletOrigin),a}addListener(e){if(this.disposed)throw Error(`Wallet message manager is disposed`);Te();let t={manager:this,config:e};L.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(L.delete(t),Ee())};return this.unregisterListeners.add(n),n}dispose(){this.disposed||(this.disposed=!0,this.iframeWindow&&H(this.iframeWindow,Error(`Wallet message manager was disposed`)),Array.from(this.unregisterListeners).forEach(e=>e()),this.terminalResponseDeduper.clear(),this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=null,this.iframeWindow=null)}};const G=`waap-wallet-iframe-loading`,K=new Set,q=()=>typeof performance<`u`?performance.now():Date.now(),J=e=>{K.forEach(t=>{try{t(e)}catch{}})},De=e=>(K.add(e),()=>K.delete(e));var Oe=class{constructor(e){this.pendingRevision=null,this.phase=`idle`,this.requestedAt=null,this.visibleAt=null,this.usedVisualFallback=!1,this.onVisualReady=e=>{let t=e.detail?.revision;this.pendingRevision!==null&&typeof t==`number`&&t>=this.pendingRevision&&this.revealIframe(!1)},this.iframe=e,e.addEventListener(S,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=T();if(!t)return;this.clearFallbackTimer();let n=this.moveToCurrentMode(t);n===`modal`&&e===`signing`?(t.dataset.waapSizeLocked=`true`,t.style.width=`380px`,t.style.height=`600px`):n===`modal`&&delete t.dataset.waapSizeLocked,this.pendingRevision=D(this.iframe)+1,this.phase=`pending`,this.requestedAt=q(),this.visibleAt=null,this.usedVisualFallback=!1,J({phase:`modal_requested`,at:this.requestedAt,visualRevision:this.pendingRevision}),this.hideIframeUntilPaint(t),n===`modal`?this.showModalSurface():t.style.display=`flex`;let r=oe(this.iframe);if(r===!1){this.revealIframe(!0);return}this.fallbackTimer=window.setTimeout(()=>{this.revealIframe(!0)},r===!0?3e3:750)}hide(){let e=this.pendingRevision!==null;this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`hidden`;let t=q();e&&J({phase:`modal_cancelled`,at:t,visualRevision:D(this.iframe)}),J({phase:`modal_hidden`,at:t,visualRevision:D(this.iframe)});let n=T();if(n&&delete n.dataset.waapSizeLocked,l()){n&&(n.style.display=`none`);return}let r=w();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(S,this.onVisualReady)}isFor(e){return this.iframe===e}getDiagnostics(){return{modalPhase:this.phase,modalRequestedAt:this.requestedAt,modalVisibleAt:this.visibleAt,usedVisualFallback:this.usedVisualFallback}}moveToCurrentMode(e){if(l()){let t=u();return t&&e.parentElement!==t&&t.appendChild(e),`component`}let t=w();return t||(t=A(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=w();e&&(e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`)}hideIframeUntilPaint(e){e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`,this.iframe.style.visibility=`hidden`,this.iframe.style.opacity=`0`,this.iframe.style.pointerEvents=`none`,this.ensureLoadingIndicator(e).style.display=`flex`}revealIframe(e){if(this.pendingRevision===null)return;let t=D(this.iframe);this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`visible`,this.visibleAt=q(),this.usedVisualFallback=e,J({phase:`modal_visible`,at:this.visibleAt,visualRevision:t,fallback:e});let n=T();if(!n)return;delete n.dataset.waapSizeLocked;let r=n.querySelector(`#${G}`);r&&(r.style.display=`none`),this.iframe.style.visibility=`visible`,this.iframe.style.opacity=`1`,this.iframe.style.pointerEvents=`auto`,n.style.visibility=`visible`,n.style.opacity=`1`,n.style.pointerEvents=`auto`}ensureLoadingIndicator(e){let t=e.querySelector(`#${G}`);if(t)return this.applyLoadingTheme(t),t;t=document.createElement(`div`),t.id=G,t.setAttribute(`role`,`status`),t.setAttribute(`aria-live`,`polite`),t.setAttribute(`aria-label`,`Loading WaaP wallet`),t.style.position=`absolute`,t.style.inset=`0`,t.style.zIndex=`1`,t.style.display=`none`,t.style.flexDirection=`column`,t.style.borderRadius=`24px`,t.style.fontFamily=`system-ui, sans-serif`,t.style.fontSize=`14px`,t.style.pointerEvents=`none`;let n=document.createElement(`div`);n.style.boxSizing=`border-box`,n.style.display=`flex`,n.style.flexDirection=`column`,n.style.width=`100%`,n.style.height=`100%`,n.style.padding=`24px`;let r=document.createElement(`img`),i=this.iframe.dataset.waapOrigin;i&&(r.src=`${i}/assets/svg/waaplogo.svg`),r.alt=`WaaP`,r.width=66,r.height=25,r.style.alignSelf=`center`,r.style.width=`66px`,r.style.height=`25px`,r.style.marginBottom=`20px`,r.dataset.waapLoadingLogo=`true`;let a=(e,t,n,r)=>{let i=document.createElement(`div`);return i.setAttribute(`aria-hidden`,`true`),i.dataset.waapLoadingPart=e,i.style.width=t,i.style.height=n,i.style.flexShrink=`0`,i.style.borderRadius=r,i.style.backgroundSize=`200% 100%`,i.style.animation=`waap-loading-shimmer 2.4s ease-in-out infinite`,i},o=a(`request-title`,`156px`,`16px`,`999px`);o.style.marginTop=`34px`;let s=a(`request-body`,`100%`,`220px`,`12px`);s.style.flex=`1`,s.style.marginTop=`18px`,s.style.opacity=`.58`;let c=document.createElement(`div`);return c.dataset.waapLoadingPart=`actions`,c.setAttribute(`aria-hidden`,`true`),c.style.display=`flex`,c.style.gap=`10px`,c.append(a(`cancel-action`,`calc(50% - 5px)`,`48px`,`12px`),a(`confirm-action`,`calc(50% - 5px)`,`48px`,`12px`)),n.append(r,o,s,c),t.appendChild(n),e.appendChild(t),this.applyLoadingTheme(t),t}applyLoadingTheme(e){let t=this.iframe.dataset.waapTheme===`dark`;e.dataset.waapTheme=t?`dark`:`light`,e.style.background=t?`#121212`:`#ffffff`,e.style.color=t?`#e6e6e6`:`#000000`;let n=e.querySelector(`[data-waap-loading-logo]`);n&&(n.style.filter=t?`invert(1)`:`none`);let r=t?`linear-gradient(90deg, rgba(255,255,255,.07), rgba(255,255,255,.14), rgba(255,255,255,.07))`:`linear-gradient(90deg, rgba(0,0,0,.05), rgba(0,0,0,.1), rgba(0,0,0,.05))`;e.querySelectorAll(`[data-waap-loading-part]`).forEach(e=>{e.style.background=r})}clearFallbackTimer(){this.fallbackTimer!==void 0&&(window.clearTimeout(this.fallbackTimer),this.fallbackTimer=void 0)}};let Y;const ke=()=>{let e=E();return e?(Y&&!Y.isFor(e)&&(Y.dispose(),Y=void 0),Y??=new Oe(e),Y):null},X=e=>{ke()?.show(e)},Z=()=>{ke()?.hide()},Ae=()=>{Y?.dispose(),Y=void 0},je=()=>{let e=E(),t=e?.contentWindow?x(e.contentWindow):null,n=Y?.getDiagnostics(),r=Number(e?.dataset.waapVisualReadyAt??``);return{walletOrigin:e?.dataset.waapOrigin??null,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,visualRevision:D(e),visualReadyAt:Number.isFinite(r)?r:null,modalPhase:n?.modalPhase??`idle`,modalRequestedAt:n?.modalRequestedAt??null,modalVisibleAt:n?.modalVisibleAt??null,usedVisualFallback:n?.usedVisualFallback??!1,handshake:Ce()}},Me=new Set([e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.personal_sign,e.t.eth_signTypedData_v4]),Ne=e=>Me.has(e);function Pe(e){return new Promise((t,n)=>{let r,i=!1,a=()=>{r!==void 0&&clearTimeout(r),e.eventEmitter.removeListener(e.id,o),e.signal?.removeEventListener(`abort`,c)},o=e=>{i||(i=!0,a(),t(e))},s=t=>{i||(i=!0,a(),e.onCancel?.(),n(Error(t)))},c=()=>s(`WaaP request cancelled: ${e.method}`);if(e.signal?.aborted){c();return}e.interactionRequired||(r=setTimeout(()=>{s(`WaaP request timed out: ${e.method}`)},e.timeoutMs??3e4)),e.eventEmitter.once(e.id,o),e.signal?.addEventListener(`abort`,c,{once:!0})})}async function Q(t,n,r,i,a){let o=t.method,s=t.params,{timeoutMs:c,signal:l,...u}=a??{};n&&X({layout:o===e.r.login?`auth`:`signing`});let d;try{d=await r.postSilkRequest({method:o,params:s,interactionRequired:n,silkOptions:a?u:void 0});let e=await Pe({eventEmitter:i,id:d,method:o,interactionRequired:n,timeoutMs:c,signal:l,onCancel:()=>{r.cancelSilkRequest(d,o),n&&Z()}});if(n&&Z(),e.error)throw e.error;return e.data}catch(e){throw n&&d===void 0&&Z(),e}}const Fe=(e,t={})=>{if(typeof window>`u`)return()=>void 0;let n=!1,r,i,a=window,o=()=>{n||e.preload().catch(e=>t.onError?.(e))};return typeof a.requestIdleCallback==`function`?r=a.requestIdleCallback(o,{timeout:t.timeoutMs??2e3}):i=window.setTimeout(o,0),()=>{n=!0,r!==void 0&&a.cancelIdleCallback?.(r),i!==void 0&&window.clearTimeout(i)}};var Ie=function(e){return e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e}(Ie||{}),Le=class extends n.EventEmitter{constructor(){super()}};function Re(e){return!(!e?.isMetaMask||e.isApexWallet||e.isAvalanche||e.isBitKeep||e.isBlockWallet||e.isMathWallet||e.isOkxWallet||e.isOKExWallet||e.isOneInchIOSWallet||e.isOneInchAndroidWallet||e.isOpera||e.isPortal||e.isRabby||e.isDefiant||e.isTokenPocket||e.isTokenary||e.isZerion)}function ze(e){try{if(!e||!Array.isArray(e))return!1;let t=JSON.parse(typeof e[1]==`string`?e[1]:JSON.stringify(e[1]));return t.primaryType===`SafeTx`&&t.domain?.verifyingContract!==void 0&&t.message&&`to`in t.message&&`value`in t.message&&`safeTxGas`in t.message&&`baseGas`in t.message&&`gasPrice`in t.message&&`nonce`in t.message}catch{return!1}}const Be={styles:{darkMode:!1}},$=[`waap`,`human`,`injected`,`walletconnect`],Ve=[e.t.eth_sendTransaction,e.t.eth_signTransaction,e.t.eth_signTypedData_v4,e.t.personal_sign];function He(e){if(e==null)return null;if(typeof e==`string`){if($.includes(e))return e;throw Error(`[EthereumProvider] Unexpected login method: "${e}". Expected one of: ${$.join(`, `)}`)}if(typeof e==`object`&&`loginMethod`in e&&typeof e.loginMethod==`string`){let t=e.loginMethod;if(console.warn(`[EthereumProvider] Received object login response. Normalizing "${t}" to string. This is unexpected for the web SDK.`),$.includes(t))return t;throw Error(`[EthereumProvider] Unknown loginMethod in object: "${t}". Expected one of: ${$.join(`, `)}`)}throw Error(`[EthereumProvider] Unexpected login response: ${JSON.stringify(e)} (type: ${typeof e})`)}var Ue=class extends n.EventEmitter{constructor(t,r,i,a,o,s=!1,c=!1,l,u=[`evm`],d){super(),this.lastKnownConversion=`pending`,this.isSilk=!0,this.isWaaP=!0,this.connected=!1,this.currentAccount=null,this.accountMode=`tap`,this.walletConnectProvider=null,this.asyncTxs=!1,this.legacyAsyncSigning=!1,this.internalEventEmitter=new n.EventEmitter,this.iframeMounted=!0,this.initializerPromise=null,this.sessionProbe=null,this.initializedIframeWindow=null,this.asyncTxs=s,this.legacyAsyncSigning=c,this.ensureIframe=l,this.iframeMounted=!l,this.referralCode=r,this.project=a,this.customConfig=i,this.initializerChains=u,this.sessionProtection=d,this.uiMessageManager=new Le,this.walletMessageManager=new W(t,o),this.config={...Be,...i||{}},this.persistedMethods={login:this.login.bind(this),logout:this.logout.bind(this),getLoginMethod:this.getLoginMethod.bind(this),walletMessageManager:this.walletMessageManager,internalEventEmitter:this.internalEventEmitter,uiMessageManager:this.uiMessageManager,portal:this.portal.bind(this),requestEmail:this.requestEmail.bind(this),requestSBT:this.requestSBT.bind(this),requestPermissionToken:this.requestPermissionToken.bind(this),orcid:this.orcid.bind(this),enable:this.enable.bind(this),isConnected:this.isConnected.bind(this),toggleDarkMode:this.toggleDarkMode.bind(this),destroy:this.destroy.bind(this),silkRequest:this.request.bind(this),waaPRequest:this.request.bind(this)},this.walletMessageManager.addListener({onReceiveConnectNotif:()=>{this.connected=!0,this.emit(`connect`)},handleResponse:e=>this.internalEventEmitter.emit(e.id,e),handleRequest:t=>{t.method===e.r.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.r.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:e=>{this.currentAccount!==e&&(this.currentAccount=e,this.emit(`accountsChanged`,e?[e]:[]))},onAsyncTxNotification:e=>{this.emit(e.type,e.payload)},onSquidLifecycleNotification:e=>{this.emit(e.type,e.payload)}})}async initializeWalletConnect(){try{this.walletConnectProvider=await t.t.getInstance()}catch(e){console.error(`Failed to initialize WalletConnect provider:`,e),this.walletConnectProvider=null}}async initializeIframeContext(){let t=this.walletMessageManager.getIframeWindow();if(!t)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===t&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=t,this.initializerPromise=ye(t,async()=>{await this.walletMessageManager.pingIframe(),await Q({method:e.r.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)});try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async reassertIframeAccountMode(){this.ensureIframeMounted(),await this.walletMessageManager.pingIframe(),await Q({method:e.r.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();e&&(this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e))}async ensureInitialized(){this.ensureIframeMounted(),await this.initializeIframeContext()}async preload(){await this.ensureInitialized()}async enable(){return this.request({method:`eth_requestAccounts`})}isConnected(){return this.connected}getAccountStatus(){let e=this.getLoginMethod();return{authenticated:e!==null,loginMethod:e,activeMode:e?this.accountMode:null,mode:this.accountMode,conversion:e?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this.currentAccount?{evm:this.currentAccount}:{}}}get session(){return{login:e=>this.login(e),logout:async()=>{await this.logout()},getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await Q({method:e.r.waap_getAccountStatus,params:[]},!1,this.walletMessageManager,this.internalEventEmitter);return t?.conversion&&(this.lastKnownConversion=t.conversion),t}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async request(t){if(!Object.keys(e.t).includes(t.method))return Promise.reject({error:`Not implemented (${t.method})`});let n=await this.attemptAutoConnect(t.method);if(n!==null)return n;if(Ve.includes(t.method)&&!(this.getLoginMethod()!==null||await this.restorePersistedWaaPSession()!==null))return Promise.reject(new r(`not_authenticated`,`Not authenticated: call login() before signing.`,{operation:{chain:`evm`,method:t.method}}));if(ze(t.params)&&t.method!==e.t.eth_signTypedData_v4)return Promise.reject({error:`Safe transactions must be signed using eth_signTypedData_v4`});await this.ensureInitialized();let i=(t.method===e.t.eth_sendTransaction||t.method===e.t.eth_signTransaction||t.method===e.t.eth_signTypedData_v4||t.method===e.t.personal_sign)&&this.asyncTxs||t.async,a=i||t.withPT||t.timeoutMs!==void 0||t.signal?this.legacyAsyncSigning?{asyncSigning:i||void 0,withPT:t.withPT,timeoutMs:t.timeoutMs,signal:t.signal}:{async:i,withPT:t.withPT,timeoutMs:t.timeoutMs,signal:t.signal}:void 0,o=await Q(t,Ne(t.method),this.walletMessageManager,this.internalEventEmitter,a);if((t.method===e.t.wallet_switchEthereumChain||t.method===e.t.wallet_addEthereumChain)&&o===null){this.emit(`chainChanged`,t.params?.[0]?.chainId);try{let e=await this.request({method:`eth_accounts`});e&&e.length>0&&(this.currentAccount=e[0],this.emit(`accountsChanged`,e),this.emit(`connect`,{chainId:t.params?.[0]?.chainId}))}catch(e){console.warn(`[EthereumProvider] Failed to get accounts after chain switch:`,e),this.currentAccount&&(this.emit(`accountsChanged`,[this.currentAccount]),this.emit(`connect`,{chainId:t.params?.[0]?.chainId}))}}return t.method===e.t.eth_requestAccounts&&Array.isArray(o)&&typeof o[0]==`string`&&(this.currentAccount=o[0],this.connected=!0,typeof window<`u`&&typeof localStorage<`u`&&localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.emit(`accountsChanged`,o),this.emit(`connect`)),o}async login(n){if(typeof window>`u`||typeof document>`u`)return null;let r=n&&!(`request`in n)?n:void 0,i=r?r.customProvider:n;if(await this.ensureInitialized(),!r?.force&&await this.restorePersistedWaaPSession())return this.getLoginMethod()??`waap`;let a=i||window.ethereum,o=a&&Re(a)?`MetaMask`:`Browser Wallet`,s=He(await Q({method:e.r.login,params:[o]},!0,this.walletMessageManager,this.internalEventEmitter));if(s===null)return null;switch(s){case`waap`:case`human`:localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP();break;case`injected`:a&&(localStorage.setItem(`${window.location.origin}-connected`,`injected`),this.setupInjectedWallet(a));break;case`walletconnect`:{localStorage.setItem(`${window.location.origin}-connected`,`walletconnect`),this.walletConnectProvider||await this.initializeWalletConnect(),t.t.isConnected()||(await this.walletConnectProvider.open({view:`Connect`}),await t.t.listenToAccountChangeEvent());let e=t.t.getWalletProvider();this.setupWalletConnect(e);break}}return s}async logout(){await this.ensureInitialized(),this.cleanupInvalidLoginState(),this.lastKnownConversion=`pending`,this.currentAccount=null,this.connected=!1,this.emit(`accountsChanged`,[]),this.emit(`disconnect`);try{this.walletConnectProvider&&await this.walletConnectProvider.disconnect()}catch(e){console.error(`Error disconnecting from WalletConnect:`,e)}return Q({method:e.r.logout},!1,this.walletMessageManager,this.internalEventEmitter)}destroy(){if(this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.removeAllListeners(),this.connected=!1,this.walletConnectProvider&&=(this.walletConnectProvider.disconnect().catch(()=>void 0),null),typeof window<`u`){let e=window;(e.silk===this||e.silk?.walletMessageManager===this.walletMessageManager)&&delete e.silk,(e.waap===this||e.waap?.walletMessageManager===this.walletMessageManager)&&delete e.waap}_e()}cleanupInvalidLoginState(){try{localStorage.removeItem(`${window.location.origin}-connected`)}catch(e){console.warn(`Could not clean up login state:`,e)}}setupWaaP(){let e={...this.persistedMethods,isWaaP:!0,on:this.on.bind(this),removeListener:this.removeListener.bind(this),request:this.request.bind(this)};window.silk=e,window.waap=e}setupInjectedWallet(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:e.connected??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectInjected(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:e.isConnected?.()??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}async attemptAutoConnect(e){if(e!==`eth_requestAccounts`&&e!==`eth_accounts`)return null;let n=this.getLoginMethod();if(n===`waap`||n===`human`){let e=await this.restorePersistedWaaPSession();if(e)return e}if(n===`injected`&&window.ethereum)try{return this.setupAutoConnectInjected(window.ethereum),window.ethereum.request({method:`eth_requestAccounts`})}catch(e){return console.warn(`Injected wallet auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}else if(n===`walletconnect`)try{if(this.walletConnectProvider||=await t.t.getInstance(),await t.t.waitForReadyAndCheckConnection()){let e=t.t.getWalletProvider();return this.setupAutoConnectWalletConnect(e),e.request({method:`eth_requestAccounts`})}else return this.cleanupInvalidLoginState(),null}catch(e){return console.warn(`WalletConnect auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}return null}restorePersistedWaaPSession(){return this.sessionProbe??=this.probeWaaPSession().finally(()=>{this.sessionProbe=null}),this.sessionProbe}async probeWaaPSession(){try{if(await this.ensureInitialized(),!(await this.getCanonicalAccountStatus()).authenticated)return this.cleanupInvalidLoginState(),null;let t=await Q({method:e.r.auto_conn,params:[window.location.origin]},!1,this.walletMessageManager,this.internalEventEmitter);if(Array.isArray(t)&&t.length>0)return this.currentAccount=t[0],this.connected=!0,localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP(),t}catch(e){console.warn(`WaaP session probe failed:`,e)}return this.cleanupInvalidLoginState(),null}getLoginMethod(){if(typeof window>`u`||typeof localStorage>`u`)return null;try{let e=localStorage.getItem(`${window.location.origin}-connected`);if(!e)return null;if(![`waap`,`human`,`injected`,`walletconnect`].includes(e))return this.cleanupInvalidLoginState(),null;switch(e){case`injected`:return window.ethereum?`injected`:(this.cleanupInvalidLoginState(),null);case`walletconnect`:try{return t.t.isConnected()?`walletconnect`:(this.cleanupInvalidLoginState(),null)}catch{return this.cleanupInvalidLoginState(),null}case`waap`:return`waap`;case`human`:return`human`;default:return this.cleanupInvalidLoginState(),null}}catch(e){return console.warn(`Error checking login method:`,e),this.cleanupInvalidLoginState(),null}}async toggleDarkMode(){this.config.styles.darkMode=!this.config.styles.darkMode,await this.ensureInitialized();try{await Q({method:e.r.set_custom_config,params:[this.config]},!1,this.walletMessageManager,this.internalEventEmitter)}catch(e){console.error(`Error setting custom config in Silk iframe:`,e)}}async safe(){await this.ensureInitialized(),await Q({method:e.r.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await Q({method:e.r.orcid},!0,this.walletMessageManager,this.internalEventEmitter)}async portal(t,n,r){await this.ensureInitialized();let i;switch(n){case`get`:i=t===`gastank`?e.r.gastank_get_settings:e.r.customization_get;break;case`update`:i=t===`gastank`?e.r.gastank_update_settings:e.r.customization_update;break;case`topup`:i=e.r.gastank_topup;break;case`init`:i=e.r.project_init;break}let a=n!==`get`&&t!==`customization`;return Q({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),Q({method:e.r.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(t){return await this.ensureInitialized(),Q({method:e.r.waap_requestPermissionToken,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(t){return await this.ensureInitialized(),await Q({method:e.r.waap_getPermissionTokenStatus,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(t){return await this.ensureInitialized(),await Q({method:e.r.waap_clearPermissionToken,params:[t]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(t){return await this.ensureInitialized(),Q({method:e.r.silk_requestSbt,params:[t]},!0,this.walletMessageManager,this.internalEventEmitter)}};const We=(e,n,r=!0,i=[`evm`],a=!0)=>{let{referralCode:o,config:s,project:c,asyncTxs:l,asyncSigning:u,deferIframe:d,sessionProtection:f}=e,ee=m(e),p=!!u&&!l;e.walletConnectProjectId&&t.t.setProjectId(e.walletConnectProjectId),u&&!l&&console.warn("[WaaP SDK] `asyncSigning` is deprecated. Use `asyncTxs` instead.");let h=typeof window>`u`||typeof document>`u`,g=()=>typeof window>`u`||typeof document>`u`?null:(M(e),ce(n).contentWindow),_=d===!1&&!h,v=d===void 0&&!h,y=_?g():null;if(_&&!y)throw Error(`WaaP iframe does not exist on page`);let b=new Ue(y,o,s||{},c||{},ee,l||u||!1,p,_?void 0:g,i,f);if(b.setAccountMode(n),!h&&r&&_&&b.initializeIframeContext().catch(()=>void 0),b.uiMessageManager.on(`show_modal`,()=>{X()}),b.uiMessageManager.on(`hide_modal`,()=>{Z()}),!h&&a&&(window.silk=b,window.waap=b),r&&v){let e=Fe(b),t=b.destroy.bind(b);b.destroy=()=>{e(),t()}}return b},Ge=(e={})=>We(e,`tap`);Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return M}});
@@ -0,0 +1 @@
1
+ import{i as e,n as t,r as n,t as r}from"./esm-B4jz8Emb.mjs";import{t as i}from"./WalletConnect-Deg7_JmH.mjs";import{EventEmitter as a}from"events";var o=class extends Error{constructor(e,t,n={}){super(t),this.name=`WaaPError`,this.code=e,this.operation=n.operation,this.cause=n.cause}};function s(e,t){if(e instanceof o)return e;let n=e&&typeof e==`object`?e:void 0,r=n&&typeof n.message==`string`&&n.message||e instanceof Error&&e.message||String(e||`WaaP request failed`),i=n?.code,a=r.toLowerCase();return new o(a.includes(`cancelled`)||a.includes(`canceled`)?`cancelled`:a.includes(`timed out`)?`timeout`:a.includes(`policy`)||a.includes(`permission token`)?`policy_rejected`:i===4001||a.includes(`rejected`)?`user_rejected`:a.includes(`not connected`)?`not_connected`:a.includes(`not authenticated`)||a.includes(`log in first`)?`not_authenticated`:a.includes(`unsupported`)||a.includes(`must be base64`)?`unsupported_input`:n?`wallet_error`:`unknown`,r,{cause:e,operation:t})}const c=`waap-wallet`,l=`waap-component-container`,u=typeof window<`u`&&typeof document<`u`&&typeof HTMLElement<`u`;let d;u?(d=class extends HTMLElement{constructor(){super()}connectedCallback(){(!this.style.display||this.style.display===``)&&(this.style.display=`flex`,this.style.alignItems=`center`,this.style.justifyContent=`center`),(!this.style.width||this.style.width===``)&&(this.style.width=`100%`),(!this.style.height||this.style.height===``)&&(this.style.height=`100%`),this.id=l,this.setAttribute(`data-waap-mounted`,`true`)}disconnectedCallback(){this.removeAttribute(`data-waap-mounted`)}},typeof customElements<`u`&&!customElements.get(c)&&customElements.define(c,d)):d=class{};function f(){return u?!!document.getElementById(l)||!!document.querySelector(c):!1}function p(){return u?document.getElementById(l)||document.querySelector(c):null}const m=`https://staging.waap.xyz`,h={development:`http://localhost:3000`,staging:m,production:`https://waap.xyz`},g=e=>e===`localhost`||e===`127.0.0.1`||e===`[::1]`;function _(e){let t;try{t=new URL(e)}catch{throw Error(`Invalid WaaP wallet origin: ${e}`)}if(t.origin!==e||t.pathname!==`/`||t.search||t.hash||t.username||t.password)throw Error(`WaaP walletOrigin must be an absolute origin without a path, query, or credentials`);if(t.protocol!==`https:`&&!(t.protocol===`http:`&&g(t.hostname)))throw Error(`WaaP walletOrigin must use HTTPS unless it is a loopback host`);return t.origin}function v(e={}){return e.walletOrigin?_(e.walletOrigin):e.environment?_(h[e.environment]):e.useStaging?_(m):_(h.production)}const y=new WeakMap,b=new WeakMap,x=()=>typeof performance<`u`?performance.now():Date.now(),S=e=>({generation:e.generation,navigationStartedAt:e.navigationStartedAt,loadedAt:e.loadedAt}),C=e=>{let t=e.contentWindow;if(!t)return;let n=b.get(e);if(n&&y.get(t)===n)return;n?.cleanup(),n&&(b.delete(e),y.get(t)===n&&y.delete(t));let r=y.get(t);if(r?.iframe===e)return;r?.cleanup(),r&&b.delete(r.iframe);let i={iframe:e,generation:0,navigationStartedAt:x(),loadedAt:null,listeners:new Set,cleanup:()=>{}},a=()=>{i.generation+=1,i.loadedAt=x();let e=S(i);for(let t of Array.from(i.listeners))t(e)};i.cleanup=()=>{e.removeEventListener(`load`,a),i.listeners.clear()},e.addEventListener(`load`,a),y.set(t,i),b.set(e,i)},ee=e=>{let t=b.get(e);if(t){t.cleanup(),b.delete(e);let n=e.contentWindow;n&&y.get(n)===t&&y.delete(n);return}let n=e.contentWindow;if(!n)return;let r=y.get(n);!r||r.iframe!==e||(r.cleanup(),y.delete(n))},w=e=>{let t=y.get(e);return t?S(t):null},te=(e,t)=>{let n=y.get(e);return n?n.loadedAt===null?new Promise((e,r)=>{let i=window.setTimeout(()=>{n.listeners.delete(a),r(Error(`WaaP iframe navigation timed out after ${Math.round(t/1e3)}s.`))},t),a=t=>{window.clearTimeout(i),n.listeners.delete(a),e(t)};n.listeners.add(a)}):Promise.resolve(S(n)):Promise.resolve(null)},ne=(e,t)=>{let n=y.get(e);return n?(n.listeners.add(t),()=>n.listeners.delete(t)):()=>{}},re=`waap-wallet-loading-styles`,T=`waap-iframe-visual-ready`,E=typeof window<`u`&&typeof document<`u`,ie=()=>{if(!E||document.getElementById(re))return;let e=document.createElement(`style`);e.id=re,e.textContent=`@keyframes waap-loading-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @media (prefers-reduced-motion: reduce) { [data-waap-loading-part] { animation: none !important; } }`,document.head.appendChild(e)},ae=(e={})=>v(e),D=()=>E?document.getElementById(`waap-wallet-iframe-container`)||document.getElementById(`silk-wallet-iframe-container`):null,O=()=>E?document.getElementById(`waap-wallet-iframe-wrapper`)||document.getElementById(`silk-wallet-iframe-wrapper`):null,k=()=>E?document.getElementById(`waap-wallet-iframe`)||document.getElementById(`silk-wallet-iframe`):null,A=(e=k())=>{let t=Number(e?.dataset.waapVisualRevision??`0`);return Number.isSafeInteger(t)&&t>=0?t:0},oe=(e=k())=>{let t=e?.dataset.waapVisualReadySupported;return t===`true`||t!==`false`&&null},j=(e,t)=>{if(e){if(t===null){delete e.dataset.waapVisualReadySupported;return}e.dataset.waapVisualReadySupported=String(t)}},se=(e,t)=>{let n=e.__silkCleanup;e.__silkCleanup=()=>{n?.(),t()}},ce=e=>{let t=k();if(!t)throw Error(`WaaP iframe does not exist on page`);let n=t.dataset.waapAccountMode;if(n&&n!==e)throw Error(`WaaP iframe is already bound to ${n}; destroy it before initializing ${e}.`);return t.dataset.waapAccountMode=e,t},le=e=>{if(E)try{if(document.querySelector(`link[data-waap-preconnect="${e}"]`))return;let t=document.createElement(`link`);t.rel=`preconnect`,t.href=e,t.crossOrigin=`anonymous`,t.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(t);let n=document.createElement(`link`);n.rel=`dns-prefetch`,n.href=e,n.setAttribute(`data-waap-preconnect`,e),document.head.appendChild(n)}catch{}},ue=(e,t)=>{e.dataset.waapTheme=t?`dark`:`light`},de=(e,t)=>{let n=e;le(n);let r=document.createElement(`iframe`);return r.id=`waap-wallet-iframe`,r.dataset.waapOrigin=n,ue(r,t),C(r),r.src=`${n}/iframe`,r.allow=`publickey-credentials-get; publickey-credentials-create`,r.style.width=`100%`,r.style.height=`100%`,r.style.border=`none`,r.style.borderRadius=`24px`,r.style.backgroundColor=`transparent`,r.style.background=`transparent`,r.style.padding=`0`,r.style.margin=`0`,r},fe=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-wrapper`,e.style.position=`relative`,e.style.display=`flex`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.padding=`0`,e.style.margin=`0`,e.style.height=`600px`,e.style.width=`380px`,e},pe=()=>{let e=document.createElement(`div`);return e.id=`waap-wallet-iframe-container`,e.style.position=`fixed`,e.style.top=`0`,e.style.left=`0`,e.style.right=`0`,e.style.bottom=`0`,e.style.width=`100%`,e.style.height=`100%`,e.style.alignItems=`center`,e.style.justifyContent=`center`,e.style.backgroundColor=`rgba(0, 0, 0, 0.5)`,e.style.zIndex=`9999999999`,e.style.display=`flex`,e.style.visibility=`hidden`,e.style.opacity=`0`,e.style.pointerEvents=`none`,e.style.transition=typeof window<`u`&&window.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches?`none`:`opacity 140ms ease`,e},me=(e,t)=>{let n=e,r,i,a,o,s=()=>{if(r=void 0,!o)return;let e=O();e&&e.dataset.waapSizeLocked!==`true`&&(i=o.width,a=o.height,e.style.height=`${o.height}px`,e.style.width=`${o.width}px`,o=void 0)},c=()=>{r===void 0&&(r=window.requestAnimationFrame(s))},l=()=>{!o&&i!==void 0&&a!==void 0&&(o={width:i,height:a}),c()},u=e=>{if(e.origin!==n||e.source!==t.contentWindow||!e.data||typeof e.data!=`object`||e.data.type!==`silk-iframe-size`)return;let r=e.data.height,s=e.data.width,l=2e3;if(typeof r!=`number`||typeof s!=`number`||r<50||r>l||s<50||s>l||!Number.isFinite(r)||!Number.isFinite(s))return;let u=Math.floor(s),d=Math.floor(r);u===i&&d===a||(o={width:u,height:d},c())};window.addEventListener(`message`,u),t.addEventListener(T,l);let d=()=>{r!==void 0&&window.cancelAnimationFrame(r),window.removeEventListener(`message`,u),t.removeEventListener(T,l)};return se(t,d),d},he=(e,t)=>{let n=()=>{delete t.dataset.waapVisualRevision,delete t.dataset.waapVisualReadyAt,j(t,null)},r=n=>{if(n.origin!==e||n.source!==t.contentWindow||!n.data||typeof n.data!=`object`||n.data.type!==`silk-iframe-visual-ready`)return;let r=n.data.revision;!Number.isSafeInteger(r)||r<=0||r<=A(t)||(t.dataset.waapVisualRevision=String(r),t.dataset.waapVisualReadyAt=String(typeof performance<`u`?performance.now():Date.now()),t.dispatchEvent(new CustomEvent(T,{detail:{revision:r}})))};t.addEventListener(`load`,n),window.addEventListener(`message`,r);let i=()=>{t.removeEventListener(`load`,n),window.removeEventListener(`message`,r)};return se(t,i),i},ge=()=>{setTimeout(()=>{if(typeof document>`u`)return;let e=O();e&&(e.style.height=`600px`,e.style.width=`380px`)},100)},_e=e=>{let t=k();if(!t)return!1;let n=t.dataset.waapOrigin??(()=>{try{return new URL(t.src).origin}catch{return}})();if(n&&n!==e)throw Error(`WaaP wallet iframe already exists for ${n}; destroy it before switching to ${e}`);return!0},ve=(e,t)=>{let n=p();if(!n)throw Error(`WaaP component not found in DOM`);if(_e(e))return;let r=fe(),i=de(e,t);me(e,i),he(e,i),ge(),r.appendChild(i),n.appendChild(r),C(i)},ye=(e,t)=>{if(_e(e))return;let n=pe(),r=fe();n.appendChild(r);let i=de(e,t);me(e,i),he(e,i),ge(),r.appendChild(i),document.body.appendChild(n),C(i)},M=(e={})=>{if(!E)return;ie();let t=ae(e),n=e.config?.styles?.darkMode===!0,r=k();r&&ue(r,n),f()?ve(t,n):ye(t,n)},N=()=>{if(!E)return;Fe();let e=k(),t=e?.__silkCleanup;typeof t==`function`&&t(),e&&ee(e);let n=O(),r=D();r?r.remove():n?.remove(),document.querySelectorAll(`link[data-waap-preconnect]`).forEach(e=>{e.remove()})};let P=0;async function be(e){let t=Date.now().toString(),n=new TextEncoder().encode(JSON.stringify(e)+t),r=globalThis.crypto;if(r?.subtle?.digest){let e=await r.subtle.digest(`SHA-256`,new Uint8Array(n));return xe(new Uint8Array(e))}return P+=1,xe(new TextEncoder().encode(`${t}:${P}:${Math.random()}:${JSON.stringify(e)}`)).padEnd(64,`0`).slice(0,64)}function xe(e){return Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``)}const F=new WeakMap,Se=(e,t)=>{let n=F.get(e);if(n)return n;let r=t();return F.set(e,r),r.catch(()=>{F.get(e)===r&&F.delete(e)}),r},Ce=e=>{F.delete(e)},I=(e,t={})=>({schemaVersion:1,accountMode:e,sessionProtection:t.sessionProtection??`dpop`,...t.chains?.length?{chains:t.chains}:{},parentOrigin:typeof window>`u`?void 0:window.location?.origin,...t.referralCode?{referralCode:t.referralCode}:{},...t.project?{project:t.project}:{},...t.config?{config:t.config}:{}}),L=new Set;let R=!1,z;const B=new WeakMap,we=(e=256)=>{let t=new Set;return{accept(n){if(t.has(n))return!1;if(t.add(n),t.size>e){let e=t.values().next().value;e&&t.delete(e)}return!0},clear(){t.clear()},size(){return t.size}}},V=e=>{let t=B.get(e);if(t)return t;let n={ready:!1,promise:null,reject:null,cleanup:null,navigationGeneration:null,readyPingStartedAt:null,readyAt:null,readyAttempts:0,visualReadySupported:null,lastError:null};return B.set(e,n),n},H=(e,t)=>{let n=B.get(e);if(!n)return;n.ready=!1,n.cleanup?.(),n.cleanup=null;let r=n.reject;n.reject=null,n.promise=null,n.navigationGeneration=null,n.visualReadySupported=null;let i=k();i?.contentWindow===e&&j(i,null),r?.(t)},Te=()=>typeof performance<`u`?performance.now():Date.now();let Ee=null;const De=()=>Ee,Oe=(n,r,i)=>{let{handleResponse:a,handleRequest:o,onReceiveConnectNotif:s,onAccountChanged:c,onAsyncTxNotification:l,onSquidLifecycleNotification:u}=i;if(n.origin===r.walletOrigin&&n.source===r.getIframeWindow()&&n.data?.target===`silk`)if(n.data?.messageType===t.request)o(n.data);else if(n.data?.messageType===t.response){let e=n.data;r.shouldHandleTerminalResponse(e.id)&&a(e)}else n.data?.messageType===t.notification&&(n.data?.data===e.connect?s?.():n.data?.data?.type===e.account_changed&&c?c(n.data.data.account):(n.data?.data?.type?.startsWith(`waap_sign_`)||n.data?.data?.type?.startsWith(`waap_tx_`))&&l?l({type:n.data.data.type,payload:n.data.data.payload}):n.data?.data?.type?.startsWith(`waap_squid_`)&&u&&u({type:n.data.data.type,payload:n.data.data.payload}))},ke=()=>{R||typeof window>`u`||(R=!0,z=e=>{for(let{manager:t,config:n}of Array.from(L))Oe(e,t,n)},window.addEventListener(`message`,z))},Ae=()=>{L.size>0||!R||!z||typeof window>`u`||(window.removeEventListener(`message`,z),z=void 0,R=!1)};var je=class{constructor(e,t){this.iframeWindow=null,this.unregisterListeners=new Set,this.terminalResponseDeduper=we(),this.unsubscribeIframeNavigation=null,this.disposed=!1,this.iframeWindow=e,this.walletOrigin=typeof t==`string`?t:v(t===!0?{useStaging:!0}:{}),e&&this.observeIframeNavigation(e)}observeIframeNavigation(e){this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=ne(e,()=>{let t=V(e);(t.ready||t.readyPingStartedAt!==null)&&(Ce(e),H(e,Error(`WaaP iframe reloaded; readiness must be re-established`)),this.terminalResponseDeduper.clear())})}setIframeWindow(e){this.iframeWindow&&this.iframeWindow!==e&&(H(this.iframeWindow,Error(`Wallet iframe window changed`)),this.terminalResponseDeduper.clear()),this.iframeWindow=e,this.observeIframeNavigation(e)}getIframeWindow(){return this.iframeWindow}isDisposed(){return this.disposed}shouldHandleTerminalResponse(e){return this.terminalResponseDeduper.accept(e)}getHandshakeDiagnostics(){let e=this.iframeWindow,t=e?w(e):null,n=e?V(e):null,r={walletOrigin:this.walletOrigin,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,readyPingStartedAt:n?.readyPingStartedAt??null,readyAt:n?.readyAt??null,readyAttempts:n?.readyAttempts??0,visualReadySupported:n?.visualReadySupported??null,navigationGeneration:n?.navigationGeneration??null,lastError:n?.lastError??null};return Ee=r,r}postSilkNotification(e){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);this.iframeWindow.postMessage({target:`silk`,messageType:t.notification,data:e},this.walletOrigin)}postReadyNotification(){this.postSilkNotification(e.ready)}postConnectNotification(){this.postSilkNotification(e.connect)}cancelSilkRequest(t,n){this.postSilkNotification({type:e.request_cancel,requestId:t,method:n})}pingIframe(){if(this.disposed)return Promise.reject(Error(`Wallet message manager is disposed`));let n=this.iframeWindow;if(!n||typeof window>`u`)return Promise.reject(Error(`WaaP iframe is not mounted`));let r=V(n),i=w(n);return r.ready&&(!i||r.navigationGeneration===i.generation)?Promise.resolve():(r.ready&&H(n,Error(`WaaP iframe navigation changed; readiness must be re-established`)),r.promise?r.promise:(r.lastError=null,r.readyPingStartedAt=null,r.readyAt=null,r.readyAttempts=0,r.visualReadySupported=null,r.promise=new Promise((i,a)=>{r.reject=a,te(n,3e4).then(i=>{if(this.disposed||this.iframeWindow!==n)throw Error(`Wallet message manager is disposed`);return new Promise((a,o)=>{let s=o=>{if(o.origin===this.walletOrigin&&o.source===n&&o.data?.target===`silk`&&o.data.messageType===t.notification&&o.data.data===e.ready){r.ready=!0,r.navigationGeneration=w(n)?.generation??i?.generation??null,r.readyAt=Te(),r.visualReadySupported=o.data?.capabilities?.visualReady===1;let e=k();e?.contentWindow===n&&j(e,r.visualReadySupported),p(),a()}},c=()=>{try{r.readyAttempts+=1,this.postReadyNotification()}catch(e){p(),o(e)}};r.readyPingStartedAt=Te();let l=250,u,d=()=>{u=window.setTimeout(()=>{c(),l=Math.min(l*2,1e3),d()},l)},f=window.setTimeout(()=>{p(),o(Error(`WaaP wallet ready handshake timed out after 10s.`))},1e4),p=()=>{u!==void 0&&window.clearTimeout(u),window.clearTimeout(f),window.removeEventListener(`message`,s),r.cleanup===p&&(r.cleanup=null,r.reject=null)};r.cleanup=p,r.reject=o,window.addEventListener(`message`,s),c(),d()})}).then(i,a)}),r.promise=r.promise.finally(()=>{r.ready||(r.lastError=r.lastError??`Wallet readiness failed`,r.promise=null)}),r.promise.catch(e=>{r.lastError=e instanceof Error?e.message:String(e)}),r.promise))}async postSilkRequest(e){if(!this.iframeWindow)throw Error(`WaaP iframe is not mounted`);let{silkOptions:n,...r}=e,i={...r,target:`silk`,messageType:t.request,...n&&{silkOptions:n}},a=await be(i);return this.iframeWindow.postMessage({...i,id:a},this.walletOrigin),a}addListener(e){if(this.disposed)throw Error(`Wallet message manager is disposed`);ke();let t={manager:this,config:e};L.add(t);let n=()=>{this.unregisterListeners.delete(n)&&(L.delete(t),Ae())};return this.unregisterListeners.add(n),n}dispose(){this.disposed||(this.disposed=!0,this.iframeWindow&&H(this.iframeWindow,Error(`Wallet message manager was disposed`)),Array.from(this.unregisterListeners).forEach(e=>e()),this.terminalResponseDeduper.clear(),this.unsubscribeIframeNavigation?.(),this.unsubscribeIframeNavigation=null,this.iframeWindow=null)}};const U=`waap-wallet-iframe-loading`,W=new Set,G=()=>typeof performance<`u`?performance.now():Date.now(),K=e=>{W.forEach(t=>{try{t(e)}catch{}})},Me=e=>(W.add(e),()=>W.delete(e));var Ne=class{constructor(e){this.pendingRevision=null,this.phase=`idle`,this.requestedAt=null,this.visibleAt=null,this.usedVisualFallback=!1,this.onVisualReady=e=>{let t=e.detail?.revision;this.pendingRevision!==null&&typeof t==`number`&&t>=this.pendingRevision&&this.revealIframe(!1)},this.iframe=e,e.addEventListener(T,this.onVisualReady)}show({layout:e=`signing`}={}){if(this.phase===`pending`||this.phase===`visible`)return;let t=O();if(!t)return;this.clearFallbackTimer();let n=this.moveToCurrentMode(t);n===`modal`&&e===`signing`?(t.dataset.waapSizeLocked=`true`,t.style.width=`380px`,t.style.height=`600px`):n===`modal`&&delete t.dataset.waapSizeLocked,this.pendingRevision=A(this.iframe)+1,this.phase=`pending`,this.requestedAt=G(),this.visibleAt=null,this.usedVisualFallback=!1,K({phase:`modal_requested`,at:this.requestedAt,visualRevision:this.pendingRevision}),this.hideIframeUntilPaint(t),n===`modal`?this.showModalSurface():t.style.display=`flex`;let r=oe(this.iframe);if(r===!1){this.revealIframe(!0);return}this.fallbackTimer=window.setTimeout(()=>{this.revealIframe(!0)},r===!0?3e3:750)}hide(){let e=this.pendingRevision!==null;this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`hidden`;let t=G();e&&K({phase:`modal_cancelled`,at:t,visualRevision:A(this.iframe)}),K({phase:`modal_hidden`,at:t,visualRevision:A(this.iframe)});let n=O();if(n&&delete n.dataset.waapSizeLocked,f()){n&&(n.style.display=`none`);return}let r=D();r&&(r.style.opacity=`0`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`)}dispose(){this.clearFallbackTimer(),this.iframe.removeEventListener(T,this.onVisualReady)}isFor(e){return this.iframe===e}getDiagnostics(){return{modalPhase:this.phase,modalRequestedAt:this.requestedAt,modalVisibleAt:this.visibleAt,usedVisualFallback:this.usedVisualFallback}}moveToCurrentMode(e){if(f()){let t=p();return t&&e.parentElement!==t&&t.appendChild(e),`component`}let t=D();return t||(t=pe(),document.body.appendChild(t)),e.parentElement!==t&&t.appendChild(e),`modal`}showModalSurface(){let e=D();e&&(e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`)}hideIframeUntilPaint(e){e.style.display=`flex`,e.style.visibility=`visible`,e.style.opacity=`1`,e.style.pointerEvents=`auto`,this.iframe.style.visibility=`hidden`,this.iframe.style.opacity=`0`,this.iframe.style.pointerEvents=`none`,this.ensureLoadingIndicator(e).style.display=`flex`}revealIframe(e){if(this.pendingRevision===null)return;let t=A(this.iframe);this.pendingRevision=null,this.clearFallbackTimer(),this.phase=`visible`,this.visibleAt=G(),this.usedVisualFallback=e,K({phase:`modal_visible`,at:this.visibleAt,visualRevision:t,fallback:e});let n=O();if(!n)return;delete n.dataset.waapSizeLocked;let r=n.querySelector(`#${U}`);r&&(r.style.display=`none`),this.iframe.style.visibility=`visible`,this.iframe.style.opacity=`1`,this.iframe.style.pointerEvents=`auto`,n.style.visibility=`visible`,n.style.opacity=`1`,n.style.pointerEvents=`auto`}ensureLoadingIndicator(e){let t=e.querySelector(`#${U}`);if(t)return this.applyLoadingTheme(t),t;t=document.createElement(`div`),t.id=U,t.setAttribute(`role`,`status`),t.setAttribute(`aria-live`,`polite`),t.setAttribute(`aria-label`,`Loading WaaP wallet`),t.style.position=`absolute`,t.style.inset=`0`,t.style.zIndex=`1`,t.style.display=`none`,t.style.flexDirection=`column`,t.style.borderRadius=`24px`,t.style.fontFamily=`system-ui, sans-serif`,t.style.fontSize=`14px`,t.style.pointerEvents=`none`;let n=document.createElement(`div`);n.style.boxSizing=`border-box`,n.style.display=`flex`,n.style.flexDirection=`column`,n.style.width=`100%`,n.style.height=`100%`,n.style.padding=`24px`;let r=document.createElement(`img`),i=this.iframe.dataset.waapOrigin;i&&(r.src=`${i}/assets/svg/waaplogo.svg`),r.alt=`WaaP`,r.width=66,r.height=25,r.style.alignSelf=`center`,r.style.width=`66px`,r.style.height=`25px`,r.style.marginBottom=`20px`,r.dataset.waapLoadingLogo=`true`;let a=(e,t,n,r)=>{let i=document.createElement(`div`);return i.setAttribute(`aria-hidden`,`true`),i.dataset.waapLoadingPart=e,i.style.width=t,i.style.height=n,i.style.flexShrink=`0`,i.style.borderRadius=r,i.style.backgroundSize=`200% 100%`,i.style.animation=`waap-loading-shimmer 2.4s ease-in-out infinite`,i},o=a(`request-title`,`156px`,`16px`,`999px`);o.style.marginTop=`34px`;let s=a(`request-body`,`100%`,`220px`,`12px`);s.style.flex=`1`,s.style.marginTop=`18px`,s.style.opacity=`.58`;let c=document.createElement(`div`);return c.dataset.waapLoadingPart=`actions`,c.setAttribute(`aria-hidden`,`true`),c.style.display=`flex`,c.style.gap=`10px`,c.append(a(`cancel-action`,`calc(50% - 5px)`,`48px`,`12px`),a(`confirm-action`,`calc(50% - 5px)`,`48px`,`12px`)),n.append(r,o,s,c),t.appendChild(n),e.appendChild(t),this.applyLoadingTheme(t),t}applyLoadingTheme(e){let t=this.iframe.dataset.waapTheme===`dark`;e.dataset.waapTheme=t?`dark`:`light`,e.style.background=t?`#121212`:`#ffffff`,e.style.color=t?`#e6e6e6`:`#000000`;let n=e.querySelector(`[data-waap-loading-logo]`);n&&(n.style.filter=t?`invert(1)`:`none`);let r=t?`linear-gradient(90deg, rgba(255,255,255,.07), rgba(255,255,255,.14), rgba(255,255,255,.07))`:`linear-gradient(90deg, rgba(0,0,0,.05), rgba(0,0,0,.1), rgba(0,0,0,.05))`;e.querySelectorAll(`[data-waap-loading-part]`).forEach(e=>{e.style.background=r})}clearFallbackTimer(){this.fallbackTimer!==void 0&&(window.clearTimeout(this.fallbackTimer),this.fallbackTimer=void 0)}};let q;const Pe=()=>{let e=k();return e?(q&&!q.isFor(e)&&(q.dispose(),q=void 0),q??=new Ne(e),q):null},J=e=>{Pe()?.show(e)},Y=()=>{Pe()?.hide()},Fe=()=>{q?.dispose(),q=void 0},Ie=()=>{let e=k(),t=e?.contentWindow?w(e.contentWindow):null,n=q?.getDiagnostics(),r=Number(e?.dataset.waapVisualReadyAt??``);return{walletOrigin:e?.dataset.waapOrigin??null,iframeNavigationStartedAt:t?.navigationStartedAt??null,iframeLoadedAt:t?.loadedAt??null,visualRevision:A(e),visualReadyAt:Number.isFinite(r)?r:null,modalPhase:n?.modalPhase??`idle`,modalRequestedAt:n?.modalRequestedAt??null,modalVisibleAt:n?.modalVisibleAt??null,usedVisualFallback:n?.usedVisualFallback??!1,handshake:De()}},Le=new Set([r.eth_sendTransaction,r.eth_signTransaction,r.personal_sign,r.eth_signTypedData_v4]),Re=e=>Le.has(e);function ze(e){return new Promise((t,n)=>{let r,i=!1,a=()=>{r!==void 0&&clearTimeout(r),e.eventEmitter.removeListener(e.id,o),e.signal?.removeEventListener(`abort`,c)},o=e=>{i||(i=!0,a(),t(e))},s=t=>{i||(i=!0,a(),e.onCancel?.(),n(Error(t)))},c=()=>s(`WaaP request cancelled: ${e.method}`);if(e.signal?.aborted){c();return}e.interactionRequired||(r=setTimeout(()=>{s(`WaaP request timed out: ${e.method}`)},e.timeoutMs??3e4)),e.eventEmitter.once(e.id,o),e.signal?.addEventListener(`abort`,c,{once:!0})})}async function X(e,t,r,i,a){let o=e.method,s=e.params,{timeoutMs:c,signal:l,...u}=a??{};t&&J({layout:o===n.login?`auth`:`signing`});let d;try{d=await r.postSilkRequest({method:o,params:s,interactionRequired:t,silkOptions:a?u:void 0});let e=await ze({eventEmitter:i,id:d,method:o,interactionRequired:t,timeoutMs:c,signal:l,onCancel:()=>{r.cancelSilkRequest(d,o),t&&Y()}});if(t&&Y(),e.error)throw e.error;return e.data}catch(e){throw t&&d===void 0&&Y(),e}}const Z=(e,t={})=>{if(typeof window>`u`)return()=>void 0;let n=!1,r,i,a=window,o=()=>{n||e.preload().catch(e=>t.onError?.(e))};return typeof a.requestIdleCallback==`function`?r=a.requestIdleCallback(o,{timeout:t.timeoutMs??2e3}):i=window.setTimeout(o,0),()=>{n=!0,r!==void 0&&a.cancelIdleCallback?.(r),i!==void 0&&window.clearTimeout(i)}};var Be=function(e){return e.show_modal=`show_modal`,e.hide_modal=`hide_modal`,e}(Be||{}),Ve=class extends a{constructor(){super()}};function He(e){return!(!e?.isMetaMask||e.isApexWallet||e.isAvalanche||e.isBitKeep||e.isBlockWallet||e.isMathWallet||e.isOkxWallet||e.isOKExWallet||e.isOneInchIOSWallet||e.isOneInchAndroidWallet||e.isOpera||e.isPortal||e.isRabby||e.isDefiant||e.isTokenPocket||e.isTokenary||e.isZerion)}function Ue(e){try{if(!e||!Array.isArray(e))return!1;let t=JSON.parse(typeof e[1]==`string`?e[1]:JSON.stringify(e[1]));return t.primaryType===`SafeTx`&&t.domain?.verifyingContract!==void 0&&t.message&&`to`in t.message&&`value`in t.message&&`safeTxGas`in t.message&&`baseGas`in t.message&&`gasPrice`in t.message&&`nonce`in t.message}catch{return!1}}const We={styles:{darkMode:!1}},Q=[`waap`,`human`,`injected`,`walletconnect`],Ge=[r.eth_sendTransaction,r.eth_signTransaction,r.eth_signTypedData_v4,r.personal_sign];function Ke(e){if(e==null)return null;if(typeof e==`string`){if(Q.includes(e))return e;throw Error(`[EthereumProvider] Unexpected login method: "${e}". Expected one of: ${Q.join(`, `)}`)}if(typeof e==`object`&&`loginMethod`in e&&typeof e.loginMethod==`string`){let t=e.loginMethod;if(console.warn(`[EthereumProvider] Received object login response. Normalizing "${t}" to string. This is unexpected for the web SDK.`),Q.includes(t))return t;throw Error(`[EthereumProvider] Unknown loginMethod in object: "${t}". Expected one of: ${Q.join(`, `)}`)}throw Error(`[EthereumProvider] Unexpected login response: ${JSON.stringify(e)} (type: ${typeof e})`)}var qe=class extends a{constructor(e,t,r,i,o,s=!1,c=!1,l,u=[`evm`],d){super(),this.lastKnownConversion=`pending`,this.isSilk=!0,this.isWaaP=!0,this.connected=!1,this.currentAccount=null,this.accountMode=`tap`,this.walletConnectProvider=null,this.asyncTxs=!1,this.legacyAsyncSigning=!1,this.internalEventEmitter=new a,this.iframeMounted=!0,this.initializerPromise=null,this.sessionProbe=null,this.initializedIframeWindow=null,this.asyncTxs=s,this.legacyAsyncSigning=c,this.ensureIframe=l,this.iframeMounted=!l,this.referralCode=t,this.project=i,this.customConfig=r,this.initializerChains=u,this.sessionProtection=d,this.uiMessageManager=new Ve,this.walletMessageManager=new je(e,o),this.config={...We,...r||{}},this.persistedMethods={login:this.login.bind(this),logout:this.logout.bind(this),getLoginMethod:this.getLoginMethod.bind(this),walletMessageManager:this.walletMessageManager,internalEventEmitter:this.internalEventEmitter,uiMessageManager:this.uiMessageManager,portal:this.portal.bind(this),requestEmail:this.requestEmail.bind(this),requestSBT:this.requestSBT.bind(this),requestPermissionToken:this.requestPermissionToken.bind(this),orcid:this.orcid.bind(this),enable:this.enable.bind(this),isConnected:this.isConnected.bind(this),toggleDarkMode:this.toggleDarkMode.bind(this),destroy:this.destroy.bind(this),silkRequest:this.request.bind(this),waaPRequest:this.request.bind(this)},this.walletMessageManager.addListener({onReceiveConnectNotif:()=>{this.connected=!0,this.emit(`connect`)},handleResponse:e=>this.internalEventEmitter.emit(e.id,e),handleRequest:e=>{e.method===n.show_modal?this.uiMessageManager.emit(`show_modal`):e.method===n.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:e=>{this.currentAccount!==e&&(this.currentAccount=e,this.emit(`accountsChanged`,e?[e]:[]))},onAsyncTxNotification:e=>{this.emit(e.type,e.payload)},onSquidLifecycleNotification:e=>{this.emit(e.type,e.payload)}})}async initializeWalletConnect(){try{this.walletConnectProvider=await i.getInstance()}catch(e){console.error(`Failed to initialize WalletConnect provider:`,e),this.walletConnectProvider=null}}async initializeIframeContext(){let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=Se(e,async()=>{await this.walletMessageManager.pingIframe(),await X({method:n.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)});try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async reassertIframeAccountMode(){this.ensureIframeMounted(),await this.walletMessageManager.pingIframe(),await X({method:n.set_signing_mode,params:[I(this.accountMode,{referralCode:this.referralCode,project:this.project,config:this.customConfig,chains:this.initializerChains,sessionProtection:this.sessionProtection})]},!1,this.walletMessageManager,this.internalEventEmitter)}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();e&&(this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e))}async ensureInitialized(){this.ensureIframeMounted(),await this.initializeIframeContext()}async preload(){await this.ensureInitialized()}async enable(){return this.request({method:`eth_requestAccounts`})}isConnected(){return this.connected}getAccountStatus(){let e=this.getLoginMethod();return{authenticated:e!==null,loginMethod:e,activeMode:e?this.accountMode:null,mode:this.accountMode,conversion:e?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this.currentAccount?{evm:this.currentAccount}:{}}}get session(){return{login:e=>this.login(e),logout:async()=>{await this.logout()},getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let e=await X({method:n.waap_getAccountStatus,params:[]},!1,this.walletMessageManager,this.internalEventEmitter);return e?.conversion&&(this.lastKnownConversion=e.conversion),e}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async request(e){if(!Object.keys(r).includes(e.method))return Promise.reject({error:`Not implemented (${e.method})`});let t=await this.attemptAutoConnect(e.method);if(t!==null)return t;if(Ge.includes(e.method)&&!(this.getLoginMethod()!==null||await this.restorePersistedWaaPSession()!==null))return Promise.reject(new o(`not_authenticated`,`Not authenticated: call login() before signing.`,{operation:{chain:`evm`,method:e.method}}));if(Ue(e.params)&&e.method!==r.eth_signTypedData_v4)return Promise.reject({error:`Safe transactions must be signed using eth_signTypedData_v4`});await this.ensureInitialized();let n=(e.method===r.eth_sendTransaction||e.method===r.eth_signTransaction||e.method===r.eth_signTypedData_v4||e.method===r.personal_sign)&&this.asyncTxs||e.async,i=n||e.withPT||e.timeoutMs!==void 0||e.signal?this.legacyAsyncSigning?{asyncSigning:n||void 0,withPT:e.withPT,timeoutMs:e.timeoutMs,signal:e.signal}:{async:n,withPT:e.withPT,timeoutMs:e.timeoutMs,signal:e.signal}:void 0,a=await X(e,Re(e.method),this.walletMessageManager,this.internalEventEmitter,i);if((e.method===r.wallet_switchEthereumChain||e.method===r.wallet_addEthereumChain)&&a===null){this.emit(`chainChanged`,e.params?.[0]?.chainId);try{let t=await this.request({method:`eth_accounts`});t&&t.length>0&&(this.currentAccount=t[0],this.emit(`accountsChanged`,t),this.emit(`connect`,{chainId:e.params?.[0]?.chainId}))}catch(t){console.warn(`[EthereumProvider] Failed to get accounts after chain switch:`,t),this.currentAccount&&(this.emit(`accountsChanged`,[this.currentAccount]),this.emit(`connect`,{chainId:e.params?.[0]?.chainId}))}}return e.method===r.eth_requestAccounts&&Array.isArray(a)&&typeof a[0]==`string`&&(this.currentAccount=a[0],this.connected=!0,typeof window<`u`&&typeof localStorage<`u`&&localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.emit(`accountsChanged`,a),this.emit(`connect`)),a}async login(e){if(typeof window>`u`||typeof document>`u`)return null;let t=e&&!(`request`in e)?e:void 0,r=t?t.customProvider:e;if(await this.ensureInitialized(),!t?.force&&await this.restorePersistedWaaPSession())return this.getLoginMethod()??`waap`;let a=r||window.ethereum,o=a&&He(a)?`MetaMask`:`Browser Wallet`,s=Ke(await X({method:n.login,params:[o]},!0,this.walletMessageManager,this.internalEventEmitter));if(s===null)return null;switch(s){case`waap`:case`human`:localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP();break;case`injected`:a&&(localStorage.setItem(`${window.location.origin}-connected`,`injected`),this.setupInjectedWallet(a));break;case`walletconnect`:{localStorage.setItem(`${window.location.origin}-connected`,`walletconnect`),this.walletConnectProvider||await this.initializeWalletConnect(),i.isConnected()||(await this.walletConnectProvider.open({view:`Connect`}),await i.listenToAccountChangeEvent());let e=i.getWalletProvider();this.setupWalletConnect(e);break}}return s}async logout(){await this.ensureInitialized(),this.cleanupInvalidLoginState(),this.lastKnownConversion=`pending`,this.currentAccount=null,this.connected=!1,this.emit(`accountsChanged`,[]),this.emit(`disconnect`);try{this.walletConnectProvider&&await this.walletConnectProvider.disconnect()}catch(e){console.error(`Error disconnecting from WalletConnect:`,e)}return X({method:n.logout},!1,this.walletMessageManager,this.internalEventEmitter)}destroy(){if(this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.removeAllListeners(),this.connected=!1,this.walletConnectProvider&&=(this.walletConnectProvider.disconnect().catch(()=>void 0),null),typeof window<`u`){let e=window;(e.silk===this||e.silk?.walletMessageManager===this.walletMessageManager)&&delete e.silk,(e.waap===this||e.waap?.walletMessageManager===this.walletMessageManager)&&delete e.waap}N()}cleanupInvalidLoginState(){try{localStorage.removeItem(`${window.location.origin}-connected`)}catch(e){console.warn(`Could not clean up login state:`,e)}}setupWaaP(){let e={...this.persistedMethods,isWaaP:!0,on:this.on.bind(this),removeListener:this.removeListener.bind(this),request:this.request.bind(this)};window.silk=e,window.waap=e}setupInjectedWallet(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:e.connected??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!0,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectInjected(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:e.isConnected?.()??!1,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}setupAutoConnectWalletConnect(e){let t={...this.persistedMethods,...e,isSilk:!1,connected:!0,on:e.on?.bind(e)??(()=>{}),removeListener:e.removeListener?.bind(e)??(()=>{}),request:e.request.bind(e)};window.silk=t,window.waap=t}async attemptAutoConnect(e){if(e!==`eth_requestAccounts`&&e!==`eth_accounts`)return null;let t=this.getLoginMethod();if(t===`waap`||t===`human`){let e=await this.restorePersistedWaaPSession();if(e)return e}if(t===`injected`&&window.ethereum)try{return this.setupAutoConnectInjected(window.ethereum),window.ethereum.request({method:`eth_requestAccounts`})}catch(e){return console.warn(`Injected wallet auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}else if(t===`walletconnect`)try{if(this.walletConnectProvider||=await i.getInstance(),await i.waitForReadyAndCheckConnection()){let e=i.getWalletProvider();return this.setupAutoConnectWalletConnect(e),e.request({method:`eth_requestAccounts`})}else return this.cleanupInvalidLoginState(),null}catch(e){return console.warn(`WalletConnect auto-connect failed:`,e),this.cleanupInvalidLoginState(),null}return null}restorePersistedWaaPSession(){return this.sessionProbe??=this.probeWaaPSession().finally(()=>{this.sessionProbe=null}),this.sessionProbe}async probeWaaPSession(){try{if(await this.ensureInitialized(),!(await this.getCanonicalAccountStatus()).authenticated)return this.cleanupInvalidLoginState(),null;let e=await X({method:n.auto_conn,params:[window.location.origin]},!1,this.walletMessageManager,this.internalEventEmitter);if(Array.isArray(e)&&e.length>0)return this.currentAccount=e[0],this.connected=!0,localStorage.setItem(`${window.location.origin}-connected`,`waap`),this.setupWaaP(),e}catch(e){console.warn(`WaaP session probe failed:`,e)}return this.cleanupInvalidLoginState(),null}getLoginMethod(){if(typeof window>`u`||typeof localStorage>`u`)return null;try{let e=localStorage.getItem(`${window.location.origin}-connected`);if(!e)return null;if(![`waap`,`human`,`injected`,`walletconnect`].includes(e))return this.cleanupInvalidLoginState(),null;switch(e){case`injected`:return window.ethereum?`injected`:(this.cleanupInvalidLoginState(),null);case`walletconnect`:try{return i.isConnected()?`walletconnect`:(this.cleanupInvalidLoginState(),null)}catch{return this.cleanupInvalidLoginState(),null}case`waap`:return`waap`;case`human`:return`human`;default:return this.cleanupInvalidLoginState(),null}}catch(e){return console.warn(`Error checking login method:`,e),this.cleanupInvalidLoginState(),null}}async toggleDarkMode(){this.config.styles.darkMode=!this.config.styles.darkMode,await this.ensureInitialized();try{await X({method:n.set_custom_config,params:[this.config]},!1,this.walletMessageManager,this.internalEventEmitter)}catch(e){console.error(`Error setting custom config in Silk iframe:`,e)}}async safe(){await this.ensureInitialized(),await X({method:n.safe},!0,this.walletMessageManager,this.internalEventEmitter)}async orcid(){await this.ensureInitialized(),await X({method:n.orcid},!0,this.walletMessageManager,this.internalEventEmitter)}async portal(e,t,r){await this.ensureInitialized();let i;switch(t){case`get`:i=e===`gastank`?n.gastank_get_settings:n.customization_get;break;case`update`:i=e===`gastank`?n.gastank_update_settings:n.customization_update;break;case`topup`:i=n.gastank_topup;break;case`init`:i=n.project_init;break}let a=t!==`get`&&e!==`customization`;return X({method:i,params:[r,window.location.origin]},a,this.walletMessageManager,this.internalEventEmitter)}async requestEmail(){return await this.ensureInitialized(),X({method:n.silk_requestEmail},!0,this.walletMessageManager,this.internalEventEmitter)}async requestPermissionToken(e){return await this.ensureInitialized(),X({method:n.waap_requestPermissionToken,params:[e]},!0,this.walletMessageManager,this.internalEventEmitter)}async getPermissionTokenStatus(e){return await this.ensureInitialized(),await X({method:n.waap_getPermissionTokenStatus,params:[e]},!1,this.walletMessageManager,this.internalEventEmitter)}async clearPermissionToken(e){return await this.ensureInitialized(),await X({method:n.waap_clearPermissionToken,params:[e]},!1,this.walletMessageManager,this.internalEventEmitter)}async requestSBT(e){return await this.ensureInitialized(),X({method:n.silk_requestSbt,params:[e]},!0,this.walletMessageManager,this.internalEventEmitter)}};const $=(e,t,n=!0,r=[`evm`],a=!0)=>{let{referralCode:o,config:s,project:c,asyncTxs:l,asyncSigning:u,deferIframe:d,sessionProtection:f}=e,p=v(e),m=!!u&&!l;e.walletConnectProjectId&&i.setProjectId(e.walletConnectProjectId),u&&!l&&console.warn("[WaaP SDK] `asyncSigning` is deprecated. Use `asyncTxs` instead.");let h=typeof window>`u`||typeof document>`u`,g=()=>typeof window>`u`||typeof document>`u`?null:(M(e),ce(t).contentWindow),_=d===!1&&!h,y=d===void 0&&!h,b=_?g():null;if(_&&!b)throw Error(`WaaP iframe does not exist on page`);let x=new qe(b,o,s||{},c||{},p,l||u||!1,m,_?void 0:g,r,f);if(x.setAccountMode(t),!h&&n&&_&&x.initializeIframeContext().catch(()=>void 0),x.uiMessageManager.on(`show_modal`,()=>{J()}),x.uiMessageManager.on(`hide_modal`,()=>{Y()}),!h&&a&&(window.silk=x,window.waap=x),n&&y){let e=Z(x),t=x.destroy.bind(x);x.destroy=()=>{e(),t()}}return x},Je=(e={})=>$(e,`tap`);export{d as C,_ as S,s as T,Se as _,Ve as a,N as b,X as c,Ie as d,Y as f,I as g,je as h,We as i,Re as l,Me as m,$ as n,Be as o,J as p,qe as r,Z as s,Je as t,ze as u,ce as v,o as w,v as x,M as y};
package/dist/evm.d.mts ADDED
@@ -0,0 +1,7 @@
1
+ import { M as WaaPSessionProtection, _ as validateWalletOrigin, a as PermissionTokenQuery, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, f as WaaPLoginOptions, g as resolveWalletOrigin, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, l as SilkProvider, m as WaaPEnvironment, n as InitSilkOptions, o as PermissionTokenStatus, u as WaaPAccountMode } from "./types-DexmJNke.mjs";
2
+ import { a as CancelWaaPPreload, c as preloadWaaPOnIdle, d as WaaPIframeLifecyclePhase, f as getWaaPIframeDiagnostics, i as normalizeWaaPError, l as WaaPIframeDiagnostics, n as WaaPErrorCode, o as WaaPIdlePreloadOptions, p as subscribeWaaPIframeLifecycle, r as WaaPOperationMetadata, s as WaaPPreloadTarget, t as WaaPError, u as WaaPIframeLifecycleEvent } from "./WaaPError-C5nPcaKk.mjs";
3
+ //#region src/ui/evm.d.ts
4
+ /** Initialize the TAP t1 EVM EIP-1193 provider. */
5
+ declare const initWaaP: (params?: InitSilkOptions) => SilkEthereumProviderInterface;
6
+ //#endregion
7
+ export { type CancelWaaPPreload, type InitSilkOptions, type PermissionTokenClearResult, type PermissionTokenQuery, type PermissionTokenStatus, type SilkEthereumProviderInterface, type SilkProvider, type WaaPAccountMode, type WaaPAccountStatus, type WaaPEnvironment, WaaPError, type WaaPErrorCode, type WaaPIdlePreloadOptions, type WaaPIframeDiagnostics, type WaaPIframeLifecycleEvent, type WaaPIframeLifecyclePhase, type WaaPLoginOptions, type WaaPOperationMetadata, type WaaPPreloadTarget, type WaaPSessionProtection, type WaaPWalletTargetOptions, getWaaPIframeDiagnostics, initWaaP, normalizeWaaPError, preloadWaaPOnIdle, resolveWalletOrigin, subscribeWaaPIframeLifecycle, validateWalletOrigin };
package/dist/evm.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { M as WaaPSessionProtection, _ as validateWalletOrigin, a as PermissionTokenQuery, c as SilkEthereumProviderInterface, d as WaaPAccountStatus, f as WaaPLoginOptions, g as resolveWalletOrigin, h as WaaPWalletTargetOptions, i as PermissionTokenClearResult, l as SilkProvider, m as WaaPEnvironment, n as InitSilkOptions, o as PermissionTokenStatus, u as WaaPAccountMode } from "./types-DexmJNke.js";
2
+ import { a as CancelWaaPPreload, c as preloadWaaPOnIdle, d as WaaPIframeLifecyclePhase, f as getWaaPIframeDiagnostics, i as normalizeWaaPError, l as WaaPIframeDiagnostics, n as WaaPErrorCode, o as WaaPIdlePreloadOptions, p as subscribeWaaPIframeLifecycle, r as WaaPOperationMetadata, s as WaaPPreloadTarget, t as WaaPError, u as WaaPIframeLifecycleEvent } from "./WaaPError-XLgIXUgh.js";
3
+ //#region src/ui/evm.d.ts
4
+ /** Initialize the TAP t1 EVM EIP-1193 provider. */
5
+ declare const initWaaP: (params?: InitSilkOptions) => SilkEthereumProviderInterface;
6
+ //#endregion
7
+ export { type CancelWaaPPreload, type InitSilkOptions, type PermissionTokenClearResult, type PermissionTokenQuery, type PermissionTokenStatus, type SilkEthereumProviderInterface, type SilkProvider, type WaaPAccountMode, type WaaPAccountStatus, type WaaPEnvironment, WaaPError, type WaaPErrorCode, type WaaPIdlePreloadOptions, type WaaPIframeDiagnostics, type WaaPIframeLifecycleEvent, type WaaPIframeLifecyclePhase, type WaaPLoginOptions, type WaaPOperationMetadata, type WaaPPreloadTarget, type WaaPSessionProtection, type WaaPWalletTargetOptions, getWaaPIframeDiagnostics, initWaaP, normalizeWaaPError, preloadWaaPOnIdle, resolveWalletOrigin, subscribeWaaPIframeLifecycle, validateWalletOrigin };
package/dist/evm.js ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./evm-Ch-aWWat.js");exports.WaaPError=e.w,exports.getWaaPIframeDiagnostics=e.d,exports.initWaaP=e.t,exports.normalizeWaaPError=e.T,exports.preloadWaaPOnIdle=e.s,exports.resolveWalletOrigin=e.x,exports.subscribeWaaPIframeLifecycle=e.m,exports.validateWalletOrigin=e.S;
package/dist/evm.mjs ADDED
@@ -0,0 +1 @@
1
+ import{S as e,T as t,d as n,m as r,s as i,t as a,w as o,x as s}from"./evm-DHVrAmEw.mjs";export{o as WaaPError,n as getWaaPIframeDiagnostics,a as initWaaP,t as normalizeWaaPError,i as preloadWaaPOnIdle,s as resolveWalletOrigin,r as subscribeWaaPIframeLifecycle,e as validateWalletOrigin};