@kodiak-finance/orderly-hooks 2.9.4 → 2.9.5

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.js CHANGED
@@ -2201,6 +2201,16 @@ var useReferralInfo = () => {
2201
2201
  getFirstRefCode
2202
2202
  };
2203
2203
  };
2204
+
2205
+ // src/referral/referralCode.ts
2206
+ var REFERRAL_CODE_MIN_LENGTH = 4;
2207
+ var REFERRAL_CODE_MAX_LENGTH = 15;
2208
+ function formatReferralCodeInput(raw) {
2209
+ return String(raw).replace(/[a-z]/g, (c) => c.toUpperCase()).replace(/[^A-Z0-9]/g, "");
2210
+ }
2211
+ function isReferralCodeLengthValid(code) {
2212
+ return code.length >= REFERRAL_CODE_MIN_LENGTH && code.length <= REFERRAL_CODE_MAX_LENGTH;
2213
+ }
2204
2214
  var useAppStore = zustand.create()(
2205
2215
  immer.immer((set) => ({
2206
2216
  // accountInfo: null,
@@ -3311,6 +3321,129 @@ var ProxyConfigStore = class {
3311
3321
  this._originConfigStore.clear();
3312
3322
  }
3313
3323
  };
3324
+ function createGetter(data, depth = 2) {
3325
+ const getValue = (value, defaultValue) => {
3326
+ if (defaultValue === void 0) {
3327
+ return value;
3328
+ }
3329
+ return value ?? defaultValue;
3330
+ };
3331
+ return new Proxy(data || {}, {
3332
+ get(target, property, receiver) {
3333
+ if (property === "isNil") {
3334
+ return ramda.isNil(data);
3335
+ }
3336
+ if (depth === 1) {
3337
+ return (defaultValue) => {
3338
+ if (!target) return defaultValue;
3339
+ return getValue(target[property], defaultValue);
3340
+ };
3341
+ }
3342
+ return (key, defaultValue) => {
3343
+ if (key) {
3344
+ return getValue(target[property]?.[key], defaultValue);
3345
+ } else {
3346
+ return getValue(target[property], defaultValue);
3347
+ }
3348
+ };
3349
+ }
3350
+ });
3351
+ }
3352
+
3353
+ // src/orderly/useSymbolsInfo.ts
3354
+ var useSymbolsInfo = () => {
3355
+ const symbolsInfo = useAppStore((state) => state.symbolsInfo);
3356
+ return React.useMemo(
3357
+ () => createGetter(symbolsInfo ? { ...symbolsInfo } : symbolsInfo),
3358
+ [symbolsInfo]
3359
+ );
3360
+ };
3361
+ var useSymbolsInfoStore = () => {
3362
+ return useAppStore((state) => state.symbolsInfo);
3363
+ };
3364
+
3365
+ // src/trading-rewards/useAllBrokers.ts
3366
+ var useAllBrokers = () => {
3367
+ const { data } = useQuery("/v1/public/broker/name", {
3368
+ formatter: (res) => {
3369
+ const { rows } = res;
3370
+ return rows?.map((item) => ({ [item.broker_id]: item.broker_name })).reduce((acc, curr) => ({ ...acc, ...curr }), {});
3371
+ }
3372
+ });
3373
+ return [data];
3374
+ };
3375
+
3376
+ // src/useBadgeBySymbol.ts
3377
+ function getSymbolBase(symbol) {
3378
+ if (!symbol) return "";
3379
+ const parts = symbol.split("_");
3380
+ return parts.length >= 3 ? parts[1] ?? "" : symbol.match(/^([A-Za-z]+)/)?.[1] ?? symbol;
3381
+ }
3382
+ function getSymbolDisplayName(symbol, displaySymbolName) {
3383
+ const trimmedDisplayName = displaySymbolName?.trim();
3384
+ if (trimmedDisplayName) return trimmedDisplayName;
3385
+ return getSymbolBase(symbol);
3386
+ }
3387
+ function brokerNameBaseFromRaw(rawBrokerName) {
3388
+ if (!rawBrokerName) return void 0;
3389
+ const first = rawBrokerName.trim().split(/[ _-]/, 1)[0]?.trim() ?? "";
3390
+ return first.length > 0 ? first : void 0;
3391
+ }
3392
+ var useBadgeBySymbol = (symbol) => {
3393
+ const symbolsInfo = useSymbolsInfo();
3394
+ const [brokers] = useAllBrokers();
3395
+ return React.useMemo(() => {
3396
+ if (!symbol || symbolsInfo.isNil) {
3397
+ return {
3398
+ displaySymbolName: symbol ?? "",
3399
+ brokerId: void 0,
3400
+ brokerName: void 0,
3401
+ brokerNameRaw: void 0
3402
+ };
3403
+ }
3404
+ const getter = symbolsInfo[symbol];
3405
+ const info = typeof getter === "function" ? getter() : void 0;
3406
+ const displaySymbolName = getSymbolDisplayName(
3407
+ symbol,
3408
+ info?.display_symbol_name
3409
+ );
3410
+ const brokerId = info?.broker_id ?? void 0;
3411
+ const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
3412
+ const base = brokerNameBaseFromRaw(rawBrokerName);
3413
+ const brokerName = base ? base.length > 7 ? `${base.slice(0, 7)}...` : base : void 0;
3414
+ return {
3415
+ displaySymbolName,
3416
+ brokerId,
3417
+ brokerName,
3418
+ brokerNameRaw: rawBrokerName
3419
+ };
3420
+ }, [brokers, symbolsInfo, symbol]);
3421
+ };
3422
+ function formatSymbolWithBroker(symbol, symbolsInfo, brokers) {
3423
+ if (!symbol) return "";
3424
+ let brokerNameBase;
3425
+ if (!symbolsInfo.isNil) {
3426
+ const getter = symbolsInfo[symbol];
3427
+ const info = typeof getter === "function" ? getter() : void 0;
3428
+ const brokerId = info?.broker_id ?? void 0;
3429
+ const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
3430
+ brokerNameBase = brokerNameBaseFromRaw(rawBrokerName);
3431
+ }
3432
+ const base = getSymbolBase(symbol);
3433
+ const hasBrokerSuffix = symbol.includes("-") || symbol.split("_").length > 3;
3434
+ if (brokerNameBase && hasBrokerSuffix) {
3435
+ return `${base}-${brokerNameBase}`;
3436
+ }
3437
+ return base;
3438
+ }
3439
+ var useSymbolWithBroker = (symbol) => {
3440
+ const symbolsInfo = useSymbolsInfo();
3441
+ const [brokers] = useAllBrokers();
3442
+ return React.useMemo(
3443
+ () => formatSymbolWithBroker(symbol, symbolsInfo, brokers),
3444
+ [brokers, symbolsInfo, symbol]
3445
+ );
3446
+ };
3314
3447
  var useMarkPriceStore = zustand.create((set, get3) => ({
3315
3448
  markPrices: {},
3316
3449
  // orderBook: {},
@@ -3406,36 +3539,6 @@ var useMarketsStream = () => {
3406
3539
  }, [futures, tickers, markPrices]);
3407
3540
  return { data: value };
3408
3541
  };
3409
- function createGetter(data, depth = 2) {
3410
- const getValue = (value, defaultValue) => {
3411
- if (defaultValue === void 0) {
3412
- return value;
3413
- }
3414
- return value ?? defaultValue;
3415
- };
3416
- return new Proxy(data || {}, {
3417
- get(target, property, receiver) {
3418
- if (property === "isNil") {
3419
- return ramda.isNil(data);
3420
- }
3421
- if (depth === 1) {
3422
- return (defaultValue) => {
3423
- if (!target) return defaultValue;
3424
- return getValue(target[property], defaultValue);
3425
- };
3426
- }
3427
- return (key, defaultValue) => {
3428
- if (key) {
3429
- return getValue(target[property]?.[key], defaultValue);
3430
- } else {
3431
- return getValue(target[property], defaultValue);
3432
- }
3433
- };
3434
- }
3435
- });
3436
- }
3437
-
3438
- // src/orderly/useRwaSymbolsInfo.ts
3439
3542
  var isCurrentlyTrading = (nextClose, status, currentTime = Date.now()) => {
3440
3543
  return currentTime < nextClose && status === "open";
3441
3544
  };
@@ -3575,27 +3678,52 @@ var useGetRwaSymbolOpenTimeInterval = (symbol, thresholdMinutes = 30) => {
3575
3678
  return { isRwa, open, openTimeInterval: filteredInterval, nextOpen };
3576
3679
  }, [isRwa, open, openTimeInterval, nextOpen, thresholdMinutes]);
3577
3680
  };
3578
- var useSymbolsInfo = () => {
3579
- const symbolsInfo = useAppStore((state) => state.symbolsInfo);
3580
- return React.useMemo(
3581
- () => createGetter(symbolsInfo ? { ...symbolsInfo } : symbolsInfo),
3582
- [symbolsInfo]
3583
- );
3584
- };
3585
- var useSymbolsInfoStore = () => {
3586
- return useAppStore((state) => state.symbolsInfo);
3587
- };
3588
3681
 
3589
- // src/orderly/useMarkets.ts
3682
+ // src/orderly/markets/marketTypes.ts
3590
3683
  var MarketsType = /* @__PURE__ */ ((MarketsType2) => {
3591
3684
  MarketsType2[MarketsType2["FAVORITES"] = 0] = "FAVORITES";
3592
3685
  MarketsType2[MarketsType2["RECENT"] = 1] = "RECENT";
3593
3686
  MarketsType2[MarketsType2["ALL"] = 2] = "ALL";
3594
- MarketsType2[MarketsType2["RWA"] = 3] = "RWA";
3595
- MarketsType2[MarketsType2["NEW_LISTING"] = 4] = "NEW_LISTING";
3596
- MarketsType2[MarketsType2["COMMUNITY"] = 5] = "COMMUNITY";
3687
+ MarketsType2[MarketsType2["CRYPTO"] = 3] = "CRYPTO";
3688
+ MarketsType2[MarketsType2["RWA"] = 4] = "RWA";
3689
+ MarketsType2[MarketsType2["NEW_LISTING"] = 5] = "NEW_LISTING";
3690
+ MarketsType2[MarketsType2["COMMUNITY"] = 6] = "COMMUNITY";
3691
+ MarketsType2[MarketsType2["PRE_TGE"] = 7] = "PRE_TGE";
3597
3692
  return MarketsType2;
3598
3693
  })(MarketsType || {});
3694
+
3695
+ // src/orderly/markets/marketFilter.ts
3696
+ var filterMarkets = (params) => {
3697
+ const { markets, favorites, recent, newListing, type } = params;
3698
+ let curData = [];
3699
+ if (type === 2 /* ALL */ || type === 6 /* COMMUNITY */) {
3700
+ curData = markets;
3701
+ } else if (type === 3 /* CRYPTO */) {
3702
+ curData = markets.filter((item) => !item.isRwa);
3703
+ } else if (type === 4 /* RWA */) {
3704
+ curData = markets.filter((item) => item.isRwa);
3705
+ } else if (type === 7 /* PRE_TGE */) {
3706
+ curData = markets.filter((item) => item.isPreTge);
3707
+ } else if (type === 5 /* NEW_LISTING */) {
3708
+ curData = markets.filter((item) => isNewListing(item.created_time)).sort((a, b) => b.created_time - a.created_time);
3709
+ } else {
3710
+ const storageData = type === 0 /* FAVORITES */ ? favorites : type === 1 /* RECENT */ ? recent : newListing;
3711
+ const keys = storageData.map((item) => item.name);
3712
+ curData = markets?.filter((item) => keys.includes(item.symbol));
3713
+ }
3714
+ const favoriteKeys = favorites.map((item) => item.name);
3715
+ return curData?.map((item) => ({
3716
+ ...item,
3717
+ isFavorite: type === 0 /* FAVORITES */ ? true : favoriteKeys.includes(item.symbol)
3718
+ }));
3719
+ };
3720
+ var isNewListing = (createdTime) => {
3721
+ const thirtyDaysInMs = 30 * 24 * 60 * 60 * 1e3;
3722
+ const now = Date.now();
3723
+ return now - createdTime < thirtyDaysInMs;
3724
+ };
3725
+
3726
+ // src/orderly/markets/useMarkets.ts
3599
3727
  var MarketsStorageKey = "orderly_markets";
3600
3728
  var DefaultFavoriteTab = { name: "Popular", id: 1 };
3601
3729
  var useMarketsStore = () => {
@@ -3754,7 +3882,15 @@ var useMarkets = (type = 2 /* ALL */) => {
3754
3882
  type
3755
3883
  });
3756
3884
  setMarkets(filterList);
3757
- }, [futures, symbolsInfo, favorites, recent, newListing, type]);
3885
+ }, [
3886
+ futures,
3887
+ symbolsInfo,
3888
+ rwaSymbolsInfo,
3889
+ favorites,
3890
+ recent,
3891
+ newListing,
3892
+ type
3893
+ ]);
3758
3894
  return [markets, store];
