@nexus-cross/crossx-sdk-core 2.1.3 → 2.2.0-beta.10

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 (45) hide show
  1. package/dist/__tests__/sdk/walletChanged.test.d.ts +8 -0
  2. package/dist/__tests__/sdk/walletChanged.test.d.ts.map +1 -0
  3. package/dist/adapters/confirmation/BridgeConfirmationAdapter.d.ts +79 -0
  4. package/dist/adapters/confirmation/BridgeConfirmationAdapter.d.ts.map +1 -0
  5. package/dist/adapters/confirmation/BrowserConfirmationAdapter.d.ts.map +1 -1
  6. package/dist/adapters/wallet/RNBridgeWalletProviderAdapter.d.ts +55 -0
  7. package/dist/adapters/wallet/RNBridgeWalletProviderAdapter.d.ts.map +1 -0
  8. package/dist/core/constants.d.ts +2 -0
  9. package/dist/core/constants.d.ts.map +1 -1
  10. package/dist/core/i18n/index.d.ts +10 -0
  11. package/dist/core/i18n/index.d.ts.map +1 -1
  12. package/dist/core/i18n/types.d.ts +81 -81
  13. package/dist/core/i18n/types.d.ts.map +1 -1
  14. package/dist/core/services/RNBridgeBootstrapService.d.ts +58 -0
  15. package/dist/core/services/RNBridgeBootstrapService.d.ts.map +1 -0
  16. package/dist/core/types/errors.d.ts +6 -0
  17. package/dist/core/types/errors.d.ts.map +1 -1
  18. package/dist/core/types/events.d.ts +2 -0
  19. package/dist/core/types/events.d.ts.map +1 -1
  20. package/dist/core/types/index.d.ts +30 -0
  21. package/dist/core/types/index.d.ts.map +1 -1
  22. package/dist/core/types/rn-bridge.d.ts +267 -0
  23. package/dist/core/types/rn-bridge.d.ts.map +1 -0
  24. package/dist/core/types/tokenHistory.d.ts +74 -0
  25. package/dist/core/types/tokenHistory.d.ts.map +1 -0
  26. package/dist/core/usecases/SignInUseCase.d.ts +68 -1
  27. package/dist/core/usecases/SignInUseCase.d.ts.map +1 -1
  28. package/dist/crossx.global +168 -159
  29. package/dist/index.cjs +139 -130
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +3083 -1990
  33. package/dist/sdk/CROSSxSDK.d.ts +119 -0
  34. package/dist/sdk/CROSSxSDK.d.ts.map +1 -1
  35. package/dist/sdk/factory.d.ts.map +1 -1
  36. package/dist/sdk/services/SigningOrchestrator.d.ts +7 -0
  37. package/dist/sdk/services/SigningOrchestrator.d.ts.map +1 -1
  38. package/dist/sdk/services/StateManager.d.ts +4 -1
  39. package/dist/sdk/services/StateManager.d.ts.map +1 -1
  40. package/dist/sdk/services/TokenHistoryService.d.ts +53 -0
  41. package/dist/sdk/services/TokenHistoryService.d.ts.map +1 -0
  42. package/dist/sdk/services/WalletLifecycleService.d.ts.map +1 -1
  43. package/dist/sdk/services/index.d.ts +1 -0
  44. package/dist/sdk/services/index.d.ts.map +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1,267 @@
