@nexus-cross/dapp-ui 1.0.0 → 1.0.1-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.
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;
@@ -218,10 +385,20 @@ interface WalletInfoProps {
218
385
  * wagmi의 `sendTransactionAsync`를 그대로 전달해도 호환된다.
219
386
  */
220
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;
221
398
  style?: WalletInfoStyle;
222
399
  children: React.ReactNode;
223
400
  }
224
- 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;
225
402
  declare const WalletInfo: typeof WalletInfoRoot & {
226
403
  Trigger: typeof WalletInfoTrigger;
227
404
  Content: typeof WalletInfoContent;
@@ -425,9 +602,14 @@ interface WalletPortfolioProps {
425
602
  * 종속되지 않도록 외부에서 주입한다.
426
603
  */
427
604
  sendTransaction?: SendTransactionFn;
605
+ /**
606
+ * 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
607
+ * 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
608
+ */
609
+ onOutlink?: OnOutlink;
428
610
  children: React.ReactNode;
429
611
  }
430
- 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;
431
613
  declare const WalletPortfolio: typeof WalletPortfolioRoot & {
432
614
  Trigger: typeof WalletPortfolioTrigger;
433
615
  Content: typeof WalletPortfolioContent;
@@ -455,8 +637,13 @@ interface WalletPortfolioBodyProps {
455
637
  * `WalletPortfolioBody`를 단독 embed로 사용하는 경우 직접 전달해야 한다.
456
638
  */
457
639
  sendTransaction?: SendTransactionFn;
640
+ /**
641
+ * 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
642
+ * 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
643
+ */
644
+ onOutlink?: OnOutlink;
458
645
  }
459
- 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;
460
647
 
461
648
  declare function CROSSxIcon(): react_jsx_runtime.JSX.Element;
462
649
  declare function MetaMaskIcon(): react_jsx_runtime.JSX.Element;
@@ -683,4 +870,4 @@ declare const BINANCE_ICON: string;
683
870
  declare const GOOGLE_ICON: string;
684
871
  declare const APPLE_ICON: string;
685
872
 
686
- 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;
@@ -218,10 +385,20 @@ interface WalletInfoProps {
218
385
  * wagmi의 `sendTransactionAsync`를 그대로 전달해도 호환된다.
219
386
  */
220
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;
221
398
  style?: WalletInfoStyle;
222
399
  children: React.ReactNode;
223
400
  }
224
- 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;
225
402
  declare const WalletInfo: typeof WalletInfoRoot & {
226
403
  Trigger: typeof WalletInfoTrigger;
227
404
  Content: typeof WalletInfoContent;
@@ -425,9 +602,14 @@ interface WalletPortfolioProps {
425
602
  * 종속되지 않도록 외부에서 주입한다.
426
603
  */
427
604
  sendTransaction?: SendTransactionFn;
605
+ /**
606
+ * 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
607
+ * 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
608
+ */
609
+ onOutlink?: OnOutlink;
428
610
  children: React.ReactNode;
429
611
  }
430
- 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;
431
613
  declare const WalletPortfolio: typeof WalletPortfolioRoot & {
432
614
  Trigger: typeof WalletPortfolioTrigger;
433
615
  Content: typeof WalletPortfolioContent;
@@ -455,8 +637,13 @@ interface WalletPortfolioBodyProps {
455
637
  * `WalletPortfolioBody`를 단독 embed로 사용하는 경우 직접 전달해야 한다.
456
638
  */
457
639
  sendTransaction?: SendTransactionFn;
640
+ /**
641
+ * 포트폴리오 섹션 내부 외부 링크 이동을 가로채는 콜백.
642
+ * 반환값으로 URL 변형 / 취소가 가능하며 async도 지원한다.
643
+ */
644
+ onOutlink?: OnOutlink;
458
645
  }
459
- 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;
460
647
 
461
648
  declare function CROSSxIcon(): react_jsx_runtime.JSX.Element;
462
649
  declare function MetaMaskIcon(): react_jsx_runtime.JSX.Element;
@@ -683,4 +870,4 @@ declare const BINANCE_ICON: string;
683
870
  declare const GOOGLE_ICON: string;
684
871
  declare const APPLE_ICON: string;
685
872
 
686
- 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 };