3759
3895
  };
3760
3896
  var addFieldToMarkets = (futures, symbolsInfo, rwaSymbolsInfo) => {
@@ -3764,10 +3900,12 @@ var addFieldToMarkets = (futures, symbolsInfo, rwaSymbolsInfo) => {
3764
3900
  return {
3765
3901
  ...item,
3766
3902
  broker_id: item.broker_id,
3767
- display_symbol_name: item.display_symbol_name,
3903
+ display_symbol_name: getSymbolDisplayName(
3904
+ item.symbol,
3905
+ info("display_symbol_name")
3906
+ ),
3768
3907
  quote_dp: info("quote_dp"),
3769
3908
  created_time: info("created_time"),
3770
- displayName: info("displayName"),
3771
3909
  leverage: getLeverage(info("base_imr")),
3772
3910
  openInterest: getOpenInterest(item.open_interest, item.index_price),
3773
3911
  "8h_funding": get8hFunding(item.est_funding_rate, info("funding_period")),
@@ -3777,40 +3915,17 @@ var addFieldToMarkets = (futures, symbolsInfo, rwaSymbolsInfo) => {
3777
3915
  open: item["24h_open"]
3778
3916
  }),
3779
3917
  isRwa: !!rwaInfo,
3918
+ isPreTge: Boolean(item.is_pretge ?? info("is_pretge")),
3919
+ market_session: rwaInfo?.market_session,
3780
3920
  rwaNextOpen: rwaInfo?.next_open,
3781
3921
  rwaNextClose: rwaInfo?.next_close,
3782
3922
  rwaStatus: rwaInfo?.status
3783
3923
  };
3784
3924
  });
