@b3dotfun/sdk 0.0.58-alpha.2 → 0.0.58-test.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.
Files changed (29) hide show
  1. package/dist/cjs/global-account/react/hooks/useWagmiConfig.d.ts +1 -441
  2. package/dist/cjs/global-account/react/hooks/useWagmiConfig.js +0 -2
  3. package/dist/cjs/shared/react/components/CurrencySelector.js +3 -8
  4. package/dist/cjs/shared/react/components/FormattedCurrency.d.ts +3 -3
  5. package/dist/cjs/shared/react/components/FormattedCurrency.js +26 -31
  6. package/dist/cjs/shared/react/hooks/useCurrencyConversion.d.ts +5 -8
  7. package/dist/cjs/shared/react/hooks/useCurrencyConversion.js +94 -153
  8. package/dist/cjs/shared/react/stores/currencyStore.d.ts +8 -83
  9. package/dist/cjs/shared/react/stores/currencyStore.js +5 -147
  10. package/dist/esm/global-account/react/hooks/useWagmiConfig.d.ts +1 -441
  11. package/dist/esm/global-account/react/hooks/useWagmiConfig.js +0 -2
  12. package/dist/esm/shared/react/components/CurrencySelector.js +5 -10
  13. package/dist/esm/shared/react/components/FormattedCurrency.d.ts +3 -3
  14. package/dist/esm/shared/react/components/FormattedCurrency.js +26 -31
  15. package/dist/esm/shared/react/hooks/useCurrencyConversion.d.ts +5 -8
  16. package/dist/esm/shared/react/hooks/useCurrencyConversion.js +95 -154
  17. package/dist/esm/shared/react/stores/currencyStore.d.ts +8 -83
  18. package/dist/esm/shared/react/stores/currencyStore.js +5 -143
  19. package/dist/types/global-account/react/hooks/useWagmiConfig.d.ts +1 -441
  20. package/dist/types/shared/react/components/FormattedCurrency.d.ts +3 -3
  21. package/dist/types/shared/react/hooks/useCurrencyConversion.d.ts +5 -8
  22. package/dist/types/shared/react/stores/currencyStore.d.ts +8 -83
  23. package/package.json +8 -4
  24. package/src/global-account/react/hooks/useWagmiConfig.tsx +0 -2
  25. package/src/shared/react/components/CurrencySelector.tsx +5 -36
  26. package/src/shared/react/components/FormattedCurrency.tsx +30 -36
  27. package/src/shared/react/hooks/__tests__/useCurrencyConversion.test.ts +14 -14
  28. package/src/shared/react/hooks/useCurrencyConversion.ts +96 -163
  29. package/src/shared/react/stores/currencyStore.ts +10 -216
@@ -10,444 +10,4 @@ export declare function useWagmiConfig(partnerId: string, rpcUrls?: Record<numbe
10
10
  }>;
