@human.tech/waap-sdk 2.3.0 → 2.4.0

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 (68) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/SolanaProvider-CxJX9Dzo.js +1 -0
  3. package/dist/SolanaProvider-CygEwKg1.mjs +1 -0
  4. package/dist/WaaPError-BuwfZjBk.d.mts +52 -0
  5. package/dist/WaaPError-BuwfZjBk.d.ts +52 -0
  6. package/dist/{WaaPError-CMOAWUlN.d.ts → WalletModalController-Qh9LNwW5.d.ts} +17 -55
  7. package/dist/{WaaPError-BjukImOz.d.mts → WalletModalController-wIHBGOVd.d.mts} +17 -55
  8. package/dist/bridge.d.mts +158 -0
  9. package/dist/bridge.d.ts +158 -0
  10. package/dist/bridge.js +1 -0
  11. package/dist/bridge.mjs +1 -0
  12. package/dist/evm-64xq-c4L.js +2 -0
  13. package/dist/evm-ChOfSh-X.mjs +2 -0
  14. package/dist/evm.d.mts +3 -2
  15. package/dist/evm.d.ts +3 -2
  16. package/dist/evm.js +1 -1
  17. package/dist/evm.mjs +1 -1
  18. package/dist/{index-DOIss_GK.d.ts → index-DNyKwJcJ.d.ts} +3 -184
  19. package/dist/{index-C0mLQs_a.d.mts → index-XdQjHMzI.d.mts} +3 -184
  20. package/dist/index.d.mts +30 -7
  21. package/dist/index.d.ts +30 -7
  22. package/dist/index.js +2 -2
  23. package/dist/index.mjs +2 -2
  24. package/dist/{initializerContext-_YjbVTiL.d.mts → initializerContext-DB5E2A6s.d.mts} +1 -1
  25. package/dist/{initializerContext-DIrqEE6B.d.ts → initializerContext-Z7JeZRsm.d.ts} +1 -1
  26. package/dist/react.d.mts +1 -1
  27. package/dist/react.d.ts +1 -1
  28. package/dist/react.js +1 -1
  29. package/dist/react.mjs +1 -1
  30. package/dist/register-BAygaKgr.mjs +1 -0
  31. package/dist/{register-9bEe9ATz.d.mts → register-BhybMFR2.d.mts} +3 -3
  32. package/dist/{register-PWKDsSRv.d.ts → register-CMv6n7ak.d.ts} +3 -3
  33. package/dist/register-CdSpQr2m.js +1 -0
  34. package/dist/register-CoFt8w20.mjs +1 -0
  35. package/dist/register-DEFLr1aE.js +1 -0
  36. package/dist/{register-Mb1D_xW4.d.ts → register-DfUAOQke.d.mts} +3 -3
  37. package/dist/{register-XzDVa7r8.d.mts → register-MK9ivXiJ.d.ts} +3 -3
  38. package/dist/solana.d.mts +6 -4
  39. package/dist/solana.d.ts +6 -4
  40. package/dist/solana.js +1 -1
  41. package/dist/solana.mjs +1 -1
  42. package/dist/sui.d.mts +5 -4
  43. package/dist/sui.d.ts +5 -4
  44. package/dist/sui.js +1 -1
  45. package/dist/sui.mjs +1 -1
  46. package/dist/types-8CCmbLuY.d.ts +191 -0
  47. package/dist/types-Bfz205sD.d.mts +191 -0
  48. package/dist/{types-BmCqyQtu.d.mts → types-x7TOncUp.d.mts} +13 -1
  49. package/dist/{types-BmCqyQtu.d.ts → types-x7TOncUp.d.ts} +13 -1
  50. package/dist/ui-Bd49qoIs.js +1 -0
  51. package/dist/ui-CI7vln8d.mjs +1 -0
  52. package/dist/useWaapAuth-C9Cwu4XG.js +1 -0
  53. package/dist/{useWaapAuth-vJAk2n_I.d.mts → useWaapAuth-CMhYoBKA.d.mts} +2 -2
  54. package/dist/{useWaapAuth-DgYO5KxO.d.ts → useWaapAuth-CeJuu2wk.d.ts} +2 -2
  55. package/dist/useWaapAuth-Vh8gUs6Y.mjs +1 -0
  56. package/package.json +24 -3
  57. package/dist/esm-BUfmyWbN.mjs +0 -1
  58. package/dist/esm-DFwVZkjo.js +0 -1
  59. package/dist/evm-9r6LecIW.mjs +0 -2
  60. package/dist/evm-D_LHHo3z.js +0 -2
  61. package/dist/register-CEeLG7qz.mjs +0 -1
  62. package/dist/register-CodxV1XG.js +0 -1
  63. package/dist/register-DgN7qh23.js +0 -1
  64. package/dist/register-I8d7v41B.mjs +0 -1
  65. package/dist/ui-BjcwM6px.js +0 -1
  66. package/dist/ui-CrnBoTQL.mjs +0 -1
  67. package/dist/useWaapAuth-BPvve-_3.js +0 -1
  68. package/dist/useWaapAuth-BcmVGb-D.mjs +0 -1
