@rango-dev/widget-embedded 0.1.10 → 0.1.11-next.10

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 (88) hide show
  1. package/dist/App.d.ts +3 -3
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/components/AppRouter.d.ts +1 -7
  5. package/dist/components/AppRouter.d.ts.map +1 -1
  6. package/dist/components/AppRoutes.d.ts +2 -2
  7. package/dist/components/AppRoutes.d.ts.map +1 -1
  8. package/dist/components/Layout.d.ts +3 -3
  9. package/dist/components/Layout.d.ts.map +1 -1
  10. package/dist/components/PercentageChange.d.ts +9 -0
  11. package/dist/components/PercentageChange.d.ts.map +1 -0
  12. package/dist/components/TokenInfo.d.ts.map +1 -1
  13. package/dist/components/TokenPreview.d.ts +2 -1
  14. package/dist/components/TokenPreview.d.ts.map +1 -1
  15. package/dist/hooks/useConfirmSwap.d.ts.map +1 -1
  16. package/dist/hooks/useTheme.d.ts +2 -5
  17. package/dist/hooks/useTheme.d.ts.map +1 -1
  18. package/dist/lib.d.ts +2 -2
  19. package/dist/lib.d.ts.map +1 -1
  20. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  21. package/dist/pages/Home.d.ts +1 -7
  22. package/dist/pages/Home.d.ts.map +1 -1
  23. package/dist/pages/LiquiditySourcesPage.d.ts +1 -2
  24. package/dist/pages/LiquiditySourcesPage.d.ts.map +1 -1
  25. package/dist/pages/SelectChainPage.d.ts +1 -2
  26. package/dist/pages/SelectChainPage.d.ts.map +1 -1
  27. package/dist/pages/SelectTokenPage.d.ts +2 -2
  28. package/dist/pages/SelectTokenPage.d.ts.map +1 -1
  29. package/dist/pages/SettingsPage.d.ts +1 -2
  30. package/dist/pages/SettingsPage.d.ts.map +1 -1
  31. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  32. package/dist/pages/WalletsPage.d.ts +1 -1
  33. package/dist/pages/WalletsPage.d.ts.map +1 -1
  34. package/dist/services/httpService.d.ts +2 -1
  35. package/dist/services/httpService.d.ts.map +1 -1
  36. package/dist/store/bestRoute.d.ts +1 -0
  37. package/dist/store/bestRoute.d.ts.map +1 -1
  38. package/dist/store/meta.d.ts.map +1 -1
  39. package/dist/store/settings.d.ts +2 -0
  40. package/dist/store/settings.d.ts.map +1 -1
  41. package/dist/types/config.d.ts +27 -29
  42. package/dist/types/config.d.ts.map +1 -1
  43. package/dist/types/routing.d.ts +14 -1
  44. package/dist/types/routing.d.ts.map +1 -1
  45. package/dist/utils/configs.d.ts +7 -0
  46. package/dist/utils/configs.d.ts.map +1 -0
  47. package/dist/utils/routing.d.ts +2 -2
  48. package/dist/utils/routing.d.ts.map +1 -1
  49. package/dist/utils/swap.d.ts +2 -6
  50. package/dist/utils/swap.d.ts.map +1 -1
  51. package/dist/widget-embedded.cjs.development.js +232 -223
  52. package/dist/widget-embedded.cjs.development.js.map +1 -1
  53. package/dist/widget-embedded.cjs.production.min.js +232 -223
  54. package/dist/widget-embedded.cjs.production.min.js.map +1 -1
  55. package/dist/widget-embedded.esm.js +232 -223
  56. package/dist/widget-embedded.esm.js.map +1 -1
  57. package/package.json +6 -4
  58. package/readme.md +1 -1
  59. package/src/App.tsx +36 -14
  60. package/src/QueueManager.tsx +9 -3
  61. package/src/components/AppRouter.tsx +7 -16
  62. package/src/components/AppRoutes.tsx +13 -32
  63. package/src/components/HeaderButtons.tsx +1 -1
  64. package/src/components/Layout.tsx +37 -27
  65. package/src/components/PercentageChange.tsx +33 -0
  66. package/src/components/TokenInfo.tsx +24 -12
  67. package/src/components/TokenPreview.tsx +19 -15
  68. package/src/hooks/useConfirmSwap.ts +6 -5
  69. package/src/hooks/useTheme.ts +21 -9
  70. package/src/lib.tsx +30 -36
  71. package/src/pages/ConfirmSwapPage.tsx +14 -7
  72. package/src/pages/Home.tsx +10 -22
  73. package/src/pages/LiquiditySourcesPage.tsx +3 -6
  74. package/src/pages/SelectChainPage.tsx +6 -6
  75. package/src/pages/SelectTokenPage.tsx +16 -18
  76. package/src/pages/SettingsPage.tsx +8 -18
  77. package/src/pages/SwapDetailsPage.tsx +2 -4
  78. package/src/pages/WalletsPage.tsx +2 -2
  79. package/src/services/httpService.ts +12 -3
  80. package/src/store/bestRoute.ts +39 -9
  81. package/src/store/meta.ts +6 -4
  82. package/src/store/settings.ts +7 -0
  83. package/src/store/wallets.ts +1 -1
  84. package/src/types/config.ts +28 -29
  85. package/src/types/routing.ts +17 -1
  86. package/src/utils/configs.ts +24 -0
  87. package/src/utils/routing.ts +29 -23
  88. package/src/utils/swap.ts +5 -97
