@zerodev/wallet-react 0.0.1-alpha.1 → 0.0.1-alpha.11

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 (46) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +30 -17
  3. package/dist/_cjs/actions.js +62 -24
  4. package/dist/_cjs/connector.js +82 -48
  5. package/dist/_cjs/hooks/useExportPrivateKey.js +18 -0
  6. package/dist/_cjs/hooks/useGetUserEmail.js +19 -0
  7. package/dist/_cjs/index.js +8 -1
  8. package/dist/_cjs/oauth.js +60 -55
  9. package/dist/_cjs/provider.js +5 -2
  10. package/dist/_cjs/store.js +4 -9
  11. package/dist/_esm/actions.js +74 -27
  12. package/dist/_esm/connector.js +98 -55
  13. package/dist/_esm/hooks/useExportPrivateKey.js +18 -0
  14. package/dist/_esm/hooks/useGetUserEmail.js +19 -0
  15. package/dist/_esm/index.js +3 -1
  16. package/dist/_esm/oauth.js +71 -53
  17. package/dist/_esm/provider.js +5 -2
  18. package/dist/_esm/store.js +4 -10
  19. package/dist/_types/actions.d.ts +35 -6
  20. package/dist/_types/actions.d.ts.map +1 -1
  21. package/dist/_types/connector.d.ts +0 -2
  22. package/dist/_types/connector.d.ts.map +1 -1
  23. package/dist/_types/hooks/useExportPrivateKey.d.ts +18 -0
  24. package/dist/_types/hooks/useExportPrivateKey.d.ts.map +1 -0
  25. package/dist/_types/hooks/useGetUserEmail.d.ts +18 -0
  26. package/dist/_types/hooks/useGetUserEmail.d.ts.map +1 -0
  27. package/dist/_types/index.d.ts +4 -2
  28. package/dist/_types/index.d.ts.map +1 -1
  29. package/dist/_types/oauth.d.ts +25 -12
  30. package/dist/_types/oauth.d.ts.map +1 -1
  31. package/dist/_types/provider.d.ts.map +1 -1
  32. package/dist/_types/store.d.ts +11 -7
  33. package/dist/_types/store.d.ts.map +1 -1
  34. package/dist/tsconfig.build.tsbuildinfo +1 -1
  35. package/package.json +2 -2
  36. package/src/actions.test.ts +895 -0
  37. package/src/actions.ts +124 -44
  38. package/src/connector.ts +117 -65
  39. package/src/hooks/useExportPrivateKey.ts +57 -0
  40. package/src/hooks/useGetUserEmail.ts +52 -0
  41. package/src/index.ts +9 -2
  42. package/src/oauth.test.ts +445 -0
  43. package/src/oauth.ts +97 -78
  44. package/src/provider.ts +5 -2
  45. package/src/store.ts +15 -16
  46. package/tsconfig.build.tsbuildinfo +1 -1
@@ -2,33 +2,8 @@ import { sha256 } from 'viem';
2
2
  export const OAUTH_PROVIDERS = {
3
3
  GOOGLE: 'google',
4
4
  };
5
- const GOOGLE_AUTH_URL = 'https://accounts.google.com/o/oauth2/v2/auth';
6
5
  const POPUP_WIDTH = 500;
7
6
  const POPUP_HEIGHT = 600;