3785
3925
  };
3786
- var filterMarkets = (params) => {
3787
- const { markets, favorites, recent, newListing, type } = params;
3788
- let curData = [];
3789
- if (type === 2 /* ALL */ || type === 5 /* COMMUNITY */) {
3790
- curData = markets;
3791
- } else if (type === 3 /* RWA */) {
3792
- curData = markets.filter((item) => item.isRwa);
3793
- } else if (type === 4 /* NEW_LISTING */) {
3794
- curData = markets.filter((item) => isNewListing(item.created_time)).sort((a, b) => b.created_time - a.created_time);
3795
- } else {
3796
- const storageData = type === 0 /* FAVORITES */ ? favorites : type === 1 /* RECENT */ ? recent : newListing;
3797
- const keys = storageData.map((item) => item.name);
3798
- curData = markets?.filter((item) => keys.includes(item.symbol));
3799
- }
3800
- const favoriteKeys = favorites.map((item) => item.name);
3801
- return curData?.map((item) => ({
3802
- ...item,
3803
- isFavorite: type === 0 /* FAVORITES */ ? true : favoriteKeys.includes(item.symbol)
3804
- }));
3805
- };
3806
3926
  function isEmpty(value) {
3807
3927
  return value === void 0 || value === null;
3808
3928
  }
