@phantom/embedded-provider-core 1.0.0-beta.9 → 1.0.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.
package/README.md CHANGED
@@ -114,15 +114,15 @@ export class YourStorageAdapter implements EmbeddedStorage {
114
114
  Handles authentication flows:
115
115
 
116
116
  ```typescript
117
- import { AuthProvider, AuthResult, PhantomConnectOptions, JWTAuthOptions } from "@phantom/embedded-provider-core";
117
+ import { AuthProvider, AuthResult, PhantomConnectOptions } from "@phantom/embedded-provider-core";
118
118
 
119
119
  export class YourAuthProvider implements AuthProvider {
120
- async authenticate(options: PhantomConnectOptions | JWTAuthOptions): Promise<void | AuthResult> {
120
+ async authenticate(options: PhantomConnectOptions): Promise<void | AuthResult> {
121
121
  // Platform-specific authentication
122
122
  // Browser: window redirects, React Native: deep links
123
123
  }
124
124
 
125
- resumeAuthFromRedirect?(): AuthResult | null {
125
+ resumeAuthFromRedirect?(provider: EmbeddedProviderAuthType): AuthResult | null {
126
126
  // Resume authentication after redirect/deep link
127
127
  }
128
128
  }
@@ -179,7 +179,6 @@ For server-side authenticated users:
179
179
  const authOptions = {
180
180
  provider: "jwt",
181
181
  jwtToken: "your-jwt-token",
182
- customAuthData: { userId: "user123" },
183
182
  };
184
183
 
185
184
  const result = await provider.connect(authOptions);
@@ -193,7 +192,6 @@ For social login flows:
193
192
  // Google OAuth
194
193
  const authOptions = {
195
194
  provider: "google",
196
- customAuthData: { referrer: "landing-page" },
197
195
  };
198
196
 
199
197
  await provider.connect(authOptions); // Will redirect/deep link
package/dist/index.d.mts CHANGED
@@ -1,9 +1,56 @@
1
- import { StamperWithKeyManagement, Transaction, VersionedTransaction } from '@phantom/sdk-types';
2
- import { ClientSideSdkHeaders, NetworkId } from '@phantom/constants';
3
- import { AddressType } from '@phantom/client';
1
+ import { AddressType, SpendingLimitError } from '@phantom/client';
2
+ import { NetworkId, ClientSideSdkHeaders } from '@phantom/constants';
4
3
  import { ParsedSignatureResult, ParsedTransactionResult } from '@phantom/parsers';
4
+ import { StamperWithKeyManagement, Transaction, VersionedTransaction } from '@phantom/sdk-types';
5
5
  import { ISolanaChain, IEthereumChain, EthTransactionRequest } from '@phantom/chain-interfaces';
6
6
 
7
+ interface WalletAddress {
8
+ addressType: AddressType;
9
+ address: string;
10
+ }
11
+ interface ConnectResult {
12
+ walletId?: string;
13
+ addresses: WalletAddress[];
14
+ status?: "pending" | "completed";
15
+ authUserId?: string;
16
+ authProvider: EmbeddedProviderAuthType;
17
+ }
18
+ interface SignMessageParams {
19
+ message: string;
20
+ networkId: NetworkId;
21
+ }
22
+ interface SignTypedDataV4Params {
23
+ typedData: any;
24
+ networkId: NetworkId;
25
+ }
26
+ interface SignMessageResult extends ParsedSignatureResult {
27
+ }
28
+ interface SignTransactionParams {
29
+ transaction: any;
30
+ networkId: NetworkId;
31
+ }
32
+ interface SignAndSendTransactionParams {
33
+ transaction: any;
34
+ networkId: NetworkId;
35
+ }
36
+ interface SignedTransaction extends ParsedTransactionResult {
37
+ }
38
+ type EmbeddedProviderAuthType = "google" | "apple" | "phantom" | "device";
39
+ interface AuthOptions {
40
+ provider: EmbeddedProviderAuthType;
41
+ customAuthData?: Record<string, any>;
42
+ }
43
+ interface EmbeddedProviderConfig {
44
+ apiBaseUrl: string;
45
+ appId: string;
46
+ authOptions: {
47
+ authUrl: string;
48
+ redirectUrl: string;
49
+ };
50
+ embeddedWalletType: "app-wallet" | "user-wallet" | (string & Record<never, never>);
51
+ addressTypes: AddressType[];
52
+ }
53
+
7
54
  interface Keypair {
8
55
  publicKey: string;
9
56
  secretKey: string;
@@ -21,21 +68,22 @@ interface Session {
21
68
  appId: string;
22
69
  stamperInfo: StamperInfo;
23
70
  keypair?: Keypair;
24
- authProvider?: string;
25
- userInfo?: Record<string, any>;
71
+ authProvider: EmbeddedProviderAuthType;
26
72
  status: "pending" | "completed" | "failed";
27
73
  createdAt: number;
28
74
  lastUsed: number;
29
75
  authenticatorCreatedAt: number;
30
76
  authenticatorExpiresAt: number;
31
77
  lastRenewalAttempt?: number;
32
- username: string;
33
78
  accountDerivationIndex?: number;
79
+ authUserId?: string;
34
80
  }
35
81
  interface EmbeddedStorage {
36
82
  getSession(): Promise<Session | null>;
37
83
  saveSession(session: Session): Promise<void>;
38
84
  clearSession(): Promise<void>;
85
+ getShouldClearPreviousSession(): Promise<boolean>;
86
+ setShouldClearPreviousSession(should: boolean): Promise<void>;
39
87
  }
40
88
 
41
89
  /**
@@ -60,34 +108,41 @@ interface URLParamsAccessor {
60
108
 
61
109
  interface AuthResult {
62
110
  walletId: string;
63
- provider?: string;
64
- userInfo?: Record<string, any>;
65
- accountDerivationIndex?: number;
111
+ organizationId: string;
112
+ provider: EmbeddedProviderAuthType;
113
+ accountDerivationIndex: number;
114
+ expiresInMs: number;
115
+ authUserId?: string;
66
116
  }
67
117
  interface PhantomConnectOptions {
68
- organizationId: string;
118
+ publicKey: string;
69
119
  appId: string;
70
- provider?: "google" | "apple";
120
+ provider: EmbeddedProviderAuthType;
71
121
  redirectUrl?: string;
72
- customAuthData?: Record<string, any>;
73
122
  authUrl?: string;
74
123
  sessionId: string;
124
+ clearPreviousSession?: boolean;
125
+ allowRefresh?: boolean;
126
+ }
127
+ interface AuthProvider {
128
+ authenticate(options: PhantomConnectOptions): Promise<void | AuthResult>;
129
+ resumeAuthFromRedirect?(provider: EmbeddedProviderAuthType): AuthResult | null;
75
130
  }
76
- interface JWTAuthOptions {
131
+ interface PhantomAppAuthOptions {
132
+ publicKey: string;
77
133
  appId: string;
78
- organizationId: string;
79
- jwtToken: string;
80
- customAuthData?: Record<string, any>;
134
+ sessionId: string;
81
135
  }
82
- interface AuthProvider {
83
- authenticate(options: PhantomConnectOptions | JWTAuthOptions): Promise<void | AuthResult>;
84
- resumeAuthFromRedirect?(): AuthResult | null;
136
+ interface PhantomAppProvider {
137
+ authenticate(options: PhantomAppAuthOptions): Promise<AuthResult>;
138
+ isAvailable(): boolean;
85
139
  }
86
140
 
87
141
  interface PlatformAdapter {
88
142
  name: string;
89
143
  storage: EmbeddedStorage;
90
144
  authProvider: AuthProvider;
145
+ phantomAppProvider: PhantomAppProvider;
91
146
  urlParamsAccessor: URLParamsAccessor;
92
147
  stamper: StamperWithKeyManagement;
93
148
  analyticsHeaders?: Partial<ClientSideSdkHeaders>;
@@ -99,67 +154,52 @@ interface DebugLogger {
99
154
  log(category: string, message: string, data?: any): void;
100
155
  }
101
156
 
102
- interface WalletAddress {
103
- addressType: AddressType;
104
- address: string;
105
- }
106
- interface ConnectResult {
107
- walletId?: string;
108
- addresses: WalletAddress[];
109
- status?: "pending" | "completed";
110
- }
111
- interface SignMessageParams {
112
- message: string;
113
- networkId: NetworkId;
114
- }
115
- interface SignMessageResult extends ParsedSignatureResult {
157
+ type EmbeddedProviderEvent = "connect" | "connect_start" | "connect_error" | "disconnect" | "error" | "spending_limit_reached";
158
+ interface ConnectEventData extends ConnectResult {
159
+ source: "auto-connect" | "manual-connect" | "manual-existing" | "existing-session" | "manual";
116
160
  }
117
- interface SignTransactionParams {
118
- transaction: any;
119
- networkId: NetworkId;
120
- }
121
- interface SignAndSendTransactionParams {
122
- transaction: any;
123
- networkId: NetworkId;
161
+ interface ConnectStartEventData {
162
+ source: "auto-connect" | "manual-connect";
163
+ authOptions?: {
164
+ provider?: string;
165
+ };
124
166
  }
125
- interface SignedTransaction extends ParsedTransactionResult {
167
+ interface ConnectErrorEventData {
168
+ error: string;
169
+ source: "auto-connect" | "manual-connect";
126
170
  }
127
- interface AuthOptions {
128
- provider?: "google" | "apple" | "jwt";
129
- jwtToken?: string;
130
- customAuthData?: Record<string, any>;
171
+ interface DisconnectEventData {
172
+ source: "manual";
131
173
  }
132
- interface EmbeddedProviderConfig {
133
- apiBaseUrl: string;
134
- appId: string;
135
- authOptions: {
136
- authUrl: string;
137
- redirectUrl: string;
174
+ interface EmbeddedProviderEventMap {
175
+ connect: ConnectEventData;
176
+ connect_start: ConnectStartEventData;
177
+ connect_error: ConnectErrorEventData;
178
+ disconnect: DisconnectEventData;
179
+ error: any;
180
+ spending_limit_reached: {
181
+ error: SpendingLimitError;
138
182
  };
139
- embeddedWalletType: "app-wallet" | "user-wallet" | (string & Record<never, never>);
140
- addressTypes: AddressType[];
141
183
  }
142
-
143
- type EmbeddedProviderEvent = "connect" | "connect_start" | "connect_error" | "disconnect" | "error";
144
- type EventCallback = (data?: any) => void;
184
+ type EventCallback<T = any> = (data: T) => void;
145
185
  declare class EmbeddedProvider {
146
186
  private config;
147
187
  private platform;
148
188
  private storage;
149
189
  private authProvider;
190
+ private phantomAppProvider;
150
191
  private urlParamsAccessor;
151
192
  private stamper;
152
193
  private logger;
153
194
  private client;
154
195
  private walletId;
155
196
  private addresses;
156
- private jwtAuth;
157
197
  readonly solana: ISolanaChain;
158
198
  readonly ethereum: IEthereumChain;
159
199
  private eventListeners;
160
200
  constructor(config: EmbeddedProviderConfig, platform: PlatformAdapter, logger: DebugLogger);
161
- on(event: EmbeddedProviderEvent, callback: EventCallback): void;
162
- off(event: EmbeddedProviderEvent, callback: EventCallback): void;
201
+ on<K extends EmbeddedProviderEvent>(event: K, callback: EventCallback<EmbeddedProviderEventMap[K]>): void;
202
+ off<K extends EmbeddedProviderEvent>(event: K, callback: EventCallback<EmbeddedProviderEventMap[K]>): void;
163
203
  private emit;
164
204
  /**
165
205
  * Get the appropriate address for a given network ID from available addresses
@@ -171,27 +211,25 @@ declare class EmbeddedProvider {
171
211
  private validateAuthOptions;
172
212
  private isSessionValid;
173
213
  autoConnect(): Promise<void>;
174
- private createOrganizationAndStamper;
175
- connect(authOptions?: AuthOptions): Promise<ConnectResult>;
176
- disconnect(): Promise<void>;
214
+ private initializeStamper;
215
+ private createOrganizationForAppWallet;
216
+ connect(authOptions: AuthOptions): Promise<ConnectResult>;
217
+ disconnect(shouldClearPreviousSession?: boolean): Promise<void>;
177
218
  signMessage(params: SignMessageParams): Promise<ParsedSignatureResult>;
219
+ signEthereumMessage(params: SignMessageParams): Promise<ParsedSignatureResult>;
220
+ signTypedDataV4(params: SignTypedDataV4Params): Promise<ParsedSignatureResult>;
178
221
  signTransaction(params: SignTransactionParams): Promise<ParsedTransactionResult>;
179
222
  signAndSendTransaction(params: SignAndSendTransactionParams): Promise<ParsedTransactionResult>;
180
223
  getAddresses(): WalletAddress[];
181
224
  isConnected(): boolean;
182
225
  private handleAuthFlow;
183
- private handleJWTAuth;
226
+ private handlePhantomAuth;
184
227
  private handleRedirectAuth;
185
228
  private completeAuthConnection;
186
229
  private ensureValidAuthenticator;
187
- private renewAuthenticator;
188
230
  private initializeClientFromSession;
189
231
  }
190
232
 
191
- declare class JWTAuth {
192
- authenticate(options: JWTAuthOptions): Promise<AuthResult>;
193
- }
194
-
195
233
  declare function generateSessionId(): string;
196
234
 
197
235
  declare function retryWithBackoff<T>(operation: () => Promise<T>, operationName: string, logger: DebugLogger, maxRetries?: number, baseDelay?: number): Promise<T>;
@@ -213,11 +251,11 @@ declare class EmbeddedSolanaChain implements ISolanaChain {
213
251
  signature: Uint8Array;
214
252
  publicKey: string;
215
253
  }>;
216
- signTransaction(_transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;
254
+ signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;
217
255
  signAndSendTransaction(transaction: Transaction | VersionedTransaction): Promise<{
218
256
  signature: string;
219
257
  }>;
220
- signAllTransactions(_transactions: (Transaction | VersionedTransaction)[]): Promise<(Transaction | VersionedTransaction)[]>;
258
+ signAllTransactions(transactions: (Transaction | VersionedTransaction)[]): Promise<(Transaction | VersionedTransaction)[]>;
221
259
  signAndSendAllTransactions(transactions: (Transaction | VersionedTransaction)[]): Promise<{
222
260
  signatures: string[];
223
261
  }>;
@@ -261,7 +299,7 @@ declare class EmbeddedEthereumChain implements IEthereumChain {
261
299
  signTypedData(typedData: any, address: string): Promise<string>;
262
300
  signTransaction(transaction: EthTransactionRequest): Promise<string>;
263
301
  sendTransaction(transaction: EthTransactionRequest): Promise<string>;
264
- switchChain(chainId: number): Promise<void>;
302
+ switchChain(chainId: number | string): Promise<void>;
265
303
  getChainId(): Promise<number>;
266
304
  getAccounts(): Promise<string[]>;
267
305
  isConnected(): boolean;
@@ -273,9 +311,6 @@ declare class EmbeddedEthereumChain implements IEthereumChain {
273
311
  off(event: string, listener: (...args: any[]) => void): void;
274
312
  }
275
313
 
276
- /**
277
- * Constants for authenticator lifecycle management
278
- */
279
314
  /**
280
315
  * How long an authenticator is valid before it expires (in milliseconds)
281
316
  * Default: 7 days
@@ -288,5 +323,6 @@ declare const AUTHENTICATOR_EXPIRATION_TIME_MS: number;
288
323
  * For testing: Use smaller values like 2 * 60 * 1000 (2 minutes)
289
324
  */
290
325
  declare const AUTHENTICATOR_RENEWAL_WINDOW_MS: number;
326
+ declare const EMBEDDED_PROVIDER_AUTH_TYPES: EmbeddedProviderAuthType[];
291
327
 
292
- export { AUTHENTICATOR_EXPIRATION_TIME_MS, AUTHENTICATOR_RENEWAL_WINDOW_MS, AuthOptions, AuthProvider, AuthResult, ConnectResult, DebugLogger, EmbeddedEthereumChain, EmbeddedProvider, EmbeddedProviderConfig, EmbeddedProviderEvent, EmbeddedSolanaChain, EmbeddedStorage, EventCallback, JWTAuth, JWTAuthOptions, Keypair, PhantomConnectOptions, PlatformAdapter, Session, SignAndSendTransactionParams, SignMessageParams, SignMessageResult, SignTransactionParams, SignedTransaction, StamperInfo, URLParamsAccessor, WalletAddress, generateSessionId, retryWithBackoff };
328
+ export { AUTHENTICATOR_EXPIRATION_TIME_MS, AUTHENTICATOR_RENEWAL_WINDOW_MS, AuthOptions, AuthProvider, AuthResult, ConnectErrorEventData, ConnectEventData, ConnectResult, ConnectStartEventData, DebugLogger, DisconnectEventData, EMBEDDED_PROVIDER_AUTH_TYPES, EmbeddedEthereumChain, EmbeddedProvider, EmbeddedProviderAuthType, EmbeddedProviderConfig, EmbeddedProviderEvent, EmbeddedProviderEventMap, EmbeddedSolanaChain, EmbeddedStorage, EventCallback, Keypair, PhantomAppAuthOptions, PhantomAppProvider, PhantomConnectOptions, PlatformAdapter, Session, SignAndSendTransactionParams, SignMessageParams, SignMessageResult, SignTransactionParams, SignTypedDataV4Params, SignedTransaction, StamperInfo, URLParamsAccessor, WalletAddress, generateSessionId, retryWithBackoff };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,56 @@
1
- import { StamperWithKeyManagement, Transaction, VersionedTransaction } from '@phantom/sdk-types';
2
- import { ClientSideSdkHeaders, NetworkId } from '@phantom/constants';
3
- import { AddressType } from '@phantom/client';
1
+ import { AddressType, SpendingLimitError } from '@phantom/client';
2
+ import { NetworkId, ClientSideSdkHeaders } from '@phantom/constants';
4
3
  import { ParsedSignatureResult, ParsedTransactionResult } from '@phantom/parsers';
4
+ import { StamperWithKeyManagement, Transaction, VersionedTransaction } from '@phantom/sdk-types';
5
5
  import { ISolanaChain, IEthereumChain, EthTransactionRequest } from '@phantom/chain-interfaces';
6
6
 
7
+ interface WalletAddress {
8
+ addressType: AddressType;
9
+ address: string;
10
+ }
11
+ interface ConnectResult {
12
+ walletId?: string;
13
+ addresses: WalletAddress[];
14
+ status?: "pending" | "completed";
15
+ authUserId?: string;
16
+ authProvider: EmbeddedProviderAuthType;
17
+ }
18
+ interface SignMessageParams {
19
+ message: string;
20
+ networkId: NetworkId;
21
+ }
22
+ interface SignTypedDataV4Params {
23
+ typedData: any;
24
+ networkId: NetworkId;
25
+ }
26
+ interface SignMessageResult extends ParsedSignatureResult {
27
+ }
28
+ interface SignTransactionParams {
29
+ transaction: any;
30
+ networkId: NetworkId;
31
+ }
32
+ interface SignAndSendTransactionParams {
33
+ transaction: any;
34
+ networkId: NetworkId;
35
+ }
36
+ interface SignedTransaction extends ParsedTransactionResult {
37
+ }
38
+ type EmbeddedProviderAuthType = "google" | "apple" | "phantom" | "device";
39
+ interface AuthOptions {
40
+ provider: EmbeddedProviderAuthType;
41
+ customAuthData?: Record<string, any>;
42
+ }
43
+ interface EmbeddedProviderConfig {
44
+ apiBaseUrl: string;
45
+ appId: string;
46
+ authOptions: {
47
+ authUrl: string;
48
+ redirectUrl: string;
49
+ };
50
+ embeddedWalletType: "app-wallet" | "user-wallet" | (string & Record<never, never>);
51
+ addressTypes: AddressType[];
52
+ }
53
+
7
54
  interface Keypair {
8
55
  publicKey: string;
9
56
  secretKey: string;
@@ -21,21 +68,22 @@ interface Session {
21
68
  appId: string;
22
69
  stamperInfo: StamperInfo;
23
70
  keypair?: Keypair;
24
- authProvider?: string;
25
- userInfo?: Record<string, any>;
71
+ authProvider: EmbeddedProviderAuthType;
26
72
  status: "pending" | "completed" | "failed";
27
73
  createdAt: number;
28
74
  lastUsed: number;
29
75
  authenticatorCreatedAt: number;
30
76
  authenticatorExpiresAt: number;
31
77
  lastRenewalAttempt?: number;
32
- username: string;
33
78
  accountDerivationIndex?: number;
79
+ authUserId?: string;
34
80
  }
35
81
  interface EmbeddedStorage {
36
82
  getSession(): Promise<Session | null>;
37
83
  saveSession(session: Session): Promise<void>;
38
84
  clearSession(): Promise<void>;
85
+ getShouldClearPreviousSession(): Promise<boolean>;
86
+ setShouldClearPreviousSession(should: boolean): Promise<void>;
39
87
  }
40
88
 
41
89
  /**
@@ -60,34 +108,41 @@ interface URLParamsAccessor {
60
108
 
61
109
  interface AuthResult {
62
110
  walletId: string;
63
- provider?: string;
64
- userInfo?: Record<string, any>;
65
- accountDerivationIndex?: number;
111
+ organizationId: string;
112
+ provider: EmbeddedProviderAuthType;
113
+ accountDerivationIndex: number;
114
+ expiresInMs: number;
115
+ authUserId?: string;
66
116
  }
67
117
  interface PhantomConnectOptions {
68
- organizationId: string;
118
+ publicKey: string;
69
119
  appId: string;
70
- provider?: "google" | "apple";
120
+ provider: EmbeddedProviderAuthType;
71
121
  redirectUrl?: string;
72
- customAuthData?: Record<string, any>;
73
122
  authUrl?: string;
74
123
  sessionId: string;
124
+ clearPreviousSession?: boolean;
125
+ allowRefresh?: boolean;
126
+ }
127
+ interface AuthProvider {
128
+ authenticate(options: PhantomConnectOptions): Promise<void | AuthResult>;
129
+ resumeAuthFromRedirect?(provider: EmbeddedProviderAuthType): AuthResult | null;
75
130
  }
76
- interface JWTAuthOptions {
131
+ interface PhantomAppAuthOptions {
132
+ publicKey: string;
77
133
  appId: string;
78
- organizationId: string;
79
- jwtToken: string;
80
- customAuthData?: Record<string, any>;
134
+ sessionId: string;
81
135
  }
82
- interface AuthProvider {
83
- authenticate(options: PhantomConnectOptions | JWTAuthOptions): Promise<void | AuthResult>;
84
- resumeAuthFromRedirect?(): AuthResult | null;
136
+ interface PhantomAppProvider {
137
+ authenticate(options: PhantomAppAuthOptions): Promise<AuthResult>;
138
+ isAvailable(): boolean;
85
139
  }
86
140
 
87
141
  interface PlatformAdapter {
88
142
  name: string;
89
143
  storage: EmbeddedStorage;
90
144
  authProvider: AuthProvider;
145
+ phantomAppProvider: PhantomAppProvider;
91
146
  urlParamsAccessor: URLParamsAccessor;
92
147
  stamper: StamperWithKeyManagement;
93
148
  analyticsHeaders?: Partial<ClientSideSdkHeaders>;
@@ -99,67 +154,52 @@ interface DebugLogger {
99
154
  log(category: string, message: string, data?: any): void;
100
155
  }
101
156
 
102
- interface WalletAddress {
103
- addressType: AddressType;
104
- address: string;
105
- }
106
- interface ConnectResult {
107
- walletId?: string;
108
- addresses: WalletAddress[];
109
- status?: "pending" | "completed";
110
- }
111
- interface SignMessageParams {
112
- message: string;
113
- networkId: NetworkId;
114
- }
115
- interface SignMessageResult extends ParsedSignatureResult {
157
+ type EmbeddedProviderEvent = "connect" | "connect_start" | "connect_error" | "disconnect" | "error" | "spending_limit_reached";
158
+ interface ConnectEventData extends ConnectResult {
159
+ source: "auto-connect" | "manual-connect" | "manual-existing" | "existing-session" | "manual";
116
160
  }
117
- interface SignTransactionParams {
118
- transaction: any;
119
- networkId: NetworkId;
120
- }
121
- interface SignAndSendTransactionParams {
122
- transaction: any;
123
- networkId: NetworkId;
161
+ interface ConnectStartEventData {
162
+ source: "auto-connect" | "manual-connect";
163
+ authOptions?: {
164
+ provider?: string;
165
+ };
124
166
  }
125
- interface SignedTransaction extends ParsedTransactionResult {
167
+ interface ConnectErrorEventData {
168
+ error: string;
169
+ source: "auto-connect" | "manual-connect";
126
170
  }
127
- interface AuthOptions {
128
- provider?: "google" | "apple" | "jwt";
129
- jwtToken?: string;
130
- customAuthData?: Record<string, any>;
171
+ interface DisconnectEventData {
172
+ source: "manual";
131
173
  }
132
- interface EmbeddedProviderConfig {
133
- apiBaseUrl: string;
134
- appId: string;
135
- authOptions: {
136
- authUrl: string;
137
- redirectUrl: string;
174
+ interface EmbeddedProviderEventMap {
175
+ connect: ConnectEventData;
176
+ connect_start: ConnectStartEventData;
177
+ connect_error: ConnectErrorEventData;
178
+ disconnect: DisconnectEventData;
179
+ error: any;
180
+ spending_limit_reached: {
181
+ error: SpendingLimitError;
138
182
  };
139
- embeddedWalletType: "app-wallet" | "user-wallet" | (string & Record<never, never>);
140
- addressTypes: AddressType[];
141
183
  }
142
-
143
- type EmbeddedProviderEvent = "connect" | "connect_start" | "connect_error" | "disconnect" | "error";
144
- type EventCallback = (data?: any) => void;
184
+ type EventCallback<T = any> = (data: T) => void;
145
185
  declare class EmbeddedProvider {
146
186
  private config;
147
187
  private platform;
148
188
  private storage;
149
189
  private authProvider;
190
+ private phantomAppProvider;
150
191
  private urlParamsAccessor;
151
192
  private stamper;
152
193
  private logger;
153
194
  private client;
154
195
  private walletId;
155
196
  private addresses;
156
- private jwtAuth;
157
197
  readonly solana: ISolanaChain;
158
198
  readonly ethereum: IEthereumChain;
159
199
  private eventListeners;
160
200
  constructor(config: EmbeddedProviderConfig, platform: PlatformAdapter, logger: DebugLogger);
161
- on(event: EmbeddedProviderEvent, callback: EventCallback): void;
162
- off(event: EmbeddedProviderEvent, callback: EventCallback): void;
201
+ on<K extends EmbeddedProviderEvent>(event: K, callback: EventCallback<EmbeddedProviderEventMap[K]>): void;
202
+ off<K extends EmbeddedProviderEvent>(event: K, callback: EventCallback<EmbeddedProviderEventMap[K]>): void;
163
203
  private emit;
164
204
  /**
165
205
  * Get the appropriate address for a given network ID from available addresses
@@ -171,27 +211,25 @@ declare class EmbeddedProvider {
171
211
  private validateAuthOptions;
172
212
  private isSessionValid;
173
213
  autoConnect(): Promise<void>;
174
- private createOrganizationAndStamper;
175
- connect(authOptions?: AuthOptions): Promise<ConnectResult>;
176
- disconnect(): Promise<void>;
214
+ private initializeStamper;
215
+ private createOrganizationForAppWallet;
216
+ connect(authOptions: AuthOptions): Promise<ConnectResult>;
217
+ disconnect(shouldClearPreviousSession?: boolean): Promise<void>;
177
218
  signMessage(params: SignMessageParams): Promise<ParsedSignatureResult>;
219
+ signEthereumMessage(params: SignMessageParams): Promise<ParsedSignatureResult>;
220
+ signTypedDataV4(params: SignTypedDataV4Params): Promise<ParsedSignatureResult>;
178
221
  signTransaction(params: SignTransactionParams): Promise<ParsedTransactionResult>;
179
222
  signAndSendTransaction(params: SignAndSendTransactionParams): Promise<ParsedTransactionResult>;
180
223
  getAddresses(): WalletAddress[];
181
224
  isConnected(): boolean;
182
225
  private handleAuthFlow;
183
- private handleJWTAuth;
226
+ private handlePhantomAuth;
184
227
  private handleRedirectAuth;
185
228
  private completeAuthConnection;
186
229
  private ensureValidAuthenticator;
187
- private renewAuthenticator;
188
230
  private initializeClientFromSession;
189
231
  }
190
232
 
191
- declare class JWTAuth {
192
- authenticate(options: JWTAuthOptions): Promise<AuthResult>;
193
- }
194
-
195
233
  declare function generateSessionId(): string;
196
234
 
197
235
  declare function retryWithBackoff<T>(operation: () => Promise<T>, operationName: string, logger: DebugLogger, maxRetries?: number, baseDelay?: number): Promise<T>;
@@ -213,11 +251,11 @@ declare class EmbeddedSolanaChain implements ISolanaChain {
213
251
  signature: Uint8Array;
214
252
  publicKey: string;
215
253
  }>;
216
- signTransaction(_transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;
254
+ signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;
217
255
  signAndSendTransaction(transaction: Transaction | VersionedTransaction): Promise<{
218
256
  signature: string;
219
257
  }>;
220
- signAllTransactions(_transactions: (Transaction | VersionedTransaction)[]): Promise<(Transaction | VersionedTransaction)[]>;
258
+ signAllTransactions(transactions: (Transaction | VersionedTransaction)[]): Promise<(Transaction | VersionedTransaction)[]>;
221
259
  signAndSendAllTransactions(transactions: (Transaction | VersionedTransaction)[]): Promise<{
222
260
  signatures: string[];
223
261
  }>;
@@ -261,7 +299,7 @@ declare class EmbeddedEthereumChain implements IEthereumChain {
261
299
  signTypedData(typedData: any, address: string): Promise<string>;
262
300
  signTransaction(transaction: EthTransactionRequest): Promise<string>;
263
301
  sendTransaction(transaction: EthTransactionRequest): Promise<string>;
264
- switchChain(chainId: number): Promise<void>;
302
+ switchChain(chainId: number | string): Promise<void>;
265
303
  getChainId(): Promise<number>;
266
304
  getAccounts(): Promise<string[]>;
267
305
  isConnected(): boolean;
@@ -273,9 +311,6 @@ declare class EmbeddedEthereumChain implements IEthereumChain {
273
311
  off(event: string, listener: (...args: any[]) => void): void;
274
312
  }
275
313
 
276
- /**
277
- * Constants for authenticator lifecycle management
278
- */
279
314
  /**
280
315
  * How long an authenticator is valid before it expires (in milliseconds)
281
316
  * Default: 7 days
@@ -288,5 +323,6 @@ declare const AUTHENTICATOR_EXPIRATION_TIME_MS: number;
288
323
  * For testing: Use smaller values like 2 * 60 * 1000 (2 minutes)
289
324
  */
290
325
  declare const AUTHENTICATOR_RENEWAL_WINDOW_MS: number;
326
+ declare const EMBEDDED_PROVIDER_AUTH_TYPES: EmbeddedProviderAuthType[];
291
327
 
292
- export { AUTHENTICATOR_EXPIRATION_TIME_MS, AUTHENTICATOR_RENEWAL_WINDOW_MS, AuthOptions, AuthProvider, AuthResult, ConnectResult, DebugLogger, EmbeddedEthereumChain, EmbeddedProvider, EmbeddedProviderConfig, EmbeddedProviderEvent, EmbeddedSolanaChain, EmbeddedStorage, EventCallback, JWTAuth, JWTAuthOptions, Keypair, PhantomConnectOptions, PlatformAdapter, Session, SignAndSendTransactionParams, SignMessageParams, SignMessageResult, SignTransactionParams, SignedTransaction, StamperInfo, URLParamsAccessor, WalletAddress, generateSessionId, retryWithBackoff };
328
+ export { AUTHENTICATOR_EXPIRATION_TIME_MS, AUTHENTICATOR_RENEWAL_WINDOW_MS, AuthOptions, AuthProvider, AuthResult, ConnectErrorEventData, ConnectEventData, ConnectResult, ConnectStartEventData, DebugLogger, DisconnectEventData, EMBEDDED_PROVIDER_AUTH_TYPES, EmbeddedEthereumChain, EmbeddedProvider, EmbeddedProviderAuthType, EmbeddedProviderConfig, EmbeddedProviderEvent, EmbeddedProviderEventMap, EmbeddedSolanaChain, EmbeddedStorage, EventCallback, Keypair, PhantomAppAuthOptions, PhantomAppProvider, PhantomConnectOptions, PlatformAdapter, Session, SignAndSendTransactionParams, SignMessageParams, SignMessageResult, SignTransactionParams, SignTypedDataV4Params, SignedTransaction, StamperInfo, URLParamsAccessor, WalletAddress, generateSessionId, retryWithBackoff };