11
11
  }, {
12
12
  "thirdweb:lastChainId": number;
13
- }>, import("wagmi").CreateConnectorFn<{
14
- request: import("ox/_types/core/Provider").RequestFn<{
15
- Request: {
16
- method: "eth_accounts";
17
- params?: undefined;
18
- };
19
- ReturnType: readonly import("ox/_types/core/Address").Address[];
20
- } | {
21
- Request: {
22
- method: "eth_blobBaseFee";
23
- params?: undefined;
24
- };
25
- ReturnType: import("ox/_types/core/Hex").Hex;
26
- } | {
27
- Request: {
28
- method: "eth_blockNumber";
29
- params?: undefined;
30
- };
31
- ReturnType: import("ox/_types/core/Hex").Hex;
32
- } | {
33
- Request: {
34
- method: "eth_call";
35
- params: [transaction: import("ox/_types/core/TransactionRequest").Rpc] | [transaction: import("ox/_types/core/TransactionRequest").Rpc, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier] | [transaction: import("ox/_types/core/TransactionRequest").Rpc, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier, stateOverride: unknown];
36
- };
37
- ReturnType: import("ox/_types/core/Hex").Hex;
38
- } | {
39
- Request: {
40
- method: "eth_chainId";
41
- params?: undefined;
42
- };
43
- ReturnType: import("ox/_types/core/Hex").Hex;
44
- } | {
45
- Request: {
46
- method: "eth_coinbase";
47
- params?: undefined;
48
- };
49
- ReturnType: import("ox/_types/core/Address").Address;
50
- } | {
51
- Request: {
52
- method: "eth_estimateGas";
53
- params: [transaction: import("ox/_types/core/TransactionRequest").Rpc] | [transaction: import("ox/_types/core/TransactionRequest").Rpc, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier] | [transaction: import("ox/_types/core/TransactionRequest").Rpc, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier, stateOverride: unknown];
54
- };
55
- ReturnType: import("ox/_types/core/Hex").Hex;
56
- } | {
57
- Request: {
58
- method: "eth_feeHistory";
59
- params: [blockCount: import("ox/_types/core/Hex").Hex, newestBlock: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag, rewardPercentiles: number[] | undefined];
60
- };
61
- ReturnType: import("ox/_types/core/Fee").FeeHistoryRpc;
62
- } | {
63
- Request: {
64
- method: "eth_gasPrice";
65
- params?: undefined;
66
- };
67
- ReturnType: import("ox/_types/core/Hex").Hex;
68
- } | {
69
- Request: {
70
- method: "eth_getBalance";
71
- params: [address: import("ox/_types/core/Address").Address, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier];
72
- };
73
- ReturnType: import("ox/_types/core/Hex").Hex;
74
- } | {
75
- Request: {
76
- method: "eth_getBlockByHash";
77
- params: [hash: import("ox/_types/core/Hex").Hex, includeTransactionObjects: boolean];
78
- };
79
- ReturnType: import("ox/_types/core/Block").Rpc | null;
80
- } | {
81
- Request: {
82
- method: "eth_getBlockByNumber";
83
- params: [block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag, includeTransactionObjects: boolean];
84
- };
85
- ReturnType: import("ox/_types/core/Block").Rpc | null;
86
- } | {
87
- Request: {
88
- method: "eth_getBlockTransactionCountByHash";
89
- params: [hash: import("ox/_types/core/Hex").Hex];
90
- };
91
- ReturnType: import("ox/_types/core/Hex").Hex;
92
- } | {
93
- Request: {
94
- method: "eth_getBlockTransactionCountByNumber";
95
- params: [block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag];
96
- };
97
- ReturnType: import("ox/_types/core/Hex").Hex;
98
- } | {
99
- Request: {
100
- method: "eth_getCode";
101
- params: [address: import("ox/_types/core/Address").Address, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier];
102
- };
103
- ReturnType: import("ox/_types/core/Hex").Hex;
104
- } | {
105
- Request: {
106
- method: "eth_getFilterChanges";
107
- params: [filterId: import("ox/_types/core/Hex").Hex];
108
- };
109
- ReturnType: readonly import("ox/_types/core/Log").Rpc[] | readonly import("ox/_types/core/Hex").Hex[];
110
- } | {
111
- Request: {
112
- method: "eth_getFilterLogs";
113
- params: [filterId: import("ox/_types/core/Hex").Hex];
114
- };
115
- ReturnType: readonly import("ox/_types/core/Log").Rpc[];
116
- } | {
117
- Request: {
118
- method: "eth_getLogs";
119
- params: [filter: import("ox/_types/core/Filter").Rpc];
120
- };
121
- ReturnType: readonly import("ox/_types/core/Log").Rpc[];
122
- } | {
123
- Request: {
124
- method: "eth_getProof";
125
- params: [address: import("ox/_types/core/Address").Address, storageKeys: import("ox/_types/core/Hex").Hex[], block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier];
126
- };
127
- ReturnType: import("ox/_types/core/AccountProof").Rpc;
128
- } | {
129
- Request: {
130
- method: "eth_getStorageAt";
131
- params: [address: import("ox/_types/core/Address").Address, index: import("ox/_types/core/Hex").Hex, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier];
132
- };
133
- ReturnType: import("ox/_types/core/Hex").Hex;
134
- } | {
135
- Request: {
136
- method: "eth_getTransactionByBlockHashAndIndex";
137
- params: [hash: import("ox/_types/core/Hex").Hex, index: import("ox/_types/core/Hex").Hex];
138
- };
139
- ReturnType: import("ox/_types/core/Transaction").Rpc | null;
140
- } | {
141
- Request: {
142
- method: "eth_getTransactionByBlockNumberAndIndex";
143
- params: [block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag, index: import("ox/_types/core/Hex").Hex];
144
- };
145
- ReturnType: import("ox/_types/core/Transaction").Rpc | null;
146
- } | {
147
- Request: {
148
- method: "eth_getTransactionByHash";
149
- params: [hash: import("ox/_types/core/Hex").Hex];
150
- };
151
- ReturnType: import("ox/_types/core/Transaction").Rpc | null;
152
- } | {
153
- Request: {
154
- method: "eth_getTransactionCount";
155
- params: [address: import("ox/_types/core/Address").Address, block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag | import("ox/_types/core/Block").Hash | import("ox/_types/core/Block").Identifier];
156
- };
157
- ReturnType: import("ox/_types/core/Hex").Hex;
158
- } | {
159
- Request: {
160
- method: "eth_getTransactionReceipt";
161
- params: [hash: import("ox/_types/core/Hex").Hex];
162
- };
163
- ReturnType: import("ox/_types/core/TransactionReceipt").Rpc | null;
164
- } | {
165
- Request: {
166
- method: "eth_getUncleCountByBlockHash";
167
- params: [hash: import("ox/_types/core/Hex").Hex];
168
- };
169
- ReturnType: import("ox/_types/core/Hex").Hex;
170
- } | {
171
- Request: {
172
- method: "eth_getUncleCountByBlockNumber";
173
- params: [block: import("ox/_types/core/Block").Number<import("ox/_types/core/Hex").Hex> | import("ox/_types/core/Block").Tag];
174
- };
175
- ReturnType: import("ox/_types/core/Hex").Hex;
176
- } | {
177
- Request: {
178
- method: "eth_maxPriorityFeePerGas";
179
- params?: undefined;
180
- };
181
- ReturnType: import("ox/_types/core/Hex").Hex;
182
- } | {
183
- Request: {
184
- method: "eth_newBlockFilter";
185
- params?: undefined;
186
- };
187
- ReturnType: import("ox/_types/core/Hex").Hex;
188
- } | {
189
- Request: {
190
- method: "eth_newFilter";
191
- params: [filter: import("ox/_types/core/Filter").Rpc];
192
- };
193
- ReturnType: import("ox/_types/core/Hex").Hex;
194
- } | {
195
- Request: {
196
- method: "eth_newPendingTransactionFilter";
197
- params?: undefined;
198
- };
199
- ReturnType: import("ox/_types/core/Hex").Hex;
200
- } | {
201
- Request: {
202
- method: "eth_protocolVersion";
203
- params?: undefined;
204
- };
205
- ReturnType: string;
206
- } | {
207
- Request: {
208
- method: "eth_requestAccounts";
209
- params?: undefined;
210
- };
211
- ReturnType: readonly import("ox/_types/core/Address").Address[];
212
- } | {
213
- Request: {
214
- method: "eth_sendRawTransaction";
215
- params: [serializedTransaction: import("ox/_types/core/Hex").Hex];
216
- };
217
- ReturnType: import("ox/_types/core/Hex").Hex;
218
- } | {
219
- Request: {
220
- method: "eth_sendTransaction";
221
- params: [transaction: import("ox/_types/core/TransactionRequest").Rpc];
222
- };
223
- ReturnType: import("ox/_types/core/Hex").Hex;
224
- } | {
225
- Request: {
226
- method: "eth_signTransaction";
227
- params: [request: import("ox/_types/core/TransactionRequest").Rpc];
228
- };
229
- ReturnType: import("ox/_types/core/Hex").Hex;
230
- } | {
231
- Request: {
232
- method: "eth_signTypedData_v4";
233
- params: [address: import("ox/_types/core/Address").Address, message: string];
234
- };
235
- ReturnType: import("ox/_types/core/Hex").Hex;
236
- } | {
237
- Request: {
238
- method: "eth_uninstallFilter";
239
- params: [filterId: import("ox/_types/core/Hex").Hex];
240
- };
241
- ReturnType: boolean;
242
- } | {
243
- Request: {
244
- method: "eth_requestAccounts";
245
- params?: undefined;
246
- };
247
- ReturnType: readonly import("ox/_types/core/Address").Address[];
248
- } | {
249
- Request: {
250
- method: "eth_sendRawTransaction";
251
- params: [serializedTransaction: import("ox/_types/core/Hex").Hex];
252
- };
253
- ReturnType: import("ox/_types/core/Hex").Hex;
254
- } | {
255
- Request: {
256
- method: "eth_sendTransaction";
257
- params: [transaction: import("ox/_types/core/TransactionRequest").Rpc];
258
- };
259
- ReturnType: import("ox/_types/core/Hex").Hex;
260
- } | {
261
- Request: {
262
- method: "eth_signTransaction";
263
- params: [request: import("ox/_types/core/TransactionRequest").Rpc];
264
- };
265
- ReturnType: import("ox/_types/core/Hex").Hex;
266
- } | {
267
- Request: {
268
- method: "eth_signTypedData_v4";
269
- params: [address: import("ox/_types/core/Address").Address, message: string];
270
- };
271
- ReturnType: import("ox/_types/core/Hex").Hex;
272
- } | {
273
- Request: {
274
- method: "personal_sign";
275
- params: [data: import("ox/_types/core/Hex").Hex, address: import("ox/_types/core/Address").Address];
276
- };
277
- ReturnType: import("ox/_types/core/Hex").Hex;
278
- } | {
279
- Request: {
280
- method: "wallet_addEthereumChain";
281
- params: [chain: {
282
- chainId: string;
283
- chainName: string;
284
- nativeCurrency?: {
285
- name: string;
286
- symbol: string;
287
- decimals: number;
288
- } | undefined | undefined;
289
- rpcUrls: readonly string[];
290
- blockExplorerUrls?: readonly string[] | undefined;
291
- iconUrls?: readonly string[] | undefined;
292
- }];
293
- };
294
- ReturnType: null;
295
- } | {
296
- Request: {
297
- method: "wallet_getCallsStatus";
298
- params?: [string];
299
- };
300
- ReturnType: {
301
- status: "PENDING" | "CONFIRMED";
302
- receipts?: readonly {
303
- logs: {
304
- address: import("ox/_types/core/Hex").Hex;
305
- data: import("ox/_types/core/Hex").Hex;
306
- topics: readonly import("ox/_types/core/Hex").Hex[];
307
- }[];
308
- status: import("ox/_types/core/Hex").Hex;
309
- blockHash: import("ox/_types/core/Hex").Hex;
310
- blockNumber: import("ox/_types/core/Hex").Hex;
311
- gasUsed: import("ox/_types/core/Hex").Hex;
312
- transactionHash: import("ox/_types/core/Hex").Hex;
313
- }[] | undefined;
314
- };
315
- } | {
316
- Request: {
317
- method: "wallet_getCapabilities";
318
- params?: [import("ox/_types/core/Address").Address];
319
- };
320
- ReturnType: {
321
- [x: `0x${string}`]: {
322
- [capability: string]: any;
323
- };
324
- };
325
- } | {
326
- Request: {
327
- method: "wallet_getPermissions";
328
- params?: undefined;
329
- };
330
- ReturnType: readonly {
331
- caveats: readonly {
332
- type: string;
333
- value: any;
334
- }[];
335
- date: number;
336
- id: string;
337
- invoker: `http://${string}` | `https://${string}`;
338
- parentCapability: "eth_accounts" | string;
339
- }[];
340
- } | {
341
- Request: {
342
- method: "wallet_grantPermissions";
343
- params?: [{
344
- signer?: {
345
- type: string;
346
- data?: unknown | undefined;
347
- } | undefined;
348
- permissions: readonly {
349
- data: unknown;
350
- policies: readonly {
351
- data: unknown;
352
- type: string;
353
- }[];
354
- required?: boolean | undefined;
355
- type: string;
356
- }[];
357
- expiry: number;
358
- }];
359
- };
360
- ReturnType: {
361
- expiry: number;
362
- factory?: `0x${string}` | undefined | undefined;
363
- factoryData?: string | undefined | undefined;
364
- grantedPermissions: readonly {
365
- data: unknown;
366
- policies: readonly {
367
- data: unknown;
368
- type: string;
369
- }[];
370
- required?: boolean | undefined;
371
- type: string;
372
- }[];
373
- permissionsContext: string;
374
- signerData?: {
375
- userOpBuilder?: `0x${string}` | undefined;
376
- submitToAddress?: `0x${string}` | undefined;
377
- } | undefined | undefined;
378
- };
379
- } | {
380
- Request: {
381
- method: "wallet_requestPermissions";
382
- params: [permissions: {
383
- eth_accounts: Record<string, any>;
384
- }];
385
- };
386
- ReturnType: readonly {
387
- caveats: readonly {
388
- type: string;
389
- value: any;
390
- }[];
391
- date: number;
392
- id: string;
393
- invoker: `http://${string}` | `https://${string}`;
394
- parentCapability: "eth_accounts" | string;
395
- }[];
396
- } | {
397
- Request: {
398
- method: "wallet_revokePermissions";
399
- params: [permissions: {
400
- eth_accounts: Record<string, any>;
401
- }];
402
- };
403
- ReturnType: null;
404
- } | {
405
- Request: {
406
- method: "wallet_sendCalls";
407
- params: [{
408
- calls: readonly {
409
- to?: import("ox/_types/core/Address").Address | undefined;
410
- data?: import("ox/_types/core/Hex").Hex | undefined;
411
- value?: import("ox/_types/core/Hex").Hex | undefined;
412
- }[];
413
- capabilities?: {
414
- [capability: string]: any;
415
- } | undefined;
416
- chainId?: import("ox/_types/core/Hex").Hex | undefined;
417
- from: import("ox/_types/core/Address").Address;
418
- version: string;
419
- }];
420
- };
421
- ReturnType: string;
422
- } | {
423
- Request: {
424
- method: "wallet_showCallsStatus";
425
- params: [string];
426
- };
427
- ReturnType: undefined;
428
- } | {
429
- Request: {
430
- method: "wallet_switchEthereumChain";
431
- params: [chain: {
432
- chainId: string;
433
- }];
434
- };
435
- ReturnType: null;
436
- } | {
437
- Request: {
438
- method: "wallet_watchAsset";
439
- params: [{
440
- type: "ERC20";
441
- options: {
442
- address: string;
443
- symbol: string;
444
- decimals: number;
445
- image?: string | undefined;
446
- };
447
- }];
448
- };
449
- ReturnType: boolean;
450
- }>;
451
- on: import("ox/_types/core/Provider").EventListenerFn;
452
- removeListener: import("ox/_types/core/Provider").EventListenerFn;
453
- }, Record<string, unknown>, Record<string, unknown>>]>;
13
+ }>]>;
@@ -4,7 +4,6 @@ exports.useWagmiConfig = useWagmiConfig;
4
4
  const constants_1 = require("../../../shared/constants");
