@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 +3 -5
- package/dist/index.d.mts +111 -75
- package/dist/index.d.ts +111 -75
- package/dist/index.js +348 -340
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +347 -340
- package/dist/index.mjs.map +1 -1
- package/package.json +14 -9
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
|
|
117
|
+
import { AuthProvider, AuthResult, PhantomConnectOptions } from "@phantom/embedded-provider-core";
|
|
118
118
|
|
|
119
119
|
export class YourAuthProvider implements AuthProvider {
|
|
120
|
-
async authenticate(options: PhantomConnectOptions
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
accountDerivationIndex
|
|
111
|
+
organizationId: string;
|
|
112
|
+
provider: EmbeddedProviderAuthType;
|
|
113
|
+
accountDerivationIndex: number;
|
|
114
|
+
expiresInMs: number;
|
|
115
|
+
authUserId?: string;
|
|
66
116
|
}
|
|
67
117
|
interface PhantomConnectOptions {
|
|
68
|
-
|
|
118
|
+
publicKey: string;
|
|
69
119
|
appId: string;
|
|
70
|
-
provider
|
|
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
|
|
131
|
+
interface PhantomAppAuthOptions {
|
|
132
|
+
publicKey: string;
|
|
77
133
|
appId: string;
|
|
78
|
-
|
|
79
|
-
jwtToken: string;
|
|
80
|
-
customAuthData?: Record<string, any>;
|
|
134
|
+
sessionId: string;
|
|
81
135
|
}
|
|
82
|
-
interface
|
|
83
|
-
authenticate(options:
|
|
84
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
|
167
|
+
interface ConnectErrorEventData {
|
|
168
|
+
error: string;
|
|
169
|
+
source: "auto-connect" | "manual-connect";
|
|
126
170
|
}
|
|
127
|
-
interface
|
|
128
|
-
|
|
129
|
-
jwtToken?: string;
|
|
130
|
-
customAuthData?: Record<string, any>;
|
|
171
|
+
interface DisconnectEventData {
|
|
172
|
+
source: "manual";
|
|
131
173
|
}
|
|
132
|
-
interface
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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:
|
|
162
|
-
off(event:
|
|
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
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
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(
|
|
254
|
+
signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;
|
|
217
255
|
signAndSendTransaction(transaction: Transaction | VersionedTransaction): Promise<{
|
|
218
256
|
signature: string;
|
|
219
257
|
}>;
|
|
220
|
-
signAllTransactions(
|
|
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,
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
accountDerivationIndex
|
|
111
|
+
organizationId: string;
|
|
112
|
+
provider: EmbeddedProviderAuthType;
|
|
113
|
+
accountDerivationIndex: number;
|
|
114
|
+
expiresInMs: number;
|
|
115
|
+
authUserId?: string;
|
|
66
116
|
}
|
|
67
117
|
interface PhantomConnectOptions {
|
|
68
|
-
|
|
118
|
+
publicKey: string;
|
|
69
119
|
appId: string;
|
|
70
|
-
provider
|
|
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
|
|
131
|
+
interface PhantomAppAuthOptions {
|
|
132
|
+
publicKey: string;
|
|
77
133
|
appId: string;
|
|
78
|
-
|
|
79
|
-
jwtToken: string;
|
|
80
|
-
customAuthData?: Record<string, any>;
|
|
134
|
+
sessionId: string;
|
|
81
135
|
}
|
|
82
|
-
interface
|
|
83
|
-
authenticate(options:
|
|
84
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
|
167
|
+
interface ConnectErrorEventData {
|
|
168
|
+
error: string;
|
|
169
|
+
source: "auto-connect" | "manual-connect";
|
|
126
170
|
}
|
|
127
|
-
interface
|
|
128
|
-
|
|
129
|
-
jwtToken?: string;
|
|
130
|
-
customAuthData?: Record<string, any>;
|
|
171
|
+
interface DisconnectEventData {
|
|
172
|
+
source: "manual";
|
|
131
173
|
}
|
|
132
|
-
interface
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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:
|
|
162
|
-
off(event:
|
|
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
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|
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(
|
|
254
|
+
signTransaction(transaction: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;
|
|
217
255
|
signAndSendTransaction(transaction: Transaction | VersionedTransaction): Promise<{
|
|
218
256
|
signature: string;
|
|
219
257
|
}>;
|
|
220
|
-
signAllTransactions(
|
|
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,
|
|
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 };
|