@@ -49,6 +49,7 @@ export interface RouteState {
49
49
  bestRoute: BestRouteResponse | null;
50
50
  setBestRoute: (bestRoute: BestRouteResponse | null) => void;
51
51
  retry: (pendingSwap: PendingSwap) => void;
52
+ switchFromAndTo: () => void;
52
53
  }
53
54
 
54
55
  export const useBestRouteStore = createSelectors(
@@ -146,7 +147,6 @@ export const useBestRouteStore = createSelectors(
146
147
  toToken: token,
147
148
  })),
148
149
  setInputAmount: (amount) => {
149
- console.log(amount, typeof amount);
150
150
  set((state) => ({
151
151
  inputAmount: amount,
152
152
  ...(!amount && {
@@ -224,6 +224,20 @@ export const useBestRouteStore = createSelectors(
224
224
  destinationTokens: sortedDestinationTokens,
225
225
  });
226
226
  },
227
+ switchFromAndTo: () =>
228
+ set((state) => ({
229
+ fromChain: state.toChain,
230
+ fromToken: state.toToken,
231
+ toChain: state.fromChain,
232
+ toToken: state.fromToken,
233
+ sourceTokens: state.destinationTokens,
234
+ destinationTokens: state.sourceTokens,
235
+ inputAmount: state.outputAmount?.toString() || '',
236
+ inputUsdValue: getUsdValue(
237
+ state.toToken,
238
+ state.outputAmount?.toString() || ''
239
+ ),
240
+ })),
227
241
  }))
228
242
  )
229
243
  );
