@nexus-cross/dapp-ui 1.0.1-beta.1 → 1.0.1-beta.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 +14 -14
- package/dist/index.d.cts +206 -7
- package/dist/index.d.ts +206 -7
- package/dist/index.js +14 -14
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -124,6 +124,173 @@ interface SendTransactionArgs {
|
|
|
124
124
|
gas?: bigint;
|
|
125
125
|
}
|
|
126
126
|
type SendTransactionFn = (args: SendTransactionArgs) => Promise<`0x${string}`>;
|
|
127
|
+
interface PoolToken {
|
|
128
|
+
address: string;
|
|
129
|
+
symbol: string;
|
|
130
|
+
name: string;
|
|
131
|
+
decimals: number;
|
|
132
|
+
price: string;
|
|
133
|
+
}
|
|
134
|
+
interface RewardPool {
|
|
135
|
+
pool_id: number;
|
|
136
|
+
pool_address: string;
|
|
137
|
+
pool_name: string;
|
|
138
|
+
pool_type: "CrossPool" | "GamePool";
|
|
139
|
+
pool_status: string;
|
|
140
|
+
deposit_token: PoolToken;
|
|
141
|
+
reward_tokens: PoolToken[];
|
|
142
|
+
total_deposited: string;
|
|
143
|
+
total_users: number;
|
|
144
|
+
created_block: number;
|
|
145
|
+
created_time: number;
|
|
146
|
+
last_updated_block: number;
|
|
147
|
+
last_updated_time: number;
|
|
148
|
+
}
|
|
149
|
+
interface UserDepositInfo {
|
|
150
|
+
account: string;
|
|
151
|
+
pool_address: string;
|
|
152
|
+
pool_id: number;
|
|
153
|
+
pool_name: string;
|
|
154
|
+
deposited_amount: string;
|
|
155
|
+
claimable_reward: string;
|
|
156
|
+
total_rewards_claimed: string;
|
|
157
|
+
last_deposited_block: number;
|
|
158
|
+
last_updated_block: number;
|
|
159
|
+
last_updated_time: number;
|
|
160
|
+
last_withdrawn_block: number;
|
|
161
|
+
}
|
|
162
|
+
interface Billboard {
|
|
163
|
+
price: string;
|
|
164
|
+
change: string;
|
|
165
|
+
rate: number;
|
|
166
|
+
high24: string;
|
|
167
|
+
low24: string;
|
|
168
|
+
baseVolume: string;
|
|
169
|
+
quoteVolume: string;
|
|
170
|
+
}
|
|
171
|
+
interface DexPairInfo {
|
|
172
|
+
pair_name: string;
|
|
173
|
+
pair_address: string;
|
|
174
|
+
quote_address: string;
|
|
175
|
+
base_address: string;
|
|
176
|
+
quote_symbol: string;
|
|
177
|
+
base_symbol: string;
|
|
178
|
+
quote_name: string;
|
|
179
|
+
base_name: string;
|
|
180
|
+
quote_decimals: number;
|
|
181
|
+
base_decimals: number;
|
|
182
|
+
icon_image: string;
|
|
183
|
+
enabled: boolean;
|
|
184
|
+
active: boolean;
|
|
185
|
+
status: string;
|
|
186
|
+
billboard: Billboard;
|
|
187
|
+
tick_size: string;
|
|
188
|
+
lot_size: string;
|
|
189
|
+
}
|
|
190
|
+
interface DexOpenOrder {
|
|
191
|
+
order_id: number;
|
|
192
|
+
/** 0 = sell (ask), 1 = buy (bid) */
|
|
193
|
+
order_side: number;
|
|
194
|
+
owner: string;
|
|
195
|
+
pair: string;
|
|
196
|
+
price: string;
|
|
197
|
+
amount: string;
|
|
198
|
+
filled: string;
|
|
199
|
+
volume: string;
|
|
200
|
+
created_at: number;
|
|
201
|
+
created_block: number;
|
|
202
|
+
created_hash: string;
|
|
203
|
+
}
|
|
204
|
+
interface ForgePoolToken {
|
|
205
|
+
address: string;
|
|
206
|
+
name: string;
|
|
207
|
+
symbol: string;
|
|
208
|
+
image: string;
|
|
209
|
+
}
|
|
210
|
+
interface ForgePool {
|
|
211
|
+
lp_balance: string;
|
|
212
|
+
pair_address: string;
|
|
213
|
+
pool_ownership: string;
|
|
214
|
+
total_supply: string;
|
|
215
|
+
token: ForgePoolToken;
|
|
216
|
+
}
|
|
217
|
+
interface ForgeTokenDetail {
|
|
218
|
+
address: string;
|
|
219
|
+
name: string;
|
|
220
|
+
symbol: string;
|
|
221
|
+
image: string;
|
|
222
|
+
image_url: string;
|
|
223
|
+
pair_address: string;
|
|
224
|
+
wrapped_native: string;
|
|
225
|
+
virtual_reserve_b: string;
|
|
226
|
+
reserve_a: string;
|
|
227
|
+
reserve_b: string;
|
|
228
|
+
graduated: boolean;
|
|
229
|
+
current_price: string;
|
|
230
|
+
market_cap: string;
|
|
231
|
+
total_supply: string;
|
|
232
|
+
available_supply: string;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
type DexMarket = "cross" | "crossd" | "forge";
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* dapp-ui가 렌더하는 outlink의 대분류.
|
|
239
|
+
* `portfolio`는 세부적으로 `origin`으로 더 나뉜다.
|
|
240
|
+
*/
|
|
241
|
+
type OutlinkCategory = "terms" | "privacy" | "portfolio";
|
|
242
|
+
/**
|
|
243
|
+
* `onOutlink` 콜백에 전달되는 호출 컨텍스트. `category` + `origin`으로
|
|
244
|
+
* 호출측이 목적지별 분기를 할 수 있고, `portfolio-*`의 경우 해당 섹션의
|
|
245
|
+
* 원시 데이터를 `payload`로 내려보낸다.
|
|
246
|
+
*
|
|
247
|
+
* 새로운 포트폴리오 섹션이 추가될 때는 이 union에 variant 하나만 더하면
|
|
248
|
+
* 자동으로 호출측에도 타입이 좁혀져서 전달된다.
|
|
249
|
+
*/
|
|
250
|
+
type OutlinkContext = {
|
|
251
|
+
category: "terms";
|
|
252
|
+
origin: "terms";
|
|
253
|
+
} | {
|
|
254
|
+
category: "privacy";
|
|
255
|
+
origin: "privacy";
|
|
256
|
+
} | {
|
|
257
|
+
category: "portfolio";
|
|
258
|
+
origin: "portfolio-rewards";
|
|
259
|
+
payload: {
|
|
260
|
+
pool: RewardPool;
|
|
261
|
+
userDeposit?: UserDepositInfo;
|
|
262
|
+
};
|
|
263
|
+
} | {
|
|
264
|
+
category: "portfolio";
|
|
265
|
+
origin: "portfolio-forge";
|
|
266
|
+
payload: {
|
|
267
|
+
pool: ForgePool;
|
|
268
|
+
tokenDetail?: ForgeTokenDetail;
|
|
269
|
+
};
|
|
270
|
+
} | {
|
|
271
|
+
category: "portfolio";
|
|
272
|
+
origin: "portfolio-dex-order";
|
|
273
|
+
payload: {
|
|
274
|
+
market: DexMarket;
|
|
275
|
+
side: "buy" | "sell";
|
|
276
|
+
order: DexOpenOrder;
|
|
277
|
+
pair?: DexPairInfo;
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
type OutlinkOrigin = OutlinkContext["origin"];
|
|
281
|
+
/**
|
|
282
|
+
* outlink 가로채기 콜백. 반환값 규칙:
|
|
283
|
+
*
|
|
284
|
+
* - `string` → 해당 URL로 이동(원본을 변형 가능).
|
|
285
|
+
* - `null` → 이동 취소(창도 열리지 않음).
|
|
286
|
+
* - `undefined` → 원본 URL로 그대로 이동 (no-op).
|
|
287
|
+
* - `Promise<...>`→ 위 값 중 하나를 resolve. 비동기 동안 사용자 제스처를
|
|
288
|
+
* 유지하기 위해 빈 창이 먼저 열린 뒤 URL이 채워진다.
|
|
289
|
+
*
|
|
290
|
+
* middle-click · cmd-click · ctrl-click 등 브라우저 새 탭 단축 동작은
|
|
291
|
+
* 가로채지 않고 원본 `href`로 그대로 열린다.
|
|
292
|
+
*/
|
|
293
|
+
type OnOutlink = (link: string, ctx: OutlinkContext) => string | null | undefined | Promise<string | null | undefined>;
|
|
127
294
|
|
|
128
295
|
interface WalletInfoTriggerProps {
|
|
129
296
|
asChild?: boolean;
|
|
@@ -173,15 +340,27 @@ interface WalletInfoProps {
|
|
|
173
340
|
preferredTokens?: PreferredToken[];
|
|
174
341
|
onSelectWallet?: () => void;
|
|
175
342
|
onCopyAddress?: (address: string, success: boolean) => void;
|
|
176
|
-
/**
|
|
343
|
+
/**
|
|
344
|
+
* 지정 시 기본 Disconnect 버튼이 Footer에 노출됨. `WalletInfo.Footer` 슬롯이
|
|
345
|
+
* 있으면 해당 슬롯이 메인 영역을 대체한다. Terms/Privacy 링크는 둘 중 무엇을
|
|
346
|
+
* 쓰든 항상 하단에 함께 렌더된다.
|
|
347
|
+
*/
|
|
177
348
|
onDisconnect?: () => void;
|
|
178
349
|
/** 기본 Disconnect 버튼 라벨 (기본 "Disconnect"). */
|
|
179
350
|
disconnectLabel?: string;
|
|
180
|
-
/**
|
|
351
|
+
/**
|
|
352
|
+
* Footer 하단 Terms 링크 URL.
|
|
353
|
+
* 미지정 시 CROSS 에코시스템 기본 URL로 폴백되어 자동 노출된다.
|
|
354
|
+
* 숨기려면 빈 문자열(`""`)을 전달.
|
|
355
|
+
*/
|
|
181
356
|
termsUrl?: string;
|
|
182
357
|
/** Terms 링크 라벨 (기본 "Terms of Service"). */
|
|
183
358
|
termsLabel?: string;
|
|
184
|
-
/**
|
|
359
|
+
/**
|
|
360
|
+
* Footer 하단 Privacy 링크 URL.
|
|
361
|
+
* 미지정 시 CROSS 에코시스템 기본 URL로 폴백되어 자동 노출된다.
|
|
362
|
+
* 숨기려면 빈 문자열(`""`)을 전달.
|
|
363
|
+
*/
|
|
185
364
|
privacyUrl?: string;
|
|
186
365
|
/** Privacy 링크 라벨 (기본 "Privacy Policy"). */
|
|
187
366
|
privacyLabel?: string;
|
|
@@ -206,10 +385,20 @@ interface WalletInfoProps {
|
|
|
206
385
|
* wagmi의 `sendTransactionAsync`를 그대로 전달해도 호환된다.
|
|
207
386
|
*/
|
|
208
387
|
sendTransaction?: SendTransactionFn;
|
|
388
|
+
/**
|
|
389
|
+
* Terms/Privacy · 포트폴리오 섹션 등 외부 링크 이동을 가로채는 콜백.
|
|
390
|
+
* `(url, ctx) => newUrl | null | undefined | Promise<...>` 형태이며
|
|
391
|
+
* - `string` → 해당 URL로 이동(변형 가능)
|
|
392
|
+
* - `null` → 이동 취소
|
|
393
|
+
* - `undefined` → 원본 URL 유지
|
|
394
|
+
* middle-click · cmd-click은 가로채지 않고 원본 `href`로 열린다.
|
|
395
|
+
* `showPortfolio=true`일 때 내부 `WalletPortfolioBody`로도 릴레이된다.
|
|
396
|
+
*/
|
|
397
|
+
onOutlink?: OnOutlink;
|
|
209
398
|
style?: WalletInfoStyle;
|
|
210
399
|
children: React.ReactNode;
|
|
211
400
|
}
|
|
212
|
-
declare function WalletInfoRoot({ env, theme, mobileBreakpoint, drawerDirection, modal, showBalance, showForgeToken, showGameToken, showQR, qrLogoSrc, walletAddress, accountName, profileImageUrl, connectorId, connectorName: connectorNameProp, connectorIconUrl: connectorIconUrlProp, preferredTokens, onSelectWallet, onCopyAddress, onDisconnect, disconnectLabel, termsUrl, termsLabel, privacyUrl, privacyLabel, open: propOpen, onOpenChange, showPortfolio, portfolioTitle, showTotalAssets, totalAssetsLabel, sendTransaction, style, children, }: WalletInfoProps): react_jsx_runtime.JSX.Element;
|
|
401
|
+
declare function WalletInfoRoot({ env, theme, mobileBreakpoint, drawerDirection, modal, showBalance, showForgeToken, showGameToken, showQR, qrLogoSrc, walletAddress, accountName, profileImageUrl, connectorId, connectorName: connectorNameProp, connectorIconUrl: connectorIconUrlProp, preferredTokens, onSelectWallet, onCopyAddress, onDisconnect, disconnectLabel, termsUrl, termsLabel, privacyUrl, privacyLabel, open: propOpen, onOpenChange, showPortfolio, portfolioTitle, showTotalAssets, totalAssetsLabel, sendTransaction, onOutlink, style, children, }: WalletInfoProps): react_jsx_runtime.JSX.Element;
|
|
213
402
|
declare const WalletInfo: typeof WalletInfoRoot & {
|
|
214
403
|
Trigger: typeof WalletInfoTrigger;
|
|
215
404
|
Content: typeof WalletInfoContent;
|
|
@@ -413,9 +602,14 @@ interface WalletPortfolioProps {
|
|
|
413
602
|
* 종속되지 않도록 외부에서 주입한다.
|
|
414
603
|
*/
|
|
415
604
|
sendTransaction?: SendTransactionFn;
|
|
605
|
+
/**
|
|
606
|
+
* 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
|
|
607
|
+
* 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
|
|
608
|
+
*/
|
|
609
|
+
onOutlink?: OnOutlink;
|
|
416
610
|
children: React.ReactNode;
|
|
417
611
|
}
|
|
418
|
-
declare function WalletPortfolioRoot({ env, theme, walletAddress, open: propOpen, onOpenChange, sendTransaction, children, }: WalletPortfolioProps): react_jsx_runtime.JSX.Element;
|
|
612
|
+
declare function WalletPortfolioRoot({ env, theme, walletAddress, open: propOpen, onOpenChange, sendTransaction, onOutlink, children, }: WalletPortfolioProps): react_jsx_runtime.JSX.Element;
|
|
419
613
|
declare const WalletPortfolio: typeof WalletPortfolioRoot & {
|
|
420
614
|
Trigger: typeof WalletPortfolioTrigger;
|
|
421
615
|
Content: typeof WalletPortfolioContent;
|
|
@@ -443,8 +637,13 @@ interface WalletPortfolioBodyProps {
|
|
|
443
637
|
* `WalletPortfolioBody`를 단독 embed로 사용하는 경우 직접 전달해야 한다.
|
|
444
638
|
*/
|
|
445
639
|
sendTransaction?: SendTransactionFn;
|
|
640
|
+
/**
|
|
641
|
+
* 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
|
|
642
|
+
* 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
|
|
643
|
+
*/
|
|
644
|
+
onOutlink?: OnOutlink;
|
|
446
645
|
}
|
|
447
|
-
declare function WalletPortfolioBody({ env, theme, walletAddress, onBack, showHeader, variant, className, sendTransaction, }: WalletPortfolioBodyProps): react_jsx_runtime.JSX.Element;
|
|
646
|
+
declare function WalletPortfolioBody({ env, theme, walletAddress, onBack, showHeader, variant, className, sendTransaction, onOutlink, }: WalletPortfolioBodyProps): react_jsx_runtime.JSX.Element;
|
|
448
647
|
|
|
449
648
|
declare function CROSSxIcon(): react_jsx_runtime.JSX.Element;
|
|
450
649
|
declare function MetaMaskIcon(): react_jsx_runtime.JSX.Element;
|
|
@@ -671,4 +870,4 @@ declare const BINANCE_ICON: string;
|
|
|
671
870
|
declare const GOOGLE_ICON: string;
|
|
672
871
|
declare const APPLE_ICON: string;
|
|
673
872
|
|
|
674
|
-
export { APPLE_ICON, AppLauncher, AppLauncherContent, type AppLauncherContentProps, type AppLauncherProps, AppLauncherTrigger, type AppLauncherTriggerProps, BINANCE_ICON, CONNECTOR_REGISTRY, CROSSX_ICON, type ChainId, ConnectButton, type ConnectButtonProps, ConnectorId, type ConnectorMeta, type DrawerDirection$1 as DrawerDirection, type Environment, GOOGLE_ICON, type GlobalMenu, type GlobalMenuItem, type GlobalMenuItemUrl, METAMASK_ICON, type PreferredToken, type SendTransactionArgs, type SendTransactionFn, TOKEN_STATS_QUERY_KEY, type Theme, type TokenBalance, type TokenBalanceResponse, type TokenStats, type TokenStatsResponse, USER_BALANCE_QUERY_KEY, WALLET_REGISTRY, type WalletConfig, WalletConnectModal, type WalletConnectModalContentProps, type WalletConnectModalProps, type WalletConnectModalStyle, type WalletConnectModalTriggerProps, type WalletHandlers, type WalletId, WalletInfo, type WalletInfoContentProps, type WalletInfoFooterProps, type WalletInfoNavProps, type WalletInfoProps, type WalletInfoStyle, type WalletInfoTriggerProps, WalletPortfolio, WalletPortfolioBody, type WalletPortfolioBodyProps, type WalletPortfolioContentProps, type WalletPortfolioProps, type WalletPortfolioTriggerProps, type WalletProvider, useGlobalMenu, useTokenBalance, useTokenStats, useWalletDetect };
|
|
873
|
+
export { APPLE_ICON, AppLauncher, AppLauncherContent, type AppLauncherContentProps, type AppLauncherProps, AppLauncherTrigger, type AppLauncherTriggerProps, BINANCE_ICON, CONNECTOR_REGISTRY, CROSSX_ICON, type ChainId, ConnectButton, type ConnectButtonProps, ConnectorId, type ConnectorMeta, type DrawerDirection$1 as DrawerDirection, type Environment, GOOGLE_ICON, type GlobalMenu, type GlobalMenuItem, type GlobalMenuItemUrl, METAMASK_ICON, type OnOutlink, type OutlinkCategory, type OutlinkContext, type OutlinkOrigin, type PreferredToken, type SendTransactionArgs, type SendTransactionFn, TOKEN_STATS_QUERY_KEY, type Theme, type TokenBalance, type TokenBalanceResponse, type TokenStats, type TokenStatsResponse, USER_BALANCE_QUERY_KEY, WALLET_REGISTRY, type WalletConfig, WalletConnectModal, type WalletConnectModalContentProps, type WalletConnectModalProps, type WalletConnectModalStyle, type WalletConnectModalTriggerProps, type WalletHandlers, type WalletId, WalletInfo, type WalletInfoContentProps, type WalletInfoFooterProps, type WalletInfoNavProps, type WalletInfoProps, type WalletInfoStyle, type WalletInfoTriggerProps, WalletPortfolio, WalletPortfolioBody, type WalletPortfolioBodyProps, type WalletPortfolioContentProps, type WalletPortfolioProps, type WalletPortfolioTriggerProps, type WalletProvider, useGlobalMenu, useTokenBalance, useTokenStats, useWalletDetect };
|
package/dist/index.d.ts
CHANGED
|
@@ -124,6 +124,173 @@ interface SendTransactionArgs {
|
|
|
124
124
|
gas?: bigint;
|
|
125
125
|
}
|
|
126
126
|
type SendTransactionFn = (args: SendTransactionArgs) => Promise<`0x${string}`>;
|
|
127
|
+
interface PoolToken {
|
|
128
|
+
address: string;
|
|
129
|
+
symbol: string;
|
|
130
|
+
name: string;
|
|
131
|
+
decimals: number;
|
|
132
|
+
price: string;
|
|
133
|
+
}
|
|
134
|
+
interface RewardPool {
|
|
135
|
+
pool_id: number;
|
|
136
|
+
pool_address: string;
|
|
137
|
+
pool_name: string;
|
|
138
|
+
pool_type: "CrossPool" | "GamePool";
|
|
139
|
+
pool_status: string;
|
|
140
|
+
deposit_token: PoolToken;
|
|
141
|
+
reward_tokens: PoolToken[];
|
|
142
|
+
total_deposited: string;
|
|
143
|
+
total_users: number;
|
|
144
|
+
created_block: number;
|
|
145
|
+
created_time: number;
|
|
146
|
+
last_updated_block: number;
|
|
147
|
+
last_updated_time: number;
|
|
148
|
+
}
|
|
149
|
+
interface UserDepositInfo {
|
|
150
|
+
account: string;
|
|
151
|
+
pool_address: string;
|
|
152
|
+
pool_id: number;
|
|
153
|
+
pool_name: string;
|
|
154
|
+
deposited_amount: string;
|
|
155
|
+
claimable_reward: string;
|
|
156
|
+
total_rewards_claimed: string;
|
|
157
|
+
last_deposited_block: number;
|
|
158
|
+
last_updated_block: number;
|
|
159
|
+
last_updated_time: number;
|
|
160
|
+
last_withdrawn_block: number;
|
|
161
|
+
}
|
|
162
|
+
interface Billboard {
|
|
163
|
+
price: string;
|
|
164
|
+
change: string;
|
|
165
|
+
rate: number;
|
|
166
|
+
high24: string;
|
|
167
|
+
low24: string;
|
|
168
|
+
baseVolume: string;
|
|
169
|
+
quoteVolume: string;
|
|
170
|
+
}
|
|
171
|
+
interface DexPairInfo {
|
|
172
|
+
pair_name: string;
|
|
173
|
+
pair_address: string;
|
|
174
|
+
quote_address: string;
|
|
175
|
+
base_address: string;
|
|
176
|
+
quote_symbol: string;
|
|
177
|
+
base_symbol: string;
|
|
178
|
+
quote_name: string;
|
|
179
|
+
base_name: string;
|
|
180
|
+
quote_decimals: number;
|
|
181
|
+
base_decimals: number;
|
|
182
|
+
icon_image: string;
|
|
183
|
+
enabled: boolean;
|
|
184
|
+
active: boolean;
|
|
185
|
+
status: string;
|
|
186
|
+
billboard: Billboard;
|
|
187
|
+
tick_size: string;
|
|
188
|
+
lot_size: string;
|
|
189
|
+
}
|
|
190
|
+
interface DexOpenOrder {
|
|
191
|
+
order_id: number;
|
|
192
|
+
/** 0 = sell (ask), 1 = buy (bid) */
|
|
193
|
+
order_side: number;
|
|
194
|
+
owner: string;
|
|
195
|
+
pair: string;
|
|
196
|
+
price: string;
|
|
197
|
+
amount: string;
|
|
198
|
+
filled: string;
|
|
199
|
+
volume: string;
|
|
200
|
+
created_at: number;
|
|
201
|
+
created_block: number;
|
|
202
|
+
created_hash: string;
|
|
203
|
+
}
|
|
204
|
+
interface ForgePoolToken {
|
|
205
|
+
address: string;
|
|
206
|
+
name: string;
|
|
207
|
+
symbol: string;
|
|
208
|
+
image: string;
|
|
209
|
+
}
|
|
210
|
+
interface ForgePool {
|
|
211
|
+
lp_balance: string;
|
|
212
|
+
pair_address: string;
|
|
213
|
+
pool_ownership: string;
|
|
214
|
+
total_supply: string;
|
|
215
|
+
token: ForgePoolToken;
|
|
216
|
+
}
|
|
217
|
+
interface ForgeTokenDetail {
|
|
218
|
+
address: string;
|
|
219
|
+
name: string;
|
|
220
|
+
symbol: string;
|
|
221
|
+
image: string;
|
|
222
|
+
image_url: string;
|
|
223
|
+
pair_address: string;
|
|
224
|
+
wrapped_native: string;
|
|
225
|
+
virtual_reserve_b: string;
|
|
226
|
+
reserve_a: string;
|
|
227
|
+
reserve_b: string;
|
|
228
|
+
graduated: boolean;
|
|
229
|
+
current_price: string;
|
|
230
|
+
market_cap: string;
|
|
231
|
+
total_supply: string;
|
|
232
|
+
available_supply: string;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
type DexMarket = "cross" | "crossd" | "forge";
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* dapp-ui가 렌더하는 outlink의 대분류.
|
|
239
|
+
* `portfolio`는 세부적으로 `origin`으로 더 나뉜다.
|
|
240
|
+
*/
|
|
241
|
+
type OutlinkCategory = "terms" | "privacy" | "portfolio";
|
|
242
|
+
/**
|
|
243
|
+
* `onOutlink` 콜백에 전달되는 호출 컨텍스트. `category` + `origin`으로
|
|
244
|
+
* 호출측이 목적지별 분기를 할 수 있고, `portfolio-*`의 경우 해당 섹션의
|
|
245
|
+
* 원시 데이터를 `payload`로 내려보낸다.
|
|
246
|
+
*
|
|
247
|
+
* 새로운 포트폴리오 섹션이 추가될 때는 이 union에 variant 하나만 더하면
|
|
248
|
+
* 자동으로 호출측에도 타입이 좁혀져서 전달된다.
|
|
249
|
+
*/
|
|
250
|
+
type OutlinkContext = {
|
|
251
|
+
category: "terms";
|
|
252
|
+
origin: "terms";
|
|
253
|
+
} | {
|
|
254
|
+
category: "privacy";
|
|
255
|
+
origin: "privacy";
|
|
256
|
+
} | {
|
|
257
|
+
category: "portfolio";
|
|
258
|
+
origin: "portfolio-rewards";
|
|
259
|
+
payload: {
|
|
260
|
+
pool: RewardPool;
|
|
261
|
+
userDeposit?: UserDepositInfo;
|
|
262
|
+
};
|
|
263
|
+
} | {
|
|
264
|
+
category: "portfolio";
|
|
265
|
+
origin: "portfolio-forge";
|
|
266
|
+
payload: {
|
|
267
|
+
pool: ForgePool;
|
|
268
|
+
tokenDetail?: ForgeTokenDetail;
|
|
269
|
+
};
|
|
270
|
+
} | {
|
|
271
|
+
category: "portfolio";
|
|
272
|
+
origin: "portfolio-dex-order";
|
|
273
|
+
payload: {
|
|
274
|
+
market: DexMarket;
|
|
275
|
+
side: "buy" | "sell";
|
|
276
|
+
order: DexOpenOrder;
|
|
277
|
+
pair?: DexPairInfo;
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
type OutlinkOrigin = OutlinkContext["origin"];
|
|
281
|
+
/**
|
|
282
|
+
* outlink 가로채기 콜백. 반환값 규칙:
|
|
283
|
+
*
|
|
284
|
+
* - `string` → 해당 URL로 이동(원본을 변형 가능).
|
|
285
|
+
* - `null` → 이동 취소(창도 열리지 않음).
|
|
286
|
+
* - `undefined` → 원본 URL로 그대로 이동 (no-op).
|
|
287
|
+
* - `Promise<...>`→ 위 값 중 하나를 resolve. 비동기 동안 사용자 제스처를
|
|
288
|
+
* 유지하기 위해 빈 창이 먼저 열린 뒤 URL이 채워진다.
|
|
289
|
+
*
|
|
290
|
+
* middle-click · cmd-click · ctrl-click 등 브라우저 새 탭 단축 동작은
|
|
291
|
+
* 가로채지 않고 원본 `href`로 그대로 열린다.
|
|
292
|
+
*/
|
|
293
|
+
type OnOutlink = (link: string, ctx: OutlinkContext) => string | null | undefined | Promise<string | null | undefined>;
|
|
127
294
|
|
|
128
295
|
interface WalletInfoTriggerProps {
|
|
129
296
|
asChild?: boolean;
|
|
@@ -173,15 +340,27 @@ interface WalletInfoProps {
|
|
|
173
340
|
preferredTokens?: PreferredToken[];
|
|
174
341
|
onSelectWallet?: () => void;
|
|
175
342
|
onCopyAddress?: (address: string, success: boolean) => void;
|
|
176
|
-
/**
|
|
343
|
+
/**
|
|
344
|
+
* 지정 시 기본 Disconnect 버튼이 Footer에 노출됨. `WalletInfo.Footer` 슬롯이
|
|
345
|
+
* 있으면 해당 슬롯이 메인 영역을 대체한다. Terms/Privacy 링크는 둘 중 무엇을
|
|
346
|
+
* 쓰든 항상 하단에 함께 렌더된다.
|
|
347
|
+
*/
|
|
177
348
|
onDisconnect?: () => void;
|
|
178
349
|
/** 기본 Disconnect 버튼 라벨 (기본 "Disconnect"). */
|
|
179
350
|
disconnectLabel?: string;
|
|
180
|
-
/**
|
|
351
|
+
/**
|
|
352
|
+
* Footer 하단 Terms 링크 URL.
|
|
353
|
+
* 미지정 시 CROSS 에코시스템 기본 URL로 폴백되어 자동 노출된다.
|
|
354
|
+
* 숨기려면 빈 문자열(`""`)을 전달.
|
|
355
|
+
*/
|
|
181
356
|
termsUrl?: string;
|
|
182
357
|
/** Terms 링크 라벨 (기본 "Terms of Service"). */
|
|
183
358
|
termsLabel?: string;
|
|
184
|
-
/**
|
|
359
|
+
/**
|
|
360
|
+
* Footer 하단 Privacy 링크 URL.
|
|
361
|
+
* 미지정 시 CROSS 에코시스템 기본 URL로 폴백되어 자동 노출된다.
|
|
362
|
+
* 숨기려면 빈 문자열(`""`)을 전달.
|
|
363
|
+
*/
|
|
185
364
|
privacyUrl?: string;
|
|
186
365
|
/** Privacy 링크 라벨 (기본 "Privacy Policy"). */
|
|
187
366
|
privacyLabel?: string;
|
|
@@ -206,10 +385,20 @@ interface WalletInfoProps {
|
|
|
206
385
|
* wagmi의 `sendTransactionAsync`를 그대로 전달해도 호환된다.
|
|
207
386
|
*/
|
|
208
387
|
sendTransaction?: SendTransactionFn;
|
|
388
|
+
/**
|
|
389
|
+
* Terms/Privacy · 포트폴리오 섹션 등 외부 링크 이동을 가로채는 콜백.
|
|
390
|
+
* `(url, ctx) => newUrl | null | undefined | Promise<...>` 형태이며
|
|
391
|
+
* - `string` → 해당 URL로 이동(변형 가능)
|
|
392
|
+
* - `null` → 이동 취소
|
|
393
|
+
* - `undefined` → 원본 URL 유지
|
|
394
|
+
* middle-click · cmd-click은 가로채지 않고 원본 `href`로 열린다.
|
|
395
|
+
* `showPortfolio=true`일 때 내부 `WalletPortfolioBody`로도 릴레이된다.
|
|
396
|
+
*/
|
|
397
|
+
onOutlink?: OnOutlink;
|
|
209
398
|
style?: WalletInfoStyle;
|
|
210
399
|
children: React.ReactNode;
|
|
211
400
|
}
|
|
212
|
-
declare function WalletInfoRoot({ env, theme, mobileBreakpoint, drawerDirection, modal, showBalance, showForgeToken, showGameToken, showQR, qrLogoSrc, walletAddress, accountName, profileImageUrl, connectorId, connectorName: connectorNameProp, connectorIconUrl: connectorIconUrlProp, preferredTokens, onSelectWallet, onCopyAddress, onDisconnect, disconnectLabel, termsUrl, termsLabel, privacyUrl, privacyLabel, open: propOpen, onOpenChange, showPortfolio, portfolioTitle, showTotalAssets, totalAssetsLabel, sendTransaction, style, children, }: WalletInfoProps): react_jsx_runtime.JSX.Element;
|
|
401
|
+
declare function WalletInfoRoot({ env, theme, mobileBreakpoint, drawerDirection, modal, showBalance, showForgeToken, showGameToken, showQR, qrLogoSrc, walletAddress, accountName, profileImageUrl, connectorId, connectorName: connectorNameProp, connectorIconUrl: connectorIconUrlProp, preferredTokens, onSelectWallet, onCopyAddress, onDisconnect, disconnectLabel, termsUrl, termsLabel, privacyUrl, privacyLabel, open: propOpen, onOpenChange, showPortfolio, portfolioTitle, showTotalAssets, totalAssetsLabel, sendTransaction, onOutlink, style, children, }: WalletInfoProps): react_jsx_runtime.JSX.Element;
|
|
213
402
|
declare const WalletInfo: typeof WalletInfoRoot & {
|
|
214
403
|
Trigger: typeof WalletInfoTrigger;
|
|
215
404
|
Content: typeof WalletInfoContent;
|
|
@@ -413,9 +602,14 @@ interface WalletPortfolioProps {
|
|
|
413
602
|
* 종속되지 않도록 외부에서 주입한다.
|
|
414
603
|
*/
|
|
415
604
|
sendTransaction?: SendTransactionFn;
|
|
605
|
+
/**
|
|
606
|
+
* 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
|
|
607
|
+
* 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
|
|
608
|
+
*/
|
|
609
|
+
onOutlink?: OnOutlink;
|
|
416
610
|
children: React.ReactNode;
|
|
417
611
|
}
|
|
418
|
-
declare function WalletPortfolioRoot({ env, theme, walletAddress, open: propOpen, onOpenChange, sendTransaction, children, }: WalletPortfolioProps): react_jsx_runtime.JSX.Element;
|
|
612
|
+
declare function WalletPortfolioRoot({ env, theme, walletAddress, open: propOpen, onOpenChange, sendTransaction, onOutlink, children, }: WalletPortfolioProps): react_jsx_runtime.JSX.Element;
|
|
419
613
|
declare const WalletPortfolio: typeof WalletPortfolioRoot & {
|
|
420
614
|
Trigger: typeof WalletPortfolioTrigger;
|
|
421
615
|
Content: typeof WalletPortfolioContent;
|
|
@@ -443,8 +637,13 @@ interface WalletPortfolioBodyProps {
|
|
|
443
637
|
* `WalletPortfolioBody`를 단독 embed로 사용하는 경우 직접 전달해야 한다.
|
|
444
638
|
*/
|
|
445
639
|
sendTransaction?: SendTransactionFn;
|
|
640
|
+
/**
|
|
641
|
+
* 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
|
|
642
|
+
* 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
|
|
643
|
+
*/
|
|
644
|
+
onOutlink?: OnOutlink;
|
|
446
645
|
}
|
|
447
|
-
declare function WalletPortfolioBody({ env, theme, walletAddress, onBack, showHeader, variant, className, sendTransaction, }: WalletPortfolioBodyProps): react_jsx_runtime.JSX.Element;
|
|
646
|
+
declare function WalletPortfolioBody({ env, theme, walletAddress, onBack, showHeader, variant, className, sendTransaction, onOutlink, }: WalletPortfolioBodyProps): react_jsx_runtime.JSX.Element;
|
|
448
647
|
|
|
449
648
|
declare function CROSSxIcon(): react_jsx_runtime.JSX.Element;
|
|
450
649
|
declare function MetaMaskIcon(): react_jsx_runtime.JSX.Element;
|
|
@@ -671,4 +870,4 @@ declare const BINANCE_ICON: string;
|
|
|
671
870
|
declare const GOOGLE_ICON: string;
|
|
672
871
|
declare const APPLE_ICON: string;
|
|
673
872
|
|
|
674
|
-
export { APPLE_ICON, AppLauncher, AppLauncherContent, type AppLauncherContentProps, type AppLauncherProps, AppLauncherTrigger, type AppLauncherTriggerProps, BINANCE_ICON, CONNECTOR_REGISTRY, CROSSX_ICON, type ChainId, ConnectButton, type ConnectButtonProps, ConnectorId, type ConnectorMeta, type DrawerDirection$1 as DrawerDirection, type Environment, GOOGLE_ICON, type GlobalMenu, type GlobalMenuItem, type GlobalMenuItemUrl, METAMASK_ICON, type PreferredToken, type SendTransactionArgs, type SendTransactionFn, TOKEN_STATS_QUERY_KEY, type Theme, type TokenBalance, type TokenBalanceResponse, type TokenStats, type TokenStatsResponse, USER_BALANCE_QUERY_KEY, WALLET_REGISTRY, type WalletConfig, WalletConnectModal, type WalletConnectModalContentProps, type WalletConnectModalProps, type WalletConnectModalStyle, type WalletConnectModalTriggerProps, type WalletHandlers, type WalletId, WalletInfo, type WalletInfoContentProps, type WalletInfoFooterProps, type WalletInfoNavProps, type WalletInfoProps, type WalletInfoStyle, type WalletInfoTriggerProps, WalletPortfolio, WalletPortfolioBody, type WalletPortfolioBodyProps, type WalletPortfolioContentProps, type WalletPortfolioProps, type WalletPortfolioTriggerProps, type WalletProvider, useGlobalMenu, useTokenBalance, useTokenStats, useWalletDetect };
|
|
873
|
+
export { APPLE_ICON, AppLauncher, AppLauncherContent, type AppLauncherContentProps, type AppLauncherProps, AppLauncherTrigger, type AppLauncherTriggerProps, BINANCE_ICON, CONNECTOR_REGISTRY, CROSSX_ICON, type ChainId, ConnectButton, type ConnectButtonProps, ConnectorId, type ConnectorMeta, type DrawerDirection$1 as DrawerDirection, type Environment, GOOGLE_ICON, type GlobalMenu, type GlobalMenuItem, type GlobalMenuItemUrl, METAMASK_ICON, type OnOutlink, type OutlinkCategory, type OutlinkContext, type OutlinkOrigin, type PreferredToken, type SendTransactionArgs, type SendTransactionFn, TOKEN_STATS_QUERY_KEY, type Theme, type TokenBalance, type TokenBalanceResponse, type TokenStats, type TokenStatsResponse, USER_BALANCE_QUERY_KEY, WALLET_REGISTRY, type WalletConfig, WalletConnectModal, type WalletConnectModalContentProps, type WalletConnectModalProps, type WalletConnectModalStyle, type WalletConnectModalTriggerProps, type WalletHandlers, type WalletId, WalletInfo, type WalletInfoContentProps, type WalletInfoFooterProps, type WalletInfoNavProps, type WalletInfoProps, type WalletInfoStyle, type WalletInfoTriggerProps, WalletPortfolio, WalletPortfolioBody, type WalletPortfolioBodyProps, type WalletPortfolioContentProps, type WalletPortfolioProps, type WalletPortfolioTriggerProps, type WalletProvider, useGlobalMenu, useTokenBalance, useTokenStats, useWalletDetect };
|