@keyringnetwork/keyring-connect-sdk 4.1.0-alpha.2 → 4.1.0-alpha.3
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/dist/index.cjs +3279 -0
- package/dist/index.d.cts +263 -0
- package/dist/index.d.ts +263 -3
- package/dist/index.js +3251 -21
- package/package.json +10 -6
- package/readme.md +20 -75
- package/dist/core/VerificationSession.d.ts +0 -62
- package/dist/core/VerificationSession.js +0 -404
- package/dist/core/errors.d.ts +0 -49
- package/dist/core/errors.js +0 -81
- package/dist/core/htppClient.d.ts +0 -17
- package/dist/core/htppClient.js +0 -160
- package/dist/core/keyringConnectExtension.d.ts +0 -45
- package/dist/core/keyringConnectExtension.js +0 -241
- package/dist/core/websocketClient.d.ts +0 -23
- package/dist/core/websocketClient.js +0 -220
- package/dist/types/api.d.ts +0 -24
- package/dist/types/api.js +0 -2
- package/dist/types/core.d.ts +0 -78
- package/dist/types/core.js +0 -2
- package/dist/types/extension.d.ts +0 -59
- package/dist/types/extension.js +0 -9
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.js +0 -20
- package/dist/types/websocket.d.ts +0 -68
- package/dist/types/websocket.js +0 -3
- package/dist/ui/UIManager.d.ts +0 -52
- package/dist/ui/UIManager.js +0 -257
- package/dist/ui/components/keyring-button.d.ts +0 -12
- package/dist/ui/components/keyring-button.js +0 -140
- package/dist/ui/components/keyring-text.d.ts +0 -12
- package/dist/ui/components/keyring-text.js +0 -169
- package/dist/ui/composites/keyring-complete-modal.d.ts +0 -19
- package/dist/ui/composites/keyring-complete-modal.js +0 -200
- package/dist/ui/composites/keyring-mobile-modal.d.ts +0 -25
- package/dist/ui/composites/keyring-mobile-modal.js +0 -308
- package/dist/ui/composites/keyring-qr-modal.d.ts +0 -32
- package/dist/ui/composites/keyring-qr-modal.js +0 -464
- package/dist/ui/composites/keyring-selection-modal.d.ts +0 -25
- package/dist/ui/composites/keyring-selection-modal.js +0 -342
- package/dist/ui/composites/keyring-terminated-modal.d.ts +0 -14
- package/dist/ui/composites/keyring-terminated-modal.js +0 -121
- package/dist/ui/icons/apple-icon.d.ts +0 -4
- package/dist/ui/icons/apple-icon.js +0 -47
- package/dist/ui/icons/check-circle.d.ts +0 -4
- package/dist/ui/icons/check-circle.js +0 -35
- package/dist/ui/icons/checkmark.d.ts +0 -4
- package/dist/ui/icons/checkmark.js +0 -37
- package/dist/ui/icons/close-circle.d.ts +0 -4
- package/dist/ui/icons/close-circle.js +0 -35
- package/dist/ui/icons/error-circle.d.ts +0 -4
- package/dist/ui/icons/error-circle.js +0 -48
- package/dist/ui/icons/extension-grid.d.ts +0 -4
- package/dist/ui/icons/extension-grid.js +0 -79
- package/dist/ui/icons/google-icon.d.ts +0 -4
- package/dist/ui/icons/google-icon.js +0 -55
- package/dist/ui/icons/gradient-donut.d.ts +0 -8
- package/dist/ui/icons/gradient-donut.js +0 -85
- package/dist/ui/icons/keyring.d.ts +0 -4
- package/dist/ui/icons/keyring.js +0 -71
- package/dist/ui/icons/mobile-grid.d.ts +0 -4
- package/dist/ui/icons/mobile-grid.js +0 -68
- package/dist/ui/icons/success.d.ts +0 -4
- package/dist/ui/icons/success.js +0 -54
- package/dist/utils/environment.d.ts +0 -34
- package/dist/utils/environment.js +0 -67
- package/dist/utils/logger.d.ts +0 -7
- package/dist/utils/logger.js +0 -40
- package/dist/utils/platformUtils.d.ts +0 -24
- package/dist/utils/platformUtils.js +0 -64
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
export * from '@keyringnetwork/contracts-abi';
|
|
2
|
+
import { ExtensionStatus, BaseWebSocketMessage, DataTransportType, UserJourneyType, SessionStatus } from '@keyringnetwork/keyring-core-sdk';
|
|
3
|
+
export { DataTransportType, EVENT_ACTIONS, ExtensionLaunchConfig, ExtensionStatus, UserJourneyType } from '@keyringnetwork/keyring-core-sdk';
|
|
4
|
+
import { DatasourceTypes } from '@keyringnetwork/keyring-dtos';
|
|
5
|
+
|
|
6
|
+
type AttestationStatus = "onboarding_required" | "onboarding_pending" | "attestation_ready" | "non_compliant";
|
|
7
|
+
type CredentialStatus = "expired" | "valid" | "none";
|
|
8
|
+
type User = {
|
|
9
|
+
/**
|
|
10
|
+
* Off-chain attestation status.
|
|
11
|
+
*/
|
|
12
|
+
attestation_status: AttestationStatus;
|
|
13
|
+
/**
|
|
14
|
+
* On-chain keyring credential status.
|
|
15
|
+
*/
|
|
16
|
+
credential_status: CredentialStatus;
|
|
17
|
+
/**
|
|
18
|
+
* Connected wallet address of the user.
|
|
19
|
+
*/
|
|
20
|
+
wallet_address: string;
|
|
21
|
+
/**
|
|
22
|
+
* Keyring User ID.
|
|
23
|
+
*/
|
|
24
|
+
user_id: string;
|
|
25
|
+
/**
|
|
26
|
+
* Keyring Entity ID.
|
|
27
|
+
*/
|
|
28
|
+
entity_id: string;
|
|
29
|
+
};
|
|
30
|
+
interface ExtensionState {
|
|
31
|
+
status: ExtensionStatus;
|
|
32
|
+
manifest?: unknown;
|
|
33
|
+
error?: string;
|
|
34
|
+
user?: User;
|
|
35
|
+
tlsn_proof?: string;
|
|
36
|
+
credentialData?: CredentialData;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type ConnectWebSocketMessage<TType extends string, TData = unknown> = BaseWebSocketMessage<TType, TData> & {
|
|
40
|
+
session_id: string;
|
|
41
|
+
timestamp: number;
|
|
42
|
+
};
|
|
43
|
+
type SessionCreatedMessage = ConnectWebSocketMessage<"session_created", {
|
|
44
|
+
session_id: string;
|
|
45
|
+
qr_code_data: string;
|
|
46
|
+
expires_at: number | string;
|
|
47
|
+
}>;
|
|
48
|
+
type ExtensionConnectedMessage = ConnectWebSocketMessage<"extension_connected", {
|
|
49
|
+
device_info: {
|
|
50
|
+
platform: "extension";
|
|
51
|
+
extension_id: string;
|
|
52
|
+
extension_version: string;
|
|
53
|
+
};
|
|
54
|
+
}>;
|
|
55
|
+
type MobileConnectedMessage = ConnectWebSocketMessage<"mobile_connected", {
|
|
56
|
+
device_info: {
|
|
57
|
+
platform: "ios" | "android";
|
|
58
|
+
app_version: string;
|
|
59
|
+
};
|
|
60
|
+
connection_id: string;
|
|
61
|
+
}>;
|
|
62
|
+
type ProcessingStartedMessage = ConnectWebSocketMessage<"processing_started", Record<string, unknown> | undefined>;
|
|
63
|
+
type ProcessingCompletedMessage = ConnectWebSocketMessage<"processing_completed", {
|
|
64
|
+
result: {
|
|
65
|
+
credential_data: CredentialData;
|
|
66
|
+
entity_type: string;
|
|
67
|
+
datasourceObject: DatasourceTypes.DatasourceObject;
|
|
68
|
+
};
|
|
69
|
+
status: "success" | "error" | "cancelled";
|
|
70
|
+
}>;
|
|
71
|
+
type ProcessingFailedMessage = ConnectWebSocketMessage<"processing_failed" | "error", {
|
|
72
|
+
error: string;
|
|
73
|
+
[key: string]: unknown;
|
|
74
|
+
}>;
|
|
75
|
+
type SessionExpiredMessage = ConnectWebSocketMessage<"session_expired", {
|
|
76
|
+
reason: "timeout" | "manual";
|
|
77
|
+
}>;
|
|
78
|
+
type WebSocketMessage = SessionCreatedMessage | ExtensionConnectedMessage | MobileConnectedMessage | ProcessingStartedMessage | ProcessingCompletedMessage | ProcessingFailedMessage | SessionExpiredMessage | ConnectWebSocketMessage<string, unknown>;
|
|
79
|
+
|
|
80
|
+
interface SessionConfig {
|
|
81
|
+
/**
|
|
82
|
+
* The name of the client.
|
|
83
|
+
*/
|
|
84
|
+
name: string;
|
|
85
|
+
/**
|
|
86
|
+
* The URL of the client app which the chrome extension will communicate with.
|
|
87
|
+
*/
|
|
88
|
+
app_url: string;
|
|
89
|
+
/**
|
|
90
|
+
* The URL of the client logo.
|
|
91
|
+
*/
|
|
92
|
+
logo_url: string;
|
|
93
|
+
/**
|
|
94
|
+
* The onchain policy ID of the client.
|
|
95
|
+
*/
|
|
96
|
+
policy_id: number;
|
|
97
|
+
/**
|
|
98
|
+
* The wallet address and chain ID of the user.
|
|
99
|
+
*/
|
|
100
|
+
credential_config: {
|
|
101
|
+
chain_id: number;
|
|
102
|
+
wallet_address: string;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* The short-lived browser token used to create backend sessions.
|
|
106
|
+
*/
|
|
107
|
+
clientToken?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Keyring Network configuration for the extension.
|
|
110
|
+
* @note this is meant to be used for internal testing and development purposes.
|
|
111
|
+
*/
|
|
112
|
+
krn_config?: {
|
|
113
|
+
keyring_api_url?: string;
|
|
114
|
+
keyring_user_app_url?: string;
|
|
115
|
+
analytics_api_url?: string;
|
|
116
|
+
notaryUrl?: string;
|
|
117
|
+
websocketProxyUrl?: string;
|
|
118
|
+
};
|
|
119
|
+
dataTransport?: DataTransportType;
|
|
120
|
+
userJourney?: UserJourneyType;
|
|
121
|
+
websocket?: {
|
|
122
|
+
session_id: string;
|
|
123
|
+
session_token: string;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
interface CredentialData {
|
|
127
|
+
trader: `0x${string}`;
|
|
128
|
+
policyId: number;
|
|
129
|
+
chainId: number;
|
|
130
|
+
validUntil: number;
|
|
131
|
+
cost: number;
|
|
132
|
+
key: string;
|
|
133
|
+
signature: string;
|
|
134
|
+
backdoor: string;
|
|
135
|
+
}
|
|
136
|
+
interface SDKError {
|
|
137
|
+
code: string;
|
|
138
|
+
message: string;
|
|
139
|
+
details?: any;
|
|
140
|
+
}
|
|
141
|
+
type SDKErrorCode = "BACKEND_UNAVAILABLE" | "SESSION_CREATION_FAILED" | "SESSION_NOT_FOUND" | "SESSION_EXPIRED" | "WEBSOCKET_CONNECTION_FAILED" | "WEBSOCKET_DISCONNECTED" | "PROCESSING_FAILED" | "NETWORK_ERROR" | "VALIDATION_ERROR" | "TIMEOUT_ERROR" | "QR_DISPLAY_NOT_SUPPORTED";
|
|
142
|
+
interface SDKCallbacks {
|
|
143
|
+
onExtensionConnected?: (data: ExtensionConnectedMessage["data"]) => void;
|
|
144
|
+
onSessionCreated?: (data: SessionCreatedMessage["data"]) => void;
|
|
145
|
+
onMobileConnected?: (data: MobileConnectedMessage["data"]) => void;
|
|
146
|
+
onProcessingStarted?: (data: ProcessingStartedMessage["data"]) => void;
|
|
147
|
+
onProcessingCompleted?: (data: ProcessingCompletedMessage["data"]) => void;
|
|
148
|
+
onProcessingFailed?: (data: ProcessingFailedMessage["data"]) => void;
|
|
149
|
+
onSessionExpired?: (data: SessionExpiredMessage["data"]) => void;
|
|
150
|
+
onError?: (error: SDKError) => void;
|
|
151
|
+
onConnectionStatusChanged?: (connected: boolean) => void;
|
|
152
|
+
}
|
|
153
|
+
type SDKEventTypes = "sessionCreated" | "extensionConnected" | "mobileConnected" | "processingStarted" | "processingCompleted" | "processingFailed" | "sessionExpired" | "error" | "connectionStatusChanged";
|
|
154
|
+
type SDKEventData = {
|
|
155
|
+
sessionCreated: SessionCreatedMessage["data"];
|
|
156
|
+
extensionConnected: ExtensionConnectedMessage["data"];
|
|
157
|
+
mobileConnected: MobileConnectedMessage["data"];
|
|
158
|
+
processingStarted: ProcessingStartedMessage["data"];
|
|
159
|
+
processingCompleted: ProcessingCompletedMessage["data"];
|
|
160
|
+
processingFailed: ProcessingFailedMessage["data"];
|
|
161
|
+
sessionExpired: SessionExpiredMessage["data"];
|
|
162
|
+
error: SDKError;
|
|
163
|
+
connectionStatusChanged: boolean;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
interface CrossDeviceSession {
|
|
167
|
+
session_id: string;
|
|
168
|
+
session_token: string;
|
|
169
|
+
config: SessionConfig;
|
|
170
|
+
origin_url: string;
|
|
171
|
+
status: SessionStatus;
|
|
172
|
+
created_at: number | string;
|
|
173
|
+
expires_at: number | string;
|
|
174
|
+
result?: {
|
|
175
|
+
credential_data?: CredentialData;
|
|
176
|
+
entity_type?: string;
|
|
177
|
+
datasourceObject?: DatasourceTypes.DatasourceObject;
|
|
178
|
+
};
|
|
179
|
+
error?: string;
|
|
180
|
+
platform: "web" | "mobile";
|
|
181
|
+
qr_code_data: string;
|
|
182
|
+
connected_clients: {
|
|
183
|
+
web?: string;
|
|
184
|
+
mobile?: string;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Represents an active verification session with proper cleanup
|
|
190
|
+
*/
|
|
191
|
+
declare class VerificationSession {
|
|
192
|
+
private readonly sessionConfig;
|
|
193
|
+
private static activeSession;
|
|
194
|
+
private static staticLogger;
|
|
195
|
+
private logger;
|
|
196
|
+
private httpClient?;
|
|
197
|
+
private wsClient?;
|
|
198
|
+
private sessionResponse?;
|
|
199
|
+
private stopPolling?;
|
|
200
|
+
private uiManager?;
|
|
201
|
+
private eventListeners;
|
|
202
|
+
private isWebsocketActive;
|
|
203
|
+
private flowType;
|
|
204
|
+
private resultPromise?;
|
|
205
|
+
private resolveResult?;
|
|
206
|
+
private rejectResult?;
|
|
207
|
+
private closePromise?;
|
|
208
|
+
private resultSettled;
|
|
209
|
+
private constructor();
|
|
210
|
+
/**
|
|
211
|
+
* Launch verification flow with automatic platform detection and fallback
|
|
212
|
+
*/
|
|
213
|
+
static launch(sessionConfig: SessionConfig): Promise<VerificationSession>;
|
|
214
|
+
/**
|
|
215
|
+
* Start the verification session
|
|
216
|
+
*/
|
|
217
|
+
start(): Promise<CredentialData | null>;
|
|
218
|
+
get sessionId(): string | undefined;
|
|
219
|
+
get sessionToken(): string | undefined;
|
|
220
|
+
/**
|
|
221
|
+
* Add event listener for verification events
|
|
222
|
+
*/
|
|
223
|
+
addEventListener<T extends SDKEventTypes>(eventType: T, listener: (data: SDKEventData[T]) => void): void;
|
|
224
|
+
/**
|
|
225
|
+
* Remove event listener
|
|
226
|
+
*/
|
|
227
|
+
removeEventListener<T extends SDKEventTypes>(eventType: T, listener: (data: SDKEventData[T]) => void): void;
|
|
228
|
+
/**
|
|
229
|
+
* Clean up all resources
|
|
230
|
+
*/
|
|
231
|
+
close(): Promise<void>;
|
|
232
|
+
private complete;
|
|
233
|
+
private fail;
|
|
234
|
+
private resolvePendingResult;
|
|
235
|
+
private rejectPendingResult;
|
|
236
|
+
private clearPendingResultHandlers;
|
|
237
|
+
private cleanup;
|
|
238
|
+
private resolveDataTransport;
|
|
239
|
+
private validateTransportRequirements;
|
|
240
|
+
private startChromeApiFlow;
|
|
241
|
+
/**
|
|
242
|
+
* Initialize mobile-specific resources (HTTP client, session, WebSocket)
|
|
243
|
+
*/
|
|
244
|
+
private initializeSession;
|
|
245
|
+
private setupWebSocket;
|
|
246
|
+
private setupUI;
|
|
247
|
+
private showQR;
|
|
248
|
+
private showMobileModal;
|
|
249
|
+
/**
|
|
250
|
+
* Start HTTP polling as fallback when WebSocket is disconnected
|
|
251
|
+
*/
|
|
252
|
+
private startPollingFallback;
|
|
253
|
+
private createSession;
|
|
254
|
+
private closeBackendSession;
|
|
255
|
+
private getSession;
|
|
256
|
+
/**
|
|
257
|
+
* Handle session updates from HTTP polling
|
|
258
|
+
*/
|
|
259
|
+
private handlePollingUpdate;
|
|
260
|
+
private emit;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export { type AttestationStatus, type CredentialData, type CredentialStatus, type CrossDeviceSession, type ExtensionConnectedMessage, type ExtensionState, type MobileConnectedMessage, type ProcessingCompletedMessage, type ProcessingFailedMessage, type ProcessingStartedMessage, type SDKCallbacks, type SDKError, type SDKErrorCode, type SDKEventData, type SDKEventTypes, type SessionConfig, type SessionCreatedMessage, type SessionExpiredMessage, type User, VerificationSession, type WebSocketMessage };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,263 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
export * from '@keyringnetwork/contracts-abi';
|
|
2
|
+
import { ExtensionStatus, BaseWebSocketMessage, DataTransportType, UserJourneyType, SessionStatus } from '@keyringnetwork/keyring-core-sdk';
|
|
3
|
+
export { DataTransportType, EVENT_ACTIONS, ExtensionLaunchConfig, ExtensionStatus, UserJourneyType } from '@keyringnetwork/keyring-core-sdk';
|
|
4
|
+
import { DatasourceTypes } from '@keyringnetwork/keyring-dtos';
|
|
5
|
+
|
|
6
|
+
type AttestationStatus = "onboarding_required" | "onboarding_pending" | "attestation_ready" | "non_compliant";
|
|
7
|
+
type CredentialStatus = "expired" | "valid" | "none";
|
|
8
|
+
type User = {
|
|
9
|
+
/**
|
|
10
|
+
* Off-chain attestation status.
|
|
11
|
+
*/
|
|
12
|
+
attestation_status: AttestationStatus;
|
|
13
|
+
/**
|
|
14
|
+
* On-chain keyring credential status.
|
|
15
|
+
*/
|
|
16
|
+
credential_status: CredentialStatus;
|
|
17
|
+
/**
|
|
18
|
+
* Connected wallet address of the user.
|
|
19
|
+
*/
|
|
20
|
+
wallet_address: string;
|
|
21
|
+
/**
|
|
22
|
+
* Keyring User ID.
|
|
23
|
+
*/
|
|
24
|
+
user_id: string;
|
|
25
|
+
/**
|
|
26
|
+
* Keyring Entity ID.
|
|
27
|
+
*/
|
|
28
|
+
entity_id: string;
|
|
29
|
+
};
|
|
30
|
+
interface ExtensionState {
|
|
31
|
+
status: ExtensionStatus;
|
|
32
|
+
manifest?: unknown;
|
|
33
|
+
error?: string;
|
|
34
|
+
user?: User;
|
|
35
|
+
tlsn_proof?: string;
|
|
36
|
+
credentialData?: CredentialData;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
type ConnectWebSocketMessage<TType extends string, TData = unknown> = BaseWebSocketMessage<TType, TData> & {
|
|
40
|
+
session_id: string;
|
|
41
|
+
timestamp: number;
|
|
42
|
+
};
|
|
43
|
+
type SessionCreatedMessage = ConnectWebSocketMessage<"session_created", {
|
|
44
|
+
session_id: string;
|
|
45
|
+
qr_code_data: string;
|
|
46
|
+
expires_at: number | string;
|
|
47
|
+
}>;
|
|
48
|
+
type ExtensionConnectedMessage = ConnectWebSocketMessage<"extension_connected", {
|
|
49
|
+
device_info: {
|
|
50
|
+
platform: "extension";
|
|
51
|
+
extension_id: string;
|
|
52
|
+
extension_version: string;
|
|
53
|
+
};
|
|
54
|
+
}>;
|
|
55
|
+
type MobileConnectedMessage = ConnectWebSocketMessage<"mobile_connected", {
|
|
56
|
+
device_info: {
|
|
57
|
+
platform: "ios" | "android";
|
|
58
|
+
app_version: string;
|
|
59
|
+
};
|
|
60
|
+
connection_id: string;
|
|
61
|
+
}>;
|
|
62
|
+
type ProcessingStartedMessage = ConnectWebSocketMessage<"processing_started", Record<string, unknown> | undefined>;
|
|
63
|
+
type ProcessingCompletedMessage = ConnectWebSocketMessage<"processing_completed", {
|
|
64
|
+
result: {
|
|
65
|
+
credential_data: CredentialData;
|
|
66
|
+
entity_type: string;
|
|
67
|
+
datasourceObject: DatasourceTypes.DatasourceObject;
|
|
68
|
+
};
|
|
69
|
+
status: "success" | "error" | "cancelled";
|
|
70
|
+
}>;
|
|
71
|
+
type ProcessingFailedMessage = ConnectWebSocketMessage<"processing_failed" | "error", {
|
|
72
|
+
error: string;
|
|
73
|
+
[key: string]: unknown;
|
|
74
|
+
}>;
|
|
75
|
+
type SessionExpiredMessage = ConnectWebSocketMessage<"session_expired", {
|
|
76
|
+
reason: "timeout" | "manual";
|
|
77
|
+
}>;
|
|
78
|
+
type WebSocketMessage = SessionCreatedMessage | ExtensionConnectedMessage | MobileConnectedMessage | ProcessingStartedMessage | ProcessingCompletedMessage | ProcessingFailedMessage | SessionExpiredMessage | ConnectWebSocketMessage<string, unknown>;
|
|
79
|
+
|
|
80
|
+
interface SessionConfig {
|
|
81
|
+
/**
|
|
82
|
+
* The name of the client.
|
|
83
|
+
*/
|
|
84
|
+
name: string;
|
|
85
|
+
/**
|
|
86
|
+
* The URL of the client app which the chrome extension will communicate with.
|
|
87
|
+
*/
|
|
88
|
+
app_url: string;
|
|
89
|
+
/**
|
|
90
|
+
* The URL of the client logo.
|
|
91
|
+
*/
|
|
92
|
+
logo_url: string;
|
|
93
|
+
/**
|
|
94
|
+
* The onchain policy ID of the client.
|
|
95
|
+
*/
|
|
96
|
+
policy_id: number;
|
|
97
|
+
/**
|
|
98
|
+
* The wallet address and chain ID of the user.
|
|
99
|
+
*/
|
|
100
|
+
credential_config: {
|
|
101
|
+
chain_id: number;
|
|
102
|
+
wallet_address: string;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* The short-lived browser token used to create backend sessions.
|
|
106
|
+
*/
|
|
107
|
+
clientToken?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Keyring Network configuration for the extension.
|
|
110
|
+
* @note this is meant to be used for internal testing and development purposes.
|
|
111
|
+
*/
|
|
112
|
+
krn_config?: {
|
|
113
|
+
keyring_api_url?: string;
|
|
114
|
+
keyring_user_app_url?: string;
|
|
115
|
+
analytics_api_url?: string;
|
|
116
|
+
notaryUrl?: string;
|
|
117
|
+
websocketProxyUrl?: string;
|
|
118
|
+
};
|
|
119
|
+
dataTransport?: DataTransportType;
|
|
120
|
+
userJourney?: UserJourneyType;
|
|
121
|
+
websocket?: {
|
|
122
|
+
session_id: string;
|
|
123
|
+
session_token: string;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
interface CredentialData {
|
|
127
|
+
trader: `0x${string}`;
|
|
128
|
+
policyId: number;
|
|
129
|
+
chainId: number;
|
|
130
|
+
validUntil: number;
|
|
131
|
+
cost: number;
|
|
132
|
+
key: string;
|
|
133
|
+
signature: string;
|
|
134
|
+
backdoor: string;
|
|
135
|
+
}
|
|
136
|
+
interface SDKError {
|
|
137
|
+
code: string;
|
|
138
|
+
message: string;
|
|
139
|
+
details?: any;
|
|
140
|
+
}
|
|
141
|
+
type SDKErrorCode = "BACKEND_UNAVAILABLE" | "SESSION_CREATION_FAILED" | "SESSION_NOT_FOUND" | "SESSION_EXPIRED" | "WEBSOCKET_CONNECTION_FAILED" | "WEBSOCKET_DISCONNECTED" | "PROCESSING_FAILED" | "NETWORK_ERROR" | "VALIDATION_ERROR" | "TIMEOUT_ERROR" | "QR_DISPLAY_NOT_SUPPORTED";
|
|
142
|
+
interface SDKCallbacks {
|
|
143
|
+
onExtensionConnected?: (data: ExtensionConnectedMessage["data"]) => void;
|
|
144
|
+
onSessionCreated?: (data: SessionCreatedMessage["data"]) => void;
|
|
145
|
+
onMobileConnected?: (data: MobileConnectedMessage["data"]) => void;
|
|
146
|
+
onProcessingStarted?: (data: ProcessingStartedMessage["data"]) => void;
|
|
147
|
+
onProcessingCompleted?: (data: ProcessingCompletedMessage["data"]) => void;
|
|
148
|
+
onProcessingFailed?: (data: ProcessingFailedMessage["data"]) => void;
|
|
149
|
+
onSessionExpired?: (data: SessionExpiredMessage["data"]) => void;
|
|
150
|
+
onError?: (error: SDKError) => void;
|
|
151
|
+
onConnectionStatusChanged?: (connected: boolean) => void;
|
|
152
|
+
}
|
|
153
|
+
type SDKEventTypes = "sessionCreated" | "extensionConnected" | "mobileConnected" | "processingStarted" | "processingCompleted" | "processingFailed" | "sessionExpired" | "error" | "connectionStatusChanged";
|
|
154
|
+
type SDKEventData = {
|
|
155
|
+
sessionCreated: SessionCreatedMessage["data"];
|
|
156
|
+
extensionConnected: ExtensionConnectedMessage["data"];
|
|
157
|
+
mobileConnected: MobileConnectedMessage["data"];
|
|
158
|
+
processingStarted: ProcessingStartedMessage["data"];
|
|
159
|
+
processingCompleted: ProcessingCompletedMessage["data"];
|
|
160
|
+
processingFailed: ProcessingFailedMessage["data"];
|
|
161
|
+
sessionExpired: SessionExpiredMessage["data"];
|
|
162
|
+
error: SDKError;
|
|
163
|
+
connectionStatusChanged: boolean;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
interface CrossDeviceSession {
|
|
167
|
+
session_id: string;
|
|
168
|
+
session_token: string;
|
|
169
|
+
config: SessionConfig;
|
|
170
|
+
origin_url: string;
|
|
171
|
+
status: SessionStatus;
|
|
172
|
+
created_at: number | string;
|
|
173
|
+
expires_at: number | string;
|
|
174
|
+
result?: {
|
|
175
|
+
credential_data?: CredentialData;
|
|
176
|
+
entity_type?: string;
|
|
177
|
+
datasourceObject?: DatasourceTypes.DatasourceObject;
|
|
178
|
+
};
|
|
179
|
+
error?: string;
|
|
180
|
+
platform: "web" | "mobile";
|
|
181
|
+
qr_code_data: string;
|
|
182
|
+
connected_clients: {
|
|
183
|
+
web?: string;
|
|
184
|
+
mobile?: string;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Represents an active verification session with proper cleanup
|
|
190
|
+
*/
|
|
191
|
+
declare class VerificationSession {
|
|
192
|
+
private readonly sessionConfig;
|
|
193
|
+
private static activeSession;
|
|
194
|
+
private static staticLogger;
|
|
195
|
+
private logger;
|
|
196
|
+
private httpClient?;
|
|
197
|
+
private wsClient?;
|
|
198
|
+
private sessionResponse?;
|
|
199
|
+
private stopPolling?;
|
|
200
|
+
private uiManager?;
|
|
201
|
+
private eventListeners;
|
|
202
|
+
private isWebsocketActive;
|
|
203
|
+
private flowType;
|
|
204
|
+
private resultPromise?;
|
|
205
|
+
private resolveResult?;
|
|
206
|
+
private rejectResult?;
|
|
207
|
+
private closePromise?;
|
|
208
|
+
private resultSettled;
|
|
209
|
+
private constructor();
|
|
210
|
+
/**
|
|
211
|
+
* Launch verification flow with automatic platform detection and fallback
|
|
212
|
+
*/
|
|
213
|
+
static launch(sessionConfig: SessionConfig): Promise<VerificationSession>;
|
|
214
|
+
/**
|
|
215
|
+
* Start the verification session
|
|
216
|
+
*/
|
|
217
|
+
start(): Promise<CredentialData | null>;
|
|
218
|
+
get sessionId(): string | undefined;
|
|
219
|
+
get sessionToken(): string | undefined;
|
|
220
|
+
/**
|
|
221
|
+
* Add event listener for verification events
|
|
222
|
+
*/
|
|
223
|
+
addEventListener<T extends SDKEventTypes>(eventType: T, listener: (data: SDKEventData[T]) => void): void;
|
|
224
|
+
/**
|
|
225
|
+
* Remove event listener
|
|
226
|
+
*/
|
|
227
|
+
removeEventListener<T extends SDKEventTypes>(eventType: T, listener: (data: SDKEventData[T]) => void): void;
|
|
228
|
+
/**
|
|
229
|
+
* Clean up all resources
|
|
230
|
+
*/
|
|
231
|
+
close(): Promise<void>;
|
|
232
|
+
private complete;
|
|
233
|
+
private fail;
|
|
234
|
+
private resolvePendingResult;
|
|
235
|
+
private rejectPendingResult;
|
|
236
|
+
private clearPendingResultHandlers;
|
|
237
|
+
private cleanup;
|
|
238
|
+
private resolveDataTransport;
|
|
239
|
+
private validateTransportRequirements;
|
|
240
|
+
private startChromeApiFlow;
|
|
241
|
+
/**
|
|
242
|
+
* Initialize mobile-specific resources (HTTP client, session, WebSocket)
|
|
243
|
+
*/
|
|
244
|
+
private initializeSession;
|
|
245
|
+
private setupWebSocket;
|
|
246
|
+
private setupUI;
|
|
247
|
+
private showQR;
|
|
248
|
+
private showMobileModal;
|
|
249
|
+
/**
|
|
250
|
+
* Start HTTP polling as fallback when WebSocket is disconnected
|
|
251
|
+
*/
|
|
252
|
+
private startPollingFallback;
|
|
253
|
+
private createSession;
|
|
254
|
+
private closeBackendSession;
|
|
255
|
+
private getSession;
|
|
256
|
+
/**
|
|
257
|
+
* Handle session updates from HTTP polling
|
|
258
|
+
*/
|
|
259
|
+
private handlePollingUpdate;
|
|
260
|
+
private emit;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export { type AttestationStatus, type CredentialData, type CredentialStatus, type CrossDeviceSession, type ExtensionConnectedMessage, type ExtensionState, type MobileConnectedMessage, type ProcessingCompletedMessage, type ProcessingFailedMessage, type ProcessingStartedMessage, type SDKCallbacks, type SDKError, type SDKErrorCode, type SDKEventData, type SDKEventTypes, type SessionConfig, type SessionCreatedMessage, type SessionExpiredMessage, type User, VerificationSession, type WebSocketMessage };
|