@nexus-cross/crossx-sdk-core 0.0.0-beta.2

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 (94) hide show
  1. package/README.md +302 -0
  2. package/dist/__tests__/mocks/MockCryptoPort.d.ts +15 -0
  3. package/dist/__tests__/mocks/MockCryptoPort.d.ts.map +1 -0
  4. package/dist/__tests__/mocks/MockOAuthPort.d.ts +11 -0
  5. package/dist/__tests__/mocks/MockOAuthPort.d.ts.map +1 -0
  6. package/dist/__tests__/mocks/MockStoragePort.d.ts +18 -0
  7. package/dist/__tests__/mocks/MockStoragePort.d.ts.map +1 -0
  8. package/dist/__tests__/mocks/MockTransportPort.d.ts +14 -0
  9. package/dist/__tests__/mocks/MockTransportPort.d.ts.map +1 -0
  10. package/dist/__tests__/mocks/MockWalletProviderPort.d.ts +28 -0
  11. package/dist/__tests__/mocks/MockWalletProviderPort.d.ts.map +1 -0
  12. package/dist/__tests__/sdk/CROSSxSDK.test.d.ts +2 -0
  13. package/dist/__tests__/sdk/CROSSxSDK.test.d.ts.map +1 -0
  14. package/dist/__tests__/sdk/EthereumProvider.test.d.ts +2 -0
  15. package/dist/__tests__/sdk/EthereumProvider.test.d.ts.map +1 -0
  16. package/dist/__tests__/usecases/SignInUseCase.test.d.ts +2 -0
  17. package/dist/__tests__/usecases/SignInUseCase.test.d.ts.map +1 -0
  18. package/dist/__tests__/usecases/SignOutUseCase.test.d.ts +2 -0
  19. package/dist/__tests__/usecases/SignOutUseCase.test.d.ts.map +1 -0
  20. package/dist/__tests__/usecases/WithdrawUseCase.test.d.ts +2 -0
  21. package/dist/__tests__/usecases/WithdrawUseCase.test.d.ts.map +1 -0
  22. package/dist/adapters/confirmation/BrowserConfirmationAdapter.d.ts +36 -0
  23. package/dist/adapters/confirmation/BrowserConfirmationAdapter.d.ts.map +1 -0
  24. package/dist/adapters/crypto/JoseCryptoAdapter.d.ts +16 -0
  25. package/dist/adapters/crypto/JoseCryptoAdapter.d.ts.map +1 -0
  26. package/dist/adapters/index.d.ts +10 -0
  27. package/dist/adapters/index.d.ts.map +1 -0
  28. package/dist/adapters/oauth/BrowserOAuthAdapter.d.ts +7 -0
  29. package/dist/adapters/oauth/BrowserOAuthAdapter.d.ts.map +1 -0
  30. package/dist/adapters/storage/LocalStorageAdapter.d.ts +10 -0
  31. package/dist/adapters/storage/LocalStorageAdapter.d.ts.map +1 -0
  32. package/dist/adapters/transport/FetchTransportAdapter.d.ts +6 -0
  33. package/dist/adapters/transport/FetchTransportAdapter.d.ts.map +1 -0
  34. package/dist/adapters/wallet/MockWalletProviderAdapter.d.ts +28 -0
  35. package/dist/adapters/wallet/MockWalletProviderAdapter.d.ts.map +1 -0
  36. package/dist/adapters/wallet/RemoteWalletProviderAdapter.d.ts +47 -0
  37. package/dist/adapters/wallet/RemoteWalletProviderAdapter.d.ts.map +1 -0
  38. package/dist/adapters/wallet/types.d.ts +112 -0
  39. package/dist/adapters/wallet/types.d.ts.map +1 -0
  40. package/dist/core/index.d.ts +9 -0
  41. package/dist/core/index.d.ts.map +1 -0
  42. package/dist/core/ports/ConfirmationPort.d.ts +74 -0
  43. package/dist/core/ports/ConfirmationPort.d.ts.map +1 -0
  44. package/dist/core/ports/CryptoPort.d.ts +43 -0
  45. package/dist/core/ports/CryptoPort.d.ts.map +1 -0
  46. package/dist/core/ports/LoggerPort.d.ts +23 -0
  47. package/dist/core/ports/LoggerPort.d.ts.map +1 -0
  48. package/dist/core/ports/OAuthPort.d.ts +18 -0
  49. package/dist/core/ports/OAuthPort.d.ts.map +1 -0
  50. package/dist/core/ports/StoragePort.d.ts +25 -0
  51. package/dist/core/ports/StoragePort.d.ts.map +1 -0
  52. package/dist/core/ports/TransportPort.d.ts +24 -0
  53. package/dist/core/ports/TransportPort.d.ts.map +1 -0
  54. package/dist/core/ports/WalletProviderPort.d.ts +106 -0
  55. package/dist/core/ports/WalletProviderPort.d.ts.map +1 -0
  56. package/dist/core/ports/index.d.ts +12 -0
  57. package/dist/core/ports/index.d.ts.map +1 -0
  58. package/dist/core/services/TokenMemoryStore.d.ts +17 -0
  59. package/dist/core/services/TokenMemoryStore.d.ts.map +1 -0
  60. package/dist/core/types/caip.d.ts +119 -0
  61. package/dist/core/types/caip.d.ts.map +1 -0
  62. package/dist/core/types/chain.d.ts +90 -0
  63. package/dist/core/types/chain.d.ts.map +1 -0
  64. package/dist/core/types/errors.d.ts +56 -0
  65. package/dist/core/types/errors.d.ts.map +1 -0
  66. package/dist/core/types/index.d.ts +309 -0
  67. package/dist/core/types/index.d.ts.map +1 -0
  68. package/dist/core/types/prepare.d.ts +21 -0
  69. package/dist/core/types/prepare.d.ts.map +1 -0
  70. package/dist/core/usecases/MigrateWalletUseCase.d.ts +10 -0
  71. package/dist/core/usecases/MigrateWalletUseCase.d.ts.map +1 -0
  72. package/dist/core/usecases/SignInUseCase.d.ts +38 -0
  73. package/dist/core/usecases/SignInUseCase.d.ts.map +1 -0
  74. package/dist/core/usecases/SignOutUseCase.d.ts +10 -0
  75. package/dist/core/usecases/SignOutUseCase.d.ts.map +1 -0
  76. package/dist/core/usecases/WithdrawUseCase.d.ts +11 -0
  77. package/dist/core/usecases/WithdrawUseCase.d.ts.map +1 -0
  78. package/dist/core/usecases/index.d.ts +9 -0
  79. package/dist/core/usecases/index.d.ts.map +1 -0
  80. package/dist/core/utils/apiUrl.d.ts +16 -0
  81. package/dist/core/utils/apiUrl.d.ts.map +1 -0
  82. package/dist/core/utils/logger.d.ts +19 -0
  83. package/dist/core/utils/logger.d.ts.map +1 -0
  84. package/dist/index.cjs +939 -0
  85. package/dist/index.d.ts +14 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +4773 -0
  88. package/dist/sdk/CROSSxSDK.d.ts +278 -0
  89. package/dist/sdk/CROSSxSDK.d.ts.map +1 -0
  90. package/dist/sdk/EthereumProvider.d.ts +32 -0
  91. package/dist/sdk/EthereumProvider.d.ts.map +1 -0
  92. package/dist/sdk/factory.d.ts +8 -0
  93. package/dist/sdk/factory.d.ts.map +1 -0
  94. package/package.json +52 -0