@@ -0,0 +1,191 @@
1
+ import { E as RequestPermissionTokenResult, T as RequestPermissionTokenParams, a as PermissionTokenClearResult, f as WaaPAccountStatus, g as WaaPWalletTargetOptions, m as WaaPSessionExtension, o as PermissionTokenQuery, r as LoginResponse, s as PermissionTokenStatus, w as ProjectConfig, x as CustomConfig } from "./types-x7TOncUp.js";
2
+ //#region src/lib/solana/types.d.ts
3
+ /** A Solana cluster identifier (CAIP-2-ish, matching wallet-adapter usage). */
4
+ type SolanaChain = 'solana:mainnet' | 'solana:devnet' | 'solana:testnet' | 'solana:localnet';
5
+ /** A connected Solana account. */
6
+ interface SolanaAccount {
7
+ /** base58-encoded address. */
8
+ address: string;
9
+ /** Raw 32-byte ed25519 public key. */
10
+ publicKey: Uint8Array;
11
+ chains: readonly SolanaChain[];
12
+ features: readonly `${string}:${string}`[];
13
+ }
14
+ /** Public Wallet Standard features supported by the WaaP Solana wallet. */
15
+ type WaaPSolanaWalletFeatures = {
16
+ 'standard:connect': {
17
+ version: '1.0.0';
18
+ connect: (input?: {
19
+ silent?: boolean;
20
+ }) => Promise<SolanaConnectOutput>;
21
+ };
22
+ 'standard:disconnect': {
23
+ version: '1.0.0';
24
+ disconnect: () => Promise<void>;
25
+ };
26
+ 'standard:events': {
27
+ version: '1.0.0';
28
+ on: (event: 'change', listener: SolanaWalletEventListener) => () => void;
29
+ };
30
+ 'solana:signMessage': {
31
+ version: '1.1.0';
32
+ signMessage: (...inputs: readonly SolanaStandardSignMessageInput[]) => Promise<readonly SolanaStandardSignMessageOutput[]>;
33
+ };
34
+ 'solana:signTransaction': {
35
+ version: '1.0.0';
36
+ supportedTransactionVersions: readonly ('legacy' | 0)[];
37
+ signTransaction: (...inputs: readonly SolanaStandardSignTransactionInput[]) => Promise<readonly SolanaStandardSignTransactionOutput[]>;
38
+ };
39
+ 'solana:signAndSendTransaction': {
40
+ version: '1.0.0';
41
+ supportedTransactionVersions: readonly ('legacy' | 0)[];
42
+ signAndSendTransaction: (...inputs: readonly SolanaStandardSignAndSendTransactionInput[]) => Promise<readonly SolanaStandardSignAndSendTransactionOutput[]>;
43
+ };
44
+ };
45
+ /** Solana Wallet Standard's variadic message-signing input. */
46
+ interface SolanaStandardSignMessageInput {
47
+ account: SolanaAccount;
48
+ message: Uint8Array;
49
+ }
50
+ interface SolanaStandardSignMessageOutput {
51
+ signedMessage: Uint8Array;
52
+ signature: Uint8Array;
53
+ signatureType?: 'ed25519';
54
+ }
55
+ /** Solana Wallet Standard's serialized-transaction signing input. */
56
+ interface SolanaStandardSignTransactionInput {
57
+ account: SolanaAccount;
58
+ transaction: Uint8Array;
59
+ chain?: SolanaChain;
60
+ options?: {
61
+ preflightCommitment?: 'processed' | 'confirmed' | 'finalized';
62
+ minContextSlot?: number;
63
+ };
64
+ }
65
+ interface SolanaStandardSignTransactionOutput {
66
+ signedTransaction: Uint8Array;
67
+ }
68
+ interface SolanaStandardSignAndSendTransactionInput extends SolanaStandardSignTransactionInput {
69
+ chain: SolanaChain;
70
+ options?: SolanaStandardSignTransactionInput['options'] & {
71
+ commitment?: 'processed' | 'confirmed' | 'finalized';
72
+ skipPreflight?: boolean;
73
+ maxRetries?: number;
74
+ };
75
+ }
76
+ interface SolanaStandardSignAndSendTransactionOutput {
77
+ signature: Uint8Array;
78
+ }
79
+ interface SolanaConnectInput {
80
+ /** Silent (non-interactive) reconnect. */
81
+ silent?: boolean;
82
+ signal?: AbortSignal;
83
+ timeoutMs?: number;
84
+ }
85
+ interface SolanaConnectOutput {
86
+ accounts: readonly SolanaAccount[];
87
+ }
88
+ interface SolanaSignMessageInput {
89
+ message: Uint8Array;
90
+ account: SolanaAccount;
91
+ signal?: AbortSignal;
92
+ timeoutMs?: number;
93
+ }
94
+ interface SolanaSignMessageOutput {
95
+ /** The message that was signed. */
96
+ signedMessage: Uint8Array;
97
+ /** The 64-byte ed25519 signature. */
98
+ signature: Uint8Array;
99
+ }
100
+ interface SolanaSignTransactionInput {
101
+ /** A serialized VersionedTransaction (bytes) or a `@solana/web3.js` tx object. */
102
+ transaction: Uint8Array | {
103
+ serialize(): Uint8Array;
104
+ };
105
+ account: SolanaAccount;
106
+ chain?: SolanaChain;
107
+ signal?: AbortSignal;
108
+ timeoutMs?: number;
109
+ /** Use a matching permission token when the wallet has one. */
110
+ withPT?: boolean;
111
+ }
112
+ interface SolanaSignTransactionOutput {
113
+ /** The signed, serialized transaction bytes. */
114
+ signedTransaction: Uint8Array;
115
+ /** The 64-byte ed25519 signature. */
116
+ signature: Uint8Array;
117
+ }
118
+ interface SolanaSignAndSendTransactionInput extends SolanaSignTransactionInput {
119
+ options?: {
120
+ skipPreflight?: boolean;
121
+ maxRetries?: number;
122
+ };
123
+ }
124
+ interface SolanaSignAndSendTransactionOutput {
125
+ /** base58 transaction signature (the on-chain txid). */
126
+ signature: string;
127
+ }
128
+ type SolanaWalletEventListener = (properties: {
129
+ chains?: readonly SolanaChain[];
130
+ features?: WaaPSolanaWalletFeatures;
131
+ accounts?: readonly SolanaAccount[];
132
+ }) => void;
133
+ interface InitWaaPSolanaOptions extends WaaPWalletTargetOptions {
134
+ referralCode?: string;
135
+ project?: ProjectConfig;
136
+ config?: CustomConfig;
137
+ /**
138
+ * Defer iframe navigation until `preload()` or the first wallet operation.
139
+ * The default warms the iframe at browser idle; pass `false` to mount eagerly.
140
+ */
141
+ deferIframe?: boolean;
142
+ }
143
+ interface WaaPSolanaProviderInterface {
144
+ readonly name: string;
145
+ readonly version: string;
146
+ /** Wallet Standard icon data URI. */
147
+ readonly icon: `data:image/${'svg+xml' | 'webp' | 'png' | 'gif'};base64,${string}`;
148
+ readonly chains: readonly SolanaChain[];
149
+ readonly accounts: readonly SolanaAccount[];
150
+ /** Wallet Standard capabilities exposed by this Solana facade. */
151
+ readonly features: WaaPSolanaWalletFeatures;
152
+ /** Public-safe local connection status for this facade. */
153
+ getAccountStatus(): WaaPAccountStatus;
154
+ session: WaaPSessionExtension;
155
+ /** Open the WaaP login flow without connecting this chain facade. */
156
+ login(): Promise<LoginResponse>;
157
+ /** End the WaaP session without implying a chain disconnect is a logout. */
158
+ logout(): Promise<void>;
159
+ getLoginMethod(): LoginResponse;
160
+ /**
161
+ * Adopt the session the EVM facade established. Solana holds its own view of
162
+ * whether one exists, so a host that drives the facades itself has to say so
163
+ * -- declared here rather than reached for through a cast, which would make
164
+ * a rename silently report `notAuthenticated` after a good login.
165
+ */
166
+ setLoginMethod(loginMethod: LoginResponse): void;
167
+ connect(input?: SolanaConnectInput): Promise<SolanaConnectOutput>;
168
+ disconnect(): Promise<void>;
169
+ /** Release SDK message listeners owned by this Solana facade. */
170
+ destroy(): void;
171
+ /** Mount (if deferred) and complete the wallet handshake ahead of use. */
172
+ preload(): Promise<void>;
173
+ signMessage(input: SolanaSignMessageInput): Promise<SolanaSignMessageOutput>;
174
+ signTransaction(input: SolanaSignTransactionInput): Promise<SolanaSignTransactionOutput>;
175
+ signAndSendTransaction(input: SolanaSignAndSendTransactionInput): Promise<SolanaSignAndSendTransactionOutput>;
176
+ requestPermissionToken(params: RequestPermissionTokenParams): Promise<RequestPermissionTokenResult>;
177
+ getPermissionTokenStatus(query: PermissionTokenQuery): Promise<PermissionTokenStatus>;
178
+ clearPermissionToken(query: PermissionTokenQuery): Promise<PermissionTokenClearResult>;
179
+ /**
180
+ * Subscribe to wallet events. Supports `change` plus EVM-style `connect` /
181
+ * `accountsChanged` (so cross-chain hooks like `useWaapAuth` can subscribe to
182
+ * any facade uniformly).
183
+ * @returns Unsubscribe function
184
+ */
185
+ on(event: 'change', listener: SolanaWalletEventListener): () => void;
186
+ on(event: string, listener: (...args: any[]) => void): () => void;
187
+ /** Remove a `connect` / `accountsChanged` listener. */
188
+ removeListener(event: string, listener: (...args: any[]) => void): void;
189
+ }
190
+ //#endregion
191
+ export { SolanaStandardSignTransactionOutput as _, SolanaConnectOutput as a, WaaPSolanaWalletFeatures as b, SolanaSignMessageInput as c, SolanaSignTransactionOutput as d, SolanaStandardSignAndSendTransactionInput as f, SolanaStandardSignTransactionInput as g, SolanaStandardSignMessageOutput as h, SolanaConnectInput as i, SolanaSignMessageOutput as l, SolanaStandardSignMessageInput as m, SolanaAccount as n, SolanaSignAndSendTransactionInput as o, SolanaStandardSignAndSendTransactionOutput as p, SolanaChain as r, SolanaSignAndSendTransactionOutput as s, InitWaaPSolanaOptions as t, SolanaSignTransactionInput as u, SolanaWalletEventListener as v, WaaPSolanaProviderInterface as y };
@@ -0,0 +1,191 @@
1
+ import { E as RequestPermissionTokenResult, T as RequestPermissionTokenParams, a as PermissionTokenClearResult, f as WaaPAccountStatus, g as WaaPWalletTargetOptions, m as WaaPSessionExtension, o as PermissionTokenQuery, r as LoginResponse, s as PermissionTokenStatus, w as ProjectConfig, x as CustomConfig } from "./types-x7TOncUp.mjs";
2
+ //#region src/lib/solana/types.d.ts
3
+ /** A Solana cluster identifier (CAIP-2-ish, matching wallet-adapter usage). */
4
+ type SolanaChain = 'solana:mainnet' | 'solana:devnet' | 'solana:testnet' | 'solana:localnet';
5
+ /** A connected Solana account. */
6
+ interface SolanaAccount {
7
+ /** base58-encoded address. */
8
+ address: string;
9
+ /** Raw 32-byte ed25519 public key. */
10
+ publicKey: Uint8Array;
11
+ chains: readonly SolanaChain[];
12
+ features: readonly `${string}:${string}`[];
13
+ }
14
+ /** Public Wallet Standard features supported by the WaaP Solana wallet. */
15
+ type WaaPSolanaWalletFeatures = {
16
+ 'standard:connect': {
17
+ version: '1.0.0';
18
+ connect: (input?: {
19
+ silent?: boolean;
20
+ }) => Promise<SolanaConnectOutput>;
21
+ };
22
+ 'standard:disconnect': {
23
+ version: '1.0.0';
24
+ disconnect: () => Promise<void>;
25
+ };
26
+ 'standard:events': {
27
+ version: '1.0.0';
28
+ on: (event: 'change', listener: SolanaWalletEventListener) => () => void;
29
+ };
30
+ 'solana:signMessage': {
31
+ version: '1.1.0';
32
+ signMessage: (...inputs: readonly SolanaStandardSignMessageInput[]) => Promise<readonly SolanaStandardSignMessageOutput[]>;
33
+ };
34
+ 'solana:signTransaction': {
35
+ version: '1.0.0';
36
+ supportedTransactionVersions: readonly ('legacy' | 0)[];
37
+ signTransaction: (...inputs: readonly SolanaStandardSignTransactionInput[]) => Promise<readonly SolanaStandardSignTransactionOutput[]>;
38
+ };
39
+ 'solana:signAndSendTransaction': {
40
+ version: '1.0.0';
41
+ supportedTransactionVersions: readonly ('legacy' | 0)[];
42
+ signAndSendTransaction: (...inputs: readonly SolanaStandardSignAndSendTransactionInput[]) => Promise<readonly SolanaStandardSignAndSendTransactionOutput[]>;
43
+ };
44
+ };
45
+ /** Solana Wallet Standard's variadic message-signing input. */
46
+ interface SolanaStandardSignMessageInput {
47
+ account: SolanaAccount;
48
+ message: Uint8Array;
49
+ }
50
+ interface SolanaStandardSignMessageOutput {
51
+ signedMessage: Uint8Array;
52
+ signature: Uint8Array;
53
+ signatureType?: 'ed25519';
54
+ }
55
+ /** Solana Wallet Standard's serialized-transaction signing input. */
56
+ interface SolanaStandardSignTransactionInput {
57
+ account: SolanaAccount;
58
+ transaction: Uint8Array;
59
+ chain?: SolanaChain;
60
+ options?: {
61
+ preflightCommitment?: 'processed' | 'confirmed' | 'finalized';
62
+ minContextSlot?: number;
63
+ };
64
+ }
65
+ interface SolanaStandardSignTransactionOutput {
66
+ signedTransaction: Uint8Array;
67
+ }
68
+ interface SolanaStandardSignAndSendTransactionInput extends SolanaStandardSignTransactionInput {
69
+ chain: SolanaChain;
70
+ options?: SolanaStandardSignTransactionInput['options'] & {
71
+ commitment?: 'processed' | 'confirmed' | 'finalized';
72
+ skipPreflight?: boolean;
73
+ maxRetries?: number;
74
+ };
75
+ }
76
+ interface SolanaStandardSignAndSendTransactionOutput {
77
+ signature: Uint8Array;
78
+ }
79
+ interface SolanaConnectInput {
80
+ /** Silent (non-interactive) reconnect. */
81
+ silent?: boolean;
82
+ signal?: AbortSignal;
83
+ timeoutMs?: number;
84
+ }
85
+ interface SolanaConnectOutput {
86
+ accounts: readonly SolanaAccount[];
87
+ }
88
+ interface SolanaSignMessageInput {
89
+ message: Uint8Array;
90
+ account: SolanaAccount;
91
+ signal?: AbortSignal;
92
+ timeoutMs?: number;
93
+ }
94
+ interface SolanaSignMessageOutput {
95
+ /** The message that was signed. */
96
+ signedMessage: Uint8Array;
97
+ /** The 64-byte ed25519 signature. */
98
+ signature: Uint8Array;
99
+ }
100
+ interface SolanaSignTransactionInput {
101
+ /** A serialized VersionedTransaction (bytes) or a `@solana/web3.js` tx object. */
102
+ transaction: Uint8Array | {
103
+ serialize(): Uint8Array;
104
+ };
105
+ account: SolanaAccount;
106
+ chain?: SolanaChain;
107
+ signal?: AbortSignal;
108
+ timeoutMs?: number;
109
+ /** Use a matching permission token when the wallet has one. */
110
+ withPT?: boolean;
111
+ }
112
+ interface SolanaSignTransactionOutput {
113
+ /** The signed, serialized transaction bytes. */
114
+ signedTransaction: Uint8Array;
115
+ /** The 64-byte ed25519 signature. */
116
+ signature: Uint8Array;
117
+ }
118
+ interface SolanaSignAndSendTransactionInput extends SolanaSignTransactionInput {
119
+ options?: {
120
+ skipPreflight?: boolean;
121
+ maxRetries?: number;
122
+ };
123
+ }
124
+ interface SolanaSignAndSendTransactionOutput {
125
+ /** base58 transaction signature (the on-chain txid). */
126
+ signature: string;
127
+ }
128
+ type SolanaWalletEventListener = (properties: {
129
+ chains?: readonly SolanaChain[];
130
+ features?: WaaPSolanaWalletFeatures;
131
+ accounts?: readonly SolanaAccount[];
132
+ }) => void;
133
+ interface InitWaaPSolanaOptions extends WaaPWalletTargetOptions {
134
+ referralCode?: string;
135
+ project?: ProjectConfig;
136
+ config?: CustomConfig;
137
+ /**
138
+ * Defer iframe navigation until `preload()` or the first wallet operation.
139
+ * The default warms the iframe at browser idle; pass `false` to mount eagerly.
140
+ */
141
+ deferIframe?: boolean;
142
+ }
143
+ interface WaaPSolanaProviderInterface {
144
+ readonly name: string;
145
+ readonly version: string;
146
+ /** Wallet Standard icon data URI. */
147
+ readonly icon: `data:image/${'svg+xml' | 'webp' | 'png' | 'gif'};base64,${string}`;
148
+ readonly chains: readonly SolanaChain[];
149
+ readonly accounts: readonly SolanaAccount[];
150
+ /** Wallet Standard capabilities exposed by this Solana facade. */
151
+ readonly features: WaaPSolanaWalletFeatures;
152
+ /** Public-safe local connection status for this facade. */
153
+ getAccountStatus(): WaaPAccountStatus;
154
+ session: WaaPSessionExtension;
155
+ /** Open the WaaP login flow without connecting this chain facade. */
156
+ login(): Promise<LoginResponse>;
157
+ /** End the WaaP session without implying a chain disconnect is a logout. */
158
+ logout(): Promise<void>;
159
+ getLoginMethod(): LoginResponse;
160
+ /**
161
+ * Adopt the session the EVM facade established. Solana holds its own view of
162
+ * whether one exists, so a host that drives the facades itself has to say so
163
+ * -- declared here rather than reached for through a cast, which would make
164
+ * a rename silently report `notAuthenticated` after a good login.
165
+ */
166
+ setLoginMethod(loginMethod: LoginResponse): void;
167
+ connect(input?: SolanaConnectInput): Promise<SolanaConnectOutput>;
168
+ disconnect(): Promise<void>;
169
+ /** Release SDK message listeners owned by this Solana facade. */
170
+ destroy(): void;
171
+ /** Mount (if deferred) and complete the wallet handshake ahead of use. */
172
+ preload(): Promise<void>;
173
+ signMessage(input: SolanaSignMessageInput): Promise<SolanaSignMessageOutput>;
174
+ signTransaction(input: SolanaSignTransactionInput): Promise<SolanaSignTransactionOutput>;
175
+ signAndSendTransaction(input: SolanaSignAndSendTransactionInput): Promise<SolanaSignAndSendTransactionOutput>;
176
+ requestPermissionToken(params: RequestPermissionTokenParams): Promise<RequestPermissionTokenResult>;
177
+ getPermissionTokenStatus(query: PermissionTokenQuery): Promise<PermissionTokenStatus>;
178
+ clearPermissionToken(query: PermissionTokenQuery): Promise<PermissionTokenClearResult>;
179
+ /**
180
+ * Subscribe to wallet events. Supports `change` plus EVM-style `connect` /
181
+ * `accountsChanged` (so cross-chain hooks like `useWaapAuth` can subscribe to
182
+ * any facade uniformly).
183
+ * @returns Unsubscribe function
184
+ */
185
+ on(event: 'change', listener: SolanaWalletEventListener): () => void;
186
+ on(event: string, listener: (...args: any[]) => void): () => void;
187
+ /** Remove a `connect` / `accountsChanged` listener. */
188
+ removeListener(event: string, listener: (...args: any[]) => void): void;
189
+ }
190
+ //#endregion
191
+ export { SolanaStandardSignTransactionOutput as _, SolanaConnectOutput as a, WaaPSolanaWalletFeatures as b, SolanaSignMessageInput as c, SolanaSignTransactionOutput as d, SolanaStandardSignAndSendTransactionInput as f, SolanaStandardSignTransactionInput as g, SolanaStandardSignMessageOutput as h, SolanaConnectInput as i, SolanaSignMessageOutput as l, SolanaStandardSignMessageInput as m, SolanaAccount as n, SolanaSignAndSendTransactionInput as o, SolanaStandardSignAndSendTransactionOutput as p, SolanaChain as r, SolanaSignAndSendTransactionOutput as s, InitWaaPSolanaOptions as t, SolanaSignTransactionInput as u, SolanaWalletEventListener as v, WaaPSolanaProviderInterface as y };
@@ -65,6 +65,8 @@ declare enum SILK_METHOD {
65
65
  set_signing_mode = "set_signing_mode",
66
66
  enter_lite_mode = "enter_lite_mode"
67
67
  }