8
- export function buildOAuthUrl(params) {
9
- const { provider, clientId, redirectUri, nonce, state } = params;
10
- if (provider !== OAUTH_PROVIDERS.GOOGLE) {
11
- throw new Error(`Unsupported OAuth provider: ${provider}`);
12
- }
13
- const authUrl = new URL(GOOGLE_AUTH_URL);
14
- authUrl.searchParams.set('client_id', clientId);
15
- authUrl.searchParams.set('redirect_uri', redirectUri);
16
- authUrl.searchParams.set('response_type', 'id_token');
17
- authUrl.searchParams.set('scope', 'openid email profile');
18
- authUrl.searchParams.set('nonce', nonce);
19
- authUrl.searchParams.set('prompt', 'select_account');
20
- let stateParam = `provider=${provider}`;
21
- if (state) {
22
- const additionalState = Object.entries(state)
23
- .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
24
- .join('&');
25
- if (additionalState) {
26
- stateParam += `&${additionalState}`;
27
- }
28
- }
29
- authUrl.searchParams.set('state', stateParam);
30
- return authUrl.toString();
31
- }
32
7
  export function openOAuthPopup(url) {
33
8
  const width = POPUP_WIDTH;
34
9
  const height = POPUP_HEIGHT;
@@ -40,38 +15,81 @@ export function openOAuthPopup(url) {
40
15
  }
41
16
  return authWindow;
42
17
  }