@@ -0,0 +1,119 @@
1
+ /**
2
+ * CAIP (Chain Agnostic Improvement Proposals) Types
3
+ * 블록체인 업계 표준 형식 지원
4
+ *
5
+ * @see https://github.com/ChainAgnostic/CAIPs
6
+ */
7
+ /**
8
+ * CAIP-2: Chain ID Specification
9
+ * 형식: {namespace}:{reference}
10
+ *
11
+ * @example
12
+ * - eip155:1 (Ethereum Mainnet)
13
+ * - eip155:137 (Polygon)
14
+ * - solana:mainnet (Solana Mainnet)
15
+ * - bip122:000000000019 (Bitcoin Mainnet)
16
+ * - cosmos:cosmoshub-4 (Cosmos Hub)
17
+ */
18
+ export interface ChainId {
19
+ namespace: string;
20
+ reference: string;
21
+ }
22
+ /**
23
+ * CAIP-10: Account ID Specification
24
+ * 형식: {chain_id}:{account_address}
25
+ *
26
+ * @example
27
+ * - eip155:1:0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb
28
+ * - solana:mainnet:7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
29
+ */
30
+ export interface AccountId {
31
+ chainId: ChainId;
32
+ address: string;
33
+ }
34
+ /**
35
+ * CAIP-19: Asset Type Specification
36
+ * 형식: {chain_id}/{asset_namespace}:{asset_reference}
37
+ *
38
+ * @example
39
+ * - eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f (DAI)
40
+ * - eip155:1/erc721:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D (BAYC)
41
+ * - solana:mainnet/spl:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC)
42
+ */
43
+ export interface AssetType {
44
+ chainId: ChainId;
45
+ assetNamespace: string;
46
+ assetReference: string;
47
+ }
48
+ /**
49
+ * 네임스페이스 레지스트리
50
+ */
51
+ export declare const CHAIN_NAMESPACES: {
52
+ readonly EIP155: "eip155";
53
+ readonly SOLANA: "solana";
54
+ readonly BIP122: "bip122";
55
+ readonly COSMOS: "cosmos";
56
+ };
57
+ /**
58
+ * Asset 네임스페이스
59
+ */
60
+ export declare const ASSET_NAMESPACES: {
61
+ readonly SLIP44: "slip44";
62
+ readonly ERC20: "erc20";
63
+ readonly ERC721: "erc721";
64
+ readonly ERC1155: "erc1155";
65
+ readonly SPL: "spl";
66
+ readonly BRC20: "brc20";
67
+ };
68
+ /**
69
+ * CAIP-2 형식으로 ChainId를 문자열로 변환
70
+ */
71
+ export declare function formatChainId(chainId: ChainId): string;
72
+ /**
73
+ * CAIP-2 문자열을 ChainId 객체로 파싱
74
+ */
75
+ export declare function parseChainId(caipChainId: string): ChainId;
76
+ /**
77
+ * CAIP-10 형식으로 AccountId를 문자열로 변환
78
+ */
79
+ export declare function formatAccountId(accountId: AccountId): string;
80
+ /**
81
+ * CAIP-10 문자열을 AccountId 객체로 파싱
82
+ */
83
+ export declare function parseAccountId(caipAccountId: string): AccountId;
84
+ /**
85
+ * CAIP-19 형식으로 AssetType을 문자열로 변환
86
+ */
87
+ export declare function formatAssetType(assetType: AssetType): string;
88
+ /**
89
+ * CAIP-19 문자열을 AssetType 객체로 파싱
90
+ */
91
+ export declare function parseAssetType(caipAssetType: string): AssetType;
92
+ /**
93
+ * CAIP-10 Account ID 유효성 검증
94
+ */
95
+ export declare function validateAccountId(accountId: string): boolean;
96
+ /**
97
+ * CAIP-2 Chain ID 유효성 검증
98
+ */
99
+ export declare function validateChainId(chainId: string): boolean;
100
+ /**
101
+ * Legacy ChainType에서 CAIP ChainId 생성
102
+ */
103
+ export declare function legacyToChainId(chainType: 'ethereum' | 'solana' | 'bitcoin' | 'cosmos', networkConfig: any): ChainId;
104
+ /**
105
+ * CAIP ChainId에서 Legacy ChainType 추출 (string도 지원)
106
+ */
107
+ export declare function chainIdToLegacy(chainId: ChainId | string): 'ethereum' | 'solana' | 'bitcoin' | 'cosmos' | null;
108
+ /**
109
+ * CAIP-2 또는 Legacy 형식을 정규화된 CAIP-2 문자열로 변환
110
+ * @example
111
+ * normalizeChainId('ethereum') // 'eip155:1'
112
+ * normalizeChainId('eip155:137') // 'eip155:137'
113
+ */
114
+ export declare function normalizeChainId(chainId: string): string;
115
+ /**
116
+ * ChainId 문자열이 Legacy 형식인지 확인
117
+ */
118
+ export declare function isLegacyChainId(chainId: string): boolean;
119
+ //# sourceMappingURL=caip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caip.d.ts","sourceRoot":"","sources":["../../../src/core/types/caip.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;CAOnB,CAAC;AAMX;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAW/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAkB/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAgC5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,EACvD,aAAa,EAAE,GAAG,GACjB,OAAO,CA0BT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAe9G;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Chain Types
3
+ * CAIP-2 기반 체인 타입 정의
4
+ *
5
+ * SDK는 체인을 직접 관리하지 않습니다.
6
+ * 서명·전송 시 호출자가 CAIP-2 chainId를 직접 전달합니다.
7
+ *
8
+ * 권장 사용법:
9
+ * import { ChainId } from '@nexus-cross/crossx-sdk-core';
10
+ * sdk.signMessage(ChainId.CROSS_MAINNET, message);
11
+ */
12
+ /**
13
+ * 지원 체인 CAIP-2 상수
14
+ *
15
+ * string 리터럴 유니온 타입으로 추론되므로
16
+ * 메서드 파라미터 타입(string)과 완전히 호환됩니다.
17
+ */
18
+ export declare const ChainId: {
19
+ readonly CROSS_MAINNET: "eip155:612055";
20
+ readonly CROSS_TESTNET: "eip155:612044";
21
+ readonly ETHEREUM_MAINNET: "eip155:1";
22
+ readonly ETHEREUM_SEPOLIA: "eip155:11155111";
23
+ readonly ETHEREUM_HOLESKY: "eip155:17000";
24
+ readonly POLYGON_MAINNET: "eip155:137";
25
+ readonly POLYGON_AMOY: "eip155:80002";
26
+ readonly BSC_MAINNET: "eip155:56";
27
+ readonly BSC_TESTNET: "eip155:97";
28
+ readonly ARBITRUM_ONE: "eip155:42161";
29
+ readonly ARBITRUM_SEPOLIA: "eip155:421614";
30
+ readonly OPTIMISM_MAINNET: "eip155:10";
31
+ readonly OPTIMISM_SEPOLIA: "eip155:11155420";
32
+ readonly BASE_MAINNET: "eip155:8453";
33
+ readonly BASE_SEPOLIA: "eip155:84532";
34
+ };
35
+ /**
36
+ * ChainId 값 타입 (string 서브타입)
37
+ * 메서드 파라미터에서 string으로 받으므로 별도 타입 캐스팅 불필요
38
+ */
39
+ export type ChainIdValue = (typeof ChainId)[keyof typeof ChainId];
40
+ /**
41
+ * 주소 정보
42
+ */
43
+ export interface AddressInfo {
44
+ address: string;
45
+ derivationPath: string;
46
+ publicKey?: string;
47
+ }
48
+ /**
49
+ * EVM 트랜잭션 요청
50
+ * chainId 필드는 CAIP-2의 reference 부분 (숫자)
51
+ * 예: eip155:612055 → chainId: 612055
52
+ */
53
+ export interface EvmTransactionRequest {
54
+ from: string;
55
+ to: string;
56
+ value?: string;
57
+ data?: string;
58
+ gasLimit?: string;
59
+ gasPrice?: string;
60
+ maxFeePerGas?: string;
61
+ maxPriorityFeePerGas?: string;
62
+ nonce?: number;
63
+ chainId?: number;
64
+ }
65
+ /**
66
+ * 트랜잭션 전송 결과 (SDK Public API)
67
+ */
68
+ export interface SendTxResp {
69
+ /** CAIP-2 체인 ID (예: 'eip155:612055') */
70
+ chainId: string;
71
+ txHash: string;
72
+ status: 'pending' | 'success' | 'failed';
73
+ }
74
+ /**
75
+ * 트랜잭션 Receipt (eth_getTransactionReceipt 응답)
76
+ */
77
+ export interface TransactionReceipt {
78
+ transactionHash: string;
79
+ blockHash: string;
80
+ blockNumber: string;
81
+ from: string;
82
+ to: string | null;
83
+ gasUsed: string;
84
+ effectiveGasPrice: string;
85
+ status: '0x1' | '0x0';
86
+ logs: any[];
87
+ transactionIndex: string;
88
+ type: string;
89
+ }
90
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/core/types/chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;CA6BV,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Domain Error Codes
3
+ */
4
+ export declare enum ErrorCode {
5
+ AUTH_NOT_INITIALIZED = "AUTH_NOT_INITIALIZED",
6
+ AUTH_FAILED = "AUTH_FAILED",
7
+ AUTH_TOKEN_INVALID = "AUTH_TOKEN_INVALID",
8
+ AUTH_TOKEN_EXPIRED = "AUTH_TOKEN_EXPIRED",
9
+ AUTH_NOT_AUTHENTICATED = "AUTH_NOT_AUTHENTICATED",
10
+ WALLET_NOT_FOUND = "WALLET_NOT_FOUND",
11
+ WALLET_CREATION_FAILED = "WALLET_CREATION_FAILED",
12
+ SIGN_FAILED = "SIGN_FAILED",
13
+ SIGN_REJECTED = "SIGN_REJECTED",
14
+ TX_FAILED = "TX_FAILED",
15
+ TX_REJECTED = "TX_REJECTED",
16
+ USER_REJECTED = "USER_REJECTED",
17
+ TX_INVALID_PARAMS = "TX_INVALID_PARAMS",
18
+ NETWORK_ERROR = "NETWORK_ERROR",
19
+ NETWORK_NOT_CONFIGURED = "NETWORK_NOT_CONFIGURED",
20
+ INVALID_CHAIN = "INVALID_CHAIN",
21
+ CHAIN_NOT_SUPPORTED = "CHAIN_NOT_SUPPORTED",
22
+ CHAIN_ADAPTER_NOT_FOUND = "CHAIN_ADAPTER_NOT_FOUND",
23
+ NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
24
+ SIGNATURE_FAILED = "SIGNATURE_FAILED",
25
+ TRANSACTION_FAILED = "TRANSACTION_FAILED",
26
+ PREPARE_FAILED = "PREPARE_FAILED",
27
+ PREPARE_EXPIRED = "PREPARE_EXPIRED",
28
+ PREPARE_MISMATCH = "PREPARE_MISMATCH",
29
+ MIGRATION_FAILED = "MIGRATION_FAILED",
30
+ MIGRATION_BACKUP_EXISTS = "MIGRATION_BACKUP_EXISTS",
31
+ GATEWAY_INTERNAL_ERROR = "GATEWAY_INTERNAL_ERROR",// -10006: 내부 통신 실패, 재시도 권장
32
+ GATEWAY_LOCK_CONFLICT = "GATEWAY_LOCK_CONFLICT",// -10008: 락 충돌(동시 요청), 재시도 권장
33
+ PROJECT_ID_MISSING = "PROJECT_ID_MISSING",// -10023: X-Project-Id 헤더 누락
34
+ ORIGIN_OR_APP_ID_MISSING = "ORIGIN_OR_APP_ID_MISSING",// -10024: Origin 또는 X-App-Id 누락
35
+ INVALID_APP_TYPE = "INVALID_APP_TYPE",// -10025: X-App-Type이 android/ios가 아님
36
+ PROJECT_NOT_REGISTERED = "PROJECT_NOT_REGISTERED",// -10022: 미등록 프로젝트 또는 origin/app
37
+ /** Gateway 서명 ecrecover 불일치 — 서명자 주소가 기대 주소와 다름 */
38
+ SIGNATURE_SIGNER_MISMATCH = "SIGNATURE_SIGNER_MISMATCH",
39
+ INVALID_CONFIG = "INVALID_CONFIG",
40
+ UNKNOWN_ERROR = "UNKNOWN_ERROR"
41
+ }
42
+ /**
43
+ * Domain Error
44
+ */
45
+ export declare class CROSSxError extends Error {
46
+ code: ErrorCode;
47
+ details?: any | undefined;
48
+ constructor(code: ErrorCode, message: string, details?: any | undefined);
49
+ toJSON(): {
50
+ name: string;
51
+ code: ErrorCode;
52
+ message: string;
53
+ details: any;
54
+ };
55
+ }
56
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,SAAS;IAEnB,oBAAoB,yBAAyB;IAC7C,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IAGjD,gBAAgB,qBAAqB;IACrC,sBAAsB,2BAA2B;IAGjD,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAG3B,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IAGvC,aAAa,kBAAkB;IAC/B,sBAAsB,2BAA2B;IAGjD,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IAGnD,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IAGzC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IAGrC,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IAGnD,sBAAsB,2BAA2B,CAAI,2BAA2B;IAChF,qBAAqB,0BAA0B,CAAM,8BAA8B;IAGnF,kBAAkB,uBAAuB,CAAY,6BAA6B;IAClF,wBAAwB,6BAA6B,CAAE,gCAAgC;IACvF,gBAAgB,qBAAqB,CAAgB,sCAAsC;IAC3F,sBAAsB,2BAA2B,CAAI,iCAAiC;IAEtF,mDAAmD;IACnD,yBAAyB,8BAA8B;IAGvD,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAE3B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,GAAG;gBAFb,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,GAAG,YAAA;IAOtB,MAAM;;;;;;CAQP"}
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Domain Types
3
+ * 순수 도메인 타입 정의 (환경 독립적)
4
+ */
5
+ export * from './chain';
6
+ export * from './prepare';
7
+ /**
8
+ * 인증 결과
9
+ */
10
+ export interface AuthResult {
11
+ success: boolean;
12
+ /** 로그인 후 로드된 EVM 주소 */
13
+ address?: string;
14
+ user?: UserInfo;
15
+ error?: string;
16
+ /** 기존 CROSSx 백업이 발견되어 마이그레이션이 필요한 상태 */
17
+ needsMigration?: boolean;
18
+ /**
19
+ * access_token JWT 서명이 실제 검증(JWKS 등)되었는지 여부.
20
+ * false인 경우, user 정보(id, email 등)는 디코딩만 수행된 미검증 데이터입니다.
21
+ * 백엔드 JWKS 엔드포인트 구현 전까지는 항상 false입니다.
22
+ */
23
+ tokenSignatureVerified?: boolean;
24
+ }
25
+ /**
26
+ * 로그인 옵션
27
+ */
28
+ export interface SignInOptions {
29
+ provider?: 'google' | 'apple';
30
+ }
31
+ /**
32
+ * 서명/트랜잭션 공통 옵션
33
+ */
34
+ export interface SignOptions {
35
+ /** 주소 인덱스 (기본값: 0) */
36
+ index?: number;
37
+ /**
38
+ * 컨펌 모달에 표시될 요청 앱 이름
39
+ * @example 'My DApp'
40
+ */
41
+ dappName?: string;
42
+ /**
43
+ * 컨펌 모달에 표시될 계정 이름
44
+ * @example 'Account 1'
45
+ */
46
+ accountName?: string;
47
+ }
48
+ /**
49
+ * 사용자 정보 (내부 도메인 타입)
50
+ */
51
+ export interface UserInfo {
52
+ id: string;
53
+ email?: string;
54
+ [key: string]: any;
55
+ }
56
+ /**
57
+ * 공개 사용자 정보 (SDK Public API)
58
+ *
59
+ * getUserInfo() 의 반환 타입.
60
+ * Android SDK의 SDKUserInfo와 동일한 필드를 제공합니다.
61
+ */
62
+ export interface SDKUserInfo {
63
+ /** 사용자 식별자 (JWT sub) */
64
+ id: string;
65
+ /** 이메일 (있는 경우) */
66
+ email?: string;
67
+ /** 로그인 프로바이더 ('google' | 'apple') */
68
+ loginType?: string;
69
+ /** 사용자의 지갑 주소 목록 */
70
+ addresses: string[];
71
+ /**
72
+ * JWT 서명이 실제 검증(JWKS 등)되었는지 여부.
73
+ * false인 경우, id·email 등은 디코딩만 수행된 미검증 데이터입니다.
74
+ */
75
+ tokenSignatureVerified: boolean;
76
+ }
77
+ /**
78
+ * 메시지 서명 결과 (SDK Public API)
79
+ */
80
+ export interface SignMessageResp {
81
+ /** CAIP-2 체인 ID (예: 'eip155:612055') */
82
+ chainId: string;
83
+ signature: string;
84
+ message: string;
85
+ address: string;
86
+ }
87
+ /**
88
+ * 트랜잭션 서명 결과 (SDK Public API)
89
+ * /mnemonic/sign 엔드포인트 응답에 대응
90
+ */
91
+ export interface SignTxResp {
92
+ /** CAIP-2 체인 ID (예: 'eip155:612055') */
93
+ chainId: string;
94
+ /** RLP 인코딩된 서명 트랜잭션 hex */
95
+ signedTx: string;
96
+ /** 서명된 트랜잭션의 hash */
97
+ txHash: string;
98
+ }
99
+ /**
100
+ * EIP-712 Typed Data 서명 결과 (SDK Public API)
101
+ */
102
+ export interface SignTypedDataResp {
103
+ /** CAIP-2 체인 ID (예: 'eip155:612055') */
104
+ chainId: string;
105
+ signature: string;
106
+ address: string;
107
+ }
108
+ /**
109
+ * 마이그레이션 결과 (SDK Public API)
110
+ * CROSSx 지갑 → Embedded Wallet 전환 결과
111
+ */
112
+ export interface MigrateResult {
113
+ address: string;
114
+ }
115
+ /**
116
+ * JWT 페이로드
117
+ */
118
+ export interface JWTPayload {
119
+ sub: string;
120
+ exp: number;
121
+ iat?: number;
122
+ iss?: string;
123
+ aud?: string;
124
+ email?: string;
125
+ [key: string]: any;
126
+ }
127
+ /**
128
+ * SDK 공개 설정 (SDK 사용자에게 노출되는 옵션)
129
+ *
130
+ * ─── URL 필드 부재에 대하여 ────────────────────────────────────────────────
131
+ * 백엔드 엔드포인트(OAuth, Auth, Wallet Gateway, Storage)는
132
+ * 이 인터페이스에 의도적으로 포함되어 있지 않습니다.
133
+ *
134
+ * 이유: 일반 사용자가 엔드포인트를 바꾸는 것을 허용하지 않기 위해서입니다.
135
+ * 엔드포인트 변경은 내부 개발자가 환경 변수(VITE_*)를 통해서만 가능합니다.
136
+ * (자세한 내용은 factory.ts 상단 주석 참고)
137
+ *
138
+ * ❌ URL 관련 필드를 이 인터페이스에 추가하지 마세요.
139
+ * ──────────────────────────────────────────────────────────────────────────
140
+ */
141
+ /**
142
+ * 피그마 디자인 시스템 Semantic 컬러 토큰 (단일 모드용)
143
+ *
144
+ * 지정하지 않은 항목은 해당 theme의 기본값을 유지합니다.
145
+ * `SDKThemeTokens.light` / `.dark` 에 각각 전달합니다.
146
+ */
147
+ export interface SDKColorOverrides {
148
+ /**
149
+ * Semantic: Primary — 버튼 배경·강조색
150
+ * @default '#019D92'
151
+ */
152
+ primary?: string;
153
+ /**
154
+ * Semantic: Secondary — 에러·경고색 (PIN 오류 등)
155
+ * @default '#E70077'
156
+ */
157
+ secondary?: string;
158
+ /**
159
+ * Semantic: OnPrimary — Primary 위 텍스트·아이콘
160
+ * @default '#FFFFFF'
161
+ */
162
+ onPrimary?: string;
163
+ /**
164
+ * Semantic: Border/Default — 카드 외곽 테두리
165
+ * @default light: 'rgba(18,18,18,0.05)' / dark: 'rgba(255,255,255,0.05)'
166
+ */
167
+ borderDefault?: string;
168
+ /**
169
+ * Semantic: Border/Subtle — 구분선·입력창 테두리
170
+ * @default light: 'rgba(18,18,18,0.1)' / dark: 'rgba(255,255,255,0.1)'
171
+ */
172
+ borderSubtle?: string;
173
+ /**
174
+ * Semantic: TextIcon/Primary — 제목·주요 텍스트
175
+ * @default light: '#121212' / dark: '#FFFFFF'
176
+ */
177
+ textIconPrimary?: string;
178
+ /**
179
+ * Semantic: TextIcon/Secondary — 부제목·보조 텍스트
180
+ * @default light: 'rgba(18,18,18,0.7)' / dark: 'rgba(255,255,255,0.7)'
181
+ */
182
+ textIconSecondary?: string;
183
+ /**
184
+ * Semantic: TextIcon/Tertiary — 힌트·비활성 텍스트·아이콘
185
+ * @default light: 'rgba(18,18,18,0.5)' / dark: 'rgba(255,255,255,0.5)'
186
+ */
187
+ textIconTertiary?: string;
188
+ /**
189
+ * Semantic: Surface/default — pill·hover 등 인라인 강조 배경
190
+ * @default light: 'rgba(18,18,18,0.05)' / dark: 'rgba(255,255,255,0.05)'
191
+ */
192
+ surfaceDefault?: string;
193
+ /**
194
+ * Semantic: Surface/BG — 모달 카드 배경
195
+ * @default light: '#FFFFFF' / dark: '#121212'
196
+ */
197
+ bg?: string;
198
+ }
199
+ /**
200
+ * 컨펌 모달 색상 토큰 오버라이드
201
+ *
202
+ * `light` / `dark` 각 모드를 독립적으로 커스터마이징할 수 있습니다.
203
+ * 지정하지 않은 항목은 해당 모드의 기본값을 유지합니다.
204
+ *
205
+ * @example
206
+ * // 라이트·다크 모두 동일한 브랜드 컬러 적용
207
+ * themeTokens: {
208
+ * light: { primary: '#FF6B35', bg: '#F5F0EB' },
209
+ * dark: { primary: '#FF6B35', bg: '#1A0A00' },
210
+ * }
211
+ *
212
+ * @example
213
+ * // 라이트 모드만 커스터마이징
214
+ * themeTokens: { light: { primary: '#FF6B35' } }
215
+ */
216
+ export interface SDKThemeTokens {
217
+ light?: SDKColorOverrides;
218
+ dark?: SDKColorOverrides;
219
+ }
220
+ export interface SDKConfig {
221
+ /**
222
+ * 프로젝트 ID (필수)
223
+ *
224
+ * 관리 콘솔에서 발급받은 프로젝트 식별자.
225
+ * Gateway API 화이트리스트 검증에 사용되며, 모든 요청에 `X-Project-Id` 헤더로 포함됩니다.
226
+ *
227
+ * @example '6ef9a259932d5e77cb1751e9dfcbe031'
228
+ */
229
+ projectId: string;
230
+ /**
231
+ * 네이티브 앱 식별자 (네이티브 환경 전용)
232
+ *
233
+ * iOS bundle ID 또는 Android package name.
234
+ * 웹 환경에서는 브라우저가 `Origin` 헤더를 자동으로 포함하므로 불필요합니다.
235
+ * 설정 시 `appType`도 함께 지정해야 합니다.
236
+ *
237
+ * @example 'com.example.myapp'
238
+ */
239
+ appId?: string;
240
+ /**
241
+ * 네이티브 앱 플랫폼 타입 (`appId` 사용 시 필수)
242
+ */
243
+ appType?: 'ios' | 'android';
244
+ /**
245
+ * Mock Wallet Provider 사용 여부 (개발/테스트용)
246
+ */
247
+ useMockWallet?: boolean;
248
+ /**
249
+ * 커스텀 로거
250
+ *
251
+ * SDK 내부 로그를 앱의 로깅 시스템으로 라우팅합니다.
252
+ * 주입된 로거는 빌드 모드(dev/prod)와 무관하게 항상 호출됩니다.
253
+ *
254
+ * @example
255
+ * logger: {
256
+ * log: (...args) => console.log('[MyApp]', ...args),
257
+ * warn: (...args) => console.warn('[MyApp]', ...args),
258
+ * error: (...args) => console.error('[MyApp]', ...args),
259
+ * }
260
+ */
261
+ logger?: import('../ports/LoggerPort').LoggerPort;
262
+ /**
263
+ * 컨펌 모달 테마
264
+ * - 'light': 밝은 테마 (기본값)
265
+ * - 'dark': 어두운 테마
266
+ */
267
+ theme?: 'light' | 'dark';
268
+ /**
269
+ * 컨펌 모달 색상 커스터마이징
270
+ * light / dark 모드를 각각 오버라이드할 수 있습니다.
271
+ * 지정하지 않은 항목은 해당 모드의 기본값을 유지합니다.
272
+ *
273
+ * @example
274
+ * themeTokens: {
275
+ * light: { primary: '#FF6B35', bg: '#F5F0EB' },
276
+ * dark: { primary: '#FF6B35', bg: '#1A0A00' },
277
+ * }
278
+ */
279
+ themeTokens?: SDKThemeTokens;
280
+ /**
281
+ * 디버그 로그 출력 여부
282
+ * - true: 로그 출력 (기본값 — 개발 빌드에서만 동작)
283
+ * - false: 로그 비활성화
284
+ *
285
+ * ⚠️ 프로덕션 빌드(import.meta.env.DEV === false)에서는
286
+ * 이 값과 관계없이 모든 로그가 완전히 비활성화됩니다.
287
+ */
288
+ debug?: boolean;
289
+ /**
290
+ * 트랜잭션 Receipt 폴링 설정
291
+ * sendTransactionAndWait() 에서 사용
292
+ */
293
+ receiptPolling?: {
294
+ /** 폴링 간격 (ms) — 기본값: 2000 */
295
+ intervalMs?: number;
296
+ /** 최대 대기 시간 (ms) — 기본값: 60000 */
297
+ timeoutMs?: number;
298
+ };
299
+ }
300
+ /**
301
+ * sendTransactionWithWaitForReceipt() 반환 타입
302
+ * 전송 결과(txHash)와 채굴 후 Receipt를 함께 포함
303
+ */
304
+ export interface TransactionWithReceipt {
305
+ chainId: string;
306
+ txHash: string;
307
+ receipt: import('./chain').TransactionReceipt;
308
+ }
309
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { EvmTransactionRequest } from './chain';
2
+
3
+ export type PrepareAction = 'sign' | 'send' | 'sign-message' | 'sign-typed-data';
4
+ /**
5
+ * Prepare에 전달할 컨텍스트.
6
+ * action에 따라 필요한 필드만 사용됩니다.
7
+ * - sign / send → tx
8
+ * - sign-message → message, from
9
+ * - sign-typed-data → typedData, from
10
+ */
11
+ export interface PrepareContext {
12
+ tx?: EvmTransactionRequest;
13
+ message?: string;
14
+ typedData?: unknown;
15
+ from?: string;
16
+ }
17
+ export interface PrepareResult {
18
+ uuid: string;
19
+ expiresAt: string;
20
+ }
21
+ //# sourceMappingURL=prepare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/core/types/prepare.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,qBAAqB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,10 @@
1
+ import { StoragePort, WalletProviderPort } from '../ports';
2
+ import { MigrateResult } from '../types';
3
+
4
+ export declare class MigrateWalletUseCase {
5
+ private storage;
6
+ private walletProvider;
7
+ constructor(storage: StoragePort, walletProvider: WalletProviderPort);
8
+ execute(pin: string, sub: string): Promise<MigrateResult>;
9
+ }
10
+ //# sourceMappingURL=MigrateWalletUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MigrateWalletUseCase.d.ts","sourceRoot":"","sources":["../../../src/core/usecases/MigrateWalletUseCase.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAI9C,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;gBADd,OAAO,EAAE,WAAW,EACpB,cAAc,EAAE,kBAAkB;IAGtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAkBhE"}
@@ -0,0 +1,38 @@
1
+ import { StoragePort, CryptoPort, OAuthPort, TransportPort, WalletProviderPort } from '../ports';
2
+ import { AuthResult, SDKConfig, SignInOptions } from '../types';
3
+ import { TokenMemoryStore } from '../services/TokenMemoryStore';
4
+
5
+ export declare class SignInUseCase {
6
+ private config;
7
+ private storage;
8
+ private crypto;
9
+ private oauth;
10
+ private transport;
11
+ private walletProvider;
12
+ private tokenStore;
13
+ private _refreshPromise;
14
+ constructor(config: SDKConfig, storage: StoragePort, crypto: CryptoPort, oauth: OAuthPort, transport: TransportPort, walletProvider: WalletProviderPort, tokenStore: TokenMemoryStore);
15
+ execute(options?: SignInOptions): Promise<AuthResult>;
16
+ /**
17
+ * Firebase 토큰 → CROSSx access_token 교환
18
+ * POST {authApiUrl}/social/login
19
+ */
20
+ private exchangeFirebaseToken;
21
+ /**
22
+ * 세션 복원
23
+ *
24
+ * 우선순위:
25
+ * 1. 메모리에 유효한 access_token이 있으면 그대로 사용 (같은 탭 내 SDK 재초기화)
26
+ * 2. 없으면 localStorage의 refresh_token으로 silentRefresh 시도
27
+ * 3. refresh_token도 없거나 만료 → null (로그인 화면으로)
28
+ */
29
+ restoreSession(): Promise<AuthResult | null>;
30
+ /**
31
+ * refresh_token으로 새 access_token 발급 (silent refresh)
32
+ * 동시 호출 시 단일 요청으로 deduplicate.
33
+ */
34
+ private silentRefresh;
35
+ private _doSilentRefresh;
36
+ private loadWallet;
37
+ }
38
+ //# sourceMappingURL=SignInUseCase.d.ts.map
@@ -0,0 +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,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,qBAAa,aAAa;IAItB,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;IATpB,OAAO,CAAC,eAAe,CAAgC;gBAG7C,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,kBAAkB,EAClC,UAAU,EAAE,gBAAgB;IAGhC,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IA0G3D;;;OAGG;YACW,qBAAqB;IA2CnC;;;;;;;OAOG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA2ClD;;;OAGG;IACH,OAAO,CAAC,aAAa;YAOP,gBAAgB;YAqDhB,UAAU;CAwBzB"}