1
+ /**
2
+ * RN Native Bridge Types (Internal)
3
+ * Native WebView bridge API contract
4
+ */
5
+ /**
6
+ * Native bridge RPC envelope
7
+ */
8
+ export interface RpcRequest {
9
+ kind: 'crossx.rpc.req';
10
+ rpcId: string;
11
+ method: string;
12
+ params: unknown;
13
+ timeoutMs: number;
14
+ }
15
+ export interface RpcResponse<T = unknown> {
16
+ kind: 'crossx.rpc.res';
17
+ rpcId: string;
18
+ ok: boolean;
19
+ result?: T;
20
+ error?: {
21
+ code: string;
22
+ message: string;
23
+ };
24
+ }
25
+ /**
26
+ * Handshake RPC
27
+ */
28
+ export interface HandshakePayload {
29
+ version: 1;
30
+ appId: string;
31
+ appVersion: string;
32
+ sdkVersion: string;
33
+ keyId: string;
34
+ userIdHash: string;
35
+ nonce: string;
36
+ timestamp: number;
37
+ hmac: string;
38
+ }
39
+ export interface HandshakeResult {
40
+ activated: true;
41
+ sdkVersion: string;
42
+ protocolVersion: number;
43
+ absoluteTtlMs: number;
44
+ idleTtlMs: number;
45
+ /** Native wallet의 active address (예: 0x1234...abcd) */
46
+ walletAddress?: string;
47
+ }
48
+ /**
49
+ * Firebase ID Token RPC
50
+ */
51
+ export interface NativeFirebaseIdTokenResult {
52
+ idToken: string;
53
+ provider?: 'google' | 'apple' | string;
54
+ providerSub?: string;
55
+ expiresAt: number;
56
+ }
57
+ /**
58
+ * User Confirmation RPC
59
+ */
60
+ export interface RequestUserConfirmationParams {
61
+ operation: 'signMessage' | 'signTypedData' | 'signTransaction' | 'sendTransaction';
62
+ payload: unknown;
63
+ dappOrigin: string;
64
+ chainId?: string | number;
65
+ }
66
+ export interface UserConfirmationResult {
67
+ approved: true;
68
+ }
69
+ export type UserConfirmationRejected = {
70
+ approved: false;
71
+ reason?: string;
72
+ };
73
+ /**
74
+ * Wallet Selection RPC
75
+ */
76
+ export interface WalletSelectionOptions {
77
+ reason?: 'user_action' | 'network_mismatch' | 'dapp_request';
78
+ chainId?: string | number;
79
+ requiredAddress?: string;
80
+ }
81
+ export interface WalletSelectionResult {
82
+ approved: true;
83
+ walletId: string;
84
+ address: string;
85
+ chainId?: string | number;
86
+ }
87
+ /**
88
+ * §12 native sign delegation RPCs
89
+ *
90
+ * Native CROSSx SDK 의 자체 PIN UI + 서명 로직을 사용하여 wallet 작업을 수행한다.
91
+ * JS SDK 측에서는 PIN orchestrator / RemoteWalletProvider 를 거치지 않고 native bridge
92
+ * RPC 로 직접 라우팅한다 (RNBridgeWalletProviderAdapter).
93
+ */
94
+ export interface BridgeSignMessageParams {
95
+ chainId: string;
96
+ message: string;
97
+ from?: string;
98
+ dappName?: string;
99
+ accountName?: string;
100
+ index?: number;
101
+ }
102
+ export interface BridgeSignMessageResult {
103
+ signature: string;
104
+ }
105
+ export interface BridgeSignTypedDataParams {
106
+ chainId: string;
107
+ /** EIP-712 typed data (parsed object 또는 JSON 문자열) */
108
+ typedData: unknown;
109
+ from?: string;
110
+ dappName?: string;
111
+ accountName?: string;
112
+ index?: number;
113
+ }
114
+ export interface BridgeSignTypedDataResult {
115
+ signature: string;
116
+ }
117
+ export interface BridgeTransactionPayload {
118
+ to?: string;
119
+ value?: string;
120
+ data?: string;
121
+ gasLimit?: string;
122
+ gasPrice?: string;
123
+ maxFeePerGas?: string;
124
+ maxPriorityFeePerGas?: string;
125
+ nonce?: string | number;
126
+ }
127
+ export interface BridgeSignTransactionParams {
128
+ chainId: string;
129
+ tx: BridgeTransactionPayload;
130
+ from?: string;
131
+ dappName?: string;
132
+ accountName?: string;
133
+ index?: number;
134
+ }
135
+ export interface BridgeSignTransactionResult {
136
+ /** RLP-encoded signed transaction (hex) */
137
+ signedTx: string;
138
+ }
139
+ export interface BridgeSendTransactionParams {
140
+ chainId: string;
141
+ tx: BridgeTransactionPayload;
142
+ from?: string;
143
+ dappName?: string;
144
+ accountName?: string;
145
+ index?: number;
146
+ }
147
+ export interface BridgeSendTransactionResult {
148
+ txHash: string;
149
+ }
150
+ /**
151
+ * §12 native sign delegation — full sendTransaction + receipt polling on native side.
152
+ * Native CROSSx SDK 가 sign UI / PIN UI / broadcast / receipt 폴링 + (자체 결과 UI 가 있다면 그것)
153
+ * 까지 통합 처리. JS SDK 는 receipt 결과만 받아 dapp 에 전달.
154
+ */
155
+ export interface BridgeSendTransactionWithReceiptParams {
156
+ chainId: string;
157
+ tx: BridgeTransactionPayload;
158
+ from?: string;
159
+ dappName?: string;
160
+ accountName?: string;
161
+ index?: number;
162
+ timeoutMs?: number;
163
+ pollIntervalMs?: number;
164
+ }
165
+ export interface BridgeSendTransactionWithReceiptResult {
166
+ txHash: string;
167
+ blockHash?: string;
168
+ blockNumber?: string;
169
+ from?: string;
170
+ to?: string;
171
+ gasUsed?: string;
172
+ effectiveGasPrice?: string;
173
+ /** "0x1" = success, "0x0" = reverted */
174
+ status?: string;
175
+ }
176
+ /**
177
+ * Wallet Selector RPC — Native UI 로 활성 지갑 변경
178
+ * (design 17 §13.6 의 requestWalletSelection 의 §12 native UI 구현)
179
+ */
180
+ export interface BridgeShowWalletSelectorParams {
181
+ reason?: 'user_action' | 'network_mismatch' | 'dapp_request';
182
+ chainId?: string | number;
183
+ requiredAddress?: string;
184
+ }
185
+ export interface BridgeShowWalletSelectorResult {
186
+ approved: true;
187
+ address: string;
188
+ index: number;
189
+ name?: string;
190
+ chainId?: string | number;
191
+ }
192
+ /**
193
+ * Bridge interface exposed to WebView
194
+ */
195
+ export interface RNBridge {
196
+ isInstalled: boolean;
197
+ /**
198
+ * Handshake to activate bridge
199
+ */
200
+ handshake(payload: HandshakePayload): Promise<HandshakeResult>;
201
+ /**
202
+ * Request fresh Firebase ID token (initial login)
203
+ */
204
+ requestFirebaseIdToken(): Promise<NativeFirebaseIdTokenResult>;
205
+ /**
206
+ * Request fresh Firebase ID token (refresh after expiry)
207
+ */
208
+ requestFreshFirebaseIdToken(): Promise<NativeFirebaseIdTokenResult>;
209
+ /**
210
+ * Request user confirmation for signing/transaction
211
+ */
212
+ requestUserConfirmation(params: RequestUserConfirmationParams): Promise<UserConfirmationResult | UserConfirmationRejected>;
213
+ /**
214
+ * Request wallet selection
215
+ */
216
+ requestWalletSelection(options: WalletSelectionOptions): Promise<WalletSelectionResult>;
217
+ /**
218
+ * §12 — Native sign delegation. Native CROSSx SDK 가 자체 PIN UI + 서명 처리.
219
+ */
220
+ signMessage(params: BridgeSignMessageParams): Promise<BridgeSignMessageResult>;
221
+ signTypedData(params: BridgeSignTypedDataParams): Promise<BridgeSignTypedDataResult>;
222
+ signTransaction(params: BridgeSignTransactionParams): Promise<BridgeSignTransactionResult>;
223
+ sendTransaction(params: BridgeSendTransactionParams): Promise<BridgeSendTransactionResult>;
224
+ sendTransactionWithWaitForReceipt(params: BridgeSendTransactionWithReceiptParams): Promise<BridgeSendTransactionWithReceiptResult>;
225
+ /**
226
+ * §13.6 — Native wallet selector UI. Native 가 활성 지갑 선택 UI 표시 + 결과 반환.
227
+ */
228
+ showWalletSelector(params?: BridgeShowWalletSelectorParams): Promise<BridgeShowWalletSelectorResult>;
229
+ /**
230
+ * Sign out from native
231
+ */
232
+ signOut(): Promise<void>;
233
+ /**
234
+ * §13.6.4 [v0.5.7] — Native push event channel.
235
+ * 네이티브 측이 임의의 시점에 dispatch 하는 이벤트를 SDK 가 listen 한다.
236
+ * 같은 event 에 대해 한 SDK 인스턴스당 하나의 listener 만 등록한다 (재등록 시 덮어쓰기).
237
+ */
238
+ onEvent?(event: 'walletChanged', handler: (payload: BridgeWalletChangedEvent) => void): void;
239
+ }
240
+ /**
241
+ * §13.6.4 [v0.5.7] — Native-initiated wallet change push event payload.
242
+ */
243
+ export interface BridgeWalletChangedEvent {
244
+ walletId: string;
245
+ /** checksummed EVM address */
246
+ address: string;
247
+ /** CAIP-2 (예: 'eip155:612055'), 누락 가능 */
248
+ chainId?: string;
249
+ source: 'rn-native-bridge';
250
+ /** 진입점 정보 (audit / 디버그용) */
251
+ reason?: 'native-selector' | 'native-add-account' | 'native-remove-account' | 'rn-bridge-rpc';
252
+ /** Native 가 표시하는 wallet label (예: 'Account 1'). UI 노출용. */
253
+ walletName?: string;
254
+ }
255
+ /**
256
+ * Bridge bootstrap context
257
+ */
258
+ export interface RNBridgeBootstrapContext {
259
+ isActivated: boolean;
260
+ absoluteTtlMs: number;
261
+ idleTtlMs: number;
262
+ protocolVersion: number;
263
+ activatedAt: number;
264
+ /** Native wallet의 active address (handshake 응답에서 전달) */
265
+ walletAddress?: string;
266
+ }
267
+ //# sourceMappingURL=rn-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rn-bridge.d.ts","sourceRoot":"","sources":["../../../src/core/types/rn-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Token History Types
3
+ * v2 token-historical API 관련 타입 정의
4
+ */
5
+ /**
6
+ * Token History 항목 (GET /v2/token-historical 응답)
7
+ *
8
+ * v1 /v1/public/token/historical과 유사하지만:
9
+ * - log_index, removed 필드 제거
10
+ * - 코인 표현: 모든 체인에서 0x0...0 (통일)
11
+ */
12
+ export interface TokenHistoryItem {
13
+ /** 트랜잭션 해시 */
14
+ tx: string;
15
+ /** 체인 ID (숫자) */
16
+ chain_id: number;
17
+ /** 블록 번호 */
18
+ block_number: number;
19
+ /** 트랜잭션 인덱스 */
20
+ tx_index: number;
21
+ /** 발신자 주소 */
22
+ from: string;
23
+ /** 발신자 별칭 (있는 경우) */
24
+ from_alias?: string;
25
+ /** 수신자 주소 */
26
+ to: string;
27
+ /** 수신자 별칭 (있는 경우) */
28
+ to_alias?: string;
29
+ /** 토큰 주소 (코인은 모든 체인에서 0x0...0) */
30
+ token: string;
31
+ /** 전송량 (wei/smallest unit) */
32
+ amount: string;
33
+ /** 타임스탬프 (unix timestamp, 초 단위) */
34
+ timestamp: number;
35
+ /** 트랜잭션 상태 ("success" | "fail") */
36
+ status: string;
37
+ /** Gas price (wei) */
38
+ gas_price?: number;
39
+ /** Gas used */
40
+ gas_used?: number;
41
+ /** Max fee per gas (EIP-1559) */
42
+ max_fee_per_gas?: number;
43
+ /** Transaction nonce */
44
+ nonce?: number;
45
+ /** Method ID (as byte array, nullable) */
46
+ method?: number[] | null;
47
+ /** Method 별칭 (있는 경우) */
48
+ method_alias?: string;
49
+ }
50
+ /**
51
+ * GET /v2/token-historical 응답의 커서 정보
52
+ */
53
+ export interface TokenHistoryCursor {
54
+ /** 다음 조회 시작 타임스탬프 */
55
+ last_timestamp?: number;
56
+ /** 다음 조회 시작 tx_index */
57
+ last_tx_index?: number;
58
+ }
59
+ /**
60
+ * GET /v2/token-historical 응답
61
+ */
62
+ export interface GetTokenHistoryResponse {
63
+ rows: TokenHistoryItem[];
64
+ /** 페이지네이션 커서 */
65
+ last_data?: TokenHistoryCursor;
66
+ }
67
+ /**
68
+ * POST /v2/token-historical 요청 body
69
+ */
70
+ export interface RegisterTokenHistoryRequest {
71
+ /** 클라이언트 버전 (필수, 최대 64자) */
72
+ clientVersion: string;
73
+ }
74
+ //# sourceMappingURL=tokenHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenHistory.d.ts","sourceRoot":"","sources":["../../../src/core/types/tokenHistory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,gBAAgB;IAChB,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -2,6 +2,7 @@ import { StoragePort, CryptoPort, OAuthPort, TransportPort, WalletProviderPort }
2
2
  import { AuthResult, SignInOptions } from '../types';