68
+ /** The SDK a session was opened from. `client_kind` cannot distinguish these. */
69
+ type WaaPSdkPlatform = 'web' | 'react-native' | 'flutter';
68
70
  /** Portable-session protection selected by a current WaaP SDK integration. */
69
71
  type WaaPSessionProtection = 'bearer' | 'dpop';
70
72
  declare enum JSON_RPC_METHOD {
@@ -281,6 +283,16 @@ interface EthereumProviderInterface {
281
283
  removeListener(event: string, listener: (...args: any[]) => void): this;
282
284
  }
283
285
  type LoginResponse = 'waap' | 'human' | 'injected' | 'walletconnect' | null;
286
+ /**
287
+ * A login that is not finished: the wallet cannot open a social provider from
288
+ * inside a WebView, so it hands the URL back for a native host to open and
289
+ * keeps its own request open. Only ever produced under a native host.
290
+ */
291
+ type NativeAuthHandoff = {
292
+ loginMethod: string | null;
293
+ isComplete: false;
294
+ authUrl: string;
295
+ };
284
296
  /** The explicit signing family selected by an initializer. */
285
297
  type WaaPAccountMode = 'tap' | 'squid';
286
298
  type WaaPConversionState = 'not_required' | 'required' | 'pending' | 'complete' | 'failed' |
@@ -415,4 +427,4 @@ interface InitSilkOptions extends WaaPWalletTargetOptions {
415
427
  }
416
428
  type SilkProvider = SilkEthereumProviderInterface;
417
429
  //#endregion
418
- export { StylesConfig as A, ProjectConfig as C, SilkRequestCancellation as D, SilkRequest as E, SILK_METHOD as M, SilkNotificationData as N, SilkResponse as O, WaaPSessionProtection as P, LinkedAddressesResult as S, RequestPermissionTokenResult as T, validateWalletOrigin as _, PermissionTokenQuery as a, CustomConfig as b, SilkEthereumProviderInterface as c, WaaPAccountStatus as d, WaaPLoginOptions as f, resolveWalletOrigin as g, WaaPWalletTargetOptions as h, PermissionTokenClearResult as i, JSON_RPC_METHOD as j, SocialProvider as k, SilkProvider as l, WaaPEnvironment as m, InitSilkOptions as n, PermissionTokenStatus as o, WaaPSessionExtension as p, LoginResponse as r, RequestArguments as s, EthereumProviderInterface as t, WaaPAccountMode as u, AuthenticationMethod as v, RequestPermissionTokenParams as w, LinkAddressNonceResult as x, CredentialType as y };
430
+ export { SocialProvider as A, LinkedAddressesResult as C, SilkRequest as D, RequestPermissionTokenResult as E, WaaPSdkPlatform as F, WaaPSessionProtection as I, JSON_RPC_METHOD as M, SILK_METHOD as N, SilkRequestCancellation as O, SilkNotificationData as P, LinkAddressNonceResult as S, RequestPermissionTokenParams as T, resolveWalletOrigin as _, PermissionTokenClearResult as a, CredentialType as b, RequestArguments as c, WaaPAccountMode as d, WaaPAccountStatus as f, WaaPWalletTargetOptions as g, WaaPEnvironment as h, NativeAuthHandoff as i, StylesConfig as j, SilkResponse as k, SilkEthereumProviderInterface as l, WaaPSessionExtension as m, InitSilkOptions as n, PermissionTokenQuery as o, WaaPLoginOptions as p, LoginResponse as r, PermissionTokenStatus as s, EthereumProviderInterface as t, SilkProvider as u, validateWalletOrigin as v, ProjectConfig as w, CustomConfig as x, AuthenticationMethod as y };
@@ -65,6 +65,8 @@ declare enum SILK_METHOD {
65
65
  set_signing_mode = "set_signing_mode",
66
66
  enter_lite_mode = "enter_lite_mode"
67
67
  }
68
+ /** The SDK a session was opened from. `client_kind` cannot distinguish these. */
69
+ type WaaPSdkPlatform = 'web' | 'react-native' | 'flutter';
68
70
  /** Portable-session protection selected by a current WaaP SDK integration. */
69
71
  type WaaPSessionProtection = 'bearer' | 'dpop';
70
72
  declare enum JSON_RPC_METHOD {
@@ -281,6 +283,16 @@ interface EthereumProviderInterface {
281
283
  removeListener(event: string, listener: (...args: any[]) => void): this;
282
284
  }
283
285
  type LoginResponse = 'waap' | 'human' | 'injected' | 'walletconnect' | null;
286
+ /**
287
+ * A login that is not finished: the wallet cannot open a social provider from
288
+ * inside a WebView, so it hands the URL back for a native host to open and
289
+ * keeps its own request open. Only ever produced under a native host.
290
+ */
291
+ type NativeAuthHandoff = {
292
+ loginMethod: string | null;
293
+ isComplete: false;
294
+ authUrl: string;
295
+ };
284
296
  /** The explicit signing family selected by an initializer. */
285
297
  type WaaPAccountMode = 'tap' | 'squid';
286
298
  type WaaPConversionState = 'not_required' | 'required' | 'pending' | 'complete' | 'failed' |
@@ -415,4 +427,4 @@ interface InitSilkOptions extends WaaPWalletTargetOptions {
415
427
  }
416
428
  type SilkProvider = SilkEthereumProviderInterface;
417
429
  //#endregion
418
- export { StylesConfig as A, ProjectConfig as C, SilkRequestCancellation as D, SilkRequest as E, SILK_METHOD as M, SilkNotificationData as N, SilkResponse as O, WaaPSessionProtection as P, LinkedAddressesResult as S, RequestPermissionTokenResult as T, validateWalletOrigin as _, PermissionTokenQuery as a, CustomConfig as b, SilkEthereumProviderInterface as c, WaaPAccountStatus as d, WaaPLoginOptions as f, resolveWalletOrigin as g, WaaPWalletTargetOptions as h, PermissionTokenClearResult as i, JSON_RPC_METHOD as j, SocialProvider as k, SilkProvider as l, WaaPEnvironment as m, InitSilkOptions as n, PermissionTokenStatus as o, WaaPSessionExtension as p, LoginResponse as r, RequestArguments as s, EthereumProviderInterface as t, WaaPAccountMode as u, AuthenticationMethod as v, RequestPermissionTokenParams as w, LinkAddressNonceResult as x, CredentialType as y };
430
+ export { SocialProvider as A, LinkedAddressesResult as C, SilkRequest as D, RequestPermissionTokenResult as E, WaaPSdkPlatform as F, WaaPSessionProtection as I, JSON_RPC_METHOD as M, SILK_METHOD as N, SilkRequestCancellation as O, SilkNotificationData as P, LinkAddressNonceResult as S, RequestPermissionTokenParams as T, resolveWalletOrigin as _, PermissionTokenClearResult as a, CredentialType as b, RequestArguments as c, WaaPAccountMode as d, WaaPAccountStatus as f, WaaPWalletTargetOptions as g, WaaPEnvironment as h, NativeAuthHandoff as i, StylesConfig as j, SilkResponse as k, SilkEthereumProviderInterface as l, WaaPSessionExtension as m, InitSilkOptions as n, PermissionTokenQuery as o, WaaPLoginOptions as p, LoginResponse as r, PermissionTokenStatus as s, EthereumProviderInterface as t, SilkProvider as u, validateWalletOrigin as v, ProjectConfig as w, CustomConfig as x, AuthenticationMethod as y };
@@ -0,0 +1 @@
1
+ const e=require("./evm-64xq-c4L.js"),t=require("./asyncSigning-B0KrmKk7.js"),n=require("./SolanaProvider-CxJX9Dzo.js");let r=require("events");function i(){try{if(typeof process<`u`&&process.env)return(process.env.NEXT_PUBLIC_WAAP_MAINTENANCE||process.env.VITE_WAAP_MAINTENANCE||process.env.REACT_APP_WAAP_MAINTENANCE||process.env.WAAP_MAINTENANCE)===`true`}catch{return!1}return!1}function a(){try{return typeof localStorage<`u`&&localStorage.getItem(`waap_maintenance_override`)===`1`}catch{return!1}}function o(){if(i()&&!a())throw new e.T(`maintenance`,`WaaP is temporarily unavailable for maintenance.`)}const s={"sui:mainnet":`https://sui-rpc.publicnode.com`,"sui:testnet":`https://sui-testnet-rpc.publicnode.com`,"sui:devnet":`https://fullnode.devnet.sui.io`,"sui:localnet":`http://127.0.0.1:9000`},c=e=>s[e],l=e=>e.slice(4);var u=class{constructor(t,n={},i,a=n){this.lastKnownConversion=`pending`,this.name=`WaaP`,this.version=`1.0.0`,this.icon=`data:image/webp;base64,UklGRpoDAABXRUJQVlA4WAoAAAAQAAAAYwAAYwAAQUxQSDMDAAABJyAQSOFmFxERA8TatqpGoimANbEAxlBAPhSgQP9FyXv3vkcFEf134EZS5DREhGvTM8z0ki8stMRvK4cm8bk5rIu3xNbvkgPk4K6ti5IHquRQnLi6KrdBb81hdyF1jTLM1CW425943iba38/djOcG+dg85p/KXGd/g7+xAzJ2VPWTS8R+q65uA1ZcwG3iZ4urjw9Lh4xn83n3gZmQQ3VMVGEO6D403jdr81Ml1OISAAf7RGImBHISwQ5zCJonTuEyOyP7Sga4cDcjMPgXuiK9cUpaGrIDJtH4iAB25utB8O0DDztOKTr8u9hpX0jrx6k8UM5eAlqsynNxlX9tPRLQEtySKwcDOIDnMqEcek1UnylVNac4r0mlypNvhmCNODlhUXuT4fxTQyrDKY0uyV+gi0iiLLpY76A08C/IX8GQoYb8PcVxK7HkZkT5IjAF4gZicOfJW1ovJjyAlYVPlM6BkkHGI0fniAIZIXC0CbAM92BB8SBznU0ITYLr9XkfnKlDgV8170HGMWwitY51+zxcgkftLD4RLh4HSTIa3QzRWKxlaHZTz21s6GLxnBmjogkVilW4kuaMMMGUfgkZ1JhrBSEANrEDMwucAXgbTqIExY3FYRMdtkQRDFjD6BKtJ2GWTopGRY4P9DBkdE4rp9LJHuYhju45oeVZVv3zNmVdZiIOffHDppOz0Q34p0e/+nXy7JmF1846lmF2ZombLt8pgZpbPNeqpJSVJ0bGd4cH8dUNflNPfdQVXUkC95UQS0ZGfDmOJgjs3IyVOExZBEsxONd080gYK/ftQ2nbYaqGW89Hu7M6avmzXEjhO4G8O8ae8gwWtwZsyp8v8j/ys5H7bM+unOfurO4bbbL4v865Nb8s98Ld2X9yg6tLBQanMP8fhplOMMN8fiNDzTvNOMXGuYzejo12vY7s3clhXwgDPuBIcxi9QZftbKVxAjLCcVQdRxGR1QknhCs3GuieMLzfrrC9RhfJgVpcXRn71nZfEjsiYy/Ca1J7ch0clK64ReH3G/s2cekpP+BIx2YteMvSoLy6G9FCgd1nvF/VoVRtJoNJNLQ0RM3BXY9WgPbcHF78swAAVlA4IEAAAACwBQCdASpkAGQAPpFIoUylpCMiIKgAsBIJaW7hc+AAY2upvcReWAa6m9xF5YBrqb3EXlgGngAA/v81aVcAAAAA`,this._accounts=[],this.accountMode=`tap`,this.loginMethod=null,this._chains=[`sui:mainnet`,`sui:testnet`,`sui:devnet`],this.internalEventEmitter=new r.EventEmitter,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new e.h(t,e.S(n)),this.ensureIframe=i,this.iframeMounted=!i,this.initializerOptions=a,this.uiMessageManager=new e.a,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:t=>{t.method===e.O.show_modal?this.uiMessageManager.emit(`show_modal`):t.method===e.O.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:async e=>{try{let e=await this.refreshAccounts();this.notifyChange({accounts:e.accounts})}catch(e){console.error(`Failed to refresh Sui accounts:`,e),this._accounts=[],this.notifyChange({accounts:[]})}}})}destroy(){this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.changeListeners.clear(),this._accounts=[]}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();if(!e)throw Error(`Failed to create WaaP iframe`);this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e)}async preload(){if(!this.ensureIframe)return;this.ensureIframeMounted();let 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=e.v(t,()=>this.selectAccountMode(this.accountMode,this.initializerOptions));try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async ensureInitialized(){await this.preload()}async refreshAccounts(){try{await this.ensureInitialized();let e=await this.postRequestAndWait({method:`sui_connect`,params:[{silent:!0}],interactionRequired:!1});if(e.error)return this._accounts=[],{accounts:[]};let t=e.data?.accounts||[];return this._accounts=t,{accounts:this._accounts}}catch{return this._accounts=[],{accounts:[]}}}get chains(){return this._chains}get accounts(){return this._accounts}get ui(){return this.uiMessageManager}getAccountStatus(){return{authenticated:this.loginMethod!==null,loginMethod:this.loginMethod,activeMode:this.loginMethod?this.accountMode:null,mode:this.accountMode,conversion:this.loginMethod?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this._accounts[0]?{sui:this._accounts[0].address}:{}}}get session(){return{login:()=>this.login(),logout:()=>this.logout(),getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.O.waap_getAccountStatus,params:[],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to read WaaP status`);let n=t.data;return this.syncLoginMethodFromCanonicalStatus(n),n?.conversion&&(this.lastKnownConversion=n.conversion),n}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(t,n={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:e.O.set_signing_mode,params:[e.g(t,n)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let t=await this.restoreSession();if(t)return t;let n=(await this.postRequestAndWait({method:e.O.login,params:[],interactionRequired:!0})).data;return n!==`waap`&&n!==`human`&&n!==`injected`&&n!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=n,n)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:e.O.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async connect(t){if(!this.loginMethod){if(t?.silent)throw new e.T(`not_authenticated`,`Not authenticated: a silent connect cannot open login.`,{operation:{chain:`sui`,method:`sui_connect`}});if(!await this.login())throw new e.T(`user_rejected`,`User rejected WaaP login during connect().`,{operation:{chain:`sui`,method:`sui_connect`}})}await this.ensureInitialized();let n=await this.postRequestAndWait({method:`sui_connect`,params:[t||{}],interactionRequired:!t?.silent,signal:t?.signal,timeoutMs:t?.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to connect`);let r=n.data?.accounts||[];return this._accounts=r,this.notifyChange({accounts:this._accounts}),t?.silent||this.internalEventEmitter.emit(`connect`),this.internalEventEmitter.emit(`accountsChanged`,this._accounts.map(e=>e.address)),{accounts:this._accounts}}async restoreSession(){try{let e=await this.getCanonicalAccountStatus();if(e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`))return this.loginMethod=e.loginMethod,e.loginMethod}catch{}return null}syncLoginMethodFromCanonicalStatus(e){let t=e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`)?e.loginMethod:null;t!==this.loginMethod&&this.setLoginMethod(t)}async disconnect(){await this.ensureInitialized(),await this.postRequestAndWait({method:`sui_disconnect`,params:[],interactionRequired:!1}),this._accounts=[],this.notifyChange({accounts:[]})}async signPersonalMessage(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.postRequestAndWait({method:`sui_signPersonalMessage`,params:[{message:Array.from(e.message),account:t,chain:e.chain}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to sign message`);return{bytes:n.data.bytes,signature:n.data.signature}}async extractTransferAddresses(e,t=!1){try{let{Transaction:n}=await import(`@mysten/sui/transactions`),r=(t?n.fromKind(e):n.from(e)).getData(),i=[];for(let e of r.commands){if(e.$kind!==`TransferObjects`)continue;let t=e.TransferObjects.address;if(t.$kind!==`Input`)continue;let n=t.Input,a=r.inputs[n];if(!a||a.$kind!==`Pure`)continue;let o=Uint8Array.from(atob(a.Pure.bytes),e=>e.charCodeAt(0));if(o.length!==32)continue;let s=`0x`+Array.from(o).map(e=>e.toString(16).padStart(2,`0`)).join(``);i.push(s)}return i}catch{return[]}}async resolveTransactionBytes(e,t=`sui:mainnet`){if(e instanceof Uint8Array)return{bytes:e,kind:`transaction-data`};if(Array.isArray(e))return{bytes:new Uint8Array(e),kind:`transaction-data`};if(typeof e==`string`)try{return{bytes:Uint8Array.from(atob(e),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{throw Error(`Transaction string must be base64 encoded bytes. If you have a serialized transaction JSON, please build it to bytes first.`)}else if(e&&typeof e==`object`){if(typeof e.build==`function`)try{let{SuiJsonRpcClient:n}=await import(`@mysten/sui/jsonRpc`),r=l(t),i=new n({url:c(t),network:r});return{bytes:await e.build({client:i,onlyTransactionKind:!0}),kind:`transaction-kind`}}catch(e){throw console.warn(`[SuiWallet] Failed to build transaction object:`,e),Error(`Failed to build transaction: ${e instanceof Error?e.message:String(e)}`)}if(typeof e.serialize==`function`)try{let t=await e.serialize();if(typeof t==`string`)return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`};if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] serialize() failed:`,e)}if(typeof e.toJSON==`function`)try{let t=await e.toJSON();if(typeof t==`string`)try{return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{try{let e=JSON.parse(t);if(e.bytes&&typeof e.bytes==`string`)return{bytes:Uint8Array.from(atob(e.bytes),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{}}}catch(e){console.warn(`[SuiWallet] toJSON() failed:`,e)}if(typeof e.getData==`function`)try{let t=e.getData();if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] getData() failed:`,e)}throw Error(`Unsupported transaction format. Keys: ${Object.keys(e).join(`, `)}`)}else throw Error(`Unsupported transaction format: ${typeof e}. Please pass Uint8Array bytes or a Transaction object.`)}async signTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.postRequestAndWait({method:`sui_signTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain,withPT:e.withPT}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign transaction`);return{bytes:r.data.bytes,signature:r.data.signature}}async signAndExecuteTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.extractTransferAddresses(n.bytes,n.kind===`transaction-kind`),i=await this.postRequestAndWait({method:`sui_signAndExecuteTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain,options:e.options,requestType:e.requestType,withPT:e.withPT,toAddresses:r.length>0?r:void 0}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(i.error)throw Error(i.error.message||`Failed to sign and execute transaction`);return i.data}async switchChain(e){if(await this.ensureInitialized(),!this._chains.includes(e.chain))throw Error(`Chain ${e.chain} is not supported`);let t=await this.postRequestAndWait({method:`sui_switchChain`,params:[e],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to switch chain`);this.notifyChange({chains:this._chains,accounts:this._accounts})}on(e,t){return e===`change`?(this.changeListeners.add(t),()=>{this.changeListeners.delete(t)}):(this.internalEventEmitter.on(e,t),()=>{this.internalEventEmitter.removeListener(e,t)})}removeListener(e,t){if(e===`change`){this.changeListeners.delete(t);return}this.internalEventEmitter.removeListener(e,t)}get features(){return{"standard:connect":{version:`1.0.0`,connect:this.connect.bind(this)},"standard:disconnect":{version:`1.0.0`,disconnect:this.disconnect.bind(this)},"standard:events":{version:`1.0.0`,on:this.on.bind(this)},"sui:signPersonalMessage":{version:`1.1.0`,signPersonalMessage:this.signPersonalMessage.bind(this)},"sui:signTransaction":{version:`2.0.0`,signTransaction:this.signTransaction.bind(this)},"sui:signAndExecuteTransaction":{version:`1.0.0`,signAndExecuteTransaction:this.signAndExecuteTransaction.bind(this)},"sui:signTransactionBlock":{version:`2.0.0`,signTransactionBlock:this.signTransactionBlock.bind(this)},"sui:signAndExecuteTransactionBlock":{version:`1.0.0`,signAndExecuteTransactionBlock:this.signAndExecuteTransactionBlock.bind(this)},"sui:switchChain":{version:`1.0.0`,switchChain:this.switchChain.bind(this)}}}async signTransactionBlock(e){return this.signTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,signal:e.signal,timeoutMs:e.timeoutMs,withPT:e.withPT})}async signAndExecuteTransactionBlock(e){return this.signAndExecuteTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,options:e.options,requestType:e.requestType,signal:e.signal,timeoutMs:e.timeoutMs,withPT:e.withPT})}async requestPermissionToken(t){await this.ensureInitialized();let n={...t,walletMode:this.accountMode},r=await this.postRequestAndWait({method:e.O.waap_requestPermissionToken,params:[n],interactionRequired:!0});if(r.error)throw Error(r.error.message||`Failed to request permission token`);return r.data}async getPermissionTokenStatus(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.O.waap_getPermissionTokenStatus,params:[t],interactionRequired:!1})).data}async clearPermissionToken(t){return await this.ensureInitialized(),(await this.postRequestAndWait({method:e.O.waap_clearPermissionToken,params:[t],interactionRequired:!1})).data}async requestEmail(){await this.ensureInitialized();let t=await this.postRequestAndWait({method:e.O.silk_requestEmail,params:[],interactionRequired:!0});if(t.error)throw Error(t.error.message||`Failed to request email`);return t.data}async postRequestAndWait(t){let n;try{t.interactionRequired&&e.p({layout:t.method===e.O.login?`auth`:`signing`}),n=await this.walletMessageManager.postSilkRequest({method:t.method,params:t.params,interactionRequired:t.interactionRequired});let r=await e.u({eventEmitter:this.internalEventEmitter,id:n,method:t.method,interactionRequired:t.interactionRequired,signal:t.signal,timeoutMs:t.timeoutMs,onCancel:()=>{this.walletMessageManager.cancelSilkRequest(n,t.method),t.interactionRequired&&e.f()}});if(r.error)throw Error(r.error.message);return r}catch(r){throw t.interactionRequired&&n===void 0&&e.f(),e.E(r,{chain:`sui`,method:String(t.method),requestId:n})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function d(t,n,r=!0){let i=()=>(e.b(t),e.y(n).contentWindow),a=t.deferIframe===!1,o=t.deferIframe===void 0,s=a?i():null;if(a&&!s)throw Error(`Failed to create WaaP iframe`);let c=new u(s,t,i,{...t,chains:[`sui`]});c.setAccountMode(n),r&&a&&c.preload().catch(()=>void 0);let l=c.destroy.bind(c);if(c.destroy=()=>{l(),e.x()},r&&o){let t=e.s(c),n=c.destroy.bind(c);c.destroy=()=>{t(),n()}}return c.ui.on(`show_modal`,()=>{e.p(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=`none`})}),c.ui.on(`hide_modal`,()=>{e.f(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=``})}),c}function f(t={}){let r=()=>(e.b(t),e.y(`tap`).contentWindow),i=t.deferIframe===!1,a=t.deferIframe===void 0,o=i?r():null;if(i&&!o)throw Error(`Failed to create WaaP iframe`);let s=new n.t(o,t,r,{...t,chains:[`solana`]});i&&s.preload().catch(()=>void 0);let c=s.destroy.bind(s);if(s.destroy=()=>{c(),e.x()},a){let t=e.s(s),n=s.destroy.bind(s);s.destroy=()=>{t(),n()}}return s.ui.on(`show_modal`,()=>{e.p()}),s.ui.on(`hide_modal`,()=>{e.f()}),s}function p(t={}){if(o(),`chains`in t)throw Error("initWaaP accepts one `chain`; use initWaaPMulti({ chains }) for TAP.");switch(t.chain){case`sui`:return d(t,`tap`);case`solana`:return f(t);default:return e.t(t)}}const m=[`evm`,`sui`,`solana`],h=[`evm`,`sui`,`solana`];function g(r){o();let i=Array.from(new Set(r.chains??[]));if(i.length===0)throw Error(`initWaaPSquid requires at least one chain facade`);if(i.some(e=>!m.includes(e)))throw Error(`initWaaPSquid received an unsupported chain facade`);let a=i.includes(`evm`),s=i.includes(`sui`),c=i.includes(`solana`),l=e.n({referralCode:r.referralCode,config:r.config,project:r.project,environment:r.environment,walletOrigin:r.walletOrigin,useStaging:r.useStaging,walletConnectProjectId:r.walletConnectProjectId,asyncTxs:r.asyncTxs,deferIframe:r.deferIframe},`squid`,!1,i,a),u=s?d(r,`squid`,!1):void 0,f=()=>(e.b(r),e.y(`squid`).contentWindow),p=c?new n.t(r.deferIframe===!1?f():null,{useStaging:r.useStaging,environment:r.environment,walletOrigin:r.walletOrigin,referralCode:r.referralCode,project:r.project,config:r.config,deferIframe:r.deferIframe},f,{...r,chains:[`solana`]}):void 0;p?.setAccountMode(`squid`);let h;r.deferIframe===!1?l.preload().catch(()=>void 0):r.deferIframe===void 0&&(h=e.s(l));let g={state:`absent`},_=null,v=0,y=null,b=()=>{y!==null&&(clearTimeout(y),y=null)},x=()=>{b(),y=setTimeout(()=>{y=null,_&&l.emit(t.t.squidFailed,{lifecycleId:_,error:`Squid provisioning stalled; call onboard() to try again.`})},18e4),y.unref?.()},S=()=>{b(),_=null,g={state:`absent`}},C=e=>!e.lifecycleId||e.lifecycleId===_,w=()=>g.state===`active`;l.on(t.t.squidPending,e=>{if(!C(e))return;x();let t=e?.transactionDigest;g={state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e?.message?{message:e.message}:{}}}),l.on(t.t.squidReady,e=>{C(e)&&(b(),g={state:`active`})}),l.on(t.t.squidFailed,e=>{C(e)&&(b(),g={state:`failed`,...e?.error?{message:e.error}:{}},_=null)});let T=t=>{if(l.getLoginMethod()===null)throw new e.T(`not_authenticated`,`Not authenticated: call login() before connecting or signing.`,{operation:{chain:t,method:`connect`}});if(!w())throw new e.T(`not_connected`,`Squid is not ready: call onboard() after login before connecting or signing.`)},E=l.request.bind(l);if(l.request=async e=>([`eth_requestAccounts`,`eth_accounts`,`eth_sendTransaction`,`eth_signTransaction`,`personal_sign`,`eth_signTypedData_v4`].includes(e.method)&&T(`evm`),E(e)),u){let e=u.connect.bind(u);u.connect=async t=>(T(`sui`),e(t))}if(p){let e=p.connect.bind(p);p.connect=async t=>(T(`solana`),e(t))}let D=async()=>{if(l.getLoginMethod()===null)throw new e.T(`not_authenticated`,`Not authenticated: call login() before onboarding Squid.`);if(w()||_)return;let t=`squid-${++v}`;_=t,g={state:`provisioning`},x();try{await l.walletMessageManager.pingIframe(),await e.c({method:e.O.enter_lite_mode,params:[window.location.origin,t]},!1,l.walletMessageManager,l.internalEventEmitter)}catch(e){throw _===t&&(b(),_=null,g={state:`failed`,message:e instanceof Error?e.message:String(e)}),e}},O=()=>({...g}),k=e=>{if(g.state===`active`||!e.authenticated||e.activeMode!==`squid`||!e.squid)return;let n={..._?{lifecycleId:_}:{},evm:e.squid.sqd1.evm,sui:e.squid.sqd2.sui,solana:e.squid.sqd2.solana};b(),g={state:`active`},_=null,l.emit(t.t.squidReady,n)},A=async()=>(await D(),O()),j=l.login.bind(l),M=async e=>{let t=await j(e);return u?.setLoginMethod(t),p?.setLoginMethod(t),(t?await l.session.getAccountStatus().catch(()=>null):null)?.squid&&(await l.reassertIframeAccountMode().catch(()=>void 0),await D()),t&&l.emit(`connect`),t},N=l.logout.bind(l),P=async()=>{await N(),u?.setLoginMethod(null),p?.setLoginMethod(null),S()},F;F={login:M,logout:P,getLoginMethod:()=>l.getLoginMethod(),getAccountStatus:async()=>{let e=await l.session.getAccountStatus();return k(e),e},getSquidStatus:O,on:(e,t)=>(l.on(e,t),F),removeListener:(e,t)=>(l.removeListener(e,t),F)},l.login=F.login,l.logout=F.logout,u&&(u.login=()=>F.login(),u.logout=()=>F.logout()),p&&(p.login=()=>F.login(),p.logout=()=>F.logout());let I={onboard:D,squid:{onboard:D,getStatus:O,onboardWithStatus:A},getSquidStatus:O,session:F,getAccountStatus:()=>{let e=l.getAccountStatus(),t=u?.getAccountStatus(),n=p?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`squid`:null,mode:`squid`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},preload:()=>l.preload(),destroy:()=>{h?.(),S(),l.destroy(),u?.destroy(),p?.destroy(),e.x()}};return a&&Object.assign(I,{evm:l,ethereum:l}),u&&Object.assign(I,{sui:u}),p&&Object.assign(I,{solana:p}),m.every(e=>i.includes(e))&&Object.assign(I,{auth:l}),I}function _(t){o();let r=Array.from(new Set(t.chains));if(r.length===0)throw Error(`initWaaPMulti requires at least one chain facade`);if(r.some(e=>!h.includes(e)))throw Error(`initWaaPMulti received an unsupported chain facade`);let i=r.includes(`evm`),a=r.includes(`sui`),s=r.includes(`solana`),c=e.n({referralCode:t.referralCode,config:t.config,project:t.project,environment:t.environment,walletOrigin:t.walletOrigin,useStaging:t.useStaging,walletConnectProjectId:t.walletConnectProjectId,asyncTxs:t.asyncTxs,deferIframe:t.deferIframe},`tap`,!1,r,i),l=a?d({...t,config:t.config},`tap`,!1):void 0,u=()=>(e.b(t),e.y(`tap`).contentWindow),f=s?new n.t(t.deferIframe===!1?u():null,{useStaging:t.useStaging,environment:t.environment,walletOrigin:t.walletOrigin,referralCode:t.referralCode,project:t.project,config:t.config,deferIframe:t.deferIframe},u,{...t,chains:[`solana`]}):void 0;f?.setAccountMode(`tap`);let p;t.deferIframe===!1?c.preload().catch(()=>void 0):t.deferIframe===void 0&&(p=e.s(c));let m=c.login.bind(c),g=async e=>{let t=await m(e);return l?.setLoginMethod(t),f?.setLoginMethod(t),t&&c.emit(`connect`),t},_=c.logout.bind(c),v=async()=>{await _(),l?.setLoginMethod(null),f?.setLoginMethod(null)},y;y={login:g,logout:v,getLoginMethod:()=>c.getLoginMethod(),getAccountStatus:()=>c.session.getAccountStatus(),on:(e,t)=>(c.on(e,t),y),removeListener:(e,t)=>(c.removeListener(e,t),y)},c.login=y.login,c.logout=y.logout,l&&(l.login=()=>y.login(),l.logout=()=>y.logout()),f&&(f.login=()=>y.login(),f.logout=()=>y.logout());let b=()=>{let e=c.getAccountStatus(),t=l?.getAccountStatus(),n=f?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`tap`:null,mode:`tap`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},x=c.destroy.bind(c),S=l?.destroy.bind(l),C=f?.destroy.bind(f),w=()=>{p?.(),x(),S?.(),C?.(),e.x()},T={session:y,getAccountStatus:b,preload:()=>c.preload(),destroy:w};return i&&(c.destroy=w,Object.assign(T,{evm:c,ethereum:c})),l&&(l.destroy=w,Object.assign(T,{sui:l})),f&&(f.destroy=w,Object.assign(T,{solana:f})),T}function v(e={}){return console.warn("[WaaP SDK] `initWaaPSui()` is deprecated. Use `initWaaP({ chain: 'sui' })` instead."),p({...e,chain:`sui`})}function y(e={}){return p({...e,chain:`solana`})}function b(e={}){return _({...e,chains:e.chains??h})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return p}});
@@ -0,0 +1 @@
1
+ import{E as e,O as t,S as n,T as r,a as i,b as a,c as o,f as s,g as c,h as l,n as u,p as d,s as f,t as p,u as m,v as h,x as g,y as _}from"./evm-ChOfSh-X.mjs";import{t as v}from"./asyncSigning-CzqBbYDP.mjs";import{t as y}from"./SolanaProvider-CygEwKg1.mjs";import{EventEmitter as b}from"events";function x(){try{if(typeof process<`u`&&process.env)return(process.env.NEXT_PUBLIC_WAAP_MAINTENANCE||process.env.VITE_WAAP_MAINTENANCE||process.env.REACT_APP_WAAP_MAINTENANCE||process.env.WAAP_MAINTENANCE)===`true`}catch{return!1}return!1}function S(){try{return typeof localStorage<`u`&&localStorage.getItem(`waap_maintenance_override`)===`1`}catch{return!1}}function C(){if(x()&&!S())throw new r(`maintenance`,`WaaP is temporarily unavailable for maintenance.`)}const w={"sui:mainnet":`https://sui-rpc.publicnode.com`,"sui:testnet":`https://sui-testnet-rpc.publicnode.com`,"sui:devnet":`https://fullnode.devnet.sui.io`,"sui:localnet":`http://127.0.0.1:9000`},T=e=>w[e],E=e=>e.slice(4);var D=class{constructor(e,r={},a,o=r){this.lastKnownConversion=`pending`,this.name=`WaaP`,this.version=`1.0.0`,this.icon=`data:image/webp;base64,UklGRpoDAABXRUJQVlA4WAoAAAAQAAAAYwAAYwAAQUxQSDMDAAABJyAQSOFmFxERA8TatqpGoimANbEAxlBAPhSgQP9FyXv3vkcFEf134EZS5DREhGvTM8z0ki8stMRvK4cm8bk5rIu3xNbvkgPk4K6ti5IHquRQnLi6KrdBb81hdyF1jTLM1CW425943iba38/djOcG+dg85p/KXGd/g7+xAzJ2VPWTS8R+q65uA1ZcwG3iZ4urjw9Lh4xn83n3gZmQQ3VMVGEO6D403jdr81Ml1OISAAf7RGImBHISwQ5zCJonTuEyOyP7Sga4cDcjMPgXuiK9cUpaGrIDJtH4iAB25utB8O0DDztOKTr8u9hpX0jrx6k8UM5eAlqsynNxlX9tPRLQEtySKwcDOIDnMqEcek1UnylVNac4r0mlypNvhmCNODlhUXuT4fxTQyrDKY0uyV+gi0iiLLpY76A08C/IX8GQoYb8PcVxK7HkZkT5IjAF4gZicOfJW1ovJjyAlYVPlM6BkkHGI0fniAIZIXC0CbAM92BB8SBznU0ITYLr9XkfnKlDgV8170HGMWwitY51+zxcgkftLD4RLh4HSTIa3QzRWKxlaHZTz21s6GLxnBmjogkVilW4kuaMMMGUfgkZ1JhrBSEANrEDMwucAXgbTqIExY3FYRMdtkQRDFjD6BKtJ2GWTopGRY4P9DBkdE4rp9LJHuYhju45oeVZVv3zNmVdZiIOffHDppOz0Q34p0e/+nXy7JmF1846lmF2ZombLt8pgZpbPNeqpJSVJ0bGd4cH8dUNflNPfdQVXUkC95UQS0ZGfDmOJgjs3IyVOExZBEsxONd080gYK/ftQ2nbYaqGW89Hu7M6avmzXEjhO4G8O8ae8gwWtwZsyp8v8j/ys5H7bM+unOfurO4bbbL4v865Nb8s98Ld2X9yg6tLBQanMP8fhplOMMN8fiNDzTvNOMXGuYzejo12vY7s3clhXwgDPuBIcxi9QZftbKVxAjLCcVQdRxGR1QknhCs3GuieMLzfrrC9RhfJgVpcXRn71nZfEjsiYy/Ca1J7ch0clK64ReH3G/s2cekpP+BIx2YteMvSoLy6G9FCgd1nvF/VoVRtJoNJNLQ0RM3BXY9WgPbcHF78swAAVlA4IEAAAACwBQCdASpkAGQAPpFIoUylpCMiIKgAsBIJaW7hc+AAY2upvcReWAa6m9xF5YBrqb3EXlgGngAA/v81aVcAAAAA`,this._accounts=[],this.accountMode=`tap`,this.loginMethod=null,this._chains=[`sui:mainnet`,`sui:testnet`,`sui:devnet`],this.internalEventEmitter=new b,this.changeListeners=new Set,this.initializerPromise=null,this.initializedIframeWindow=null,this.walletMessageManager=new l(e,n(r)),this.ensureIframe=a,this.iframeMounted=!a,this.initializerOptions=o,this.uiMessageManager=new i,this.walletMessageManager.addListener({handleResponse:e=>{this.internalEventEmitter.emit(e.id,e)},handleRequest:e=>{e.method===t.show_modal?this.uiMessageManager.emit(`show_modal`):e.method===t.hide_modal&&this.uiMessageManager.emit(`hide_modal`)},onAccountChanged:async e=>{try{let e=await this.refreshAccounts();this.notifyChange({accounts:e.accounts})}catch(e){console.error(`Failed to refresh Sui accounts:`,e),this._accounts=[],this.notifyChange({accounts:[]})}}})}destroy(){this.walletMessageManager.dispose(),this.internalEventEmitter.removeAllListeners(),this.uiMessageManager.removeAllListeners(),this.changeListeners.clear(),this._accounts=[]}ensureIframeMounted(){if(this.iframeMounted||!this.ensureIframe)return;let e=this.ensureIframe();if(!e)throw Error(`Failed to create WaaP iframe`);this.iframeMounted=!0,this.walletMessageManager.setIframeWindow(e)}async preload(){if(!this.ensureIframe)return;this.ensureIframeMounted();let e=this.walletMessageManager.getIframeWindow();if(!e)throw Error(`WaaP iframe is not mounted`);if(this.initializedIframeWindow===e&&this.initializerPromise)return this.initializerPromise;this.initializedIframeWindow=e,this.initializerPromise=h(e,()=>this.selectAccountMode(this.accountMode,this.initializerOptions));try{await this.initializerPromise}catch(e){throw this.initializerPromise=null,this.initializedIframeWindow=null,e}}async ensureInitialized(){await this.preload()}async refreshAccounts(){try{await this.ensureInitialized();let e=await this.postRequestAndWait({method:`sui_connect`,params:[{silent:!0}],interactionRequired:!1});if(e.error)return this._accounts=[],{accounts:[]};let t=e.data?.accounts||[];return this._accounts=t,{accounts:this._accounts}}catch{return this._accounts=[],{accounts:[]}}}get chains(){return this._chains}get accounts(){return this._accounts}get ui(){return this.uiMessageManager}getAccountStatus(){return{authenticated:this.loginMethod!==null,loginMethod:this.loginMethod,activeMode:this.loginMethod?this.accountMode:null,mode:this.accountMode,conversion:this.loginMethod?this.lastKnownConversion:`not_required`,tap:null,squid:null,accounts:this._accounts[0]?{sui:this._accounts[0].address}:{}}}get session(){return{login:()=>this.login(),logout:()=>this.logout(),getLoginMethod:()=>this.getLoginMethod(),getAccountStatus:()=>this.getCanonicalAccountStatus()}}async getCanonicalAccountStatus(){await this.ensureInitialized();let e=await this.postRequestAndWait({method:t.waap_getAccountStatus,params:[],interactionRequired:!1});if(e.error)throw Error(e.error.message||`Failed to read WaaP status`);let n=e.data;return this.syncLoginMethodFromCanonicalStatus(n),n?.conversion&&(this.lastKnownConversion=n.conversion),n}setAccountMode(e){this.accountMode=e,this.initializerPromise=null,this.initializedIframeWindow=null}async selectAccountMode(e,n={}){await this.walletMessageManager.pingIframe(),await this.postRequestAndWait({method:t.set_signing_mode,params:[c(e,n)],interactionRequired:!1})}setLoginMethod(e){this.loginMethod=e,e===null&&(this._accounts=[],this.notifyChange({accounts:[]}))}getLoginMethod(){return this.loginMethod}async login(){await this.ensureInitialized();let e=await this.restoreSession();if(e)return e;let n=(await this.postRequestAndWait({method:t.login,params:[],interactionRequired:!0})).data;return n!==`waap`&&n!==`human`&&n!==`injected`&&n!==`walletconnect`?(this.loginMethod=null,null):(this.loginMethod=n,n)}async logout(){this.lastKnownConversion=`pending`,await this.ensureInitialized(),await this.postRequestAndWait({method:t.logout,params:[],interactionRequired:!1}),this.loginMethod=null,this._accounts=[],this.notifyChange({accounts:[]})}async connect(e){if(!this.loginMethod){if(e?.silent)throw new r(`not_authenticated`,`Not authenticated: a silent connect cannot open login.`,{operation:{chain:`sui`,method:`sui_connect`}});if(!await this.login())throw new r(`user_rejected`,`User rejected WaaP login during connect().`,{operation:{chain:`sui`,method:`sui_connect`}})}await this.ensureInitialized();let t=await this.postRequestAndWait({method:`sui_connect`,params:[e||{}],interactionRequired:!e?.silent,signal:e?.signal,timeoutMs:e?.timeoutMs});if(t.error)throw Error(t.error.message||`Failed to connect`);let n=t.data?.accounts||[];return this._accounts=n,this.notifyChange({accounts:this._accounts}),e?.silent||this.internalEventEmitter.emit(`connect`),this.internalEventEmitter.emit(`accountsChanged`,this._accounts.map(e=>e.address)),{accounts:this._accounts}}async restoreSession(){try{let e=await this.getCanonicalAccountStatus();if(e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`))return this.loginMethod=e.loginMethod,e.loginMethod}catch{}return null}syncLoginMethodFromCanonicalStatus(e){let t=e.authenticated&&(e.loginMethod===`waap`||e.loginMethod===`human`||e.loginMethod===`injected`||e.loginMethod===`walletconnect`)?e.loginMethod:null;t!==this.loginMethod&&this.setLoginMethod(t)}async disconnect(){await this.ensureInitialized(),await this.postRequestAndWait({method:`sui_disconnect`,params:[],interactionRequired:!1}),this._accounts=[],this.notifyChange({accounts:[]})}async signPersonalMessage(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.postRequestAndWait({method:`sui_signPersonalMessage`,params:[{message:Array.from(e.message),account:t,chain:e.chain}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(n.error)throw Error(n.error.message||`Failed to sign message`);return{bytes:n.data.bytes,signature:n.data.signature}}async extractTransferAddresses(e,t=!1){try{let{Transaction:n}=await import(`@mysten/sui/transactions`),r=(t?n.fromKind(e):n.from(e)).getData(),i=[];for(let e of r.commands){if(e.$kind!==`TransferObjects`)continue;let t=e.TransferObjects.address;if(t.$kind!==`Input`)continue;let n=t.Input,a=r.inputs[n];if(!a||a.$kind!==`Pure`)continue;let o=Uint8Array.from(atob(a.Pure.bytes),e=>e.charCodeAt(0));if(o.length!==32)continue;let s=`0x`+Array.from(o).map(e=>e.toString(16).padStart(2,`0`)).join(``);i.push(s)}return i}catch{return[]}}async resolveTransactionBytes(e,t=`sui:mainnet`){if(e instanceof Uint8Array)return{bytes:e,kind:`transaction-data`};if(Array.isArray(e))return{bytes:new Uint8Array(e),kind:`transaction-data`};if(typeof e==`string`)try{return{bytes:Uint8Array.from(atob(e),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{throw Error(`Transaction string must be base64 encoded bytes. If you have a serialized transaction JSON, please build it to bytes first.`)}else if(e&&typeof e==`object`){if(typeof e.build==`function`)try{let{SuiJsonRpcClient:n}=await import(`@mysten/sui/jsonRpc`),r=E(t),i=new n({url:T(t),network:r});return{bytes:await e.build({client:i,onlyTransactionKind:!0}),kind:`transaction-kind`}}catch(e){throw console.warn(`[SuiWallet] Failed to build transaction object:`,e),Error(`Failed to build transaction: ${e instanceof Error?e.message:String(e)}`)}if(typeof e.serialize==`function`)try{let t=await e.serialize();if(typeof t==`string`)return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`};if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] serialize() failed:`,e)}if(typeof e.toJSON==`function`)try{let t=await e.toJSON();if(typeof t==`string`)try{return{bytes:Uint8Array.from(atob(t),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{try{let e=JSON.parse(t);if(e.bytes&&typeof e.bytes==`string`)return{bytes:Uint8Array.from(atob(e.bytes),e=>e.charCodeAt(0)),kind:`transaction-data`}}catch{}}}catch(e){console.warn(`[SuiWallet] toJSON() failed:`,e)}if(typeof e.getData==`function`)try{let t=e.getData();if(t instanceof Uint8Array)return{bytes:t,kind:`transaction-data`}}catch(e){console.warn(`[SuiWallet] getData() failed:`,e)}throw Error(`Unsupported transaction format. Keys: ${Object.keys(e).join(`, `)}`)}else throw Error(`Unsupported transaction format: ${typeof e}. Please pass Uint8Array bytes or a Transaction object.`)}async signTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.postRequestAndWait({method:`sui_signTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain,withPT:e.withPT}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(r.error)throw Error(r.error.message||`Failed to sign transaction`);return{bytes:r.data.bytes,signature:r.data.signature}}async signAndExecuteTransaction(e){await this.ensureInitialized();let t=e.account.address;if(!this._accounts.some(e=>e.address===t))throw Error(`Account ${t} is not connected`);let n=await this.resolveTransactionBytes(e.transaction,e.chain),r=await this.extractTransferAddresses(n.bytes,n.kind===`transaction-kind`),i=await this.postRequestAndWait({method:`sui_signAndExecuteTransaction`,params:[{...n.kind===`transaction-kind`?{transactionKind:Array.from(n.bytes)}:{transaction:Array.from(n.bytes)},account:t,chain:e.chain,options:e.options,requestType:e.requestType,withPT:e.withPT,toAddresses:r.length>0?r:void 0}],interactionRequired:!0,signal:e.signal,timeoutMs:e.timeoutMs});if(i.error)throw Error(i.error.message||`Failed to sign and execute transaction`);return i.data}async switchChain(e){if(await this.ensureInitialized(),!this._chains.includes(e.chain))throw Error(`Chain ${e.chain} is not supported`);let t=await this.postRequestAndWait({method:`sui_switchChain`,params:[e],interactionRequired:!1});if(t.error)throw Error(t.error.message||`Failed to switch chain`);this.notifyChange({chains:this._chains,accounts:this._accounts})}on(e,t){return e===`change`?(this.changeListeners.add(t),()=>{this.changeListeners.delete(t)}):(this.internalEventEmitter.on(e,t),()=>{this.internalEventEmitter.removeListener(e,t)})}removeListener(e,t){if(e===`change`){this.changeListeners.delete(t);return}this.internalEventEmitter.removeListener(e,t)}get features(){return{"standard:connect":{version:`1.0.0`,connect:this.connect.bind(this)},"standard:disconnect":{version:`1.0.0`,disconnect:this.disconnect.bind(this)},"standard:events":{version:`1.0.0`,on:this.on.bind(this)},"sui:signPersonalMessage":{version:`1.1.0`,signPersonalMessage:this.signPersonalMessage.bind(this)},"sui:signTransaction":{version:`2.0.0`,signTransaction:this.signTransaction.bind(this)},"sui:signAndExecuteTransaction":{version:`1.0.0`,signAndExecuteTransaction:this.signAndExecuteTransaction.bind(this)},"sui:signTransactionBlock":{version:`2.0.0`,signTransactionBlock:this.signTransactionBlock.bind(this)},"sui:signAndExecuteTransactionBlock":{version:`1.0.0`,signAndExecuteTransactionBlock:this.signAndExecuteTransactionBlock.bind(this)},"sui:switchChain":{version:`1.0.0`,switchChain:this.switchChain.bind(this)}}}async signTransactionBlock(e){return this.signTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,signal:e.signal,timeoutMs:e.timeoutMs,withPT:e.withPT})}async signAndExecuteTransactionBlock(e){return this.signAndExecuteTransaction({transaction:e.transactionBlock,account:e.account,chain:e.chain,options:e.options,requestType:e.requestType,signal:e.signal,timeoutMs:e.timeoutMs,withPT:e.withPT})}async requestPermissionToken(e){await this.ensureInitialized();let n={...e,walletMode:this.accountMode},r=await this.postRequestAndWait({method:t.waap_requestPermissionToken,params:[n],interactionRequired:!0});if(r.error)throw Error(r.error.message||`Failed to request permission token`);return r.data}async getPermissionTokenStatus(e){return await this.ensureInitialized(),(await this.postRequestAndWait({method:t.waap_getPermissionTokenStatus,params:[e],interactionRequired:!1})).data}async clearPermissionToken(e){return await this.ensureInitialized(),(await this.postRequestAndWait({method:t.waap_clearPermissionToken,params:[e],interactionRequired:!1})).data}async requestEmail(){await this.ensureInitialized();let e=await this.postRequestAndWait({method:t.silk_requestEmail,params:[],interactionRequired:!0});if(e.error)throw Error(e.error.message||`Failed to request email`);return e.data}async postRequestAndWait(n){let r;try{n.interactionRequired&&d({layout:n.method===t.login?`auth`:`signing`}),r=await this.walletMessageManager.postSilkRequest({method:n.method,params:n.params,interactionRequired:n.interactionRequired});let e=await m({eventEmitter:this.internalEventEmitter,id:r,method:n.method,interactionRequired:n.interactionRequired,signal:n.signal,timeoutMs:n.timeoutMs,onCancel:()=>{this.walletMessageManager.cancelSilkRequest(r,n.method),n.interactionRequired&&s()}});if(e.error)throw Error(e.error.message);return e}catch(t){throw n.interactionRequired&&r===void 0&&s(),e(t,{chain:`sui`,method:String(n.method),requestId:r})}}notifyChange(e){Array.from(this.changeListeners).forEach(t=>{t(e)})}};function O(e,t,n=!0){let r=()=>(a(e),_(t).contentWindow),i=e.deferIframe===!1,o=e.deferIframe===void 0,c=i?r():null;if(i&&!c)throw Error(`Failed to create WaaP iframe`);let l=new D(c,e,r,{...e,chains:[`sui`]});l.setAccountMode(t),n&&i&&l.preload().catch(()=>void 0);let u=l.destroy.bind(l);if(l.destroy=()=>{u(),g()},n&&o){let e=f(l),t=l.destroy.bind(l);l.destroy=()=>{e(),t()}}return l.ui.on(`show_modal`,()=>{d(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=`none`})}),l.ui.on(`hide_modal`,()=>{s(),document.querySelectorAll(`[data-dapp-kit][class*="overlay"]`).forEach(e=>{e.style.display=``})}),l}function k(e={}){let t=()=>(a(e),_(`tap`).contentWindow),n=e.deferIframe===!1,r=e.deferIframe===void 0,i=n?t():null;if(n&&!i)throw Error(`Failed to create WaaP iframe`);let o=new y(i,e,t,{...e,chains:[`solana`]});n&&o.preload().catch(()=>void 0);let c=o.destroy.bind(o);if(o.destroy=()=>{c(),g()},r){let e=f(o),t=o.destroy.bind(o);o.destroy=()=>{e(),t()}}return o.ui.on(`show_modal`,()=>{d()}),o.ui.on(`hide_modal`,()=>{s()}),o}function A(e={}){if(C(),`chains`in e)throw Error("initWaaP accepts one `chain`; use initWaaPMulti({ chains }) for TAP.");switch(e.chain){case`sui`:return O(e,`tap`);case`solana`:return k(e);default:return p(e)}}const j=[`evm`,`sui`,`solana`],M=[`evm`,`sui`,`solana`];function N(e){C();let n=Array.from(new Set(e.chains??[]));if(n.length===0)throw Error(`initWaaPSquid requires at least one chain facade`);if(n.some(e=>!j.includes(e)))throw Error(`initWaaPSquid received an unsupported chain facade`);let i=n.includes(`evm`),s=n.includes(`sui`),c=n.includes(`solana`),l=u({referralCode:e.referralCode,config:e.config,project:e.project,environment:e.environment,walletOrigin:e.walletOrigin,useStaging:e.useStaging,walletConnectProjectId:e.walletConnectProjectId,asyncTxs:e.asyncTxs,deferIframe:e.deferIframe},`squid`,!1,n,i),d=s?O(e,`squid`,!1):void 0,p=()=>(a(e),_(`squid`).contentWindow),m=c?new y(e.deferIframe===!1?p():null,{useStaging:e.useStaging,environment:e.environment,walletOrigin:e.walletOrigin,referralCode:e.referralCode,project:e.project,config:e.config,deferIframe:e.deferIframe},p,{...e,chains:[`solana`]}):void 0;m?.setAccountMode(`squid`);let h;e.deferIframe===!1?l.preload().catch(()=>void 0):e.deferIframe===void 0&&(h=f(l));let b={state:`absent`},x=null,S=0,w=null,T=()=>{w!==null&&(clearTimeout(w),w=null)},E=()=>{T(),w=setTimeout(()=>{w=null,x&&l.emit(v.squidFailed,{lifecycleId:x,error:`Squid provisioning stalled; call onboard() to try again.`})},18e4),w.unref?.()},D=()=>{T(),x=null,b={state:`absent`}},k=e=>!e.lifecycleId||e.lifecycleId===x,A=()=>b.state===`active`;l.on(v.squidPending,e=>{if(!k(e))return;E();let t=e?.transactionDigest;b={state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e?.message?{message:e.message}:{}}}),l.on(v.squidReady,e=>{k(e)&&(T(),b={state:`active`})}),l.on(v.squidFailed,e=>{k(e)&&(T(),b={state:`failed`,...e?.error?{message:e.error}:{}},x=null)});let M=e=>{if(l.getLoginMethod()===null)throw new r(`not_authenticated`,`Not authenticated: call login() before connecting or signing.`,{operation:{chain:e,method:`connect`}});if(!A())throw new r(`not_connected`,`Squid is not ready: call onboard() after login before connecting or signing.`)},N=l.request.bind(l);if(l.request=async e=>([`eth_requestAccounts`,`eth_accounts`,`eth_sendTransaction`,`eth_signTransaction`,`personal_sign`,`eth_signTypedData_v4`].includes(e.method)&&M(`evm`),N(e)),d){let e=d.connect.bind(d);d.connect=async t=>(M(`sui`),e(t))}if(m){let e=m.connect.bind(m);m.connect=async t=>(M(`solana`),e(t))}let P=async()=>{if(l.getLoginMethod()===null)throw new r(`not_authenticated`,`Not authenticated: call login() before onboarding Squid.`);if(A()||x)return;let e=`squid-${++S}`;x=e,b={state:`provisioning`},E();try{await l.walletMessageManager.pingIframe(),await o({method:t.enter_lite_mode,params:[window.location.origin,e]},!1,l.walletMessageManager,l.internalEventEmitter)}catch(t){throw x===e&&(T(),x=null,b={state:`failed`,message:t instanceof Error?t.message:String(t)}),t}},F=()=>({...b}),I=e=>{if(b.state===`active`||!e.authenticated||e.activeMode!==`squid`||!e.squid)return;let t={...x?{lifecycleId:x}:{},evm:e.squid.sqd1.evm,sui:e.squid.sqd2.sui,solana:e.squid.sqd2.solana};T(),b={state:`active`},x=null,l.emit(v.squidReady,t)},L=async()=>(await P(),F()),R=l.login.bind(l),z=async e=>{let t=await R(e);return d?.setLoginMethod(t),m?.setLoginMethod(t),(t?await l.session.getAccountStatus().catch(()=>null):null)?.squid&&(await l.reassertIframeAccountMode().catch(()=>void 0),await P()),t&&l.emit(`connect`),t},B=l.logout.bind(l),V=async()=>{await B(),d?.setLoginMethod(null),m?.setLoginMethod(null),D()},H;H={login:z,logout:V,getLoginMethod:()=>l.getLoginMethod(),getAccountStatus:async()=>{let e=await l.session.getAccountStatus();return I(e),e},getSquidStatus:F,on:(e,t)=>(l.on(e,t),H),removeListener:(e,t)=>(l.removeListener(e,t),H)},l.login=H.login,l.logout=H.logout,d&&(d.login=()=>H.login(),d.logout=()=>H.logout()),m&&(m.login=()=>H.login(),m.logout=()=>H.logout());let U={onboard:P,squid:{onboard:P,getStatus:F,onboardWithStatus:L},getSquidStatus:F,session:H,getAccountStatus:()=>{let e=l.getAccountStatus(),t=d?.getAccountStatus(),n=m?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`squid`:null,mode:`squid`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},preload:()=>l.preload(),destroy:()=>{h?.(),D(),l.destroy(),d?.destroy(),m?.destroy(),g()}};return i&&Object.assign(U,{evm:l,ethereum:l}),d&&Object.assign(U,{sui:d}),m&&Object.assign(U,{solana:m}),j.every(e=>n.includes(e))&&Object.assign(U,{auth:l}),U}function P(e){C();let t=Array.from(new Set(e.chains));if(t.length===0)throw Error(`initWaaPMulti requires at least one chain facade`);if(t.some(e=>!M.includes(e)))throw Error(`initWaaPMulti received an unsupported chain facade`);let n=t.includes(`evm`),r=t.includes(`sui`),i=t.includes(`solana`),o=u({referralCode:e.referralCode,config:e.config,project:e.project,environment:e.environment,walletOrigin:e.walletOrigin,useStaging:e.useStaging,walletConnectProjectId:e.walletConnectProjectId,asyncTxs:e.asyncTxs,deferIframe:e.deferIframe},`tap`,!1,t,n),s=r?O({...e,config:e.config},`tap`,!1):void 0,c=()=>(a(e),_(`tap`).contentWindow),l=i?new y(e.deferIframe===!1?c():null,{useStaging:e.useStaging,environment:e.environment,walletOrigin:e.walletOrigin,referralCode:e.referralCode,project:e.project,config:e.config,deferIframe:e.deferIframe},c,{...e,chains:[`solana`]}):void 0;l?.setAccountMode(`tap`);let d;e.deferIframe===!1?o.preload().catch(()=>void 0):e.deferIframe===void 0&&(d=f(o));let p=o.login.bind(o),m=async e=>{let t=await p(e);return s?.setLoginMethod(t),l?.setLoginMethod(t),t&&o.emit(`connect`),t},h=o.logout.bind(o),v=async()=>{await h(),s?.setLoginMethod(null),l?.setLoginMethod(null)},b;b={login:m,logout:v,getLoginMethod:()=>o.getLoginMethod(),getAccountStatus:()=>o.session.getAccountStatus(),on:(e,t)=>(o.on(e,t),b),removeListener:(e,t)=>(o.removeListener(e,t),b)},o.login=b.login,o.logout=b.logout,s&&(s.login=()=>b.login(),s.logout=()=>b.logout()),l&&(l.login=()=>b.login(),l.logout=()=>b.logout());let x=()=>{let e=o.getAccountStatus(),t=s?.getAccountStatus(),n=l?.getAccountStatus();return{authenticated:e.authenticated||!!t?.authenticated||!!n?.authenticated,loginMethod:e.loginMethod??t?.loginMethod??n?.loginMethod??null,activeMode:e.authenticated||t?.authenticated||n?.authenticated?`tap`:null,mode:`tap`,conversion:e.conversion,tap:e.tap,squid:e.squid,accounts:{...e.accounts,...t?.accounts,...n?.accounts}}},S=o.destroy.bind(o),w=s?.destroy.bind(s),T=l?.destroy.bind(l),E=()=>{d?.(),S(),w?.(),T?.(),g()},D={session:b,getAccountStatus:x,preload:()=>o.preload(),destroy:E};return n&&(o.destroy=E,Object.assign(D,{evm:o,ethereum:o})),s&&(s.destroy=E,Object.assign(D,{sui:s})),l&&(l.destroy=E,Object.assign(D,{solana:l})),D}function F(e={}){return console.warn("[WaaP SDK] `initWaaPSui()` is deprecated. Use `initWaaP({ chain: 'sui' })` instead."),A({...e,chain:`sui`})}function I(e={}){return A({...e,chain:`solana`})}function L(e={}){return P({...e,chains:e.chains??M})}export{F as a,N as i,P as n,L as o,I as r,D as s,A as t};
@@ -0,0 +1 @@
1
+ const e=require("./asyncSigning-B0KrmKk7.js");let t=require("react");function n(e,n){let r=e&&`request`in e?e:void 0,i=r?n:e,[a,o]=(0,t.useState)(new Map),s=(0,t.useRef)(i);return(0,t.useEffect)(()=>{s.current=i},[i]),(0,t.useEffect)(()=>{let e=r||window.waap||window.silk;if(!e){console.warn(`[useWaapTransaction] WaaP provider not found. Make sure initWaaP() was called.`);return}let t=e=>{o(t=>{let n=new Map(t);return n.set(e.txHash,{status:`signed`,txHash:e.txHash,pendingTxId:e.pendingTxId,signature:e.signature,serializedTx:e.serializedTx}),n}),s.current?.onSigned?.(e)},n=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`tx_pending`,txHash:e.txHash,pendingTxId:e.pendingTxId}),n}),s.current?.onTxPending?.(e)},i=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`confirmed`,txHash:e.txHash,pendingTxId:e.pendingTxId,receipt:e.receipt}),n}),s.current?.onConfirmed?.(e)},a=e=>{o(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`failed`,txHash:e.txHash,pendingTxId:e.pendingTxId,error:e.error,stage:e.stage}),n}),s.current?.onFailed?.(e)};return e.on(`waap_sign_complete`,t),e.on(`waap_tx_pending`,n),e.on(`waap_tx_confirmed`,i),e.on(`waap_tx_failed`,a),()=>{e.removeListener?.(`waap_sign_complete`,t),e.removeListener?.(`waap_tx_pending`,n),e.removeListener?.(`waap_tx_confirmed`,i),e.removeListener?.(`waap_tx_failed`,a)}},[r]),{sendTransaction:(0,t.useCallback)(async e=>{let t=r||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return await t.request({method:`eth_sendTransaction`,params:e})},[r]),signTransaction:(0,t.useCallback)(async e=>{let t=r||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return t.request({method:`eth_signTransaction`,params:e})},[r]),pendingTransactions:a,isAnyPending:Array.from(a.values()).some(e=>e.status===`signed`||e.status===`tx_pending`)}}const r=()=>({state:`absent`}),i=(e,t)=>e?.getSquidStatus?.()??t;function a(n){let[a,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(()=>i(n,r())),[l,u]=(0,t.useState)(null),[d,f]=(0,t.useState)(null),[p,m]=(0,t.useState)(null);return(0,t.useEffect)(()=>{if(!n)return;let t=e=>{let t=i(n,e);return c(t),t};t(r());let a=e=>{let n=e.transactionDigest;t({state:n?`awaiting-network`:`provisioning`,...n?{operationId:n,transactionDigest:n}:{},...e.message?{message:e.message}:{}})},s=e=>{t({state:`active`}).state===`active`&&(u(e.evm),f(e.sui??null),m(e.solana??null))},l=e=>{t({state:`failed`,message:e.error})},d=()=>o(!0),p=e=>{u(e.length>0?e[0]:null)},h=()=>{o(!1),c(r()),u(null),f(null),m(null)};return n.on(e.t.squidPending,a),n.on(e.t.squidReady,s),n.on(e.t.squidFailed,l),n.on(`connect`,d),n.on(`accountsChanged`,p),n.on(`disconnect`,h),()=>{n.removeListener(e.t.squidPending,a),n.removeListener(e.t.squidReady,s),n.removeListener(e.t.squidFailed,l),n.removeListener(`connect`,d),n.removeListener(`accountsChanged`,p),n.removeListener(`disconnect`,h)}},[n]),{isConnected:a,isPending:s.state===`provisioning`||s.state===`awaiting-network`,squidReady:s.state===`active`,error:s.state===`failed`?s.message??null:null,address:l,suiAddress:d,solanaAddress:p,squidStatus:s}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
@@ -1,5 +1,5 @@
1
- import { s as RequestArguments } from "./types-BmCqyQtu.mjs";
2
- import { u as WaaPSquidStatus } from "./index-C0mLQs_a.mjs";
1
+ import { c as RequestArguments } from "./types-x7TOncUp.mjs";
2
+ import { u as WaaPSquidStatus } from "./index-XdQjHMzI.mjs";
3
3
  //#region ../silk-interface-core/dist/esm/types/asyncSigning.d.ts
4
4
  /**
5
5
  * Types for async transaction feature.
@@ -1,5 +1,5 @@
1
- import { s as RequestArguments } from "./types-BmCqyQtu.js";
2
- import { u as WaaPSquidStatus } from "./index-DOIss_GK.js";
1
+ import { c as RequestArguments } from "./types-x7TOncUp.js";
2
+ import { u as WaaPSquidStatus } from "./index-DNyKwJcJ.js";
3
3
  //#region ../silk-interface-core/dist/esm/types/asyncSigning.d.ts
4
4
  /**
5
5
  * Types for async transaction feature.
@@ -0,0 +1 @@
1
+ import{t as e}from"./asyncSigning-CzqBbYDP.mjs";import{useCallback as t,useEffect as n,useRef as r,useState as i}from"react";function a(e,a){let o=e&&`request`in e?e:void 0,s=o?a:e,[c,l]=i(new Map),u=r(s);return n(()=>{u.current=s},[s]),n(()=>{let e=o||window.waap||window.silk;if(!e){console.warn(`[useWaapTransaction] WaaP provider not found. Make sure initWaaP() was called.`);return}let t=e=>{l(t=>{let n=new Map(t);return n.set(e.txHash,{status:`signed`,txHash:e.txHash,pendingTxId:e.pendingTxId,signature:e.signature,serializedTx:e.serializedTx}),n}),u.current?.onSigned?.(e)},n=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`tx_pending`,txHash:e.txHash,pendingTxId:e.pendingTxId}),n}),u.current?.onTxPending?.(e)},r=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`confirmed`,txHash:e.txHash,pendingTxId:e.pendingTxId,receipt:e.receipt}),n}),u.current?.onConfirmed?.(e)},i=e=>{l(t=>{let n=new Map(t),r=n.get(e.txHash);return n.set(e.txHash,{...r??{txHash:e.txHash},status:`failed`,txHash:e.txHash,pendingTxId:e.pendingTxId,error:e.error,stage:e.stage}),n}),u.current?.onFailed?.(e)};return e.on(`waap_sign_complete`,t),e.on(`waap_tx_pending`,n),e.on(`waap_tx_confirmed`,r),e.on(`waap_tx_failed`,i),()=>{e.removeListener?.(`waap_sign_complete`,t),e.removeListener?.(`waap_tx_pending`,n),e.removeListener?.(`waap_tx_confirmed`,r),e.removeListener?.(`waap_tx_failed`,i)}},[o]),{sendTransaction:t(async e=>{let t=o||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return await t.request({method:`eth_sendTransaction`,params:e})},[o]),signTransaction:t(async e=>{let t=o||window.waap||window.silk;if(!t)throw Error(`WaaP provider not found`);return t.request({method:`eth_signTransaction`,params:e})},[o]),pendingTransactions:c,isAnyPending:Array.from(c.values()).some(e=>e.status===`signed`||e.status===`tx_pending`)}}const o=()=>({state:`absent`}),s=(e,t)=>e?.getSquidStatus?.()??t;function c(t){let[r,a]=i(!1),[c,l]=i(()=>s(t,o())),[u,d]=i(null),[f,p]=i(null),[m,h]=i(null);return n(()=>{if(!t)return;let n=e=>{let n=s(t,e);return l(n),n};n(o());let r=e=>{let t=e.transactionDigest;n({state:t?`awaiting-network`:`provisioning`,...t?{operationId:t,transactionDigest:t}:{},...e.message?{message:e.message}:{}})},i=e=>{n({state:`active`}).state===`active`&&(d(e.evm),p(e.sui??null),h(e.solana??null))},c=e=>{n({state:`failed`,message:e.error})},u=()=>a(!0),f=e=>{d(e.length>0?e[0]:null)},m=()=>{a(!1),l(o()),d(null),p(null),h(null)};return t.on(e.squidPending,r),t.on(e.squidReady,i),t.on(e.squidFailed,c),t.on(`connect`,u),t.on(`accountsChanged`,f),t.on(`disconnect`,m),()=>{t.removeListener(e.squidPending,r),t.removeListener(e.squidReady,i),t.removeListener(e.squidFailed,c),t.removeListener(`connect`,u),t.removeListener(`accountsChanged`,f),t.removeListener(`disconnect`,m)}},[t]),{isConnected:r,isPending:c.state===`provisioning`||c.state===`awaiting-network`,squidReady:c.state===`active`,error:c.state===`failed`?c.message??null:null,address:u,suiAddress:f,solanaAddress:m,squidStatus:c}}export{a as n,c as t};