@nexus-cross/crossx-sdk-core 0.0.0-beta.2 → 1.0.0-beta.1
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 +129 -83
- package/dist/__tests__/adapters/IndexedDBStorageAdapter.test.d.ts +2 -0
- package/dist/__tests__/adapters/IndexedDBStorageAdapter.test.d.ts.map +1 -0
- package/dist/__tests__/mocks/MockChainRegistryPort.d.ts +9 -0
- package/dist/__tests__/mocks/MockChainRegistryPort.d.ts.map +1 -0
- package/dist/__tests__/mocks/MockTransportPort.d.ts +10 -5
- package/dist/__tests__/mocks/MockTransportPort.d.ts.map +1 -1
- package/dist/__tests__/mocks/MockWalletProviderPort.d.ts +3 -8
- package/dist/__tests__/mocks/MockWalletProviderPort.d.ts.map +1 -1
- package/dist/adapters/chain/RemoteChainRegistryAdapter.d.ts +29 -0
- package/dist/adapters/chain/RemoteChainRegistryAdapter.d.ts.map +1 -0
- package/dist/adapters/confirmation/BrowserConfirmationAdapter.d.ts +6 -1
- package/dist/adapters/confirmation/BrowserConfirmationAdapter.d.ts.map +1 -1
- package/dist/adapters/oauth/BrowserOAuthAdapter.d.ts.map +1 -1
- package/dist/adapters/storage/IndexedDBStorageAdapter.d.ts +25 -0
- package/dist/adapters/storage/IndexedDBStorageAdapter.d.ts.map +1 -0
- package/dist/adapters/transport/FetchTransportAdapter.d.ts.map +1 -1
- package/dist/adapters/wallet/MockWalletProviderAdapter.d.ts +1 -6
- package/dist/adapters/wallet/MockWalletProviderAdapter.d.ts.map +1 -1
- package/dist/adapters/wallet/RemoteWalletProviderAdapter.d.ts +1 -11
- package/dist/adapters/wallet/RemoteWalletProviderAdapter.d.ts.map +1 -1
- package/dist/adapters/wallet/types.d.ts +0 -6
- package/dist/adapters/wallet/types.d.ts.map +1 -1
- package/dist/core/constants.d.ts +27 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/ports/ChainRegistryPort.d.ts +18 -0
- package/dist/core/ports/ChainRegistryPort.d.ts.map +1 -0
- package/dist/core/ports/ConfirmationPort.d.ts +46 -6
- package/dist/core/ports/ConfirmationPort.d.ts.map +1 -1
- package/dist/core/ports/TransportPort.d.ts +2 -0
- package/dist/core/ports/TransportPort.d.ts.map +1 -1
- package/dist/core/ports/WalletProviderPort.d.ts +3 -28
- package/dist/core/ports/WalletProviderPort.d.ts.map +1 -1
- package/dist/core/ports/index.d.ts +1 -0
- package/dist/core/ports/index.d.ts.map +1 -1
- package/dist/core/services/JsonRpcService.d.ts +18 -0
- package/dist/core/services/JsonRpcService.d.ts.map +1 -0
- package/dist/core/services/TypedEventEmitter.d.ts +23 -0
- package/dist/core/services/TypedEventEmitter.d.ts.map +1 -0
- package/dist/core/types/chain.d.ts +102 -17
- package/dist/core/types/chain.d.ts.map +1 -1
- package/dist/core/types/errors.d.ts +8 -3
- package/dist/core/types/errors.d.ts.map +1 -1
- package/dist/core/types/events.d.ts +23 -0
- package/dist/core/types/events.d.ts.map +1 -0
- package/dist/core/types/index.d.ts +8 -15
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/internal.d.ts +39 -0
- package/dist/core/types/internal.d.ts.map +1 -0
- package/dist/core/usecases/SignInUseCase.d.ts +32 -7
- package/dist/core/usecases/SignInUseCase.d.ts.map +1 -1
- package/dist/core/usecases/SignOutUseCase.d.ts +3 -1
- package/dist/core/usecases/SignOutUseCase.d.ts.map +1 -1
- package/dist/core/usecases/index.d.ts +0 -1
- package/dist/core/usecases/index.d.ts.map +1 -1
- package/dist/index.cjs +263 -203
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5128 -4410
- package/dist/sdk/CROSSxSDK.d.ts +148 -15
- package/dist/sdk/CROSSxSDK.d.ts.map +1 -1
- package/dist/sdk/EthereumProvider.d.ts.map +1 -1
- package/dist/sdk/factory.d.ts.map +1 -1
- package/package.json +2 -1
- package/dist/__tests__/usecases/WithdrawUseCase.test.d.ts +0 -2
- package/dist/__tests__/usecases/WithdrawUseCase.test.d.ts.map +0 -1
- package/dist/core/usecases/WithdrawUseCase.d.ts +0 -11
- package/dist/core/usecases/WithdrawUseCase.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,85 +1,82 @@
|
|
|
1
1
|
# @nexus-cross/crossx-sdk-core
|
|
2
2
|
|
|
3
|
-
CROSSx Embedded Wallet SDK — Clean Architecture + Hexagonal Architecture
|
|
3
|
+
CROSSx Embedded Wallet SDK — Built on Clean Architecture + Hexagonal Architecture
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Features
|
|
6
6
|
|
|
7
|
-
- **EIP-1193 Provider**: ethers.js / viem / wagmi
|
|
8
|
-
- **Clean Architecture**:
|
|
9
|
-
-
|
|
10
|
-
- **Port & Adapters**:
|
|
11
|
-
- **CAIP-2**:
|
|
12
|
-
-
|
|
7
|
+
- **EIP-1193 Provider**: Direct integration with ethers.js / viem / wagmi
|
|
8
|
+
- **Clean Architecture**: Separation of pure business logic and implementation
|
|
9
|
+
- **Environment Independent**: Supports Web / Node / React Native
|
|
10
|
+
- **Port & Adapters**: Swap implementations without modifying core code
|
|
11
|
+
- **CAIP-2**: Standard chain ID format (`eip155:612044`)
|
|
12
|
+
- **Transaction Confirmation Modal**: User approval required before signing/sending (cannot be bypassed)
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Installation
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
17
|
npm install @nexus-cross/crossx-sdk-core
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## Quick Start
|
|
21
21
|
|
|
22
22
|
```ts
|
|
23
23
|
import { createCROSSxSDK, ChainId } from '@nexus-cross/crossx-sdk-core';
|
|
24
24
|
|
|
25
25
|
const sdk = createCROSSxSDK({
|
|
26
|
-
receiptPolling: { intervalMs: 2000, timeoutMs: 60000 }, //
|
|
26
|
+
receiptPolling: { intervalMs: 2000, timeoutMs: 60000 }, // optional
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
await sdk.init();
|
|
30
30
|
const result = await sdk.signIn();
|
|
31
|
-
console.log('
|
|
31
|
+
console.log('Wallet address:', sdk.getAddress());
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
>
|
|
35
|
-
>
|
|
34
|
+
> Backend URLs are configured via `VITE_*` environment variables in `.env`.
|
|
35
|
+
> Do not add URL fields to `SDKConfig` or pass them directly.
|
|
36
36
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
|
-
## API
|
|
39
|
+
## API Reference
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### Initialization & Authentication
|
|
42
42
|
|
|
43
43
|
```ts
|
|
44
|
-
// SDK
|
|
44
|
+
// Initialize SDK (includes automatic session restoration)
|
|
45
45
|
await sdk.init();
|
|
46
46
|
|
|
47
|
-
//
|
|
47
|
+
// Sign in (OAuth popup)
|
|
48
48
|
const result = await sdk.signIn();
|
|
49
49
|
const result = await sdk.signIn({ provider: 'google' });
|
|
50
50
|
|
|
51
|
-
//
|
|
51
|
+
// Check authentication status
|
|
52
52
|
sdk.isAuthenticated(); // boolean
|
|
53
53
|
sdk.getAddress(); // string | null
|
|
54
54
|
|
|
55
|
-
//
|
|
55
|
+
// Sign out
|
|
56
56
|
await sdk.signOut();
|
|
57
|
-
|
|
58
|
-
// 계정 탈퇴
|
|
59
|
-
await sdk.withdraw();
|
|
60
57
|
```
|
|
61
58
|
|
|
62
59
|
---
|
|
63
60
|
|
|
64
|
-
###
|
|
61
|
+
### Wallet
|
|
65
62
|
|
|
66
63
|
```ts
|
|
67
|
-
//
|
|
64
|
+
// Create wallet (when no wallet exists after sign-in)
|
|
68
65
|
const { address } = await sdk.createWallet();
|
|
69
66
|
|
|
70
|
-
//
|
|
67
|
+
// Get native balance
|
|
71
68
|
const { wei, formatted } = await sdk.getBalance('eip155:612044');
|
|
72
69
|
console.log(formatted); // "1.234567 CROSS"
|
|
73
70
|
|
|
74
|
-
//
|
|
71
|
+
// Get current nonce
|
|
75
72
|
const nonce = await sdk.getNonce('eip155:612044');
|
|
76
73
|
```
|
|
77
74
|
|
|
78
75
|
---
|
|
79
76
|
|
|
80
|
-
###
|
|
77
|
+
### Transaction Confirmation Modal
|
|
81
78
|
|
|
82
|
-
`signTransaction()` / `sendTransaction()` / `sendTransactionAndWait()
|
|
79
|
+
When calling `signTransaction()` / `sendTransaction()` / `sendTransactionAndWait()`, the SDK automatically displays a user approval modal. There is no public API for DApp developers to bypass this.
|
|
83
80
|
|
|
84
81
|
```ts
|
|
85
82
|
import { CROSSxError, ErrorCode } from '@nexus-cross/crossx-sdk-core';
|
|
@@ -88,16 +85,16 @@ try {
|
|
|
88
85
|
const result = await sdk.signTransaction(ChainId.CROSS_TESTNET, tx);
|
|
89
86
|
} catch (error) {
|
|
90
87
|
if (error instanceof CROSSxError && error.code === ErrorCode.USER_REJECTED) {
|
|
91
|
-
console.log('
|
|
88
|
+
console.log('User cancelled the transaction');
|
|
92
89
|
}
|
|
93
90
|
}
|
|
94
91
|
```
|
|
95
92
|
|
|
96
|
-
>
|
|
93
|
+
> For more details → [Transaction Confirmation Modal Guide](../../doc/transaction-confirmation.md)
|
|
97
94
|
|
|
98
95
|
---
|
|
99
96
|
|
|
100
|
-
###
|
|
97
|
+
### Sign & Send Transactions
|
|
101
98
|
|
|
102
99
|
```ts
|
|
103
100
|
const tx = {
|
|
@@ -112,29 +109,29 @@ const tx = {
|
|
|
112
109
|
nonce: await sdk.getNonce('eip155:612044'),
|
|
113
110
|
};
|
|
114
111
|
|
|
115
|
-
//
|
|
112
|
+
// Sign only
|
|
116
113
|
const { signedTx, txHash } = await sdk.signTransaction('eip155:612044', tx);
|
|
117
114
|
|
|
118
|
-
//
|
|
115
|
+
// Send (returns immediately with status: 'pending')
|
|
119
116
|
const { txHash } = await sdk.sendTransaction('eip155:612044', tx);
|
|
120
117
|
|
|
121
|
-
//
|
|
118
|
+
// Send + Poll receipt (waits until included in block)
|
|
122
119
|
const { txHash, receipt } = await sdk.sendTransactionAndWait('eip155:612044', tx);
|
|
123
120
|
console.log(receipt.status); // '0x1' = success, '0x0' = reverted
|
|
124
121
|
```
|
|
125
122
|
|
|
126
123
|
---
|
|
127
124
|
|
|
128
|
-
### Receipt
|
|
125
|
+
### Receipt Query & Polling
|
|
129
126
|
|
|
130
127
|
```ts
|
|
131
|
-
//
|
|
128
|
+
// Single query (returns null if not yet mined)
|
|
132
129
|
const receipt = await sdk.getTransactionReceipt(txHash, 'eip155:612044');
|
|
133
130
|
|
|
134
|
-
//
|
|
131
|
+
// Poll until mined
|
|
135
132
|
const receipt = await sdk.waitForTransaction(txHash, 'eip155:612044');
|
|
136
133
|
|
|
137
|
-
//
|
|
134
|
+
// Override polling options
|
|
138
135
|
const receipt = await sdk.waitForTransaction(txHash, 'eip155:612044', {
|
|
139
136
|
intervalMs: 3000,
|
|
140
137
|
timeoutMs: 120000,
|
|
@@ -145,7 +142,7 @@ const receipt = await sdk.waitForTransaction(txHash, 'eip155:612044', {
|
|
|
145
142
|
|
|
146
143
|
### EIP-1193 Provider
|
|
147
144
|
|
|
148
|
-
ethers.js, viem, wagmi
|
|
145
|
+
Standard Provider for integration with ethers.js, viem, wagmi, and more.
|
|
149
146
|
|
|
150
147
|
```ts
|
|
151
148
|
const provider = sdk.getProvider('eip155:612044');
|
|
@@ -163,12 +160,12 @@ const client = createWalletClient({ transport: custom(provider) });
|
|
|
163
160
|
|
|
164
161
|
---
|
|
165
162
|
|
|
166
|
-
###
|
|
163
|
+
### Generic RPC Calls
|
|
167
164
|
|
|
168
|
-
|
|
165
|
+
Sends JSON-RPC requests directly to the node via the `/wallet/rpc` endpoint.
|
|
169
166
|
|
|
170
167
|
```ts
|
|
171
|
-
//
|
|
168
|
+
// Native balance
|
|
172
169
|
const balance = await sdk.rpcRequest('eth_getBalance', [address, 'latest'], 'eip155:612044');
|
|
173
170
|
|
|
174
171
|
// eth_call — ERC-20 balanceOf
|
|
@@ -181,7 +178,7 @@ const raw = await sdk.rpcRequest(
|
|
|
181
178
|
);
|
|
182
179
|
console.log(BigInt(raw).toString());
|
|
183
180
|
|
|
184
|
-
//
|
|
181
|
+
// Same call via Provider
|
|
185
182
|
const result = await provider.request({
|
|
186
183
|
method: 'eth_call',
|
|
187
184
|
params: [{ to: contractAddress, data: '0x' + selector + padded }, 'latest'],
|
|
@@ -190,65 +187,114 @@ const result = await provider.request({
|
|
|
190
187
|
|
|
191
188
|
---
|
|
192
189
|
|
|
190
|
+
## Gateway API Access Control (Project Whitelist)
|
|
191
|
+
|
|
192
|
+
The Gateway API enforces whitelist verification so that only authorized projects can access it.
|
|
193
|
+
Only combinations of **project + origin (web) or app ID (native)** registered in the management console are allowed. Unregistered requests are blocked.
|
|
194
|
+
|
|
195
|
+
### Required Headers
|
|
196
|
+
|
|
197
|
+
In addition to the existing `Authorization` header, the following headers must be included:
|
|
198
|
+
|
|
199
|
+
| Header | Description | Required |
|
|
200
|
+
|--------|------------|----------|
|
|
201
|
+
| `X-Project-Id` | Project ID issued from the management console | **Always required** |
|
|
202
|
+
| `Origin` | Request origin domain (automatically set by browser) | Required for web |
|
|
203
|
+
| `X-App-Id` | bundle ID or package name | Required for native apps |
|
|
204
|
+
| `X-App-Type` | `ios` / `android` / `windows` | Required when using `X-App-Id` |
|
|
205
|
+
|
|
206
|
+
### Request Examples
|
|
207
|
+
|
|
208
|
+
**Web request** (browser automatically includes `Origin`):
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
X-Project-Id: {project-id}
|
|
212
|
+
Authorization: Bearer {token}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Native app request**:
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
X-Project-Id: {project-id}
|
|
219
|
+
X-App-Id: com.example.app
|
|
220
|
+
X-App-Type: android
|
|
221
|
+
Authorization: Bearer {token}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Error Responses
|
|
225
|
+
|
|
226
|
+
| Code | Description |
|
|
227
|
+
|------|------------|
|
|
228
|
+
| `-10022` | Unregistered project or origin/app |
|
|
229
|
+
| `-10023` | Missing `X-Project-Id` header |
|
|
230
|
+
| `-10024` | Missing `Origin` or `X-App-Id` header |
|
|
231
|
+
| `-10025` | `X-App-Type` is not `android` / `ios` / `windows` |
|
|
232
|
+
|
|
233
|
+
> The SDK automatically includes `SDKConfig.projectId` in the `X-Project-Id` header.
|
|
234
|
+
> For web, the browser automatically sets the `Origin` header — no additional configuration needed.
|
|
235
|
+
> For native apps, set `SDKConfig.appId` and `SDKConfig.appType` and the SDK will include the appropriate headers automatically.
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
193
239
|
## SDKConfig
|
|
194
240
|
|
|
195
241
|
```ts
|
|
196
242
|
const sdk = createCROSSxSDK({
|
|
197
|
-
/** OAuth
|
|
243
|
+
/** OAuth popup mode: 'popup' (default) | 'modal' */
|
|
198
244
|
oauthDisplayMode: 'popup',
|
|
199
245
|
|
|
200
|
-
/**
|
|
246
|
+
/** Enable mock wallet (for development/testing) */
|
|
201
247
|
useMockWallet: false,
|
|
202
248
|
|
|
203
|
-
/**
|
|
249
|
+
/** Confirmation modal theme: 'light' (default) | 'dark' */
|
|
204
250
|
theme: 'light',
|
|
205
251
|
|
|
206
252
|
/**
|
|
207
|
-
*
|
|
253
|
+
* Confirmation modal color customization (independent overrides per light/dark mode)
|
|
208
254
|
*/
|
|
209
255
|
themeTokens: {
|
|
210
256
|
light: {
|
|
211
|
-
primary: '#FF6B35', //
|
|
212
|
-
bg: '#F5F0EB', //
|
|
257
|
+
primary: '#FF6B35', // Button & accent color (default: #019D92)
|
|
258
|
+
bg: '#F5F0EB', // Card background color (default: #FFFFFF)
|
|
213
259
|
},
|
|
214
260
|
dark: {
|
|
215
261
|
primary: '#FF6B35',
|
|
216
|
-
bg: '#1A0A00', //
|
|
262
|
+
bg: '#1A0A00', // Card background color (default: #121212)
|
|
217
263
|
},
|
|
218
264
|
},
|
|
219
265
|
|
|
220
|
-
/** Receipt
|
|
266
|
+
/** Receipt polling defaults */
|
|
221
267
|
receiptPolling: {
|
|
222
|
-
intervalMs: 2000, //
|
|
223
|
-
timeoutMs: 60000, //
|
|
268
|
+
intervalMs: 2000, // Polling interval (ms)
|
|
269
|
+
timeoutMs: 60000, // Maximum wait time (ms)
|
|
224
270
|
},
|
|
225
271
|
|
|
226
272
|
/**
|
|
227
|
-
*
|
|
228
|
-
* ⚠️
|
|
273
|
+
* Enable debug log output (default: true)
|
|
274
|
+
* ⚠️ Always disabled in production builds regardless of this value.
|
|
229
275
|
*/
|
|
230
276
|
debug: true,
|
|
231
277
|
});
|
|
232
278
|
```
|
|
233
279
|
|
|
234
|
-
###
|
|
280
|
+
### Confirmation Modal Theme
|
|
235
281
|
|
|
236
|
-
|
|
|
282
|
+
| Method | Description |
|
|
237
283
|
|---|---|
|
|
238
|
-
| `config.theme` |
|
|
239
|
-
| `sdk.setTheme('dark')` |
|
|
240
|
-
| `config.themeTokens.light.*` |
|
|
241
|
-
| `config.themeTokens.dark.*` |
|
|
284
|
+
| `config.theme` | Initial theme setting (`'light'` by default) |
|
|
285
|
+
| `sdk.setTheme('dark')` | Runtime theme switching (preserves `themeTokens` overrides) |
|
|
286
|
+
| `config.themeTokens.light.*` | Light mode semantic token overrides |
|
|
287
|
+
| `config.themeTokens.dark.*` | Dark mode semantic token overrides |
|
|
242
288
|
|
|
243
|
-
|
|
289
|
+
Available override tokens: `primary` · `secondary` · `onPrimary` · `borderDefault` · `borderSubtle` · `textPrimary` · `textSecondary` · `textTertiary` · `surfaceDefault` · `bg`
|
|
244
290
|
|
|
245
|
-
|
|
291
|
+
For details, see [Confirmation Modal & Prepare Flow](../../doc/transaction-confirmation.md#색상-커스터마이징-themetokens).
|
|
246
292
|
|
|
247
293
|
---
|
|
248
294
|
|
|
249
|
-
##
|
|
295
|
+
## Chain ID Constants
|
|
250
296
|
|
|
251
|
-
|
|
297
|
+
Use `ChainId` constants to prevent typos.
|
|
252
298
|
|
|
253
299
|
```ts
|
|
254
300
|
import { ChainId } from '@nexus-cross/crossx-sdk-core';
|
|
@@ -259,28 +305,28 @@ await sdk.getBalance(ChainId.CROSS_MAINNET); // 'eip155:612055'
|
|
|
259
305
|
|
|
260
306
|
---
|
|
261
307
|
|
|
262
|
-
##
|
|
308
|
+
## Environment Variables
|
|
263
309
|
|
|
264
|
-
|
|
|
310
|
+
| Variable | Purpose | Required |
|
|
265
311
|
|---|---|---|
|
|
266
312
|
| `VITE_WALLET_GATEWAY_URL` | Wallet Gateway API URL | ✅ |
|
|
267
|
-
| `VITE_OAUTH_SERVICE_URL` | OAuth
|
|
268
|
-
| `VITE_AUTH_API_URL` |
|
|
313
|
+
| `VITE_OAUTH_SERVICE_URL` | OAuth Service URL | ✅ |
|
|
314
|
+
| `VITE_AUTH_API_URL` | Auth API URL | ✅ |
|
|
269
315
|
|
|
270
316
|
---
|
|
271
317
|
|
|
272
|
-
##
|
|
318
|
+
## Public Types
|
|
273
319
|
|
|
274
320
|
```ts
|
|
275
321
|
import type {
|
|
276
322
|
SDKConfig,
|
|
277
|
-
ConfirmationTokenOverride, // themeTokens
|
|
278
|
-
ConfirmationThemeTokens, //
|
|
323
|
+
ConfirmationTokenOverride, // themeTokens type (per light/dark mode overrides)
|
|
324
|
+
ConfirmationThemeTokens, // Single mode semantic token type
|
|
279
325
|
AuthResult,
|
|
280
326
|
EvmTransactionRequest,
|
|
281
327
|
TransactionResult,
|
|
282
|
-
TransactionWithReceipt, // sendTransactionAndWait()
|
|
283
|
-
TransactionReceipt, // waitForTransaction()
|
|
328
|
+
TransactionWithReceipt, // sendTransactionAndWait() return type
|
|
329
|
+
TransactionReceipt, // waitForTransaction() return type
|
|
284
330
|
SignTransactionResult,
|
|
285
331
|
ChainIdValue,
|
|
286
332
|
} from '@nexus-cross/crossx-sdk-core';
|
|
@@ -288,15 +334,15 @@ import type {
|
|
|
288
334
|
|
|
289
335
|
---
|
|
290
336
|
|
|
291
|
-
##
|
|
337
|
+
## Related Documentation
|
|
292
338
|
|
|
293
|
-
- [
|
|
294
|
-
- [Ethereum Provider
|
|
295
|
-
- [
|
|
296
|
-
- [CAIP-2
|
|
297
|
-
- [wagmi
|
|
298
|
-
- [
|
|
339
|
+
- [Transaction Confirmation Modal](../../doc/transaction-confirmation.md)
|
|
340
|
+
- [Ethereum Provider Guide](../../doc/ethereum-provider.md)
|
|
341
|
+
- [Environment Variables](../../doc/environment-variables.md)
|
|
342
|
+
- [CAIP-2 Chain ID Guide](../../doc/caip-integration.md)
|
|
343
|
+
- [wagmi Integration Guide](../../doc/wagmi-integration.md)
|
|
344
|
+
- [Architecture](../../doc/architecture.md)
|
|
299
345
|
|
|
300
|
-
##
|
|
346
|
+
## License
|
|
301
347
|
|
|
302
348
|
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDBStorageAdapter.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/adapters/IndexedDBStorageAdapter.test.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ChainRegistryPort } from '../../core/ports/ChainRegistryPort';
|
|
2
|
+
import { ChainInfo } from '../../core/types/chain';
|
|
3
|
+
|
|
4
|
+
export declare const MOCK_CHAIN_INFO: ChainInfo;
|
|
5
|
+
export declare class MockChainRegistryPort implements ChainRegistryPort {
|
|
6
|
+
getChains: import('vitest').Mock<() => Promise<ChainInfo[]>>;
|
|
7
|
+
getChain: import('vitest').Mock<(_chainId: string) => Promise<ChainInfo>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=MockChainRegistryPort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockChainRegistryPort.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/MockChainRegistryPort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,eAAO,MAAM,eAAe,EAAE,SAG7B,CAAC;AAEF,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,SAAS,8BAAmB,OAAO,CAAC,SAAS,EAAE,CAAC,EAAuB;IACvE,QAAQ,mCAA0B,MAAM,KAAG,OAAO,CAAC,SAAS,CAAC,EAAqB;CACnF"}
|
|
@@ -2,13 +2,18 @@ import { TransportPort, TransportRequest, TransportResponse } from '../../core/p
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* vi.fn() 기반 TransportPort mock.
|
|
5
|
-
* request 메서드의 반환값을 테스트마다 mockResolvedValueOnce 로 제어하세요.
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* RPC URL(testnet.crosstoken.io)로의 요청은 rpcResults 큐에서
|
|
7
|
+
* JSON-RPC 형식으로 응답합니다.
|
|
8
|
+
* 그 외 요청은 authResponse 또는 기본값을 반환합니다.
|
|
10
9
|
*/
|
|
11
10
|
export declare class MockTransportPort implements TransportPort {
|
|
12
|
-
|
|
11
|
+
private rpcResults;
|
|
12
|
+
private authResponse;
|
|
13
|
+
request: import('vitest').Mock<(req: TransportRequest) => Promise<TransportResponse>>;
|
|
14
|
+
/** RPC 호출의 result 값을 큐에 추가 (FIFO) */
|
|
15
|
+
pushRpcResult(result: any): void;
|
|
16
|
+
/** 인증 API 등 비RPC 요청의 기본 응답 설정 */
|
|
17
|
+
setAuthResponse(response: TransportResponse): void;
|
|
13
18
|
}
|
|
14
19
|
//# sourceMappingURL=MockTransportPort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockTransportPort.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/MockTransportPort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MockTransportPort.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/MockTransportPort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI3F;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,YAAY,CAA6D;IAEjF,OAAO,8BAAqB,gBAAgB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EAYtE;IAEH,qCAAqC;IACrC,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;IAIhC,iCAAiC;IACjC,eAAe,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;CAGnD"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { WalletProviderPort, WalletData, SignResponse } from '../../core/ports';
|
|
2
|
-
import { AddressInfo
|
|
2
|
+
import { AddressInfo } from '../../core/types/chain';
|
|
3
3
|
|
|
4
4
|
export declare const MOCK_ADDRESS = "0xaabbccdd00112233445566778899aabbccddeeff";
|
|
5
5
|
export declare const MOCK_TX_HASH = "0xaa11bb22cc33dd44ee55ff6600112233445566778899aabbccddeeff00112233";
|
|
6
6
|
declare const MOCK_WALLET_DATA: WalletData;
|
|
7
7
|
declare const MOCK_SIGN_RESPONSE: SignResponse;
|
|
8
|
-
declare const MOCK_RECEIPT: TransactionReceipt;
|
|
9
8
|
/**
|
|
10
9
|
* WalletProviderPort mock.
|
|
11
10
|
* 모든 메서드가 vi.fn() 으로 spy 되어 있어 호출 여부/인수 검증이 가능합니다.
|
|
@@ -14,15 +13,11 @@ export declare class MockWalletProviderPort implements WalletProviderPort {
|
|
|
14
13
|
getOrCreateWallet: import('vitest').Mock<(_userId: string) => Promise<WalletData>>;
|
|
15
14
|
getAddress: import('vitest').Mock<(_userId: string, _index: number) => Promise<AddressInfo>>;
|
|
16
15
|
signMessage: import('vitest').Mock<(_userId: string, _chainId: string, _message: string, _index?: number) => Promise<SignResponse>>;
|
|
16
|
+
signTypedData: import('vitest').Mock<(_userId: string, _chainId: string, _typedData: unknown, _index?: number) => Promise<SignResponse>>;
|
|
17
17
|
signTransaction: import('vitest').Mock<(_userId: string, _chainId: string, _tx: any, _index?: number) => Promise<SignResponse>>;
|
|
18
18
|
sendTransaction: import('vitest').Mock<(_userId: string, _chainId: string, _tx: any) => Promise<{
|
|
19
19
|
txHash: string;
|
|
20
20
|
}>>;
|
|
21
|
-
getBalance: import('vitest').Mock<(_userId: string, _chainId: string) => Promise<string>>;
|
|
22
|
-
getTransactionCount: import('vitest').Mock<(_userId: string, _chainId: string) => Promise<number>>;
|
|
23
|
-
getTransactionReceipt: import('vitest').Mock<(_userId: string, _txHash: string) => Promise<TransactionReceipt | null>>;
|
|
24
|
-
rpcRequest: import('vitest').Mock<(_method: string, _params: any[], _chainId: string) => Promise<any>>;
|
|
25
|
-
withdraw: import('vitest').Mock<(_confirmation: string) => Promise<void>>;
|
|
26
21
|
}
|
|
27
|
-
export { MOCK_WALLET_DATA, MOCK_SIGN_RESPONSE
|
|
22
|
+
export { MOCK_WALLET_DATA, MOCK_SIGN_RESPONSE };
|
|
28
23
|
//# sourceMappingURL=MockWalletProviderPort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockWalletProviderPort.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/MockWalletProviderPort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"MockWalletProviderPort.d.ts","sourceRoot":"","sources":["../../../src/__tests__/mocks/MockWalletProviderPort.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,YAAY,+CAA+C,CAAC;AACzE,eAAO,MAAM,YAAY,uEAAuE,CAAC;AAEjG,QAAA,MAAM,gBAAgB,EAAE,UAKvB,CAAC;AAIF,QAAA,MAAM,kBAAkB,EAAE,YAKzB,CAAC;AAEF;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,iBAAiB,kCAAyB,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,EAAsB;IAE5F,UAAU,kCAAyB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,WAAW,CAAC,EAG5E;IAEJ,WAAW,kCACO,MAAM,YAAY,MAAM,YAAY,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC,EAEnG;IAEF,aAAa,kCACK,MAAM,YAAY,MAAM,cAAc,OAAO,WAAW,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC,EAEtG;IAEF,eAAe,kCACG,MAAM,YAAY,MAAM,OAAO,GAAG,WAAW,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC,EAE3F;IAEF,eAAe,kCACG,MAAM,YAAY,MAAM,OAAO,GAAG,KAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EAEhF;CACH;AAED,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChainRegistryPort } from '../../core/ports/ChainRegistryPort';
|
|
2
|
+
import { TransportPort } from '../../core/ports/TransportPort';
|
|
3
|
+
import { ChainInfo } from '../../core/types/chain';
|
|
4
|
+
|
|
5
|
+
export interface ChainRegistryAdapterConfig {
|
|
6
|
+
gatewayUrl: string;
|
|
7
|
+
projectId: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class RemoteChainRegistryAdapter implements ChainRegistryPort {
|
|
10
|
+
private readonly baseUrl;
|
|
11
|
+
private readonly projectId;
|
|
12
|
+
private readonly transport;
|
|
13
|
+
private cache;
|
|
14
|
+
private loadedAt;
|
|
15
|
+
private usingFallback;
|
|
16
|
+
constructor(config: ChainRegistryAdapterConfig, transport: TransportPort);
|
|
17
|
+
getChains(): Promise<ChainInfo[]>;
|
|
18
|
+
getChain(chainId: string): Promise<ChainInfo>;
|
|
19
|
+
/** 캐시를 무효화하여 다음 호출 시 Gateway에서 재조회합니다. */
|
|
20
|
+
invalidateCache(): void;
|
|
21
|
+
private isCacheValid;
|
|
22
|
+
private populateCache;
|
|
23
|
+
private request;
|
|
24
|
+
private handleEnvelopeError;
|
|
25
|
+
private fallbackOrThrow;
|
|
26
|
+
private static fallbackChains;
|
|
27
|
+
private static mapErrorCode;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=RemoteChainRegistryAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteChainRegistryAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/chain/RemoteChainRegistryAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKxD,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAE1C,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,0BAA0B,EAAE,SAAS,EAAE,aAAa;IAMlE,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAuBjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAQnD,0CAA0C;IAC1C,eAAe,IAAI,IAAI;IAMvB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;YASP,OAAO;IAWrB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM,CAAC,cAAc;IAO7B,OAAO,CAAC,MAAM,CAAC,YAAY;CAkB5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfirmationPort, ConfirmationDetails, TransactionCompleteDetails } from '../../core/ports/ConfirmationPort';
|
|
1
|
+
import { ConfirmationPort, ConfirmationDetails, TransactionCompleteDetails, TransactionPendingDetails } from '../../core/ports/ConfirmationPort';
|
|
2
2
|
import { SDKThemeTokens } from '../../core/types';
|
|
3
3
|
|
|
4
4
|
export type ConfirmationTheme = 'light' | 'dark';
|
|
@@ -31,6 +31,11 @@ export declare class BrowserConfirmationAdapter implements ConfirmationPort {
|
|
|
31
31
|
* "Done" 버튼 클릭, 닫기 버튼 클릭, 배경 클릭, Escape 키로 닫힙니다.
|
|
32
32
|
*/
|
|
33
33
|
showTransactionComplete(details: TransactionCompleteDetails): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* 트랜잭션 전송 직후 "대기 중" 모달을 표시하고,
|
|
36
|
+
* receiptPromise가 resolve되면 결과(성공/실패/타임아웃)로 전환합니다.
|
|
37
|
+
*/
|
|
38
|
+
showTransactionProgress(pending: TransactionPendingDetails, receiptPromise: Promise<TransactionCompleteDetails>): Promise<void>;
|
|
34
39
|
requestConfirmation(details: ConfirmationDetails): Promise<boolean>;
|
|
35
40
|
}
|
|
36
41
|
//# sourceMappingURL=BrowserConfirmationAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserConfirmationAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/confirmation/BrowserConfirmationAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EAEnB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"BrowserConfirmationAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/confirmation/BrowserConfirmationAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EAEnB,0BAA0B,EAC1B,yBAAyB,EAG1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;AA8sDjD,qBAAa,0BAA2B,YAAW,gBAAgB;IACjE,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,MAAM,CAAc;gBAEhB,KAAK,GAAE,iBAA2B,EAAE,SAAS,CAAC,EAAE,cAAc;IAM1E,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI;IAMpE,QAAQ,IAAI,iBAAiB;IAI7B;;;;OAIG;IACH,iBAAiB,IAAI,OAAO,CAAC,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;IA8BvD;;;OAGG;IACH,wBAAwB,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;IA0BvD;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiBjE;;;OAGG;IACH,uBAAuB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC3E;;;OAGG;IACH,uBAAuB,CACrB,OAAO,EAAE,yBAAyB,EAClC,cAAc,EAAE,OAAO,CAAC,0BAA0B,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAqChB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CA2CpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserOAuthAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/oauth/BrowserOAuthAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/D,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,MAAM,CAAC,aAAa;IAM5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserOAuthAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/oauth/BrowserOAuthAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/D,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,MAAM,CAAC,aAAa;IAM5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;CA8G/C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { StoragePort } from '../../core/ports';
|
|
2
|
+
|
|
3
|
+
export declare class IndexedDBStorageAdapter implements StoragePort {
|
|
4
|
+
private db;
|
|
5
|
+
private cryptoKey;
|
|
6
|
+
private initPromise;
|
|
7
|
+
private ensureReady;
|
|
8
|
+
private openDB;
|
|
9
|
+
private idbGet;
|
|
10
|
+
private idbPut;
|
|
11
|
+
private idbDelete;
|
|
12
|
+
private idbClear;
|
|
13
|
+
private init;
|
|
14
|
+
private encrypt;
|
|
15
|
+
private decrypt;
|
|
16
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
17
|
+
get<T>(key: string): Promise<T | null>;
|
|
18
|
+
remove(key: string): Promise<void>;
|
|
19
|
+
clear(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* IndexedDB + Web Crypto 사용 가능 여부 확인
|
|
22
|
+
*/
|
|
23
|
+
static isAvailable(): boolean;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=IndexedDBStorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDBStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/storage/IndexedDBStorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAepD,qBAAa,uBAAwB,YAAW,WAAW;IACzD,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,WAAW,CAA8B;YAEnC,WAAW;IAQzB,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,QAAQ;YASF,IAAI;YAiBJ,OAAO;YAYP,OAAO;IAUf,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAatC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;CAK9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetchTransportAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/transport/FetchTransportAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI3F,qBAAa,qBAAsB,YAAW,aAAa;IACnD,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FetchTransportAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/transport/FetchTransportAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI3F,qBAAa,qBAAsB,YAAW,aAAa;IACnD,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAiCjF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WalletProviderPort, WalletData, SignResponse } from '../../core/ports/WalletProviderPort';
|
|
2
|
-
import { TransactionReceipt, AddressInfo, EvmTransactionRequest } from '../../core/types/chain';
|
|
3
2
|
import { StoragePort } from '../../core/ports';
|
|
3
|
+
import { AddressInfo, EvmTransactionRequest } from '../../core/types/chain';
|
|
4
4
|
import { PrepareAction, PrepareContext, PrepareResult } from '../../core/types/prepare';
|
|
5
5
|
|
|
6
6
|
export declare class MockWalletProviderAdapter implements WalletProviderPort {
|
|
@@ -8,10 +8,6 @@ export declare class MockWalletProviderAdapter implements WalletProviderPort {
|
|
|
8
8
|
constructor(storage: StoragePort);
|
|
9
9
|
getOrCreateWallet(userId: string): Promise<WalletData>;
|
|
10
10
|
getAddress(userId: string, index: number): Promise<AddressInfo>;
|
|
11
|
-
getBalance(_address: string, _chainId: string): Promise<string>;
|
|
12
|
-
getTransactionCount(_address: string, _chainId: string): Promise<number>;
|
|
13
|
-
getTransactionReceipt(_txHash: string, _chainId: string): Promise<TransactionReceipt | null>;
|
|
14
|
-
rpcRequest(method: string, _params: any[], _chainId: string): Promise<any>;
|
|
15
11
|
prepare(action: PrepareAction, _context: PrepareContext): Promise<PrepareResult>;
|
|
16
12
|
signMessage(userId: string, chainId: string, message: string, index?: number, uuid?: string, from?: string): Promise<SignResponse>;
|
|
17
13
|
signTypedData(userId: string, chainId: string, typedData: unknown, index?: number, uuid?: string, from?: string): Promise<SignResponse>;
|
|
@@ -19,7 +15,6 @@ export declare class MockWalletProviderAdapter implements WalletProviderPort {
|
|
|
19
15
|
sendTransaction(userId: string, chainId: string, tx: EvmTransactionRequest, uuid?: string): Promise<{
|
|
20
16
|
txHash: string;
|
|
21
17
|
}>;
|
|
22
|
-
withdraw(confirmation: string): Promise<void>;
|
|
23
18
|
recoverWallet(userId: string, shareC: string): Promise<WalletData>;
|
|
24
19
|
migrateWallet(pin: string, sub: string): Promise<WalletData>;
|
|
25
20
|
private generateMockEvmAddress;
|