3
3
  import { InternalSDKConfig } from '../types/internal';
4
4
  import { TokenMemoryStore } from '../services/TokenMemoryStore';
5
+ import { SDKLocale } from '../i18n';
5
6
 
6
7
  export declare class SignInUseCase {
7
8
  private config;
@@ -11,6 +12,9 @@ export declare class SignInUseCase {
11
12
  private transport;
12
13
  private walletProvider;
13
14
  private tokenStore;
15
+ /** RN Bridge fresh token request callback — optional */
16
+ private requestFreshTokenFromBridge?;
17
+ private getLocale;
14
18
  private _refreshPromise;
15
19
  private _migrated;
16
20
  /** /social/refresh/simple 에러 코드 중 재로그인 필요 (토큰 무효) */
@@ -18,8 +22,39 @@ export declare class SignInUseCase {
18
22
  private readonly STORAGE_KEY_ACCESS_TOKEN;
19
23
  private readonly STORAGE_KEY_REFRESH_TOKEN;
20
24
  private readonly STORAGE_KEY_USER;
21
- constructor(config: InternalSDKConfig, storage: StoragePort, crypto: CryptoPort, oauth: OAuthPort, transport: TransportPort, walletProvider: WalletProviderPort, tokenStore: TokenMemoryStore);
25
+ constructor(config: InternalSDKConfig, storage: StoragePort, crypto: CryptoPort, oauth: OAuthPort, transport: TransportPort, walletProvider: WalletProviderPort, tokenStore: TokenMemoryStore,
26
+ /** RN Bridge fresh token request callback — optional */
27
+ requestFreshTokenFromBridge?: (() => Promise<{
28
+ idToken: string;
29
+ expiresAt: number;
30
+ }>) | undefined, getLocale?: () => SDKLocale | undefined);
22
31
  private get useCookieAuth();
32
+ /**
33
+ * RN Bridge fresh token request callback 설정
34
+ * factory에서 SDK 생성 후 호출됨
35
+ */
36
+ setFreshTokenCallback(callback: () => Promise<{
37
+ idToken: string;
38
+ expiresAt: number;
39
+ }>): void;
40
+ /**
41
+ * 저장된 access_token의 유효성을 빠르게 확인합니다.
42
+ * (만료 여부만 체크 — 서명 검증은 restoreSession에서 수행)
43
+ *
44
+ * RN Bridge 자동 로그인 시도 전에 호출하여,
45
+ * 이미 발급된 토큰이 있으면 confirm 다이얼로그를 다시 띄우지 않게 합니다.
46
+ */
47
+ hasValidStoredAccessToken(): Promise<boolean>;
48
+ /**
49
+ * 저장된 세션이 RN Bridge 자동 로그인으로 만들어진 것인지 판별합니다.
50
+ *
51
+ * RN Bridge 모드는 design 상 access_token 만 저장하고 refresh_token 은 저장하지 않습니다.
52
+ * 따라서 (valid access_token 존재) + (refresh_token 부재) 조합이면 RN Bridge 세션입니다.
53
+ * OAuth 모드는 access_token + refresh_token 둘 다 저장하므로 false 가 됩니다.
54
+ *
55
+ * 이 정보는 native sign delegation 활성화 여부 결정에 사용됩니다 (CROSSxSDK._isAuthenticatedViaRNBridge).
56
+ */
57
+ hasStoredRNBridgeSession(): Promise<boolean>;
23
58
  /**
24
59
  * 서버 응답에서 에러 코드를 추출합니다.
25
60
  * 이중 래핑 구조: { code: 200, data: { code: 1001, message: "..." } }
@@ -43,6 +78,32 @@ export declare class SignInUseCase {
43
78
  * @param firebaseToken OAuth 서비스에서 발급받은 Firebase JWT
44
79
  */
45
80
  executeWithOAuthToken(firebaseToken: string): Promise<AuthResult>;
81
+ /**
82
+ * RN Native Bridge에서 수신한 Firebase ID token으로 로그인
83
+ *
84
+ * Native에서 Firebase SDK force refresh로 발급받은 fresh token을
85
+ * auth API에서 CROSSx access_token으로 교환합니다.
86
+ *
87
+ * RN Bridge 모드:
88
+ * - access_token은 TokenMemoryStore에만 저장 (localStorage 금지)
89
+ * - refresh_token은 저장하지 않음
90
+ * - X-Project-Id 헤더 추가 (Origin + Project 검증용)
91
+ *
92
+ * @param nativeToken Native에서 받은 Firebase ID token 정보
93
+ */
94
+ executeWithNativeFirebaseIdToken(nativeToken: {
95
+ idToken: string;
96
+ expiresAt: number;
97
+ provider?: string;
98
+ providerSub?: string;
99
+ }): Promise<AuthResult>;
100
+ /**
101
+ * RN Native Firebase token 처리 (bridge 모드 전용)
102
+ *
103
+ * Access token은 memory store에만 저장하고,
104
+ * refresh token은 저장하지 않습니다.
105
+ */
106
+ private processNativeFirebaseToken;
46
107
  /**
47
108
  * Firebase 토큰 → CROSSx 인증 교환 → 사용자 정보 추출 → 토큰 저장 → 지갑 로드.
48
109
  * execute()와 executeWithOAuthToken()에서 공유합니다.
@@ -50,6 +111,12 @@ export declare class SignInUseCase {
50
111
  * @param oauthEmail OAuth 콜백에서 직접 수신한 email (JWT에 없을 때 fallback)
51
112
  */
52
113
  private processFirebaseToken;
114
+ /**
115
+ * RN Native Firebase token 교환
116
+ * X-Project-Id 헤더를 포함하여 origin + project 검증
117
+ * refresh_token은 응답에 포함되어도 저장하지 않음
118
+ */
119
+ private exchangeNativeFirebaseToken;
53
120
  /**
54
121
  * Firebase 토큰 → CROSSx 인증 교환
55
122
  * cookie 모드: POST /social/login/cookie → JWT는 HttpOnly Set-Cookie, body는 성공 메시지
@@ -1 +1 @@
1
- {"version":3,"file":"SignInUseCase.d.ts","sourceRoot":"","sources":["../../../src/core/usecases/SignInUseCase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG1D,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,qBAAa,aAAa;IAYtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAjBpB,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,SAAS,CAAS;IAE1B,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAyB;IAEtE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGhC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,kBAAkB,EAClC,UAAU,EAAE,gBAAgB;IAQtC,OAAO,KAAK,aAAa,GAExB;IAED;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAchC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAUpB,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IA+C3D;;;;;;;;OAQG;IACG,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvE;;;;;OAKG;YACW,oBAAoB;IAgGlC;;;;OAIG;YACW,qBAAqB;IAkDnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,WAAW;IAInB;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAyElD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,OAAO,CAAC,aAAa;YAUP,gBAAgB;IA8D9B;;;;;;;OAOG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA6B5C;;;;;;;;OAQG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmErF;;;OAGG;YACW,kBAAkB;YAwBlB,UAAU;CA4DzB"}
1
+ {"version":3,"file":"SignInUseCase.d.ts","sourceRoot":"","sources":["../../../src/core/usecases/SignInUseCase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG1D,OAAO,KAAK,EACV,iBAAiB,EAIlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAM5D,qBAAa,aAAa;IAYtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAClB,wDAAwD;IACxD,OAAO,CAAC,2BAA2B,CAAC;IACpC,OAAO,CAAC,SAAS;IApBnB,OAAO,CAAC,eAAe,CAA4C;IACnE,OAAO,CAAC,SAAS,CAAS;IAE1B,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAyB;IAEtE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAGhC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,kBAAkB,EAClC,UAAU,EAAE,gBAAgB;IACpC,wDAAwD;IAChD,2BAA2B,CAAC,GAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,aAAA,EACnF,SAAS,GAAE,MAAM,SAAS,GAAG,SAA2B;IAQlE,OAAO,KAAK,aAAa,GAExB;IAED;;;OAGG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAIrF;;;;;;OAMG;IACG,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAanD;;;;;;;;OAQG;IACG,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlD;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAchC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAUpB,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAmD3D;;;;;;;;OAQG;IACG,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAKvE;;;;;;;;;;;;OAYG;IACG,gCAAgC,CACpC,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3F,OAAO,CAAC,UAAU,CAAC;IAKtB;;;;;OAKG;YACW,0BAA0B;IA+ExC;;;;;OAKG;YACW,oBAAoB;IAgGlC;;;;OAIG;YACW,2BAA2B;IA6CzC;;;;OAIG;YACW,qBAAqB;IAkDnC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,mBAAmB;IAgB3B,OAAO,CAAC,WAAW;IAInB;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAsFlD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,OAAO,CAAC,aAAa;YAUP,gBAAgB;IA8D9B;;;;;;;OAOG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IA2D5C;;;;;;;;OAQG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmErF;;;OAGG;YACW,kBAAkB;YAwBlB,UAAU;CA4DzB"}