5
5
  const supported_1 = require("../../../shared/constants/chains/supported");
6
6
  const thirdweb_1 = require("../../../shared/utils/thirdweb");
7
- const miniapp_wagmi_connector_1 = require("@farcaster/miniapp-wagmi-connector");
8
7
  const wagmi_adapter_1 = require("@thirdweb-dev/wagmi-adapter");
9
8
  const react_1 = require("react");
10
9
  const viem_1 = require("viem");
@@ -34,7 +33,6 @@ function useWagmiConfig(partnerId, rpcUrls) {
34
33
  ...ecocystemConfig,
35
34
  client: thirdweb_1.client,
36
35
  }),
37
- (0, miniapp_wagmi_connector_1.farcasterMiniApp)(),
38
36
  // injected(),
39
37
  // coinbaseWallet({ appName: "HypeDuel" }),
40
38
  ],
@@ -7,13 +7,8 @@ const utils_1 = require("../../../shared/utils");
7
7
  const button_1 = require("../../../global-account/react/components/ui/button");
8
8
  const dropdown_menu_1 = require("../../../global-account/react/components/ui/dropdown-menu");
9
9
  const currencyStore_1 = require("../stores/currencyStore");
10
- const builtInCurrencies = ["B3", "ETH", "SOL", "USD", "EUR", "GBP", "KRW", "JPY", "CAD", "AUD"];
10
+ const currencies = ["B3", "ETH", "SOL", "USD", "EUR", "GBP", "KRW", "JPY", "CAD", "AUD"];
11
11
  function CurrencySelector({ labelClassName, buttonVariant = "dark", label }) {
12
- const selectedCurrency = (0, currencyStore_1.useCurrencyStore)(state => state.selectedCurrency);
13
- const setSelectedCurrency = (0, currencyStore_1.useCurrencyStore)(state => state.setSelectedCurrency);
14
- const customCurrencies = (0, currencyStore_1.useCurrencyStore)(state => state.customCurrencies);
15
- // Separate built-in and custom for better organization
16
- const customCurrencyCodes = Object.keys(customCurrencies);
17
- const hasCustomCurrencies = customCurrencyCodes.length > 0;
18
- return ((0, jsx_runtime_1.jsx)("div", { className: "flex items-center gap-2", children: (0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenu, { children: [(0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [label && ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)("text-foreground text-sm font-medium leading-none tracking-tight sm:text-base", labelClassName), children: label })), (0, jsx_runtime_1.jsxs)(button_1.Button, { variant: buttonVariant, className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-sm font-medium", children: (0, currencyStore_1.getCurrencyName)(selectedCurrency) }), (0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4", fill: "currentColor", viewBox: "0 0 20 20", children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z", clipRule: "evenodd" }) })] })] }) }), (0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenuContent, { align: "end", className: "z-[100] min-w-[200px]", children: [builtInCurrencies.map(currency => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenuItem, { onClick: () => setSelectedCurrency(currency), className: `flex cursor-pointer items-center justify-between gap-3 px-3 py-2.5 transition-colors ${selectedCurrency === currency ? "bg-accent" : "hover:bg-accent/50"}`, children: [(0, jsx_runtime_1.jsx)("span", { className: "text-foreground text-sm font-medium", children: currencyStore_1.CURRENCY_NAMES[currency] }), (0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground text-xs font-medium", children: currencyStore_1.CURRENCY_SYMBOLS[currency] })] }), currency === "SOL" && (0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuSeparator, { className: "bg-border my-1" }, "separator")] }, currency))), hasCustomCurrencies && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuSeparator, { className: "bg-border my-1" }), customCurrencyCodes.map(currency => ((0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenuItem, { onClick: () => setSelectedCurrency(currency), className: `flex cursor-pointer items-center justify-between gap-3 px-3 py-2.5 transition-colors ${selectedCurrency === currency ? "bg-accent" : "hover:bg-accent/50"}`, children: [(0, jsx_runtime_1.jsx)("span", { className: "text-foreground text-sm font-medium", children: (0, currencyStore_1.getCurrencyName)(currency) }), (0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground text-xs font-medium", children: (0, currencyStore_1.getCurrencySymbol)(currency) })] }, currency)))] }))] })] }) }));
12
+ const { selectedCurrency, setSelectedCurrency } = (0, currencyStore_1.useCurrencyStore)();
13
+ return ((0, jsx_runtime_1.jsx)("div", { className: "flex items-center gap-2", children: (0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenu, { children: [(0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [label && ((0, jsx_runtime_1.jsx)("span", { className: (0, utils_1.cn)("text-foreground text-sm font-medium leading-none tracking-tight sm:text-base", labelClassName), children: label })), (0, jsx_runtime_1.jsxs)(button_1.Button, { variant: buttonVariant, className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-sm font-medium", children: currencyStore_1.CURRENCY_NAMES[selectedCurrency] }), (0, jsx_runtime_1.jsx)("svg", { className: "h-4 w-4", fill: "currentColor", viewBox: "0 0 20 20", children: (0, jsx_runtime_1.jsx)("path", { fillRule: "evenodd", d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z", clipRule: "evenodd" }) })] })] }) }), (0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuContent, { align: "end", className: "z-[100] min-w-[200px]", children: currencies.map(currency => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)(dropdown_menu_1.DropdownMenuItem, { onClick: () => setSelectedCurrency(currency), className: `flex cursor-pointer items-center justify-between gap-3 px-3 py-2.5 transition-colors ${selectedCurrency === currency ? "bg-accent" : "hover:bg-accent/50"}`, children: [(0, jsx_runtime_1.jsx)("span", { className: "text-foreground text-sm font-medium", children: currencyStore_1.CURRENCY_NAMES[currency] }), (0, jsx_runtime_1.jsx)("span", { className: "text-muted-foreground text-xs font-medium", children: currencyStore_1.CURRENCY_SYMBOLS[currency] })] }), currency === "SOL" && (0, jsx_runtime_1.jsx)(dropdown_menu_1.DropdownMenuSeparator, { className: "bg-border my-1" }, "separator")] }, currency))) })] }) }));
19
14
  }