43
- export function extractOAuthToken(url) {
44
- const hashParams = new URLSearchParams(url.split('#')[1]);
45
- let idToken = hashParams.get('id_token');
46
- if (!idToken) {
47
- const queryParams = new URLSearchParams(url.split('?')[1]);
48
- idToken = queryParams.get('id_token');
18
+ export function generateOAuthNonce(publicKey) {
19
+ return sha256(publicKey).replace(/^0x/, '');
20
+ }
21
+ /**
22
+ * Build OAuth URL that redirects to backend's OAuth endpoint
23
+ * The backend handles PKCE, client credentials, and token exchange
24
+ */
25
+ export function buildBackendOAuthUrl(params) {
26
+ const { provider, backendUrl, projectId, publicKey, returnTo } = params;
27
+ if (provider !== OAUTH_PROVIDERS.GOOGLE) {
28
+ throw new Error(`Unsupported OAuth provider: ${provider}`);
49
29
  }
50
- return idToken;
30
+ const oauthUrl = new URL(`${backendUrl}/oauth/google/login`);
31
+ oauthUrl.searchParams.set('project_id', projectId);
32
+ oauthUrl.searchParams.set('pub_key', publicKey.replace(/^0x/, ''));
33
+ oauthUrl.searchParams.set('return_to', returnTo);
34
+ return oauthUrl.toString();
51
35
  }
52
- export function pollOAuthPopup(authWindow, originUrl, onSuccess, onError) {
53
- const interval = setInterval(() => {
54
- try {
55
- if (authWindow.closed) {
56
- clearInterval(interval);
57
- onError(new Error('Authentication window was closed'));
58
- return;
59
- }
60
- const url = authWindow.location.href || '';
61
- if (url.startsWith(originUrl)) {
62
- const token = extractOAuthToken(url);
63
- if (token) {
64
- authWindow.close();
65
- clearInterval(interval);
66
- onSuccess(token);
67
- }
68
- }
36
+ /**
37
+ * Listen for OAuth completion via postMessage from popup
38
+ * The popup sends a message when it detects a successful redirect
39
+ */
40
+ export function listenForOAuthMessage(authWindow, expectedOrigin, onSuccess, onError) {
41
+ let cleaned = false;
42
+ const handleMessage = (event) => {
43
+ // Only trust messages from expected origin
44
+ if (event.origin !== expectedOrigin)
45
+ return;
46
+ if (!event.data || typeof event.data !== 'object')
47
+ return;
48
+ if (event.data.type === 'oauth_success') {
49
+ cleanup();
50
+ onSuccess();
69
51
  }
70
- catch {
71
- // Ignore cross-origin errors
52
+ else if (event.data.type === 'oauth_error') {
53
+ cleanup();
54
+ onError(new Error(event.data.error || 'OAuth authentication failed'));
55
+ }
56
+ };
57
+ const checkWindowClosed = setInterval(() => {
58
+ if (authWindow.closed) {
59
+ cleanup();
60
+ onError(new Error('Authentication window was closed'));
72
61
  }
73
62
  }, 500);
63
+ const cleanup = () => {
64
+ if (cleaned)
65
+ return;
66
+ cleaned = true;
67
+ window.removeEventListener('message', handleMessage);
68
+ clearInterval(checkWindowClosed);
69
+ };
70
+ window.addEventListener('message', handleMessage);
71
+ return cleanup;
74
72
  }
75
- export function generateOAuthNonce(publicKey) {
76
- return sha256(publicKey).replace(/^0x/, '');
73
+ /**
74
+ * Handle OAuth callback on the return page
75
+ * Call this on the page that receives the OAuth redirect
76
+ * It sends a postMessage to the opener and closes the window
77
+ */
78
+ export function handleOAuthCallback(successParam = 'oauth_success') {
79
+ const urlParams = new URLSearchParams(window.location.search);
80
+ const isSuccess = urlParams.get(successParam) === 'true';
81
+ const error = urlParams.get('error');
82
+ if (window.opener) {
83
+ if (isSuccess) {
84
+ window.opener.postMessage({ type: 'oauth_success' }, window.location.origin);
85
+ window.close();
86
+ return true;
87
+ }
88
+ if (error) {
89
+ window.opener.postMessage({ type: 'oauth_error', error }, window.location.origin);
90
+ window.close();
91
+ return false;
92
+ }
93
+ }
94
+ return false;
77
95
  }
@@ -79,7 +79,10 @@ export function createProvider({ store, config, }) {
79
79
  },
80
80
  async request({ method, params }) {
81
81
  const state = store.getState();
82
- const activeChainId = state.chainIds[0];
82
+ const activeChainId = state.activeChainId;
83
+ if (!activeChainId) {
84
+ throw new Error('No active chain');
85
+ }
83
86
  switch (method) {
84
87
  case 'eth_accounts': {
85
88
  const account = state.kernelAccounts.get(activeChainId);
@@ -156,7 +159,7 @@ export function createProvider({ store, config, }) {
156
159
  const [{ chainId }] = params;
157
160
  const chainId_number = parseInt(chainId, 16);
158
161
  // Update active chain
159
- store.getState().setActiveChain(chainId_number);
162
+ store.getState().setActiveChainId(chainId_number);
160
163
  // Emit chainChanged event
161
164
  emitter.emit('chainChanged', chainId);
162
165
  return null;
@@ -5,7 +5,7 @@ export const createZeroDevWalletStore = () => create()(subscribeWithSelector(per
5
5
  wallet: null,
6
6
  eoaAccount: null,
7
7
  session: null,
8
- chainIds: [],
8
+ activeChainId: null,
9
9
  kernelAccounts: new Map(),
10
10
  kernelClients: new Map(),
11
11
  isExpiring: false,
@@ -24,13 +24,7 @@ export const createZeroDevWalletStore = () => create()(subscribeWithSelector(per
24
24
  set({ kernelClients: clients });
25
25
  },
26
26
  setSession: (session) => set({ session }),
27
- setActiveChain: (chainId) => {
28
- const { chainIds } = get();
29
- // Move chainId to front, remove duplicates
30
- set({
31
- chainIds: [chainId, ...chainIds.filter((id) => id !== chainId)],
32
- });
33
- },
27
+ setActiveChainId: (chainId) => set({ activeChainId: chainId }),
34
28
  setIsExpiring: (isExpiring) => set({ isExpiring }),
35
29
  setOAuthConfig: (config) => set({ oauthConfig: config }),
36
30
  clear: () => set({
@@ -39,13 +33,13 @@ export const createZeroDevWalletStore = () => create()(subscribeWithSelector(per
39
33
  kernelAccounts: new Map(),
40
34
  kernelClients: new Map(),
41
35
  isExpiring: false,
42
- chainIds: [],
36
+ activeChainId: null,
43
37
  }),
44
38
  }), {
45
39
  name: 'zerodev-wallet',
46
40
  // Only persist session data, not clients or accounts
47
41
  partialize: (state) => ({
48
42
  session: state.session,
49
- chainIds: state.chainIds,
43
+ activeChainId: state.activeChainId,
50
44
  }),
51
45
  })));
@@ -32,16 +32,15 @@ export declare namespace loginPasskey {
32
32
  }
33
33
  /**
34
34
  * Authenticate with OAuth (opens popup)
35
+ * Uses backend OAuth flow where the backend handles PKCE and token exchange
35
36
  */
36
37
  export declare function authenticateOAuth(config: Config, parameters: {
37
38
  provider: OAuthProvider;
38
- clientId?: string;
39
39
  connector?: Connector;
40
40
  }): Promise<void>;
41
41
  export declare namespace authenticateOAuth {
42
42
  type Parameters = {
43
43
  provider: OAuthProvider;
44
- clientId?: string;
45
44
  connector?: Connector;
46
45
  };
47
46
  type ReturnType = void;
@@ -58,7 +57,6 @@ export declare function sendOTP(config: Config, parameters: {
58
57
  connector?: Connector;
59
58
  }): Promise<{
60
59
  otpId: string;
61
- subOrganizationId: string;
62
60
  }>;
63
61
  export declare namespace sendOTP {
64
62
  type Parameters = {
@@ -70,7 +68,6 @@ export declare namespace sendOTP {
70
68
  };
71
69
  type ReturnType = {
72
70
  otpId: string;
73
- subOrganizationId: string;
74
71
  };
75
72
  type ErrorType = Error;
76
73
  }
@@ -80,14 +77,12 @@ export declare namespace sendOTP {
80
77
  export declare function verifyOTP(config: Config, parameters: {
81
78
  code: string;
82
79
  otpId: string;
83
- subOrganizationId: string;
84
80
  connector?: Connector;
85
81
  }): Promise<void>;
86
82
  export declare namespace verifyOTP {
87
83
  type Parameters = {
88
84
  code: string;
89
85
  otpId: string;
90
- subOrganizationId: string;
91
86
  connector?: Connector;
92
87
  };
93
88
  type ReturnType = void;
@@ -106,6 +101,21 @@ export declare namespace refreshSession {
106
101
  type ReturnType = unknown;
107
102
  type ErrorType = Error;
108
103
  }
104
+ /**
105
+ * Get user email
106
+ */
107
+ export declare function getUserEmail(config: Config): Promise<{
108
+ email: string;
109
+ }>;
110
+ export declare namespace getUserEmail {
111
+ type Parameters = {
112
+ connector?: Connector;
113
+ };
114
+ type ReturnType = {
115
+ email: string;
116
+ };
117
+ type ErrorType = Error;
118
+ }
109
119
  /**
110
120
  * Export wallet
111
121
  */
@@ -121,4 +131,23 @@ export declare namespace exportWallet {
121
131
  type ReturnType = void;
122
132
  type ErrorType = Error;
123
133
  }
134
+ /**
135
+ * Export private key
136
+ */
137
+ export declare function exportPrivateKey(config: Config, parameters: {
138
+ iframeContainerId: string;
139
+ address?: string;
140
+ keyFormat?: 'Hexadecimal' | 'Solana';
141
+ connector?: Connector;
142
+ }): Promise<void>;
143
+ export declare namespace exportPrivateKey {
144
+ type Parameters = {
145
+ iframeContainerId: string;
146
+ address?: string;
147
+ keyFormat?: 'Hexadecimal' | 'Solana';
148
+ connector?: Connector;
149
+ };
150
+ type ReturnType = void;
151
+ type ErrorType = Error;
152
+ }
124
153
  //# sourceMappingURL=actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAOpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAkB/C;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,QAAQ,EAAE,aAAa,CAAA;IACvB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAwEf;AAED,MAAM,CAAC,OAAO,WAAW,iBAAiB,CAAC;IACzC,KAAK,UAAU,GAAG;QAChB,QAAQ,EAAE,aAAa,CAAA;QACvB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5B;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,UAAU,GAAG;QAChB,KAAK,EAAE,MAAM,CAAA;QACb,kBAAkB,CAAC,EAAE;YAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;QACnD,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,UAAU,GAAG;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE;IACV,SAAS,CAAC,EAAE,SAAS,CAAA;CACjB,GACL,OAAO,CAAC,OAAO,CAAC,CAelB;AAED,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,KAAK,UAAU,GAAG;QAChB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,OAAO,CAAA;IACzB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB7E;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,UAAU,GAAG;QAChB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IACnC,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,UAAU,GAAG;QAChB,iBAAiB,EAAE,MAAM,CAAA;QACzB,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE;IACV,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAA;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAK,UAAU,GAAG;QAChB,iBAAiB,EAAE,MAAM,CAAA;QACzB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,SAAS,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAA;QACpC,SAAS,CAAC,EAAE,SAAS,CAAA;KACtB,CAAA;IACD,KAAK,UAAU,GAAG,IAAI,CAAA;IACtB,KAAK,SAAS,GAAG,KAAK,CAAA;CACvB"}
@@ -1,7 +1,6 @@
1
1
  import { type CreateConnectorFn } from '@wagmi/core';
2
2
  import type { StorageAdapter } from '@zerodev/wallet-core';
3
3
  import { type Chain } from 'viem';
4
- import type { OAuthConfig } from './oauth.js';
5
4
  export type ZeroDevWalletConnectorParams = {
6
5
  projectId: string;
7
6
  organizationId?: string;
@@ -12,7 +11,6 @@ export type ZeroDevWalletConnectorParams = {
12
11
  sessionStorage?: StorageAdapter;
13
12
  autoRefreshSession?: boolean;
14
13
  sessionWarningThreshold?: number;
15
- oauthConfig?: OAuthConfig;
16
14
  };
17
15
  export declare function zeroDevWallet(params: ZeroDevWalletConnectorParams): CreateConnectorFn;
18
16
  //# sourceMappingURL=connector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,aAAa,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,KAAK,KAAK,EAA4B,MAAM,MAAM,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAK7C,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,4BAA4B,GACnC,iBAAiB,CAyTnB"}
1
+ {"version":3,"file":"connector.d.ts","sourceRoot":"","sources":["../../src/connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,aAAa,CAAA;AAOrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,KAAK,KAAK,EAA4B,MAAM,MAAM,CAAA;AAgE3D,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,4BAA4B,GACnC,iBAAiB,CAoTnB"}
@@ -0,0 +1,18 @@
1
+ import { type UseMutationOptions, type UseMutationResult } from '@tanstack/react-query';
2
+ import { type Config, type ResolvedRegister } from 'wagmi';
3
+ import { exportPrivateKey } from '../actions.js';
4
+ type ConfigParameter<config extends Config = Config> = {
5
+ config?: Config | config | undefined;
6
+ };
7
+ /**
8
+ * Hook to export private key
9
+ */
10
+ export declare function useExportPrivateKey<config extends Config = ResolvedRegister['config'], context = unknown>(parameters?: useExportPrivateKey.Parameters<config, context>): useExportPrivateKey.ReturnType<context>;
11
+ export declare namespace useExportPrivateKey {
12
+ type Parameters<config extends Config = Config, context = unknown> = ConfigParameter<config> & {
13
+ mutation?: UseMutationOptions<exportPrivateKey.ReturnType, exportPrivateKey.ErrorType, exportPrivateKey.Parameters, context> | undefined;
14
+ };
15
+ type ReturnType<context = unknown> = UseMutationResult<exportPrivateKey.ReturnType, exportPrivateKey.ErrorType, exportPrivateKey.Parameters, context>;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=useExportPrivateKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useExportPrivateKey.d.ts","sourceRoot":"","sources":["../../../src/hooks/useExportPrivateKey.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAa,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,KAAK,eAAe,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACrC,CAAA;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,SAAS,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAClD,OAAO,GAAG,OAAO,EAEjB,UAAU,GAAE,mBAAmB,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAM,GAC/D,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAWzC;AAED,MAAM,CAAC,OAAO,WAAW,mBAAmB,CAAC;IAC3C,KAAK,UAAU,CACb,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,OAAO,GAAG,OAAO,IACf,eAAe,CAAC,MAAM,CAAC,GAAG;QAC5B,QAAQ,CAAC,EACL,kBAAkB,CAChB,gBAAgB,CAAC,UAAU,EAC3B,gBAAgB,CAAC,SAAS,EAC1B,gBAAgB,CAAC,UAAU,EAC3B,OAAO,CACR,GACD,SAAS,CAAA;KACd,CAAA;IAED,KAAK,UAAU,CAAC,OAAO,GAAG,OAAO,IAAI,iBAAiB,CACpD,gBAAgB,CAAC,UAAU,EAC3B,gBAAgB,CAAC,SAAS,EAC1B,gBAAgB,CAAC,UAAU,EAC3B,OAAO,CACR,CAAA;CACF"}
@@ -0,0 +1,18 @@
1
+ import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
2
+ import { type Config, type ResolvedRegister } from 'wagmi';
3
+ import { getUserEmail } from '../actions.js';
4
+ type ConfigParameter<config extends Config = Config> = {
5
+ config?: Config | config | undefined;
6
+ };
7
+ /**
8
+ * Hook to fetch user email address
9
+ */
10
+ export declare function useGetUserEmail<config extends Config = ResolvedRegister['config']>(parameters: useGetUserEmail.Parameters<config>): useGetUserEmail.ReturnType;
11
+ export declare namespace useGetUserEmail {
12
+ type Parameters<config extends Config = Config> = ConfigParameter<config> & {
13
+ query?: Omit<UseQueryOptions<getUserEmail.ReturnType, getUserEmail.ErrorType, getUserEmail.ReturnType>, 'queryKey' | 'queryFn'> | undefined;
14
+ };
15
+ type ReturnType = UseQueryResult<getUserEmail.ReturnType, getUserEmail.ErrorType>;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=useGetUserEmail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetUserEmail.d.ts","sourceRoot":"","sources":["../../../src/hooks/useGetUserEmail.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAa,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,KAAK,eAAe,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IACrD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CACrC,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,SAAS,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAClD,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,UAAU,CAY5E;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,GAAG;QAC1E,KAAK,CAAC,EACF,IAAI,CACF,eAAe,CACb,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,UAAU,CACxB,EACD,UAAU,GAAG,SAAS,CACvB,GACD,SAAS,CAAA;KACd,CAAA;IAED,KAAK,UAAU,GAAG,cAAc,CAC9B,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,SAAS,CACvB,CAAA;CACF"}
@@ -1,14 +1,16 @@
1
1
  export type { ZeroDevWalletConnectorParams } from './connector.js';
2
2
  export { zeroDevWallet } from './connector.js';
3
3
  export { useAuthenticateOAuth } from './hooks/useAuthenticateOAuth.js';
4
+ export { useExportPrivateKey } from './hooks/useExportPrivateKey.js';
4
5
  export { useExportWallet } from './hooks/useExportWallet.js';
6
+ export { useGetUserEmail } from './hooks/useGetUserEmail.js';
5
7
  export { useLoginPasskey } from './hooks/useLoginPasskey.js';
6
8
  export { useRefreshSession } from './hooks/useRefreshSession.js';
7
9
  export { useRegisterPasskey } from './hooks/useRegisterPasskey.js';
8
10
  export { useSendOTP } from './hooks/useSendOTP.js';
9
11
  export { useVerifyOTP } from './hooks/useVerifyOTP.js';
10
- export type { OAuthConfig, OAuthProvider } from './oauth.js';
11
- export { OAUTH_PROVIDERS } from './oauth.js';
12
+ export type { OAuthMessageData, OAuthProvider } from './oauth.js';
13
+ export { buildBackendOAuthUrl, handleOAuthCallback, listenForOAuthMessage, OAUTH_PROVIDERS, } from './oauth.js';
12
14
  export type { ZeroDevProvider } from './provider.js';
13
15
  export type { ZeroDevWalletState } from './store.js';
14
16
  export { createZeroDevWalletStore } from './store.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA"}
@@ -2,20 +2,33 @@ export declare const OAUTH_PROVIDERS: {
2
2
  readonly GOOGLE: "google";
3
3
  };
4
4
  export type OAuthProvider = (typeof OAUTH_PROVIDERS)[keyof typeof OAUTH_PROVIDERS];
5
- export type OAuthConfig = {
6
- googleClientId?: string;
7
- redirectUri: string;
8
- };
9
- export type OAuthFlowParams = {
5
+ export type BackendOAuthFlowParams = {
10
6
  provider: OAuthProvider;
11
- clientId: string;
12
- redirectUri: string;
13
- nonce: string;
14
- state?: Record<string, string>;
7
+ backendUrl: string;
8
+ projectId: string;
9
+ publicKey: string;
10
+ returnTo: string;
15
11
  };
16
- export declare function buildOAuthUrl(params: OAuthFlowParams): string;
17
12
  export declare function openOAuthPopup(url: string): Window | null;
18
- export declare function extractOAuthToken(url: string): string | null;
19
- export declare function pollOAuthPopup(authWindow: Window, originUrl: string, onSuccess: (token: string) => void, onError: (error: Error) => void): void;
20
13
  export declare function generateOAuthNonce(publicKey: string): string;
14
+ /**
15
+ * Build OAuth URL that redirects to backend's OAuth endpoint
16
+ * The backend handles PKCE, client credentials, and token exchange
17
+ */
18
+ export declare function buildBackendOAuthUrl(params: BackendOAuthFlowParams): string;
19
+ export type OAuthMessageData = {
20
+ type: 'oauth_success' | 'oauth_error';
21
+ error?: string;
22
+ };
23
+ /**
24
+ * Listen for OAuth completion via postMessage from popup
25
+ * The popup sends a message when it detects a successful redirect
26
+ */
27
+ export declare function listenForOAuthMessage(authWindow: Window, expectedOrigin: string, onSuccess: () => void, onError: (error: Error) => void): () => void;
28
+ /**
29
+ * Handle OAuth callback on the return page
30
+ * Call this on the page that receives the OAuth redirect
31
+ * It sends a postMessage to the opener and closes the window
32
+ */
33
+ export declare function handleOAuthCallback(successParam?: string): boolean;
21
34
  //# sourceMappingURL=oauth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;CAElB,CAAA;AAEV,MAAM,MAAM,aAAa,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAExD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,aAAa,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B,CAAA;AAOD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA8B7D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBzD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU5D;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAClC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,IAAI,CAwBN;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/oauth.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe;;CAElB,CAAA;AAEV,MAAM,MAAM,aAAa,GACvB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAExD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,aAAa,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAKD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBzD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAa3E;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,eAAe,GAAG,aAAa,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,IAAI,EACrB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAC9B,MAAM,IAAI,CAkCZ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,SAAkB,GAAG,OAAO,CAyB3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAgB,MAAM,MAAM,CAAA;AAE/C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAI1D,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;IAClD,MAAM,EAAE,4BAA4B,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG;IACxE,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvE,OAAO,IAAI,IAAI,CAAA;CAChB,CAAA;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,MAAM,GACP,EAAE,oBAAoB,GAAG,eAAe,CAkNxC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAgB,MAAM,MAAM,CAAA;AAE/C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAI1D,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAA;IAClD,MAAM,EAAE,4BAA4B,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG;IACxE,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvE,OAAO,IAAI,IAAI,CAAA;CAChB,CAAA;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,MAAM,GACP,EAAE,oBAAoB,GAAG,eAAe,CAqNxC"}
@@ -2,24 +2,27 @@ import type { KernelAccountClient, KernelSmartAccountImplementation } from '@zer
2
2
  import type { ZeroDevWalletSDK, ZeroDevWalletSession } from '@zerodev/wallet-core';
3
3
  import type { LocalAccount } from 'viem';
4
4
  import type { SmartAccount } from 'viem/account-abstraction';
5
- import type { OAuthConfig } from './oauth.js';
5
+ type InternalOAuthConfig = {
6
+ backendUrl: string;
7
+ projectId: string;
8
+ };
6
9
  export type ZeroDevWalletState = {
7
10
  wallet: ZeroDevWalletSDK | null;
8
11
  eoaAccount: LocalAccount | null;
9
12
  session: ZeroDevWalletSession | null;
10
- chainIds: number[];
13
+ activeChainId: number | null;
11
14
  kernelAccounts: Map<number, SmartAccount<KernelSmartAccountImplementation>>;
12
15
  kernelClients: Map<number, KernelAccountClient>;
13
16
  isExpiring: boolean;
14
- oauthConfig: OAuthConfig | null;
17
+ oauthConfig: InternalOAuthConfig | null;
15
18
  setWallet: (wallet: ZeroDevWalletSDK) => void;
16
19
  setEoaAccount: (account: LocalAccount | null) => void;
17
20
  setKernelAccount: (chainId: number, account: SmartAccount<KernelSmartAccountImplementation>) => void;
18
21
  setKernelClient: (chainId: number, client: KernelAccountClient) => void;
19
22
  setSession: (session: ZeroDevWalletSession | null) => void;
20
- setActiveChain: (chainId: number) => void;
23
+ setActiveChainId: (chainId: number | null) => void;
21
24
  setIsExpiring: (isExpiring: boolean) => void;
22
- setOAuthConfig: (config: OAuthConfig | null) => void;
25
+ setOAuthConfig: (config: InternalOAuthConfig | null) => void;
23
26
  clear: () => void;
24
27
  };
25
28
  export declare const createZeroDevWalletStore: () => import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<ZeroDevWalletState>, "subscribe"> & {
@@ -36,7 +39,7 @@ export declare const createZeroDevWalletStore: () => import("zustand").UseBoundS
36
39
  persist: {
37
40
  setOptions: (options: Partial<import("zustand/middleware").PersistOptions<ZeroDevWalletState, {
38
41
  session: ZeroDevWalletSession | null;
39
- chainIds: number[];
42
+ activeChainId: number | null;
40
43
  }, unknown>>) => void;
41
44
  clearStorage: () => void;
42
45
  rehydrate: () => Promise<void> | void;
@@ -45,8 +48,9 @@ export declare const createZeroDevWalletStore: () => import("zustand").UseBoundS
45
48
  onFinishHydration: (fn: (state: ZeroDevWalletState) => void) => () => void;
46
49
  getOptions: () => Partial<import("zustand/middleware").PersistOptions<ZeroDevWalletState, {
47
50
  session: ZeroDevWalletSession | null;
48
- chainIds: number[];
51
+ activeChainId: number | null;
49
52
  }, unknown>>;
50
53
  };
51
54
  }>;
55
+ export {};
52
56
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAE/B,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,YAAY,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAGpC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAC,CAAA;IAC3E,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAG/C,UAAU,EAAE,OAAO,CAAA;IAGnB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAA;IAG/B,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAA;IACrD,gBAAgB,EAAE,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,KACpD,IAAI,CAAA;IACT,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACvE,UAAU,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;EAkElC,CAAA"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAK5D,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAE/B,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,YAAY,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAGpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,gCAAgC,CAAC,CAAC,CAAA;IAC3E,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAG/C,UAAU,EAAE,OAAO,CAAA;IAGnB,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAGvC,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAA;IACrD,gBAAgB,EAAE,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,CAAC,gCAAgC,CAAC,KACpD,IAAI,CAAA;IACT,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACvE,UAAU,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAClD,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,cAAc,EAAE,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5D,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DlC,CAAA"}