@@ -235,7 +249,7 @@ const bestRoute = (
235
249
  let abortController: AbortController | null = null;
236
250
  const fetchBestRoute = () => {
237
251
  const { fromToken, toToken, inputAmount } = bestRouteStore.getState();
238
- const { slippage, customSlippage, disabledLiquiditySources } =
252
+ const { slippage, customSlippage, disabledLiquiditySources, affiliateRef } =
239
253
  settingsStore.getState();
240
254
  if (!fromToken || !toToken || !inputAmount || inputAmount === '0') return;
241
255
  abortController?.abort();
@@ -249,7 +263,8 @@ const bestRoute = (
249
263
  [],
250
264
  disabledLiquiditySources,
251
265
  userSlippage,
252
- false
266
+ false,
267
+ affiliateRef
253
268
  );
254
269
  if (!bestRouteStore.getState().loading)
255
270
  bestRouteStore.setState({
@@ -258,7 +273,7 @@ const bestRoute = (
258
273
  outputAmount: null,
259
274
  outputUsdValue: new BigNumber(0),
260
275
  });
261
- httpService
276
+ httpService()
262
277
  .getBestRoute(requestBody, {
263
278
  signal: abortController.signal,
264
279
  })
@@ -282,7 +297,7 @@ const bestRoute = (
282
297
  const bestRouteParamsListener = () => {
283
298
  const { fromToken, toToken, inputAmount, inputUsdValue } =
284
299
  useBestRouteStore.getState();
285
- if (!inputAmount || inputAmount === '0') return;
300
+ if (!inputAmount || inputAmount === '0' || inputUsdValue.eq(0)) return;
286
301
 
287
302
  if (tokensAreEqual(fromToken, toToken))
288
303
  return bestRouteStore.setState({
@@ -312,8 +327,15 @@ const bestRoute = (
312
327
  }),
313
328
  bestRouteParamsListener,
314
329
  {
315
- equalityFn: (prevState, state) => {
316
- if (isRouteParametersChanged(prevState, state)) return false;
330
+ equalityFn: (prevState, currentState) => {
331
+ if (
332
+ isRouteParametersChanged({
333
+ store: 'bestRoute',
334
+ prevState,
335
+ currentState,
336
+ })
337
+ )
338
+ return false;
317
339
  else return true;
318
340
  },
319
341
  }
@@ -324,11 +346,19 @@ const bestRoute = (
324
346
  slippage: state.slippage,
325
347
  customSlippage: state.customSlippage,
326
348
  disabledLiquiditySources: state.disabledLiquiditySources,
349
+ infiniteApprove: state.infiniteApprove,
327
350
  }),
328
351
  bestRouteParamsListener,
329
352
  {
330
- equalityFn: (prevState, state) => {
331
- if (isRouteParametersChanged(prevState, state)) return false;
353
+ equalityFn: (prevState, currentState) => {
354
+ if (
355
+ isRouteParametersChanged({
356
+ store: 'settings',
357
+ prevState,
358
+ currentState,
359
+ })
360
+ )
361
+ return false;
332
362
  else return true;
333
363
  },
334
364
  }
package/src/store/meta.ts CHANGED
@@ -18,12 +18,14 @@ export const useMetaStore = createSelectors(
18
18
  loadingStatus: 'loading',
19
19
  fetchMeta: async () => {
20
20
  try {
21
- const response = await httpService.getAllMetadata();
21
+ const response = await httpService().getAllMetadata();
22
22
  const chainThatHasTokenInMetaResponse = removeDuplicateFrom(
23
- response.tokens.map((t) => t.blockchain),
23
+ response.tokens.map((t) => t.blockchain)
24
24
  );
25
25
  const enabledChains = response.blockchains.filter(
26
- (chain) => chain.enabled && chainThatHasTokenInMetaResponse.includes(chain.name),
26
+ (chain) =>
27
+ chain.enabled &&
28
+ chainThatHasTokenInMetaResponse.includes(chain.name)
27
29
  );
28
30
  response.blockchains = enabledChains.sort((a, b) => a.sort - b.sort);
29
31
  set({ meta: response, loadingStatus: 'success' });
@@ -31,5 +33,5 @@ export const useMetaStore = createSelectors(
31
33
  set({ loadingStatus: 'failed' });
32
34
  }
33
35
  },
34
- })),
36
+ }))
35
37
  );
@@ -13,12 +13,14 @@ export interface SettingsState {
13
13
  infiniteApprove: boolean;
14
14
  disabledLiquiditySources: string[];
15
15
  theme: Theme;
16
+ affiliateRef: string | null;
16
17
  setSlippage: (slippage: number) => void;
17
18
  setCustomSlippage: (customSlippage: number | null) => void;
18
19
  toggleInfiniteApprove: () => void;
19
20
  toggleLiquiditySource: (name: string) => void;
20
21
  setTheme: (theme: Theme) => void;
21
22
  toggleAllLiquiditySources: () => void;
23
+ setAffiliateRef: (affiliateRef: string | null) => void;
22
24
  }
23
25
 
24
26
  export const useSettingsStore = createSelectors(
@@ -28,6 +30,7 @@ export const useSettingsStore = createSelectors(
28
30
  slippage: DEFAULT_SLIPPAGE,
29
31
  customSlippage: null,
30
32
  infiniteApprove: false,
33
+ affiliateRef: null,
31
34
  disabledLiquiditySources: [],
32
35
  theme: 'auto',
33
36
  setSlippage: (slippage) =>
@@ -38,6 +41,10 @@ export const useSettingsStore = createSelectors(
38
41
  set(() => ({
39
42
  customSlippage: customSlippage,
40
43
  })),
44
+ setAffiliateRef: (affiliateRef) =>
45
+ set(() => ({
46
+ affiliateRef,
47
+ })),
41
48
  toggleAllLiquiditySources: () =>
42
49
  set((state) => {
43
50
  const { swappers } = useMetaStore.getState().meta;
@@ -81,7 +81,7 @@ export const useWalletsStore = createSelectors(
81
81
  }));
82
82
  accounts.forEach(async (account) => {
83
83
  try {
84
- const response = await httpService.getWalletsDetails([
84
+ const response = await httpService().getWalletsDetails([
85
85
  { address: account.address, blockchain: account.chain },
86
86
  ]);
87
87
  const retrivedBalance = response.wallets[0];
@@ -1,9 +1,5 @@
1
- import { BlockchainMeta, Token } from 'rango-sdk';
1
+ import { Asset } from 'rango-sdk';
2
2
  import { WalletType } from '@rango-dev/wallets-shared';
3
- export interface Source {
4
- title: string;
5
- type: 'BRIDGE' | 'AGGREGATOR' | 'DEX';
6
- }
7
3
 
8
4
  export type Colors = {
9
5
  background?: string;
@@ -17,28 +13,31 @@ export type Colors = {
17
13
  warning?: string;
18
14
  };
19
15
 
20
- export type Configs = {
21
- fromChain: BlockchainMeta | null;
22
- fromToken: Token | null;
23
- toChain: BlockchainMeta | null;
24
- toToken: Token | null;
25
- fromAmount: number;
26
- fromChains: 'all' | BlockchainMeta[];
27
- fromTokens: 'all' | Token[];
28
- toChains: 'all' | BlockchainMeta[];
29
- toTokens: 'all' | Token[];
30
- liquiditySources: 'all' | Source[];
31
- wallets: 'all' | WalletType[];
32
- multiWallets: boolean;
33
- customeAddress: boolean;
34
- theme: 'dark' | 'light' | 'auto';
35
- title: string;
36
- width: number;
37
- height: number;
38
- languege: string;
39
- borderRadius: number;
40
- fontFamily: string;
41
- titleSize: number;
42
- titleWeight: number;
43
- colors: Colors;
16
+ export type Theme = {
17
+ mode?: 'dark' | 'light' | 'auto';
18
+ fontFamily?: string;
19
+ colors?: Colors;
20
+ borderRadius?: number;
21
+ width?: number;
22
+ height?: number;
23
+ };
24
+ export type Support = {
25
+ blockchain?: string;
26
+ token?: Asset;
27
+ blockchains?: string[];
28
+ tokens?: Asset[];
29
+ };
30
+
31
+ export type WidgetConfig = {
32
+ apiKey: string;
33
+ affiliateRef?: string;
34
+ amount?: number;
35
+ from?: Support;
36
+ to?: Support;
37
+ liquiditySources?: string[];
38
+ wallets?: WalletType[];
39
+ multiWallets?: boolean;
40
+ customAddress?: boolean;
41
+ language?: string;
42
+ theme?: Theme;
44
43
  };
@@ -1,17 +1,33 @@
1
1
  import { RouteState } from '../store/bestRoute';
2
2
  import { SettingsState } from '../store/settings';
3
3
 
4
- export interface BestRouteParams {
4
+ interface BestRouteStoreParams {
5
5
  fromChain?: RouteState['fromChain'];
6
6
  toChain?: RouteState['toChain'];
7
7
  fromToken?: RouteState['fromToken'];
8
8
  toToken?: RouteState['toToken'];
9
9
  inputAmount?: RouteState['inputAmount'];
10
+ }
11
+
12
+ interface SettingsStoreParams {
10
13
  slippage?: SettingsState['slippage'];
11
14
  customSlippage?: SettingsState['customSlippage'];
12
15
  disabledLiquiditySources?: SettingsState['disabledLiquiditySources'];
16
+ infiniteApprove?: SettingsState['infiniteApprove'];
13
17
  }
14
18
 
19
+ export type BestRouteEqualityParams =
20
+ | {
21
+ store: 'bestRoute';
22
+ prevState: BestRouteStoreParams;
23
+ currentState: BestRouteStoreParams;
24
+ }
25
+ | {
26
+ store: 'settings';
27
+ prevState: SettingsStoreParams;
28
+ currentState: SettingsStoreParams;
29
+ };
30
+
15
31
  export enum ConfirmSwapErrorTypes {
16
32
  NO_ROUTE,
17
33
  ROUTE_UPDATED_WITH_HIGH_VALUE_LOSS,
@@ -0,0 +1,24 @@
1
+ export interface Configs {
2
+ API_KEY: string;
3
+ }
4
+
5
+ const RANGO_PUBLIC_API_KEY = 'c6381a79-2817-4602-83bf-6a641a409e32';
6
+
7
+ let configs: Configs = {
8
+ API_KEY: RANGO_PUBLIC_API_KEY,
9
+ };
10
+
11
+ export function getConfig(name: keyof Configs) {
12
+ return configs[name];
13
+ }
14
+
15
+ export function setConfig(name: keyof Configs, value: any) {
16
+ configs[name] = value;
17
+
18
+ return value;
19
+ }
20
+
21
+ export function initConfig(nextConfigs: Configs) {
22
+ configs = structuredClone(nextConfigs);
23
+ return configs;
24
+ }
@@ -6,7 +6,7 @@ import BigNumber from 'bignumber.js';
6
6
  import { BestRouteResponse, BlockchainMeta, Token } from 'rango-sdk';
7
7
  import { areEqual } from './common';
8
8
  import { SelectedWallet } from './wallets';
9
- import { BestRouteParams } from '../types';
9
+ import { BestRouteEqualityParams } from '../types';
10
10
  import { TokenMeta } from '@rango-dev/ui/dist/types/meta';
11
11
  import { numberToString } from './numbers';
12
12
  import { getUsdFeeOfStep } from './swap';
@@ -112,28 +112,34 @@ export function getRequiredBalanceOfWallet(
112
112
  return relatedFeeStatus.requiredAssets;
113
113
  }
114
114
 
115
- export function isRouteParametersChanged(
116
- prevParams: BestRouteParams,
117
- currentParams: BestRouteParams
118
- ) {
119
- return (
120
- !!currentParams.fromToken &&
121
- !!currentParams.toToken &&
122
- (prevParams.fromChain?.name !== currentParams.fromChain?.name ||
123
- prevParams.toChain?.name !== currentParams.toChain?.name ||
124
- prevParams.fromToken?.symbol !== currentParams.fromToken?.symbol ||
125
- prevParams.toToken?.symbol !== currentParams.toToken?.symbol ||
126
- prevParams.fromToken?.blockchain !==
127
- currentParams.fromToken?.blockchain ||
128
- prevParams.toToken?.blockchain !== currentParams.toToken?.blockchain ||
129
- prevParams.fromToken?.address !== currentParams.fromToken?.address ||
130
- prevParams.toToken?.address !== currentParams.toToken?.address ||
131
- prevParams.inputAmount !== currentParams.inputAmount ||
132
- prevParams.slippage !== currentParams.slippage ||
133
- prevParams.customSlippage !== currentParams.customSlippage ||
134
- prevParams.disabledLiquiditySources?.length !==
135
- currentParams.disabledLiquiditySources?.length)
136
- );
115
+ export function isRouteParametersChanged(params: BestRouteEqualityParams) {
116
+ if (params.store === 'bestRoute') {
117
+ const { prevState, currentState } = params;
118
+ return (
119
+ !!currentState.fromToken &&
120
+ !!currentState.toToken &&
121
+ (prevState.fromChain?.name !== currentState.fromChain?.name ||
122
+ prevState.toChain?.name !== currentState.toChain?.name ||
123
+ prevState.fromToken?.symbol !== currentState.fromToken?.symbol ||
124
+ prevState.toToken?.symbol !== currentState.toToken?.symbol ||
125
+ prevState.fromToken?.blockchain !== prevState.fromToken?.blockchain ||
126
+ prevState.toToken?.blockchain !== currentState.toToken?.blockchain ||
127
+ prevState.fromToken?.address !== currentState.fromToken?.address ||
128
+ prevState.toToken?.address !== currentState.toToken?.address ||
129
+ prevState.inputAmount !== currentState.inputAmount)
130
+ );
131
+ } else if (params.store === 'settings') {
132
+ const { prevState, currentState } = params;
133
+ return (
134
+ prevState.slippage !== currentState.slippage ||
135
+ prevState.customSlippage !== currentState.customSlippage ||
136
+ prevState.disabledLiquiditySources?.length !==
137
+ currentState.disabledLiquiditySources?.length ||
138
+ prevState.infiniteApprove ||
139
+ currentState.infiniteApprove
140
+ );
141
+ }
142
+ return false;
137
143
  }
138
144
 
139
145
  export function getBestRouteWithCalculatedFees(
package/src/utils/swap.ts CHANGED
@@ -1,14 +1,9 @@
1
- import {
2
- WalletTypeAndAddress,
3
- SwapSavedSettings,
4
- } from '@rango-dev/ui/dist/types/swaps';
5
1
  import BigNumber from 'bignumber.js';
6
2
  import {
7
3
  BestRouteRequest,
8
4
  BestRouteResponse,
9
5
  RecommendedSlippage,
10
6
  SwapResult,
11
- MetaResponse,
12
7
  Token,
13
8
  } from 'rango-sdk';
14
9
  import { Account } from '../store/wallets';
@@ -140,7 +135,8 @@ export function getSwapButtonState(
140
135
  if (accounts.length == 0) return { title: 'Connect Wallet', disabled: false };
141
136
  if (loading) return { title: 'Finding Best Route...', disabled: true };
142
137
  else if (inputIsZero) return { title: 'Enter an amount', disabled: true };
143
- else if (!bestRoute) return { title: 'Swap', disabled: true };
138
+ else if (!bestRoute || !bestRoute.result)
139
+ return { title: 'Swap', disabled: true };
144
140
  else if (hasLimitError) return { title: 'Limit Error', disabled: true };
145
141
  else if (highValueLoss)
146
142
  return { title: 'Price impact is too high!', disabled: true };
@@ -175,96 +171,6 @@ export function canComputePriceImpact(
175
171
  );
176
172
  }
177
173
 
178
- export function calculatePendingSwap(
179
- inputAmount: string,
180
- bestRoute: BestRouteResponse,
181
- wallets: { [p: string]: WalletTypeAndAddress },
182
- settings: Omit<SwapSavedSettings, 'disabledSwappersIds'>,
183
- validateBalanceOrFee: boolean,
184
- meta: MetaResponse
185
- ): PendingSwap {
186
- const simulationResult = bestRoute.result;
187
- if (!simulationResult) throw Error('Simulation result should not be null');
188
-
189
- return {
190
- creationTime: new Date().getTime().toString(),
191
- finishTime: null,
192
- requestId: bestRoute.requestId || '',
193
- inputAmount: inputAmount,
194
- //@ts-ignore
195
- wallets,
196
- status: 'running',
197
- isPaused: false,
198
- extraMessage: null,
199
- extraMessageSeverity: null,
200
- extraMessageDetail: null,
201
- extraMessageErrorCode: null,
202
- networkStatusExtraMessage: null,
203
- networkStatusExtraMessageDetail: null,
204
- lastNotificationTime: null,
205
- //@ts-ignore
206
- settings: settings,
207
- simulationResult: simulationResult,
208
- validateBalanceOrFee,
209
- //@ts-ignore
210
- steps:
211
- bestRoute.result?.swaps?.map((swap, index) => {
212
- const swapper = meta.swappers.find(
213
- (swapper) => swapper.id === swap.swapperId
214
- );
215
- const swapperType = swapper?.types[0];
216
- const fromBlockchain = meta.blockchains.find(
217
- (blockchain) => blockchain.name === swap.from.blockchain
218
- );
219
- const toBlockchain = meta.blockchains.find(
220
- (blockchain) => blockchain.name === swap.to.blockchain
221
- );
222
- return {
223
- id: index + 1,
224
- fromBlockchain: swap.from.blockchain,
225
- fromSymbol: swap.from.symbol,
226
- fromSymbolAddress: swap.from.address,
227
- fromDecimals: swap.from.decimals,
228
- fromAmountPrecision: swap.fromAmountPrecision,
229
- fromAmountMinValue: swap.fromAmountMinValue,
230
- fromAmountMaxValue: swap.fromAmountMaxValue,
231
- toBlockchain: swap.to.blockchain,
232
- fromLogo: swap.from.logo,
233
- toSymbol: swap.to.symbol,
234
- toSymbolAddress: swap.to.address,
235
- toDecimals: swap.to.decimals,
236
- toLogo: swap.to.logo,
237
- startTransactionTime: new Date().getTime(),
238
- swapperId: swap.swapperId,
239
- feeInUsd: numberToString(getUsdFeeOfStep(swap, meta.tokens), null, 2),
240
- expectedOutputAmountHumanReadable: swap.toAmount,
241
- outputAmount: '',
242
- status: 'created',
243
- networkStatus: null,
244
- executedTransactionId: null,
245
- externalTransactionId: null,
246
- explorerUrl: null,
247
- trackingCode: null,
248
- cosmosTransaction: null,
249
- solanaTransaction: null,
250
- starknetTransaction: null,
251
- starknetApprovalTransaction: null,
252
- tronTransaction: null,
253
- tronApprovalTransaction: null,
254
- evmTransaction: null,
255
- evmApprovalTransaction: null,
256
- transferTransaction: null,
257
- diagnosisUrl: null,
258
- internalSteps: null,
259
- fromBlockchainLogo: fromBlockchain?.logo || '',
260
- toBlockchainLogo: toBlockchain?.logo || '',
261
- swapperLogo: swapper?.logo || '',
262
- swapperType: swapperType || '',
263
- };
264
- }) || [],
265
- };
266
- }
267
-
268
174
  export function requiredWallets(route: BestRouteResponse | null) {
269
175
  const wallets: string[] = [];
270
176
 
@@ -407,7 +313,8 @@ export function createBestRouteRequestBody(
407
313
  selectedWallets: SelectedWallet[],
408
314
  disabledLiquiditySources: string[],
409
315
  slippage: number,
410
- checkPrerequisites: boolean
316
+ checkPrerequisites: boolean,
317
+ affiliateRef: string | null
411
318
  ): BestRouteRequest {
412
319
  const selectedWalletsMap = selectedWallets.reduce(
413
320
  (
@@ -438,6 +345,7 @@ export function createBestRouteRequestBody(
438
345
 
439
346
  const requestBody: BestRouteRequest = {
440
347
  amount: inputAmount.toString(),
348
+ affiliateRef,
441
349
  checkPrerequisites,
442
350
  from: {
443
351
  address: fromToken.address,