@@ -1,12 +1,12 @@
1
1
  interface FormattedCurrencyProps {
2
- amount: string;
3
- sourceCurrency: string;
2
+ amount: number;
4
3
  showChange?: boolean;
5
4
  showColor?: boolean;
6
5
  className?: string;
7
6
  subB3Icon?: boolean;
8
7
  clickable?: boolean;
9
8
  decimals?: number;
9
+ currency?: string;
10
10
  }
11
- export declare function FormattedCurrency({ amount, sourceCurrency, showChange, showColor, className, subB3Icon, clickable, decimals, }: FormattedCurrencyProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function FormattedCurrency({ amount, showChange, showColor, className, subB3Icon, clickable, decimals, currency, }: FormattedCurrencyProps): import("react/jsx-runtime").JSX.Element;
12
12
  export {};
@@ -8,30 +8,21 @@ const utils_1 = require("../../../shared/utils");
8
8
  const tooltip_1 = require("../../../global-account/react/components/ui/tooltip");
9
9
  const useCurrencyConversion_1 = require("../hooks/useCurrencyConversion");
10
10
  const currencyModalStore_1 = require("../stores/currencyModalStore");
11
- const currencyStore_1 = require("../stores/currencyStore");
12
- function FormattedCurrency({ amount, sourceCurrency, showChange = false, showColor = false, className, subB3Icon = true, clickable = true, decimals, }) {
11
+ function FormattedCurrency({ amount, showChange = false, showColor = false, className, subB3Icon = true, clickable = true, decimals, currency, }) {
13
12
  const { formatCurrencyValue, formatTooltipValue, selectedCurrency, baseCurrency } = (0, useCurrencyConversion_1.useCurrencyConversion)();
14
13
  const { openModal } = (0, currencyModalStore_1.useCurrencyModalStore)();
15
- // Convert from smallest unit to human-readable using currency's decimal places
16
- const decimalPlaces = (0, currencyStore_1.getCurrencyDecimalPlaces)(sourceCurrency);
17
- const divisor = Math.pow(10, decimalPlaces);
18
- // Parse amount - handle both string and numeric inputs, including negatives
19
- let parsedAmount;
20
- if (typeof amount === "string") {
21
- // Handle BigInt strings and negative values
22
- const numericAmount = amount.startsWith("-") ? -Math.abs(parseFloat(amount.replace("-", ""))) : parseFloat(amount);
23
- parsedAmount = numericAmount / divisor;
24
- }
25
- else {
26
- parsedAmount = amount / divisor;
27
- }
28
- const isPositive = parsedAmount >= 0;
29
- // Always format with absolute value, we'll add the sign separately
30
- const absoluteAmount = Math.abs(parsedAmount);
31
- // Format value with automatic conversion from source to display currency
32
- const formattedValue = formatCurrencyValue(absoluteAmount, sourceCurrency, { decimals });
14
+ // Use passed currency or fall back to selected currency
15
+ const activeCurrency = currency || selectedCurrency;
16
+ const isPositive = amount >= 0;
17
+ // Get the formatted value (using absolute value for negative numbers when showing change)
18
+ const baseAmount = showChange ? Math.abs(amount) : amount;
19
+ // Use centralized formatting from hook with optional overrides
20
+ const formattedValue = formatCurrencyValue(baseAmount, {
21
+ decimals,
22
+ currency,
23
+ });
33
24
  // Generate tooltip using the centralized hook function
34
- const baseTooltipValue = formatTooltipValue(parsedAmount, sourceCurrency);
25
+ const baseTooltipValue = formatTooltipValue(amount, currency);
35
26
  // Add change indicator if needed
36
27
  const tooltipValue = showChange ? `${isPositive ? "+" : "-"}${baseTooltipValue}` : baseTooltipValue;
37
28
  // Determine color class
@@ -44,22 +35,26 @@ function FormattedCurrency({ amount, sourceCurrency, showChange = false, showCol
44
35
  colorClass = "text-red-400";
45
36
  }
46
37
  }
47
- // Build display value with appropriate sign
38
+ // Add change indicator
48
39
  let displayValue = formattedValue;
49
40
  if (showChange) {
50
- // Add +/- prefix for change indicators
51
- displayValue = `${isPositive ? "+" : "-"}${formattedValue}`;
52
- }
53
- else if (!isPositive) {
54
- // Add minus sign for negative values
55
- displayValue = `-${formattedValue}`;
41
+ if (isPositive) {
42
+ displayValue = `+${formattedValue}`;
43
+ }
44
+ else {
45
+ displayValue = `-${formattedValue}`;
46
+ }
56
47
  }
57
48
  const handleClick = () => {
58
49
  if (clickable) {
59
50
  openModal();
60
51
  }
61
52
  };
62
- // Check if we should show B3 icon (when displaying in B3 and baseCurrency is B3)
63
- const shouldShowB3Icon = subB3Icon && selectedCurrency === "B3" && baseCurrency === "B3";
64
- return ((0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)("span", { onClick: handleClick, className: (0, utils_1.cn)("inline-flex items-center gap-1 whitespace-nowrap", colorClass, className, clickable && "cursor-pointer transition-opacity hover:opacity-80"), children: [shouldShowB3Icon ? displayValue.split(" ")[0] : displayValue, shouldShowB3Icon && ((0, jsx_runtime_1.jsx)("img", { src: currency_1.B3_COIN_IMAGE_URL, className: "inline-block h-4 w-4 align-middle", alt: "B3 coin" }))] }) }), (0, jsx_runtime_1.jsx)(tooltip_1.TooltipContent, { children: tooltipValue })] }));
53
+ return ((0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip, { children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipTrigger, { asChild: true, children: (0, jsx_runtime_1.jsxs)("span", { onClick: handleClick, className: (0, utils_1.cn)("inline-flex items-center gap-1 whitespace-nowrap", colorClass, className, clickable && "cursor-pointer transition-opacity hover:opacity-80"), children: [subB3Icon &&
54
+ (currency === baseCurrency || (!currency && activeCurrency === baseCurrency)) &&
55
+ baseCurrency === "B3"
56
+ ? displayValue.split(" ")[0]
57
+ : displayValue, subB3Icon &&
58
+ (currency === baseCurrency || (!currency && activeCurrency === baseCurrency)) &&
59
+ baseCurrency === "B3" && ((0, jsx_runtime_1.jsx)("img", { src: currency_1.B3_COIN_IMAGE_URL, className: "inline-block h-4 w-4 align-middle", alt: "B3 coin" }))] }) }), (0, jsx_runtime_1.jsx)(tooltip_1.TooltipContent, { children: tooltipValue })] }));
65
60
  }