3809
- var isNewListing = (createdTime) => {
3810
- const thirtyDaysInMs = 30 * 24 * 60 * 60 * 1e3;
3811
- const now = Date.now();
3812
- return now - createdTime < thirtyDaysInMs;
3813
- };
3814
3929
  function get8hFunding(est_funding_rate, funding_period) {
3815
3930
  let funding8h = 0;
3816
3931
  if (isEmpty(est_funding_rate)) {
@@ -4532,12 +4647,13 @@ var useFundingRatesStore = () => {
4532
4647
  return data;
4533
4648
  };
4534
4649
 
4535
- // src/orderly/useMarket.ts
4650
+ // src/orderly/markets/useMarket.ts
4536
4651
  var DefaultTab = { name: "Popular", id: 1 };
4537
4652
  var marketsKey = "markets";
4538
4653
  var useMarket = (type) => {
4539
4654
  const { configStore } = React.useContext(OrderlyContext);
4540
4655
  const symbolsInfo = useSymbolsInfo();
4656
+ const rwaSymbolsInfo = useRwaSymbolsInfo();
4541
4657
  const fundingRates = useFundingRates();
4542
4658
  const { data: futures } = useMarketsStream();
4543
4659
  const updateStore = (key, data) => {
@@ -4674,6 +4790,7 @@ var useMarket = (type) => {
4674
4790
  const list = futures?.map((item) => {
4675
4791
  const { open_interest = 0, index_price = 0 } = item;
4676
4792
  const info = symbolsInfo[item.symbol];
4793
+ const rwaInfo = !rwaSymbolsInfo.isNil ? rwaSymbolsInfo[item.symbol]() : null;
4677
4794
  const rate = fundingRates[item.symbol];
4678
4795
  const est_funding_rate = rate("est_funding_rate");
4679
4796
  const funding_period = info("funding_period");
@@ -4684,15 +4801,26 @@ var useMarket = (type) => {
4684
4801
  "8h_funding": get8hFunding2(est_funding_rate, funding_period),
4685
4802
  quote_dp: info("quote_dp"),
4686
4803
  created_time: info("created_time"),
4804
+ isRwa: !!rwaInfo,
4805
+ isPreTge: Boolean(item.is_pretge ?? info("is_pretge")),
4687
4806
  openInterest: new orderlyUtils.Decimal(open_interest || 0).mul(index_price || 0).toNumber()
4688
4807
  };
4689
4808
  });
4690
4809
  return list || [];
4691
- }, [symbolsInfo, futures, fundingRates]);
4810
+ }, [symbolsInfo, futures, fundingRates, rwaSymbolsInfo]);
4692
4811
  const getData = (type2) => {
4693
4812
  const localData = type2 === 0 /* FAVORITES */ ? [...favorites] : [...recent];
4694
4813
  const keys = localData.map((item) => item.name);
4695
- const filter = type2 == 2 /* ALL */ || type2 == 4 /* COMMUNITY */ ? marketsList : marketsList?.filter((item) => keys.includes(item.symbol));
4814
+ let filter = marketsList;
4815
+ if (type2 == 3 /* CRYPTO */) {
4816
+ filter = marketsList?.filter((item) => !item.isRwa);
4817
+ } else if (type2 == 4 /* RWA */) {
4818
+ filter = marketsList?.filter((item) => item.isRwa);
4819
+ } else if (type2 == 7 /* PRE_TGE */) {
4820
+ filter = marketsList?.filter((item) => item.isPreTge);
4821
+ } else if (type2 != 2 /* ALL */ && type2 != 6 /* COMMUNITY */) {
4822
+ filter = marketsList?.filter((item) => keys.includes(item.symbol));
4823
+ }
4696
4824
  const favoritesData = [...favorites];
4697
4825
  const favoriteKeys = favoritesData.map((item) => item.name);
4698
4826
  if (filter) {
@@ -4891,79 +5019,6 @@ var useSymbolLeverageMap = () => {
4891
5019
  refresh: mutate6
4892
5020
  };
4893
5021
  };
4894
-
4895
- // src/trading-rewards/useAllBrokers.ts
4896
- var useAllBrokers = () => {
4897
- const { data } = useQuery("/v1/public/broker/name", {
4898
- formatter: (res) => {
4899
- const { rows } = res;
4900
- return rows?.map((item) => ({ [item.broker_id]: item.broker_name })).reduce((acc, curr) => ({ ...acc, ...curr }), {});
4901
- }
4902
- });
4903
- return [data];
4904
- };
4905
-
4906
- // src/useBadgeBySymbol.ts
4907
- function brokerNameBaseFromRaw(rawBrokerName) {
4908
- if (!rawBrokerName) return void 0;
4909
- const first = rawBrokerName.trim().split(/[ _-]/, 1)[0]?.trim() ?? "";
4910
- return first.length > 0 ? first : void 0;
4911
- }
4912
- var useBadgeBySymbol = (symbol) => {
4913
- const symbolsInfo = useSymbolsInfo();
4914
- const [brokers] = useAllBrokers();
4915
- return React.useMemo(() => {
4916
- if (!symbol || symbolsInfo.isNil) {
4917
- return {
4918
- displayName: symbol ?? "",
4919
- brokerId: void 0,
4920
- brokerName: void 0,
4921
- brokerNameRaw: void 0
4922
- };
4923
- }
4924
- const getter = symbolsInfo[symbol];
4925
- const info = typeof getter === "function" ? getter() : void 0;
4926
- const displayName = info?.displayName ?? info?.display_symbol_name ?? symbol;
4927
- const brokerId = info?.broker_id ?? void 0;
4928
- const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
4929
- const base = brokerNameBaseFromRaw(rawBrokerName);
4930
- const brokerName = base ? base.length > 7 ? `${base.slice(0, 7)}...` : base : void 0;
4931
- return {
4932
- displayName,
4933
- brokerId,
4934
- brokerName,
4935
- brokerNameRaw: rawBrokerName
4936
- };
4937
- }, [brokers, symbolsInfo, symbol]);
4938
- };
4939
- function formatSymbolWithBroker(symbol, symbolsInfo, brokers) {
4940
- if (!symbol) return "";
4941
- let brokerNameBase;
4942
- if (!symbolsInfo.isNil) {
4943
- const getter = symbolsInfo[symbol];
4944
- const info = typeof getter === "function" ? getter() : void 0;
4945
- const brokerId = info?.broker_id ?? void 0;
4946
- const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
4947
- brokerNameBase = brokerNameBaseFromRaw(rawBrokerName);
4948
- }
4949
- const parts = symbol.split("_");
4950
- const base = parts.length >= 3 ? parts[1] ?? "" : symbol.match(/^([A-Za-z]+)/)?.[1] ?? symbol;
4951
- const hasBrokerSuffix = symbol.includes("-") || symbol.split("_").length > 3;
4952
- if (brokerNameBase && hasBrokerSuffix) {
4953
- return `${base}-${brokerNameBase}`;
4954
- }
4955
- return base;
4956
- }
4957
- var useSymbolWithBroker = (symbol) => {
4958
- const symbolsInfo = useSymbolsInfo();
4959
- const [brokers] = useAllBrokers();
4960
- return React.useMemo(
4961
- () => formatSymbolWithBroker(symbol, symbolsInfo, brokers),
4962
- [brokers, symbolsInfo, symbol]
4963
- );
4964
- };
4965
-
4966
- // src/orderly/useMarginModes.ts
4967
5022
  var useMarginModes = () => {
4968
5023
  const { data, error, isLoading, mutate: mutate6 } = usePrivateQuery("/v1/client/margin_modes", {
4969
5024
  revalidateOnFocus: false,
@@ -12068,12 +12123,22 @@ var useStorageLedgerAddress = () => {
12068
12123
  ledgerWallet
12069
12124
  };
12070
12125
  };
12071
- var useTokensInfo = () => {
12072
- const tokensInfo = useAppStore((state) => state.tokensInfo);
12073
- return tokensInfo;
12126
+ var useTokensInfo = (networkId) => {
12127
+ const appTokensInfo = useAppStore((state) => state.tokensInfo);
12128
+ const mainTokensInfo = useMainTokenStore((state) => state.data);
12129
+ const testTokensInfo = useTestTokenStore((state) => state.data);
12130
+ return React.useMemo(() => {
12131
+ if (networkId === "mainnet") {
12132
+ return mainTokensInfo;
12133
+ }
12134
+ if (networkId === "testnet") {
12135
+ return testTokensInfo;
12136
+ }
12137
+ return appTokensInfo;
12138
+ }, [appTokensInfo, mainTokensInfo, networkId, testTokensInfo]);
12074
12139
  };
12075
- var useTokenInfo = (token) => {
12076
- const tokensInfo = useAppStore((state) => state.tokensInfo);
12140
+ var useTokenInfo = (token, networkId) => {
12141
+ const tokensInfo = useTokensInfo(networkId);
12077
12142
  return React.useMemo(() => {
12078
12143
  return tokensInfo?.find((item) => item.token === token);
12079
12144
  }, [tokensInfo, token]);
@@ -20290,7 +20355,10 @@ exports.ORDERLY_ORDERBOOK_DEPTH_KEY = ORDERLY_ORDERBOOK_DEPTH_KEY;
20290
20355
  exports.OrderlyConfigProvider = OrderlyConfigProvider;
20291
20356
  exports.OrderlyContext = OrderlyContext;
20292
20357
  exports.OrderlyProvider = OrderlyProvider;
20358
+ exports.REFERRAL_CODE_MAX_LENGTH = REFERRAL_CODE_MAX_LENGTH;
20359
+ exports.REFERRAL_CODE_MIN_LENGTH = REFERRAL_CODE_MIN_LENGTH;
20293
20360
  exports.StatusProvider = StatusProvider;
20361
+ exports.TESTNET_WHITE_CHAINS = TESTNET_WHITE_CHAINS;
20294
20362
  exports.TWType = TWType;
20295
20363
  exports.WalletConnectorContext = WalletConnectorContext;
20296
20364
  exports.WsNetworkStatus = WsNetworkStatus;
@@ -20300,13 +20368,17 @@ exports.fetcher = fetcher;
20300
20368
  exports.findPositionTPSLFromOrders = findPositionTPSLFromOrders;
20301
20369
  exports.findTPSLFromOrder = findTPSLFromOrder;
20302
20370
  exports.findTPSLOrderPriceFromOrder = findTPSLOrderPriceFromOrder;
20371
+ exports.formatReferralCodeInput = formatReferralCodeInput;
20303
20372
  exports.formatSymbolWithBroker = formatSymbolWithBroker;
20304
20373
  exports.getMinNotional = getMinNotional;
20305
20374
  exports.getPriceKey = getPriceKey;
20375
+ exports.getSymbolBase = getSymbolBase;
20376
+ exports.getSymbolDisplayName = getSymbolDisplayName;
20306
20377
  exports.indexedDBManager = indexedDBManager;
20307
20378
  exports.initializeAppDatabase = initializeAppDatabase;
20308
20379
  exports.isCurrentlyClosed = isCurrentlyClosed;
20309
20380
  exports.isCurrentlyTrading = isCurrentlyTrading;
20381
+ exports.isReferralCodeLengthValid = isReferralCodeLengthValid;
20310
20382
  exports.noCacheConfig = noCacheConfig;
20311
20383
  exports.parseJSON = parseJSON;
20312
20384
  exports.persistIndexedDB = persistIndexedDB;