@@ -16,23 +16,20 @@
16
16
  */
17
17
  export declare function useCurrencyConversion(): {
18
18
  /** Currently selected display currency */
19
- selectedCurrency: string;
19
+ selectedCurrency: import("../stores/currencyStore").SupportedCurrency;
20
20
  /** Base currency used for conversion (typically B3) */
21
- baseCurrency: string;
21
+ baseCurrency: import("../stores/currencyStore").SupportedCurrency;
22
22
  /** Current exchange rate from base to selected currency (undefined while loading) */
23
23
  exchangeRate: number | undefined;
24
24
  /** Format a value with currency conversion and proper symbol/decimal handling */
25
- formatCurrencyValue: (value: number, sourceCurrency: string, options?: {
25
+ formatCurrencyValue: (value: number, options?: {
26
26
  decimals?: number;
27
+ currency?: string;
27
28
  }) => string;
28
29
  /** Format a tooltip value showing alternate currency representation */
29
- formatTooltipValue: (value: number, sourceCurrency: string) => string;
30
+ formatTooltipValue: (value: number, customCurrency?: string) => string;
30
31
  /** Symbol for the currently selected currency (e.g., "$", "€", "ETH") */
31
32
  selectedCurrencySymbol: string;
32
33
  /** Symbol for the base currency */
33
34
  baseCurrencySymbol: string;
34
- /** Get exchange rate between any two currencies */
35
- getExchangeRate: (from: string, to: string) => number | undefined;
36
- /** All registered custom currencies */
37
- customCurrencies: Record<string, import("../stores/currencyStore").CurrencyMetadata>;
38
35
  };