@velora-dex/widget 0.4.14-dev.2 → 0.4.14-dev.4

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 (32) hide show
  1. package/dist/configurator/components/FormPropsInputs.d.ts.map +1 -1
  2. package/dist/core/inputs/hooks/types.d.ts +1 -1
  3. package/dist/core/inputs/hooks/types.d.ts.map +1 -1
  4. package/dist/core/inputs/state/common.d.ts +2 -0
  5. package/dist/core/inputs/state/common.d.ts.map +1 -1
  6. package/dist/core/inputs/state/common.js +11 -2
  7. package/dist/core/inputs/state/common.js.map +1 -1
  8. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
  9. package/dist/core/inputs/state/setTokenByAddressAtom.js +25 -25
  10. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  11. package/dist/core/twap/state/selectedTokenActionsAtom.d.ts +1 -1
  12. package/dist/core/twap/state/selectedTokenActionsAtom.d.ts.map +1 -1
  13. package/dist/core/twap/state/selectedTokenActionsAtom.js +1 -5
  14. package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -1
  15. package/dist/core/twap/state/twapSideAtom.d.ts.map +1 -1
  16. package/dist/core/twap/state/twapSideAtom.js +5 -0
  17. package/dist/core/twap/state/twapSideAtom.js.map +1 -1
  18. package/dist/core/twap/state/twapTokenAtoms.d.ts +1 -1
  19. package/dist/core/twap/state/twapTokenAtoms.d.ts.map +1 -1
  20. package/dist/core/twap/state/twapTokenAtoms.js +13 -1
  21. package/dist/core/twap/state/twapTokenAtoms.js.map +1 -1
  22. package/dist/core/twap/useTwapTokenToInputProps.d.ts.map +1 -1
  23. package/dist/core/twap/useTwapTokenToInputProps.js +16 -13
  24. package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -1
  25. package/dist/hooks/swap/prices/usePricesParams.js +6 -1
  26. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  27. package/dist/lib/tradeMode.d.ts +8 -0
  28. package/dist/lib/tradeMode.d.ts.map +1 -1
  29. package/dist/lib/tradeMode.js +3 -1
  30. package/dist/lib/tradeMode.js.map +1 -1
  31. package/dist/styles.css +2 -2
  32. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FormPropsInputs.d.ts","sourceRoot":"","sources":["../../../src/configurator/components/FormPropsInputs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAgChE,eAAO,MAAM,SAAS,GAAI,2BAGvB;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAChD,4CA8OA,CAAC"}
1
+ {"version":3,"file":"FormPropsInputs.d.ts","sourceRoot":"","sources":["../../../src/configurator/components/FormPropsInputs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAiChE,eAAO,MAAM,SAAS,GAAI,2BAGvB;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAChD,4CA8OA,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { TokenInputProps } from '../../../components/widget/TokenInput/types';
2
2
  export type TokenInputAmountProps = Pick<TokenInputProps, "amount" | "onAmountChange" | "token" | "readOnly" | "tokenBalanceUnit">;
3
- export type TokenInputExtraProps = Pick<TokenInputProps, "networkSwitcherProps" | "tokenType" | "onFocus" | "label" | "isLoading" | "warningMessage" | "disabled" | "bottomElement">;
3
+ export type TokenInputExtraProps = Pick<TokenInputProps, "networkSwitcherProps" | "tokenType" | "onFocus" | "label" | "isLoading" | "warningMessage" | "disabled" | "bottomElement" | "readOnly">;
4
4
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,eAAe,EACf,QAAQ,GAAG,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,kBAAkB,CACxE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,eAAe,EACb,sBAAsB,GACtB,WAAW,GACX,SAAS,GACT,OAAO,GACP,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,eAAe,CAClB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,eAAe,EACf,QAAQ,GAAG,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,kBAAkB,CACxE,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,eAAe,EACb,sBAAsB,GACtB,WAAW,GACX,SAAS,GACT,OAAO,GACP,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,UAAU,CACb,CAAC"}
@@ -8,6 +8,7 @@ import { PrimitiveAtom } from 'jotai';
8
8
  import { setLimitPayAmountAtomFromProps, setLimitReceiveAmountAtomFromProps } from '../../limit/state/limitInputActionsAtom';
9
9
  import { isCrossChainAtom as isSwapCrossChainAtom } from '../../state/isCrosschainAtom';
10
10
  import { swapSideAtom } from '../../../components/widget/SwapModeSwitcher/state/swapSideAtom';
11
+ import { currentSwapInputAtom } from '../../state/currentSwapInputAtom';
11
12
  import * as limitDeadline from "@/core/limit/state/deadlineAtom";
12
13
  export declare function syncTokensAfterChainSwitch(chainId: SupportedChainId): void;
13
14
  export declare const tradeModeToPayAmountUnitAtom: Record<TradeMode, {
@@ -31,6 +32,7 @@ export declare const tradeModeToSetTokenAtoms: Record<TradeMode, {
31
32
  tokenToAtom: typeof selectSwapTokenToAtom;
32
33
  }>;
33
34
  export declare const tradeModeToSideAtom: Record<TradeMode, typeof swapSideAtom>;
35
+ export declare const tradeModeToCurrentInputAtom: Record<TradeMode, typeof currentSwapInputAtom>;
34
36
  export declare const sideToInputType: {
35
37
  readonly SELL: "from";
36
38
  readonly BUY: "to";
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAiBzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAajD,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAcjD,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,0CAA0C,CAAC;AAKlD,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAGvF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,QAKnE;AAOD,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,IAAI,CAAC,OAAO,8BAA8B,EAAE,OAAO,CAAC,GACzD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CASF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,OAAO,kCAAkC,EAAE,OAAO,CAAC,GAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAeF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,OAAO,GAAG,KAAK,EACf,OAAO,aAAa,CAAC,YAAY,CAIlC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,SAAS,EACT,OAAO,qBAAqB,CAM7B,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAClD,SAAS,EACT,OAAO,8BAA8B,CAMtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,SAAS,EACT;IACE,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,WAAW,EAAE,OAAO,eAAe,CAAC;IACpC,gBAAgB,EAAE,OAAO,oBAAoB,CAAC;CAC/C,CAuBF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,SAAS,EACT;IACE,aAAa,EAAE,OAAO,uBAAuB,CAAC;IAC9C,WAAW,EAAE,OAAO,qBAAqB,CAAC;CAC3C,CAkBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,YAAY,CAKtE,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG6B,CAAC;AAE1D,eAAO,MAAM,eAAe,GAAI,WAAW,SAAS;;;CAKnD,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAiBzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,8BAA8B,EAC/B,MAAM,yCAAyC,CAAC;AAajD,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAcjD,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EACnC,MAAM,0CAA0C,CAAC;AAKlD,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAC;AAGvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gBAAgB,QAKnE;AAQD,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAC/C,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,KAAK,EAAE,IAAI,CAAC,OAAO,8BAA8B,EAAE,OAAO,CAAC,GACzD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CASF,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,SAAS,EACT;IACE,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,KAAK,EAAE,IAAI,CAAC,OAAO,kCAAkC,EAAE,OAAO,CAAC,GAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;CAC9C,CAeF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C,OAAO,GAAG,KAAK,EACf,OAAO,aAAa,CAAC,YAAY,CAIlC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,SAAS,EACT,OAAO,qBAAqB,CAM7B,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAClD,SAAS,EACT,OAAO,8BAA8B,CAMtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CACxC,SAAS,EACT;IACE,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,WAAW,EAAE,OAAO,eAAe,CAAC;IACpC,gBAAgB,EAAE,OAAO,oBAAoB,CAAC;CAC/C,CAuBF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAC3C,SAAS,EACT;IACE,aAAa,EAAE,OAAO,uBAAuB,CAAC;IAC9C,WAAW,EAAE,OAAO,qBAAqB,CAAC;CAC3C,CAkBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,YAAY,CAKtE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAC9C,SAAS,EACT,OAAO,oBAAoB,CAM5B,CAAC;AAEF,eAAO,MAAM,eAAe;;;CAG6B,CAAC;AAE1D,eAAO,MAAM,eAAe,GAAI,WAAW,SAAS;;;CAKnD,CAAC"}
@@ -23,6 +23,8 @@ import { isCrossChainAtom } from '../../state/isCrosschainAtom.js';
23
23
  import { isLimitCrossChainAtom } from '../../limit/state/isCrosschainAtom.js';
24
24
  import { swapSideAtom } from '../../../components/widget/SwapModeSwitcher/state/swapSideAtom.js';
25
25
  import { twapSideAtom } from '../../twap/state/twapSideAtom.js';
26
+ import { currentTwapInputAtom } from '../../twap/state/currentTwapInputAtom.js';
27
+ import { currentSwapInputAtom } from '../../state/currentSwapInputAtom.js';
26
28
 
27
29
  function syncTokensAfterChainSwitch(chainId) {
28
30
  syncSwapTokensAfterChainSwitch(chainId);
@@ -32,7 +34,8 @@ function syncTokensAfterChainSwitch(chainId) {
32
34
  }
33
35
  const placeholderAtoms = {
34
36
  sellAtom: atom(() => "SELL"),
35
- falseAtom: atom(() => false)
37
+ falseAtom: atom(() => false),
38
+ currentInputAtom: atom(() => "from")
36
39
  };
37
40
  const tradeModeToPayAmountUnitAtom = {
38
41
  swap: {
@@ -134,6 +137,12 @@ const tradeModeToSideAtom = {
134
137
  limit: placeholderAtoms.sellAtom,
135
138
  otc: placeholderAtoms.sellAtom
136
139
  };
140
+ const tradeModeToCurrentInputAtom = {
141
+ swap: currentSwapInputAtom,
142
+ twap: currentTwapInputAtom,
143
+ limit: placeholderAtoms.currentInputAtom,
144
+ otc: placeholderAtoms.currentInputAtom
145
+ };
137
146
  const sideToInputType = {
138
147
  SELL: "from",
139
148
  BUY: "to"
@@ -161,5 +170,5 @@ const useWidgetTokens = (tradeMode) => {
161
170
  return t0;
162
171
  };
163
172
 
164
- export { sideToInputType, syncTokensAfterChainSwitch, tradeModeToPayAmountUnitAtom, tradeModeToPayAmountWeiAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToReceiveAmountWeiAtom, tradeModeToSetTokenAtoms, tradeModeToSideAtom, tradeModeToTimeUnitAtom, tradeModeToTokenAtoms, useWidgetTokens };
173
+ export { sideToInputType, syncTokensAfterChainSwitch, tradeModeToCurrentInputAtom, tradeModeToPayAmountUnitAtom, tradeModeToPayAmountWeiAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToReceiveAmountWeiAtom, tradeModeToSetTokenAtoms, tradeModeToSideAtom, tradeModeToTimeUnitAtom, tradeModeToTokenAtoms, useWidgetTokens };
165
174
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sources":["../../../../src/core/inputs/state/common.ts"],"sourcesContent":["import {\n selectSwapTokenFromAtom,\n selectSwapTokenToAtom,\n syncSwapTokensAfterChainSwitch,\n} from \"./selectedTokenActionsAtom\";\nimport { swapTokenFromAtom, swapTokenToAtom } from \"./selectedTokenAtom\";\nimport { syncLimitTokensAfterChainSwitch } from \"@/core/limit/state/selectedTokenAtom\";\nimport {\n limitTokenFromAtom,\n limitTokenToAtom,\n} from \"@/core/limit/state/limitTokenAtoms\";\nimport {\n otcTokenFromAtom,\n otcTokenToAtom,\n syncOtcTokensAfterChainSwitch,\n} from \"@/core/otc/state/selectedTokenAtom\";\nimport {\n twapTokenFromAtom,\n twapTokenToAtom,\n} from \"@/core/twap/state/twapTokenAtoms\";\nimport { syncTwapTokensAfterChainSwitch } from \"@/core/twap/state/selectedTokenActionsAtom\";\nimport { isTwapCrossChainAtom } from \"@/core/twap/state/isCrosschainAtom\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n payInputAmountAtom,\n payInputAmountWeiAtom,\n receiveInputAmountAtom,\n receiveInputAmountWeiAtom,\n} from \"./inputAmountAtom\";\nimport {\n limitPayInputAmountAtom,\n limitPayInputAmountWeiAtom,\n limitReceiveInputAmountAtom,\n limitReceiveInputAmountWeiAtom,\n} from \"@/core/limit/state/limitInputAmountAtom\";\nimport {\n otcPayInputAmountAtom,\n otcPayInputAmountWeiAtom,\n otcReceiveInputAmountAtom,\n otcReceiveInputAmountWeiAtom,\n} from \"@/core/otc/state/otcInputAmountAtom\";\nimport {\n twapPayInputAmountAtom,\n twapPayInputAmountWeiAtom,\n twapReceiveInputAmountAtom,\n twapReceiveInputAmountWeiAtom,\n} from \"@/core/twap/state/twapInputAmountAtom\";\nimport { atom, type PrimitiveAtom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport {\n selectLimitTokenFromAtom,\n selectLimitTokenToAtom,\n} from \"@/core/limit/state/selectedTokenActionsAtom\";\nimport {\n selectOtcTokenFromAtom,\n selectOtcTokenToAtom,\n} from \"@/core/otc/state/selectedTokenActionsAtom\";\nimport {\n selectTwapTokenFromAtom,\n selectTwapTokenToAtom,\n} from \"@/core/twap/state/selectedTokenActionsAtom\";\nimport {\n setLimitPayAmountAtomFromProps,\n setLimitReceiveAmountAtomFromProps,\n} from \"@/core/limit/state/limitInputActionsAtom\";\nimport {\n setOtcPayAmountAtomFromProps,\n setOtcReceiveAmountAtomFromProps,\n} from \"@/core/otc/state/otcInputActionsAtom\";\nimport * as limitDeadline from \"@/core/limit/state/deadlineAtom\";\nimport * as otcDeadline from \"@/core/otc/state/deadlineAtom\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { isCrossChainAtom as isSwapCrossChainAtom } from \"@/core/state/isCrosschainAtom\";\nimport { isLimitCrossChainAtom } from \"@/core/limit/state/isCrosschainAtom\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { twapSideAtom } from \"@/core/twap/state/twapSideAtom\";\n\nexport function syncTokensAfterChainSwitch(chainId: SupportedChainId) {\n syncSwapTokensAfterChainSwitch(chainId);\n syncLimitTokensAfterChainSwitch(chainId);\n syncOtcTokensAfterChainSwitch(chainId);\n syncTwapTokensAfterChainSwitch(chainId);\n}\n\nconst placeholderAtoms = {\n sellAtom: atom(() => \"SELL\" as const satisfies SwapSideUnion),\n falseAtom: atom(() => false),\n};\n\nexport const tradeModeToPayAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof payInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitPayAmountAtomFromProps, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: payInputAmountAtom, write: payInputAmountAtom },\n limit: {\n read: limitPayInputAmountAtom,\n write: setLimitPayAmountAtomFromProps,\n },\n otc: { read: otcPayInputAmountAtom, write: setOtcPayAmountAtomFromProps },\n twap: { read: twapPayInputAmountAtom, write: twapPayInputAmountAtom },\n};\n\nexport const tradeModeToReceiveAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof receiveInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitReceiveAmountAtomFromProps, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: receiveInputAmountAtom, write: receiveInputAmountAtom },\n limit: {\n read: limitReceiveInputAmountAtom,\n write: setLimitReceiveAmountAtomFromProps,\n },\n otc: {\n read: otcReceiveInputAmountAtom,\n write: setOtcReceiveAmountAtomFromProps,\n },\n twap: {\n read: twapReceiveInputAmountAtom,\n write: twapReceiveInputAmountAtom,\n },\n};\n\nexport const tradeModeToTimeUnitAtom: Record<\n \"limit\" | \"otc\",\n typeof limitDeadline.timeUnitAtom\n> = {\n limit: limitDeadline.timeUnitAtom,\n otc: otcDeadline.timeUnitAtom,\n};\n\nexport const tradeModeToPayAmountWeiAtom: Record<\n TradeMode,\n typeof payInputAmountWeiAtom\n> = {\n swap: payInputAmountWeiAtom,\n limit: limitPayInputAmountWeiAtom,\n otc: otcPayInputAmountWeiAtom,\n twap: twapPayInputAmountWeiAtom,\n};\n\nexport const tradeModeToReceiveAmountWeiAtom: Record<\n TradeMode,\n typeof limitReceiveInputAmountWeiAtom\n> = {\n swap: receiveInputAmountWeiAtom,\n limit: limitReceiveInputAmountWeiAtom,\n otc: otcReceiveInputAmountWeiAtom,\n twap: twapReceiveInputAmountWeiAtom,\n};\n\nexport const tradeModeToTokenAtoms: Record<\n TradeMode,\n {\n tokenFromAtom: typeof swapTokenFromAtom;\n tokenToAtom: typeof swapTokenToAtom;\n isCrossChainAtom: typeof isSwapCrossChainAtom;\n }\n> = {\n swap: {\n tokenFromAtom: swapTokenFromAtom,\n tokenToAtom: swapTokenToAtom,\n isCrossChainAtom: isSwapCrossChainAtom,\n },\n limit: {\n tokenFromAtom: limitTokenFromAtom,\n tokenToAtom: limitTokenToAtom,\n isCrossChainAtom: isLimitCrossChainAtom,\n },\n otc: {\n tokenFromAtom: otcTokenFromAtom,\n tokenToAtom: otcTokenToAtom,\n // unused const atom to appease TS\n isCrossChainAtom: placeholderAtoms.falseAtom, // always false\n },\n twap: {\n tokenFromAtom: twapTokenFromAtom,\n tokenToAtom: twapTokenToAtom,\n isCrossChainAtom: isTwapCrossChainAtom,\n },\n};\n\nexport const tradeModeToSetTokenAtoms: Record<\n TradeMode,\n {\n tokenFromAtom: typeof selectSwapTokenFromAtom;\n tokenToAtom: typeof selectSwapTokenToAtom;\n }\n> = {\n swap: {\n tokenFromAtom: selectSwapTokenFromAtom,\n tokenToAtom: selectSwapTokenToAtom,\n },\n limit: {\n tokenFromAtom: selectLimitTokenFromAtom,\n tokenToAtom: selectLimitTokenToAtom,\n },\n otc: {\n tokenFromAtom: selectOtcTokenFromAtom,\n tokenToAtom: selectOtcTokenToAtom,\n },\n twap: {\n tokenFromAtom: selectTwapTokenFromAtom,\n tokenToAtom: selectTwapTokenToAtom,\n },\n};\n\nexport const tradeModeToSideAtom: Record<TradeMode, typeof swapSideAtom> = {\n swap: swapSideAtom,\n twap: twapSideAtom,\n limit: placeholderAtoms.sellAtom,\n otc: placeholderAtoms.sellAtom,\n};\n\nexport const sideToInputType = {\n SELL: \"from\",\n BUY: \"to\",\n} as const satisfies Record<SwapSideUnion, \"from\" | \"to\">;\n\nexport const useWidgetTokens = (tradeMode: TradeMode) => {\n const { tokenFromAtom, tokenToAtom } = tradeModeToTokenAtoms[tradeMode];\n const tokenFrom = useAtomValue(tokenFromAtom);\n const tokenTo = useAtomValue(tokenToAtom);\n return { tokenFrom, tokenTo };\n};\n"],"names":["syncTokensAfterChainSwitch","chainId","syncSwapTokensAfterChainSwitch","syncLimitTokensAfterChainSwitch","syncOtcTokensAfterChainSwitch","syncTwapTokensAfterChainSwitch","placeholderAtoms","sellAtom","atom","falseAtom","tradeModeToPayAmountUnitAtom","swap","read","payInputAmountAtom","write","limit","limitPayInputAmountAtom","setLimitPayAmountAtomFromProps","otc","otcPayInputAmountAtom","setOtcPayAmountAtomFromProps","twap","twapPayInputAmountAtom","tradeModeToReceiveAmountUnitAtom","receiveInputAmountAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtomFromProps","otcReceiveInputAmountAtom","setOtcReceiveAmountAtomFromProps","twapReceiveInputAmountAtom","tradeModeToTimeUnitAtom","limitDeadline","timeUnitAtom","otcDeadline","tradeModeToPayAmountWeiAtom","payInputAmountWeiAtom","limitPayInputAmountWeiAtom","otcPayInputAmountWeiAtom","twapPayInputAmountWeiAtom","tradeModeToReceiveAmountWeiAtom","receiveInputAmountWeiAtom","limitReceiveInputAmountWeiAtom","otcReceiveInputAmountWeiAtom","twapReceiveInputAmountWeiAtom","tradeModeToTokenAtoms","tokenFromAtom","swapTokenFromAtom","tokenToAtom","swapTokenToAtom","isCrossChainAtom","isSwapCrossChainAtom","limitTokenFromAtom","limitTokenToAtom","isLimitCrossChainAtom","otcTokenFromAtom","otcTokenToAtom","twapTokenFromAtom","twapTokenToAtom","isTwapCrossChainAtom","tradeModeToSetTokenAtoms","selectSwapTokenFromAtom","selectSwapTokenToAtom","selectLimitTokenFromAtom","selectLimitTokenToAtom","selectOtcTokenFromAtom","selectOtcTokenToAtom","selectTwapTokenFromAtom","selectTwapTokenToAtom","tradeModeToSideAtom","swapSideAtom","twapSideAtom","sideToInputType","SELL","BUY","useWidgetTokens","tradeMode","$","_c","tokenFrom","useAtomValue","tokenTo","t0"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA8EO,SAASA,2BAA2BC,OAAAA,EAA2B;AACpEC,EAAAA,8BAAAA,CAA+BD,OAAO,CAAA;AACtCE,EAAAA,+BAAAA,CAAgCF,OAAO,CAAA;AACvCG,EAAAA,6BAAAA,CAA8BH,OAAO,CAAA;AACrCI,EAAAA,8BAAAA,CAA+BJ,OAAO,CAAA;AACxC;AAEA,MAAMK,gBAAAA,GAAmB;AAAA,EACvBC,QAAAA,EAAUC,IAAAA,CAAK,MAAM,MAAuC,CAAA;AAAA,EAC5DC,SAAAA,EAAWD,IAAAA,CAAK,MAAM,KAAK;AAC7B,CAAA;AAEO,MAAME,4BAAAA,GAOT;AAAA,EACFC,IAAAA,EAAM;AAAA,IAAEC,IAAAA,EAAMC,kBAAAA;AAAAA,IAAoBC,KAAAA,EAAOD;AAAAA,GAAmB;AAAA,EAC5DE,KAAAA,EAAO;AAAA,IACLH,IAAAA,EAAMI,uBAAAA;AAAAA,IACNF,KAAAA,EAAOG;AAAAA,GACT;AAAA,EACAC,GAAAA,EAAK;AAAA,IAAEN,IAAAA,EAAMO,qBAAAA;AAAAA,IAAuBL,KAAAA,EAAOM;AAAAA,GAA6B;AAAA,EACxEC,IAAAA,EAAM;AAAA,IAAET,IAAAA,EAAMU,sBAAAA;AAAAA,IAAwBR,KAAAA,EAAOQ;AAAAA;AAC/C;AAEO,MAAMC,gCAAAA,GAOT;AAAA,EACFZ,IAAAA,EAAM;AAAA,IAAEC,IAAAA,EAAMY,sBAAAA;AAAAA,IAAwBV,KAAAA,EAAOU;AAAAA,GAAuB;AAAA,EACpET,KAAAA,EAAO;AAAA,IACLH,IAAAA,EAAMa,2BAAAA;AAAAA,IACNX,KAAAA,EAAOY;AAAAA,GACT;AAAA,EACAR,GAAAA,EAAK;AAAA,IACHN,IAAAA,EAAMe,yBAAAA;AAAAA,IACNb,KAAAA,EAAOc;AAAAA,GACT;AAAA,EACAP,IAAAA,EAAM;AAAA,IACJT,IAAAA,EAAMiB,0BAAAA;AAAAA,IACNf,KAAAA,EAAOe;AAAAA;AAEX;AAEO,MAAMC,uBAAAA,GAGT;AAAA,EACFf,OAAOgB,cAAcC;AAAAA,EACrBd,KAAKe;AACP;AAEO,MAAMC,2BAAAA,GAGT;AAAA,EACFvB,IAAAA,EAAMwB,qBAAAA;AAAAA,EACNpB,KAAAA,EAAOqB,0BAAAA;AAAAA,EACPlB,GAAAA,EAAKmB,wBAAAA;AAAAA,EACLhB,IAAAA,EAAMiB;AACR;AAEO,MAAMC,+BAAAA,GAGT;AAAA,EACF5B,IAAAA,EAAM6B,yBAAAA;AAAAA,EACNzB,KAAAA,EAAO0B,8BAAAA;AAAAA,EACPvB,GAAAA,EAAKwB,4BAAAA;AAAAA,EACLrB,IAAAA,EAAMsB;AACR;AAEO,MAAMC,qBAAAA,GAOT;AAAA,EACFjC,IAAAA,EAAM;AAAA,IACJkC,aAAAA,EAAeC,iBAAAA;AAAAA,IACfC,WAAAA,EAAaC,eAAAA;AAAAA,IACbC,gBAAAA,EAAkBC;AAAAA,GACpB;AAAA,EACAnC,KAAAA,EAAO;AAAA,IACL8B,aAAAA,EAAeM,kBAAAA;AAAAA,IACfJ,WAAAA,EAAaK,gBAAAA;AAAAA,IACbH,gBAAAA,EAAkBI;AAAAA,GACpB;AAAA,EACAnC,GAAAA,EAAK;AAAA,IACH2B,aAAAA,EAAeS,gBAAAA;AAAAA,IACfP,WAAAA,EAAaQ,cAAAA;AAAAA;AAAAA,IAEbN,kBAAkB3C,gBAAAA,CAAiBG;AAAAA;AAAAA,GACrC;AAAA,EACAY,IAAAA,EAAM;AAAA,IACJwB,aAAAA,EAAeW,iBAAAA;AAAAA,IACfT,WAAAA,EAAaU,eAAAA;AAAAA,IACbR,gBAAAA,EAAkBS;AAAAA;AAEtB;AAEO,MAAMC,wBAAAA,GAMT;AAAA,EACFhD,IAAAA,EAAM;AAAA,IACJkC,aAAAA,EAAee,uBAAAA;AAAAA,IACfb,WAAAA,EAAac;AAAAA,GACf;AAAA,EACA9C,KAAAA,EAAO;AAAA,IACL8B,aAAAA,EAAeiB,wBAAAA;AAAAA,IACff,WAAAA,EAAagB;AAAAA,GACf;AAAA,EACA7C,GAAAA,EAAK;AAAA,IACH2B,aAAAA,EAAemB,sBAAAA;AAAAA,IACfjB,WAAAA,EAAakB;AAAAA,GACf;AAAA,EACA5C,IAAAA,EAAM;AAAA,IACJwB,aAAAA,EAAeqB,uBAAAA;AAAAA,IACfnB,WAAAA,EAAaoB;AAAAA;AAEjB;AAEO,MAAMC,mBAAAA,GAA8D;AAAA,EACzEzD,IAAAA,EAAM0D,YAAAA;AAAAA,EACNhD,IAAAA,EAAMiD,YAAAA;AAAAA,EACNvD,OAAOT,gBAAAA,CAAiBC,QAAAA;AAAAA,EACxBW,KAAKZ,gBAAAA,CAAiBC;AACxB;AAEO,MAAMgE,eAAAA,GAAkB;AAAA,EAC7BC,IAAAA,EAAM,MAAA;AAAA,EACNC,GAAAA,EAAK;AACP;AAEO,MAAMC,kBAAkBC,CAAAA,SAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAC7B,EAAA,MAAA;AAAA,IAAAhC,aAAAA;AAAAA,IAAAE;AAAAA,GAAA,GAAuCH,sBAAsB+B,SAAS,CAAA;AACtE,EAAA,MAAAG,SAAAA,GAAkBC,aAAalC,aAAa,CAAA;AAC5C,EAAA,MAAAmC,OAAAA,GAAgBD,aAAahC,WAAW,CAAA;AAAE,EAAA,IAAAkC,EAAAA;AAAA,EAAA,IAAAL,EAAA,CAAA,CAAA,KAAAE,aAAAF,CAAAA,QAAAI,OAAAA,EAAA;AACnCC,IAAAA,EAAAA,GAAA;AAAA,MAAAH,SAAAA;AAAAA,MAAAE;AAAAA,KAAqB;AAACJ,IAAAA,CAAAA,MAAAE,SAAAA;AAAAF,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAK,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAL,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAAtBK,EAAAA;AAAsB;;;;"}
1
+ {"version":3,"file":"common.js","sources":["../../../../src/core/inputs/state/common.ts"],"sourcesContent":["import {\n selectSwapTokenFromAtom,\n selectSwapTokenToAtom,\n syncSwapTokensAfterChainSwitch,\n} from \"./selectedTokenActionsAtom\";\nimport { swapTokenFromAtom, swapTokenToAtom } from \"./selectedTokenAtom\";\nimport { syncLimitTokensAfterChainSwitch } from \"@/core/limit/state/selectedTokenAtom\";\nimport {\n limitTokenFromAtom,\n limitTokenToAtom,\n} from \"@/core/limit/state/limitTokenAtoms\";\nimport {\n otcTokenFromAtom,\n otcTokenToAtom,\n syncOtcTokensAfterChainSwitch,\n} from \"@/core/otc/state/selectedTokenAtom\";\nimport {\n twapTokenFromAtom,\n twapTokenToAtom,\n} from \"@/core/twap/state/twapTokenAtoms\";\nimport { syncTwapTokensAfterChainSwitch } from \"@/core/twap/state/selectedTokenActionsAtom\";\nimport { isTwapCrossChainAtom } from \"@/core/twap/state/isCrosschainAtom\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n payInputAmountAtom,\n payInputAmountWeiAtom,\n receiveInputAmountAtom,\n receiveInputAmountWeiAtom,\n} from \"./inputAmountAtom\";\nimport {\n limitPayInputAmountAtom,\n limitPayInputAmountWeiAtom,\n limitReceiveInputAmountAtom,\n limitReceiveInputAmountWeiAtom,\n} from \"@/core/limit/state/limitInputAmountAtom\";\nimport {\n otcPayInputAmountAtom,\n otcPayInputAmountWeiAtom,\n otcReceiveInputAmountAtom,\n otcReceiveInputAmountWeiAtom,\n} from \"@/core/otc/state/otcInputAmountAtom\";\nimport {\n twapPayInputAmountAtom,\n twapPayInputAmountWeiAtom,\n twapReceiveInputAmountAtom,\n twapReceiveInputAmountWeiAtom,\n} from \"@/core/twap/state/twapInputAmountAtom\";\nimport { atom, type PrimitiveAtom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport {\n selectLimitTokenFromAtom,\n selectLimitTokenToAtom,\n} from \"@/core/limit/state/selectedTokenActionsAtom\";\nimport {\n selectOtcTokenFromAtom,\n selectOtcTokenToAtom,\n} from \"@/core/otc/state/selectedTokenActionsAtom\";\nimport {\n selectTwapTokenFromAtom,\n selectTwapTokenToAtom,\n} from \"@/core/twap/state/selectedTokenActionsAtom\";\nimport {\n setLimitPayAmountAtomFromProps,\n setLimitReceiveAmountAtomFromProps,\n} from \"@/core/limit/state/limitInputActionsAtom\";\nimport {\n setOtcPayAmountAtomFromProps,\n setOtcReceiveAmountAtomFromProps,\n} from \"@/core/otc/state/otcInputActionsAtom\";\nimport * as limitDeadline from \"@/core/limit/state/deadlineAtom\";\nimport * as otcDeadline from \"@/core/otc/state/deadlineAtom\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { isCrossChainAtom as isSwapCrossChainAtom } from \"@/core/state/isCrosschainAtom\";\nimport { isLimitCrossChainAtom } from \"@/core/limit/state/isCrosschainAtom\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { twapSideAtom } from \"@/core/twap/state/twapSideAtom\";\nimport { currentTwapInputAtom } from \"@/core/twap/state/currentTwapInputAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\n\nexport function syncTokensAfterChainSwitch(chainId: SupportedChainId) {\n syncSwapTokensAfterChainSwitch(chainId);\n syncLimitTokensAfterChainSwitch(chainId);\n syncOtcTokensAfterChainSwitch(chainId);\n syncTwapTokensAfterChainSwitch(chainId);\n}\n\nconst placeholderAtoms = {\n sellAtom: atom(() => \"SELL\" as const satisfies SwapSideUnion),\n falseAtom: atom(() => false),\n currentInputAtom: atom(() => \"from\") as typeof currentSwapInputAtom,\n};\n\nexport const tradeModeToPayAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof payInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitPayAmountAtomFromProps, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: payInputAmountAtom, write: payInputAmountAtom },\n limit: {\n read: limitPayInputAmountAtom,\n write: setLimitPayAmountAtomFromProps,\n },\n otc: { read: otcPayInputAmountAtom, write: setOtcPayAmountAtomFromProps },\n twap: { read: twapPayInputAmountAtom, write: twapPayInputAmountAtom },\n};\n\nexport const tradeModeToReceiveAmountUnitAtom: Record<\n TradeMode,\n {\n read: Pick<typeof receiveInputAmountAtom, \"read\">;\n write: Pick<typeof setLimitReceiveAmountAtomFromProps, \"write\"> &\n Pick<PrimitiveAtom<string | null>, \"read\">;\n }\n> = {\n swap: { read: receiveInputAmountAtom, write: receiveInputAmountAtom },\n limit: {\n read: limitReceiveInputAmountAtom,\n write: setLimitReceiveAmountAtomFromProps,\n },\n otc: {\n read: otcReceiveInputAmountAtom,\n write: setOtcReceiveAmountAtomFromProps,\n },\n twap: {\n read: twapReceiveInputAmountAtom,\n write: twapReceiveInputAmountAtom,\n },\n};\n\nexport const tradeModeToTimeUnitAtom: Record<\n \"limit\" | \"otc\",\n typeof limitDeadline.timeUnitAtom\n> = {\n limit: limitDeadline.timeUnitAtom,\n otc: otcDeadline.timeUnitAtom,\n};\n\nexport const tradeModeToPayAmountWeiAtom: Record<\n TradeMode,\n typeof payInputAmountWeiAtom\n> = {\n swap: payInputAmountWeiAtom,\n limit: limitPayInputAmountWeiAtom,\n otc: otcPayInputAmountWeiAtom,\n twap: twapPayInputAmountWeiAtom,\n};\n\nexport const tradeModeToReceiveAmountWeiAtom: Record<\n TradeMode,\n typeof limitReceiveInputAmountWeiAtom\n> = {\n swap: receiveInputAmountWeiAtom,\n limit: limitReceiveInputAmountWeiAtom,\n otc: otcReceiveInputAmountWeiAtom,\n twap: twapReceiveInputAmountWeiAtom,\n};\n\nexport const tradeModeToTokenAtoms: Record<\n TradeMode,\n {\n tokenFromAtom: typeof swapTokenFromAtom;\n tokenToAtom: typeof swapTokenToAtom;\n isCrossChainAtom: typeof isSwapCrossChainAtom;\n }\n> = {\n swap: {\n tokenFromAtom: swapTokenFromAtom,\n tokenToAtom: swapTokenToAtom,\n isCrossChainAtom: isSwapCrossChainAtom,\n },\n limit: {\n tokenFromAtom: limitTokenFromAtom,\n tokenToAtom: limitTokenToAtom,\n isCrossChainAtom: isLimitCrossChainAtom,\n },\n otc: {\n tokenFromAtom: otcTokenFromAtom,\n tokenToAtom: otcTokenToAtom,\n // unused const atom to appease TS\n isCrossChainAtom: placeholderAtoms.falseAtom, // always false\n },\n twap: {\n tokenFromAtom: twapTokenFromAtom,\n tokenToAtom: twapTokenToAtom,\n isCrossChainAtom: isTwapCrossChainAtom,\n },\n};\n\nexport const tradeModeToSetTokenAtoms: Record<\n TradeMode,\n {\n tokenFromAtom: typeof selectSwapTokenFromAtom;\n tokenToAtom: typeof selectSwapTokenToAtom;\n }\n> = {\n swap: {\n tokenFromAtom: selectSwapTokenFromAtom,\n tokenToAtom: selectSwapTokenToAtom,\n },\n limit: {\n tokenFromAtom: selectLimitTokenFromAtom,\n tokenToAtom: selectLimitTokenToAtom,\n },\n otc: {\n tokenFromAtom: selectOtcTokenFromAtom,\n tokenToAtom: selectOtcTokenToAtom,\n },\n twap: {\n tokenFromAtom: selectTwapTokenFromAtom,\n tokenToAtom: selectTwapTokenToAtom,\n },\n};\n\nexport const tradeModeToSideAtom: Record<TradeMode, typeof swapSideAtom> = {\n swap: swapSideAtom,\n twap: twapSideAtom,\n limit: placeholderAtoms.sellAtom,\n otc: placeholderAtoms.sellAtom,\n};\n\nexport const tradeModeToCurrentInputAtom: Record<\n TradeMode,\n typeof currentSwapInputAtom\n> = {\n swap: currentSwapInputAtom,\n twap: currentTwapInputAtom,\n limit: placeholderAtoms.currentInputAtom,\n otc: placeholderAtoms.currentInputAtom,\n};\n\nexport const sideToInputType = {\n SELL: \"from\",\n BUY: \"to\",\n} as const satisfies Record<SwapSideUnion, \"from\" | \"to\">;\n\nexport const useWidgetTokens = (tradeMode: TradeMode) => {\n const { tokenFromAtom, tokenToAtom } = tradeModeToTokenAtoms[tradeMode];\n const tokenFrom = useAtomValue(tokenFromAtom);\n const tokenTo = useAtomValue(tokenToAtom);\n return { tokenFrom, tokenTo };\n};\n"],"names":["syncTokensAfterChainSwitch","chainId","syncSwapTokensAfterChainSwitch","syncLimitTokensAfterChainSwitch","syncOtcTokensAfterChainSwitch","syncTwapTokensAfterChainSwitch","placeholderAtoms","sellAtom","atom","falseAtom","currentInputAtom","tradeModeToPayAmountUnitAtom","swap","read","payInputAmountAtom","write","limit","limitPayInputAmountAtom","setLimitPayAmountAtomFromProps","otc","otcPayInputAmountAtom","setOtcPayAmountAtomFromProps","twap","twapPayInputAmountAtom","tradeModeToReceiveAmountUnitAtom","receiveInputAmountAtom","limitReceiveInputAmountAtom","setLimitReceiveAmountAtomFromProps","otcReceiveInputAmountAtom","setOtcReceiveAmountAtomFromProps","twapReceiveInputAmountAtom","tradeModeToTimeUnitAtom","limitDeadline","timeUnitAtom","otcDeadline","tradeModeToPayAmountWeiAtom","payInputAmountWeiAtom","limitPayInputAmountWeiAtom","otcPayInputAmountWeiAtom","twapPayInputAmountWeiAtom","tradeModeToReceiveAmountWeiAtom","receiveInputAmountWeiAtom","limitReceiveInputAmountWeiAtom","otcReceiveInputAmountWeiAtom","twapReceiveInputAmountWeiAtom","tradeModeToTokenAtoms","tokenFromAtom","swapTokenFromAtom","tokenToAtom","swapTokenToAtom","isCrossChainAtom","isSwapCrossChainAtom","limitTokenFromAtom","limitTokenToAtom","isLimitCrossChainAtom","otcTokenFromAtom","otcTokenToAtom","twapTokenFromAtom","twapTokenToAtom","isTwapCrossChainAtom","tradeModeToSetTokenAtoms","selectSwapTokenFromAtom","selectSwapTokenToAtom","selectLimitTokenFromAtom","selectLimitTokenToAtom","selectOtcTokenFromAtom","selectOtcTokenToAtom","selectTwapTokenFromAtom","selectTwapTokenToAtom","tradeModeToSideAtom","swapSideAtom","twapSideAtom","tradeModeToCurrentInputAtom","currentSwapInputAtom","currentTwapInputAtom","sideToInputType","SELL","BUY","useWidgetTokens","tradeMode","$","_c","tokenFrom","useAtomValue","tokenTo","t0"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFO,SAASA,2BAA2BC,OAAAA,EAA2B;AACpEC,EAAAA,8BAAAA,CAA+BD,OAAO,CAAA;AACtCE,EAAAA,+BAAAA,CAAgCF,OAAO,CAAA;AACvCG,EAAAA,6BAAAA,CAA8BH,OAAO,CAAA;AACrCI,EAAAA,8BAAAA,CAA+BJ,OAAO,CAAA;AACxC;AAEA,MAAMK,gBAAAA,GAAmB;AAAA,EACvBC,QAAAA,EAAUC,IAAAA,CAAK,MAAM,MAAuC,CAAA;AAAA,EAC5DC,SAAAA,EAAWD,IAAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EAC3BE,gBAAAA,EAAkBF,IAAAA,CAAK,MAAM,MAAM;AACrC,CAAA;AAEO,MAAMG,4BAAAA,GAOT;AAAA,EACFC,IAAAA,EAAM;AAAA,IAAEC,IAAAA,EAAMC,kBAAAA;AAAAA,IAAoBC,KAAAA,EAAOD;AAAAA,GAAmB;AAAA,EAC5DE,KAAAA,EAAO;AAAA,IACLH,IAAAA,EAAMI,uBAAAA;AAAAA,IACNF,KAAAA,EAAOG;AAAAA,GACT;AAAA,EACAC,GAAAA,EAAK;AAAA,IAAEN,IAAAA,EAAMO,qBAAAA;AAAAA,IAAuBL,KAAAA,EAAOM;AAAAA,GAA6B;AAAA,EACxEC,IAAAA,EAAM;AAAA,IAAET,IAAAA,EAAMU,sBAAAA;AAAAA,IAAwBR,KAAAA,EAAOQ;AAAAA;AAC/C;AAEO,MAAMC,gCAAAA,GAOT;AAAA,EACFZ,IAAAA,EAAM;AAAA,IAAEC,IAAAA,EAAMY,sBAAAA;AAAAA,IAAwBV,KAAAA,EAAOU;AAAAA,GAAuB;AAAA,EACpET,KAAAA,EAAO;AAAA,IACLH,IAAAA,EAAMa,2BAAAA;AAAAA,IACNX,KAAAA,EAAOY;AAAAA,GACT;AAAA,EACAR,GAAAA,EAAK;AAAA,IACHN,IAAAA,EAAMe,yBAAAA;AAAAA,IACNb,KAAAA,EAAOc;AAAAA,GACT;AAAA,EACAP,IAAAA,EAAM;AAAA,IACJT,IAAAA,EAAMiB,0BAAAA;AAAAA,IACNf,KAAAA,EAAOe;AAAAA;AAEX;AAEO,MAAMC,uBAAAA,GAGT;AAAA,EACFf,OAAOgB,cAAcC;AAAAA,EACrBd,KAAKe;AACP;AAEO,MAAMC,2BAAAA,GAGT;AAAA,EACFvB,IAAAA,EAAMwB,qBAAAA;AAAAA,EACNpB,KAAAA,EAAOqB,0BAAAA;AAAAA,EACPlB,GAAAA,EAAKmB,wBAAAA;AAAAA,EACLhB,IAAAA,EAAMiB;AACR;AAEO,MAAMC,+BAAAA,GAGT;AAAA,EACF5B,IAAAA,EAAM6B,yBAAAA;AAAAA,EACNzB,KAAAA,EAAO0B,8BAAAA;AAAAA,EACPvB,GAAAA,EAAKwB,4BAAAA;AAAAA,EACLrB,IAAAA,EAAMsB;AACR;AAEO,MAAMC,qBAAAA,GAOT;AAAA,EACFjC,IAAAA,EAAM;AAAA,IACJkC,aAAAA,EAAeC,iBAAAA;AAAAA,IACfC,WAAAA,EAAaC,eAAAA;AAAAA,IACbC,gBAAAA,EAAkBC;AAAAA,GACpB;AAAA,EACAnC,KAAAA,EAAO;AAAA,IACL8B,aAAAA,EAAeM,kBAAAA;AAAAA,IACfJ,WAAAA,EAAaK,gBAAAA;AAAAA,IACbH,gBAAAA,EAAkBI;AAAAA,GACpB;AAAA,EACAnC,GAAAA,EAAK;AAAA,IACH2B,aAAAA,EAAeS,gBAAAA;AAAAA,IACfP,WAAAA,EAAaQ,cAAAA;AAAAA;AAAAA,IAEbN,kBAAkB5C,gBAAAA,CAAiBG;AAAAA;AAAAA,GACrC;AAAA,EACAa,IAAAA,EAAM;AAAA,IACJwB,aAAAA,EAAeW,iBAAAA;AAAAA,IACfT,WAAAA,EAAaU,eAAAA;AAAAA,IACbR,gBAAAA,EAAkBS;AAAAA;AAEtB;AAEO,MAAMC,wBAAAA,GAMT;AAAA,EACFhD,IAAAA,EAAM;AAAA,IACJkC,aAAAA,EAAee,uBAAAA;AAAAA,IACfb,WAAAA,EAAac;AAAAA,GACf;AAAA,EACA9C,KAAAA,EAAO;AAAA,IACL8B,aAAAA,EAAeiB,wBAAAA;AAAAA,IACff,WAAAA,EAAagB;AAAAA,GACf;AAAA,EACA7C,GAAAA,EAAK;AAAA,IACH2B,aAAAA,EAAemB,sBAAAA;AAAAA,IACfjB,WAAAA,EAAakB;AAAAA,GACf;AAAA,EACA5C,IAAAA,EAAM;AAAA,IACJwB,aAAAA,EAAeqB,uBAAAA;AAAAA,IACfnB,WAAAA,EAAaoB;AAAAA;AAEjB;AAEO,MAAMC,mBAAAA,GAA8D;AAAA,EACzEzD,IAAAA,EAAM0D,YAAAA;AAAAA,EACNhD,IAAAA,EAAMiD,YAAAA;AAAAA,EACNvD,OAAOV,gBAAAA,CAAiBC,QAAAA;AAAAA,EACxBY,KAAKb,gBAAAA,CAAiBC;AACxB;AAEO,MAAMiE,2BAAAA,GAGT;AAAA,EACF5D,IAAAA,EAAM6D,oBAAAA;AAAAA,EACNnD,IAAAA,EAAMoD,oBAAAA;AAAAA,EACN1D,OAAOV,gBAAAA,CAAiBI,gBAAAA;AAAAA,EACxBS,KAAKb,gBAAAA,CAAiBI;AACxB;AAEO,MAAMiE,eAAAA,GAAkB;AAAA,EAC7BC,IAAAA,EAAM,MAAA;AAAA,EACNC,GAAAA,EAAK;AACP;AAEO,MAAMC,kBAAkBC,CAAAA,SAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAC7B,EAAA,MAAA;AAAA,IAAAnC,aAAAA;AAAAA,IAAAE;AAAAA,GAAA,GAAuCH,sBAAsBkC,SAAS,CAAA;AACtE,EAAA,MAAAG,SAAAA,GAAkBC,aAAarC,aAAa,CAAA;AAC5C,EAAA,MAAAsC,OAAAA,GAAgBD,aAAanC,WAAW,CAAA;AAAE,EAAA,IAAAqC,EAAAA;AAAA,EAAA,IAAAL,EAAA,CAAA,CAAA,KAAAE,aAAAF,CAAAA,QAAAI,OAAAA,EAAA;AACnCC,IAAAA,EAAAA,GAAA;AAAA,MAAAH,SAAAA;AAAAA,MAAAE;AAAAA,KAAqB;AAACJ,IAAAA,CAAAA,MAAAE,SAAAA;AAAAF,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAK,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAL,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAAtBK,EAAAA;AAAsB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C,eAAO,MAAM,kBAAkB;;CAA2B,CAAC;AA2W3D,wBAAgB,2BAA2B,SAE1C;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,IAAI,EACJ,aAAa,GACd,GAAE,cAAmB,QA6BrB"}
1
+ {"version":3,"file":"setTokenByAddressAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,eAAO,MAAM,kBAAkB;;CAA2B,CAAC;AA8W3D,wBAAgB,2BAA2B,SAE1C;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,IAAI,EACJ,aAAa,GACd,GAAE,cAAmB,QA6BrB"}
@@ -12,16 +12,14 @@ import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
12
12
  import { areTokensSame } from '../../../tokens/utils/areTokensSame.js';
13
13
  import { pickDefaultTokenPair } from '../../../tokens/defaultTokens.js';
14
14
  import { tradeModeAtom, userTradeModeAtom } from '../../state/tradeModeAtom.js';
15
- import { tradeModeToTokenAtoms, tradeModeToSetTokenAtoms, sideToInputType, tradeModeToPayAmountUnitAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToTimeUnitAtom } from './common.js';
15
+ import { tradeModeToTokenAtoms, tradeModeToSetTokenAtoms, tradeModeToCurrentInputAtom, sideToInputType, tradeModeToSideAtom, tradeModeToPayAmountUnitAtom, tradeModeToReceiveAmountUnitAtom, tradeModeToTimeUnitAtom } from './common.js';
16
16
  import { wrappedNativeCurrency } from '../../../lib/constants/weth.js';
17
17
  import { autoAddImportedTokenAtom } from '../../../tokens/state/addImportedTokenAtom.js';
18
18
  import { getLogger } from '../../logger.js';
19
19
  import { assert } from 'ts-essentials';
20
20
  import { bridgeInfosLoadedAtom } from '../../../hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js';
21
- import { isTradeMode } from '../../../lib/tradeMode.js';
21
+ import { isTradeMode, tradeModesWithCrosschain, tradeModesWithSide } from '../../../lib/tradeMode.js';
22
22
  import { enabledTradeModesFromConfigAtom, enabledTradeModesAtom } from '../../state/enabledTradeModesAtom.js';
23
- import { swapSideAtom } from '../../../components/widget/SwapModeSwitcher/state/swapSideAtom.js';
24
- import { currentSwapInputAtom } from '../../state/currentSwapInputAtom.js';
25
23
  import { getClosestTimeUnit } from '../../limit/state/utils.js';
26
24
 
27
25
  const formInputPropsAtom = atom({});
@@ -97,7 +95,7 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
97
95
  let newTokenFrom;
98
96
  let newTokenTo;
99
97
  const defaultChainId = currentTokenFrom.network;
100
- if (selectedForm !== "swap" && selectedForm !== "limit") {
98
+ if (!tradeModesWithCrosschain.has(selectedForm)) {
101
99
  destChainId = srcChainId;
102
100
  }
103
101
  if (selectedForm === "otc" && tokenToAddress && isETHaddress(tokenToAddress)) {
@@ -157,36 +155,38 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
157
155
  const selectTokenToAtom = tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;
158
156
  set(selectTokenToAtom, newTokenTo);
159
157
  }
158
+ const currentSideAtom = tradeModeToSideAtom[selectedForm];
159
+ const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];
160
160
  let side = formInputProps.side;
161
- if (isValidSide(side)) {
162
- set(currentSwapInputAtom, sideToInputType[side]);
163
- } else {
164
- if (side) {
165
- logger.warn("invalid side provided, must be BUY or SELL", {
166
- side
167
- });
168
- }
169
- if (selectedForm === "swap") {
161
+ if (tradeModesWithSide.has(selectedForm)) {
162
+ if (isValidSide(side)) {
163
+ set(currentInputAtom, sideToInputType[side]);
164
+ } else {
165
+ if (side) {
166
+ logger.warn("invalid side provided, must be BUY or SELL", {
167
+ side
168
+ });
169
+ }
170
170
  if (sendAmount && !receiveAmount) {
171
171
  side = "SELL";
172
172
  } else if (receiveAmount && !sendAmount) {
173
173
  side = "BUY";
174
174
  } else {
175
- side = get.peek(swapSideAtom);
175
+ side = get.peek(currentSideAtom);
176
176
  }
177
- } else {
178
- side = get.peek(swapSideAtom);
179
177
  }
178
+ } else {
179
+ side = get.peek(currentSideAtom);
180
180
  }
181
181
  assert(isValidSide(side), "side must be BUY or SELL");
182
- const isSwap = selectedForm === "swap";
183
- const isLimitOrOtc = selectedForm === "limit" || selectedForm === "otc";
184
- const isSwapWithSell = isSwap && side === "SELL";
185
- const isSwapWithBuy = isSwap && side === "BUY";
182
+ const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);
183
+ const isTradeModeWithoutSide = !isTradeModeWithSide;
184
+ const isSell = isTradeModeWithSide && side === "SELL";
185
+ const isBuy = isTradeModeWithSide && side === "BUY";
186
186
  if (
187
187
  // given a valid sendAmount
188
- sendAmount && Number(sendAmount) >= 0 && // and the form is a swap with side=sell or limit or otc
189
- (isSwapWithSell || isLimitOrOtc)
188
+ sendAmount && Number(sendAmount) >= 0 && // and the form with side=sell or without side
189
+ (isSell || isTradeModeWithoutSide)
190
190
  ) {
191
191
  const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];
192
192
  const currentSendAmount = get.peek(formPayAmountAtom.read);
@@ -196,8 +196,8 @@ const formInputPropsEffectAtom = atomEffect((get, set) => {
196
196
  }
197
197
  if (
198
198
  // given a valid receiveAmount
199
- receiveAmount && Number(receiveAmount) >= 0 && // and the form is a swap with side=buy or limit or otc
200
- (isSwapWithBuy || isLimitOrOtc)
199
+ receiveAmount && Number(receiveAmount) >= 0 && // and the form with side=buy or without side
200
+ (isBuy || isTradeModeWithoutSide)
201
201
  ) {
202
202
  const formReceiveAmountAtom = tradeModeToReceiveAmountUnitAtom[selectedForm];
203
203
  const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);
@@ -1 +1 @@
1
- {"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport { isTradeMode } from \"@/lib/tradeMode\";\nimport {\n enabledTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { swapSideAtom } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { currentSwapInputAtom } from \"@/core/state/currentSwapInputAtom\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use enabledTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const enabledTradeModes = get.peek(enabledTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (selectedForm !== \"swap\" && selectedForm !== \"limit\") {\n // swap and limit forms support crosschain,\n // force destChainId = srcChainId for any other form\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n let side = formInputProps.side;\n if (isValidSide(side)) {\n set(currentSwapInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n if (selectedForm === \"swap\") {\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current swap side if both or none amounts are given\n side = get.peek(swapSideAtom);\n }\n } else {\n // fallback to current swap side for non-swap forms\n side = get.peek(swapSideAtom);\n }\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isSwap = selectedForm === \"swap\";\n const isLimitOrOtc = selectedForm === \"limit\" || selectedForm === \"otc\";\n\n const isSwapWithSell = isSwap && side === \"SELL\";\n const isSwapWithBuy = isSwap && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form is a swap with side=sell or limit or otc\n (isSwapWithSell || isLimitOrOtc)\n ) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form is a swap with side=buy or limit or otc\n (isSwapWithBuy || isLimitOrOtc)\n ) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModesFromConfigAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tradeModeAtom","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSwapInputAtom","sideToInputType","swapSideAtom","isSwap","isLimitOrOtc","isSwapWithSell","isSwapWithBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
1
+ {"version":3,"file":"setTokenByAddressAtom.js","sources":["../../../../src/core/inputs/state/setTokenByAddressAtom.ts"],"sourcesContent":["import { atom, type Setter } from \"jotai\";\nimport { useAtom, useSetAtom } from \"@/core/store\";\nimport { atomEffect, type Effect } from \"jotai-effect\";\nimport { isAddress, type Address } from \"viem\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { nativeTokensByChainId } from \"@/tokens/constructor\";\nimport { fromListsAtom } from \"@/tokens/state/fromListsAtom\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"@/tokens/state/importedTokensAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useLayoutEffect } from \"react\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { tradeModeAtom, userTradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport {\n sideToInputType,\n tradeModeToCurrentInputAtom,\n tradeModeToPayAmountUnitAtom,\n tradeModeToReceiveAmountUnitAtom,\n tradeModeToSetTokenAtoms,\n tradeModeToSideAtom,\n tradeModeToTimeUnitAtom,\n tradeModeToTokenAtoms,\n} from \"./common\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { autoAddImportedTokenAtom } from \"@/tokens/state/addImportedTokenAtom\";\nimport { getLogger } from \"@/core/logger\";\nimport { assert } from \"ts-essentials\";\nimport { bridgeInfosLoadedAtom } from \"@/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom\";\nimport {\n isTradeMode,\n tradeModesWithCrosschain,\n tradeModesWithSide,\n} from \"@/lib/tradeMode\";\nimport {\n enabledTradeModesAtom,\n enabledTradeModesFromConfigAtom,\n} from \"@/core/state/enabledTradeModesAtom\";\nimport type { FormInputProps } from \"./types\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { getClosestTimeUnit } from \"@/core/limit/state/utils\";\n\nexport const formInputPropsAtom = atom<FormInputProps>({});\n\n// in case formInputPros passed to Widget are not exactly expected types\ntype RelaxedFormInputProps = {\n [K in keyof FormInputProps]?: NonNullable<FormInputProps[K]> extends string\n ? string\n : NonNullable<FormInputProps[K]> extends number\n ? number\n : FormInputProps[K];\n};\n\nconst logger = getLogger(\"FormInputProps\");\n\ntype GetterWithPeek = Parameters<Effect>[0];\n\ntype FindTokenAtomsInput = {\n tokenToFind: { address: Address; network: SupportedChainId };\n get: GetterWithPeek;\n set: Setter;\n};\n\nfunction findTokenInAtoms({\n get,\n set,\n tokenToFind,\n}: FindTokenAtomsInput): Token | undefined {\n const tokenFromAddress = tokenToFind.address;\n const chainId = tokenToFind.network;\n\n if (isETHaddress(tokenFromAddress)) {\n // if tokenFrom is ETH, set the native token for tokenFrom Input\n const nativeToken = nativeTokensByChainId[chainId];\n return nativeToken;\n }\n\n const tokenFromLowercase = tokenFromAddress.toLowerCase();\n\n // find the token from the token Lists for the srcChainId,\n // and retry to find the token when allTokens are updated (token lists loaded)\n const tokensMap = get(fromListsAtom).listByChainId[chainId]?.addressMap;\n const tokenFromLists = tokensMap?.[tokenFromLowercase];\n if (tokenFromLists) {\n return tokenFromLists;\n }\n\n // find the token from the imported tokens,\n // don't retry if user imports more tokens during the session\n const importedTokens = get.peek(importedTokensAtom);\n const importedToken = importedTokens[chainId]?.find(\n (token) => token.address.toLowerCase() === tokenFromLowercase\n );\n if (importedToken) {\n return importedToken;\n }\n\n // subscribe to auto-imported tokens, which will be added to only when tokenAddress prop is supplied from outside the widget\n const autoImportedTokens = get(autoImportedTokensAtom);\n // looking through auto-imported tokens isn't strictly necessary because importedTokens atom is updated together with autoImportedTokens atom,\n // except for consistency, and so that we don't have to subscribe to importedTokens atom that would retrigger formProps matching on manual token import\n const autoImportedToken = autoImportedTokens.find(\n (token) =>\n token.address.toLowerCase() === tokenFromLowercase &&\n token.network === chainId\n );\n if (autoImportedToken) {\n return autoImportedToken;\n }\n\n logger.info(\n \"token not available in widget. Will attempt to import from chain\",\n {\n address: tokenFromAddress,\n chainId,\n }\n );\n\n // trigger Token fetch and eventual import when tokenFromAddress is not found in available token lists and atoms\n set(autoAddImportedTokenAtom, { address: tokenFromAddress, chainId });\n}\n\nfunction isValidSide(side: string | undefined): side is SwapSideUnion {\n return side === \"BUY\" || side === \"SELL\";\n}\n\nconst formInputPropsEffectAtom = atomEffect((get, set) => {\n // subscribe to bridgeInfosLoadedAtom to have up-to-date available crosses\n // and retry token finding each time when bridgeInfo changes\n get(bridgeInfosLoadedAtom);\n\n // subscribe to enabledTradeModesAtom to react to changes in enabled trade modes\n get(enabledTradeModesFromConfigAtom);\n // and use enabledTradeModesAtom as final source of truth (it derrives from enabledTradeModesFromConfigAtom)\n const enabledTradeModes = get.peek(enabledTradeModesAtom);\n\n const formInputProps: RelaxedFormInputProps = get(formInputPropsAtom);\n const { tokenFromAddress } = formInputProps;\n\n // guard against amounts passed as numbers when props are supplied from outside the Widget and types are ignored\n const sendAmount =\n formInputProps.sendAmount !== undefined\n ? String(formInputProps.sendAmount)\n : undefined;\n const receiveAmount =\n formInputProps.receiveAmount !== undefined\n ? String(formInputProps.receiveAmount)\n : undefined;\n\n // guard against chainId passed as string when props are supplied from outside the Widget and types are ignored\n const srcChainId =\n formInputProps.srcChainId !== undefined\n ? Number(formInputProps.srcChainId)\n : undefined;\n\n logger.log(\"using external props to set Widget form input\", formInputProps);\n\n let destChainId =\n formInputProps.destChainId !== undefined\n ? Number(formInputProps.destChainId)\n : undefined;\n\n const currentTradeMode = get.peek(tradeModeAtom);\n\n let tokenToAddress = formInputProps.tokenToAddress;\n let selectedForm = formInputProps.selectedForm || currentTradeMode;\n if (!isTradeMode(selectedForm) || !enabledTradeModes.includes(selectedForm)) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid, disabled or unavailable selectedForm provided\", {\n selectedForm,\n });\n // fallback to first enabled trade mode from the config\n selectedForm = enabledTradeModes[0];\n }\n\n // necessary for type safety\n assert(isTradeMode(selectedForm), \"selectedForm must be a valid trade mode\");\n\n const formAtoms = tradeModeToTokenAtoms[selectedForm];\n const currentTokenFrom = get.peek(formAtoms.tokenFromAtom);\n const currentTokenTo = get.peek(formAtoms.tokenToAtom);\n\n if (currentTradeMode !== selectedForm) {\n set(userTradeModeAtom, selectedForm);\n }\n\n let newTokenFrom: Token | undefined;\n let newTokenTo: Token | undefined;\n\n // if chain isn't given in props, match current srcChainId\n const defaultChainId = currentTokenFrom.network;\n\n if (!tradeModesWithCrosschain.has(selectedForm)) {\n // force destChainId = srcChainId for trade modes that don't support crosschain\n destChainId = srcChainId;\n }\n\n if (\n selectedForm === \"otc\" &&\n tokenToAddress &&\n isETHaddress(tokenToAddress)\n ) {\n const wethMapping: Record<number, Address> = wrappedNativeCurrency;\n // OTC Orders don't support ETH as tokenTo=takerAsset,\n // more logical to use WETH instead of no token at all\n tokenToAddress = wethMapping[destChainId || defaultChainId];\n }\n\n {\n // match tokenFromAddress and srcChainId to a new tokenFrom to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenFromAddress, network: srcChainId },\n currentToken: currentTokenFrom,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenFrom = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n {\n // match tokenToAddress and destChainId to a new tokenTo to select\n const tokenToFind = getTokenToFind({\n tokenFromProps: { address: tokenToAddress, network: destChainId },\n currentToken: currentTokenTo,\n defaultChainId,\n });\n if (tokenToFind) {\n newTokenTo = findTokenInAtoms({\n get,\n tokenToFind,\n set,\n });\n }\n }\n\n if (newTokenFrom && newTokenTo && areTokensSame(newTokenFrom, newTokenTo)) {\n // if tokens are the same, skip tokenTo\n newTokenTo = undefined;\n }\n\n if (\n !newTokenFrom &&\n !tokenFromAddress &&\n srcChainId &&\n isSupportedChainId(srcChainId) &&\n srcChainId !== currentTokenFrom.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [defaultTokenFrom] = pickDefaultTokenPair(srcChainId, selectedForm);\n // set default token for the chain\n newTokenFrom = defaultTokenFrom;\n }\n\n if (\n !newTokenTo &&\n !tokenToAddress &&\n destChainId &&\n isSupportedChainId(destChainId) &&\n destChainId !== currentTokenTo?.network\n ) {\n // no tokenAddress given, but chainId is provided and different from current\n const [, defaultTokenTo] = pickDefaultTokenPair(destChainId, selectedForm);\n // set default token for the chain\n newTokenTo = defaultTokenTo;\n }\n\n if (newTokenFrom) {\n const selectTokenFromAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenFromAtom;\n set(selectTokenFromAtom, newTokenFrom);\n }\n if (newTokenTo) {\n const selectTokenToAtom =\n tradeModeToSetTokenAtoms[selectedForm].tokenToAtom;\n set(selectTokenToAtom, newTokenTo);\n }\n\n const currentSideAtom = tradeModeToSideAtom[selectedForm];\n const currentInputAtom = tradeModeToCurrentInputAtom[selectedForm];\n\n let side = formInputProps.side;\n\n if (tradeModesWithSide.has(selectedForm)) {\n if (isValidSide(side)) {\n set(currentInputAtom, sideToInputType[side]);\n } else {\n if (side) {\n // guard against invalid props passed through from outside the Widget\n logger.warn(\"invalid side provided, must be BUY or SELL\", { side });\n }\n\n if (sendAmount && !receiveAmount) {\n side = \"SELL\"; // sendAmount is given and receiveAmount isn't -> SELL\n } else if (receiveAmount && !sendAmount) {\n side = \"BUY\"; // receiveAmount is given and sendAmount isn't -> BUY\n } else {\n // fallback to current side if both or none amounts are given\n side = get.peek(currentSideAtom);\n }\n }\n } else {\n side = get.peek(currentSideAtom);\n }\n\n // necessary for type safety\n assert(isValidSide(side), \"side must be BUY or SELL\");\n\n const isTradeModeWithSide = tradeModesWithSide.has(selectedForm);\n const isTradeModeWithoutSide = !isTradeModeWithSide;\n\n const isSell = isTradeModeWithSide && side === \"SELL\";\n const isBuy = isTradeModeWithSide && side === \"BUY\";\n\n if (\n // given a valid sendAmount\n sendAmount &&\n Number(sendAmount) >= 0 &&\n // and the form with side=sell or without side\n (isSell || isTradeModeWithoutSide)\n ) {\n // update the send amount\n const formPayAmountAtom = tradeModeToPayAmountUnitAtom[selectedForm];\n const currentSendAmount = get.peek(formPayAmountAtom.read);\n if (currentSendAmount !== sendAmount) {\n set(formPayAmountAtom.write, sendAmount);\n }\n }\n\n if (\n // given a valid receiveAmount\n receiveAmount &&\n Number(receiveAmount) >= 0 &&\n // and the form with side=buy or without side\n (isBuy || isTradeModeWithoutSide)\n ) {\n // update the receive amount\n const formReceiveAmountAtom =\n tradeModeToReceiveAmountUnitAtom[selectedForm];\n const currentReceiveAmount = get.peek(formReceiveAmountAtom.read);\n if (currentReceiveAmount !== receiveAmount) {\n set(formReceiveAmountAtom.write, receiveAmount);\n }\n }\n\n if (selectedForm === \"limit\" || selectedForm === \"otc\") {\n // OTC and Limit forms support order deadline param\n const orderDeadline = Number(formInputProps.orderDeadline);\n if (orderDeadline !== undefined && !isNaN(orderDeadline)) {\n const timeUnitAtom = tradeModeToTimeUnitAtom[selectedForm];\n const currentTimeUnit = get.peek(timeUnitAtom);\n\n if (currentTimeUnit.timestamp !== orderDeadline) {\n set(timeUnitAtom, {\n // set closest time unit for better UX\n ...getClosestTimeUnit(orderDeadline),\n // set exact timestamp\n timestamp: orderDeadline,\n });\n }\n }\n }\n});\n\nfunction getTokenToFind({\n tokenFromProps,\n currentToken,\n defaultChainId,\n}: {\n tokenFromProps: { address?: string; network?: number };\n currentToken?: Token;\n defaultChainId: SupportedChainId;\n}): { address: Address; network: SupportedChainId } | undefined {\n if (!tokenFromProps.address) return;\n // guard against malformed addresses passed through props\n if (!isAddress(tokenFromProps.address)) {\n logger.warn(\"malformed token address provided\", {\n address: tokenFromProps.address,\n });\n return;\n }\n\n const network = tokenFromProps.network || defaultChainId;\n\n // unsupported chainId provided, can't select this Token\n if (!isSupportedChainId(network)) {\n logger.warn(\"unsupported chainId provided\", { network });\n return;\n }\n\n if (\n currentToken &&\n areTokensSame(currentToken, {\n address: tokenFromProps.address,\n network,\n })\n ) {\n // same token already there\n return;\n }\n\n return { address: tokenFromProps.address, network };\n}\n\nexport function useActivateFormInputEffects() {\n useAtom(formInputPropsEffectAtom);\n}\n\nexport function useSetFormInputFromProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n}: FormInputProps = {}) {\n const setFormInputProps = useSetAtom(formInputPropsAtom);\n\n // match props together as they are supplied together from outside the Widget,\n // on any one prop change, the whole form input props are updated as long as they are passed together to the Widget\n useLayoutEffect(() => {\n setFormInputProps({\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n receiveAmount,\n side,\n orderDeadline,\n });\n }, [\n selectedForm,\n tokenFromAddress,\n srcChainId,\n tokenToAddress,\n destChainId,\n sendAmount,\n setFormInputProps,\n receiveAmount,\n side,\n orderDeadline,\n ]);\n}\n"],"names":["formInputPropsAtom","atom","logger","getLogger","findTokenInAtoms","get","set","tokenToFind","tokenFromAddress","address","chainId","network","isETHaddress","nativeToken","nativeTokensByChainId","tokenFromLowercase","toLowerCase","tokensMap","fromListsAtom","listByChainId","addressMap","tokenFromLists","importedTokens","peek","importedTokensAtom","importedToken","find","token","autoImportedTokens","autoImportedTokensAtom","autoImportedToken","info","autoAddImportedTokenAtom","isValidSide","side","formInputPropsEffectAtom","atomEffect","bridgeInfosLoadedAtom","enabledTradeModesFromConfigAtom","enabledTradeModes","enabledTradeModesAtom","formInputProps","sendAmount","undefined","String","receiveAmount","srcChainId","Number","log","destChainId","currentTradeMode","tradeModeAtom","tokenToAddress","selectedForm","isTradeMode","includes","warn","assert","formAtoms","tradeModeToTokenAtoms","currentTokenFrom","tokenFromAtom","currentTokenTo","tokenToAtom","userTradeModeAtom","newTokenFrom","newTokenTo","defaultChainId","tradeModesWithCrosschain","has","wethMapping","wrappedNativeCurrency","getTokenToFind","tokenFromProps","currentToken","areTokensSame","isSupportedChainId","defaultTokenFrom","pickDefaultTokenPair","defaultTokenTo","selectTokenFromAtom","tradeModeToSetTokenAtoms","selectTokenToAtom","currentSideAtom","tradeModeToSideAtom","currentInputAtom","tradeModeToCurrentInputAtom","tradeModesWithSide","sideToInputType","isTradeModeWithSide","isTradeModeWithoutSide","isSell","isBuy","formPayAmountAtom","tradeModeToPayAmountUnitAtom","currentSendAmount","read","write","formReceiveAmountAtom","tradeModeToReceiveAmountUnitAtom","currentReceiveAmount","orderDeadline","isNaN","timeUnitAtom","tradeModeToTimeUnitAtom","currentTimeUnit","timestamp","getClosestTimeUnit","isAddress","useActivateFormInputEffects","useAtom","useSetFormInputFromProps","t0","$","_c","t1","setFormInputProps","useSetAtom","t2","t3","useLayoutEffect"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { SupportedChainId } from '../../../lib/web3/wagmi/types';
3
3
  export declare const switchTwapTokensAtom: import('jotai').WritableAtom<null, [], Promise<void>> & {
4
4
  init: null;
5
5
  };
6
- export declare const selectTwapTokenFromAtom: import('jotai').WritableAtom<null, [_newTokenFrom: Token], Promise<void>> & {
6
+ export declare const selectTwapTokenFromAtom: import('jotai').WritableAtom<null, [newTokenFrom: Token], Promise<void>> & {
7
7
  init: null;
8
8
  };
9
9
  export declare const selectTwapTokenToAtom: import('jotai').WritableAtom<null, [newTokenTo: Token], Promise<void>> & {
@@ -1 +1 @@
1
- {"version":3,"file":"selectedTokenActionsAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/state/selectedTokenActionsAtom.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAYlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,eAAO,MAAM,oBAAoB;;CAwB/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;CAqEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;CAoGjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,SAAS,gBAAgB,SA+DvE,CAAC"}
1
+ {"version":3,"file":"selectedTokenActionsAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/state/selectedTokenActionsAtom.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAYlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,eAAO,MAAM,oBAAoB;;CAwB/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;CAgEnC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;CAoGjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,SAAS,gBAAgB,SA+DvE,CAAC"}
@@ -10,9 +10,6 @@ import { allTokensByChainAtom } from '../../../tokens/state/allTokensByChainAtom
10
10
  import { getSelectableDestChains } from '../../state/getSelectableDestChains.js';
11
11
  import { enabledSrcChainsAtom } from '../../state/enabledChainsAtom.js';
12
12
  import { jotaiStore } from '../../store.js';
13
- import { isETH } from '../../../tokens/utils/eth.js';
14
- import { constructWrappedNativeToken } from '../../../tokens/constructor.js';
15
- import { chainConfigMap } from '../../../lib/web3/wagmi/constants.js';
16
13
 
17
14
  const switchTwapTokensAtom = atom(null, async (get, set) => {
18
15
  const tokenTo = get(twapTokenToAtom);
@@ -30,8 +27,7 @@ const switchTwapTokensAtom = atom(null, async (get, set) => {
30
27
  });
31
28
  }
32
29
  });
33
- const selectTwapTokenFromAtom = atom(null, async (get, set, _newTokenFrom) => {
34
- const newTokenFrom = isETH(_newTokenFrom) ? constructWrappedNativeToken(chainConfigMap[_newTokenFrom.network]) : _newTokenFrom;
30
+ const selectTwapTokenFromAtom = atom(null, async (get, set, newTokenFrom) => {
35
31
  let tokenFrom = get(twapTokenFromAtom);
36
32
  let tokenTo = get(twapTokenToAtom);
37
33
  const initTokenFrom = tokenFrom;
@@ -1 +1 @@
1
- {"version":3,"file":"selectedTokenActionsAtom.js","sources":["../../../../src/core/twap/state/selectedTokenActionsAtom.ts"],"sourcesContent":["import { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { atom } from \"jotai\";\nimport { twapTokenFromAtom, twapTokenToAtom } from \"./twapTokenAtoms\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport { jotaiStore } from \"@/core/store\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { constructWrappedNativeToken } from \"@/tokens/constructor\";\nimport { chainConfigMap } from \"@/lib/web3/wagmi/constants\";\n\nexport const switchTwapTokensAtom = atom(null, async (get, set) => {\n const tokenTo = get(twapTokenToAtom);\n\n if (!tokenTo) return;\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(tokenTo.network)) return;\n\n const tokenFrom = get(twapTokenFromAtom);\n const initChainFrom = tokenFrom.network;\n\n // set tokenFrom as is\n set(twapTokenFromAtom, tokenTo);\n // set tokenTo, including running all crosschain logic inside\n set(selectTwapTokenToAtom, tokenFrom);\n\n const currentTokenFrom = get(twapTokenFromAtom);\n\n // switch a token from a different chain?\n if (currentTokenFrom.network !== initChainFrom) {\n switchChain({\n chainId: currentTokenFrom.network,\n });\n }\n});\n\nexport const selectTwapTokenFromAtom = atom(\n null,\n async (get, set, _newTokenFrom: Token) => {\n // @TODO revert this change when ETH cancelAndWithdraw is supported for TWAP\n const newTokenFrom = isETH(_newTokenFrom)\n ? constructWrappedNativeToken(chainConfigMap[_newTokenFrom.network])\n : _newTokenFrom;\n\n let tokenFrom = get(twapTokenFromAtom);\n let tokenTo = get(twapTokenToAtom);\n const initTokenFrom = tokenFrom;\n\n // set the tokenFrom\n set(twapTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n\n // selecting a token from a different chain?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(twapTokenToAtom, maybeAcrossToken);\n }\n } else {\n if (tokenFrom.network !== tokenTo.network) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenFrom.network,\n \"twap\"\n );\n\n tokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n set(twapTokenToAtom, tokenTo);\n } else {\n if (areTokensSame(tokenFrom, tokenTo)) {\n tokenTo = initTokenFrom;\n set(twapTokenToAtom, tokenTo);\n }\n }\n }\n }\n);\n\nexport const selectTwapTokenToAtom = atom(\n null,\n async (get, set, newTokenTo: Token) => {\n let tokenFrom = get(twapTokenFromAtom);\n\n const selectableDestChains = getSelectableDestChains(get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (!selectableDestChains.includes(newTokenTo.network)) return;\n\n let tokenTo = get(twapTokenToAtom);\n const initTokenTo = tokenTo;\n\n set(twapTokenToAtom, newTokenTo);\n tokenTo = newTokenTo;\n\n if (areTokensSame(tokenTo, tokenFrom)) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"twap\"\n );\n\n const defaultToken = areTokensSame(tokenFrom, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n const wasCrosschain =\n initTokenTo && tokenFrom.network !== initTokenTo.network;\n\n const newTokenFrom = wasCrosschain\n ? defaultToken\n : (initTokenTo ?? defaultToken);\n\n set(twapTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n let needResetTokenFrom = false;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n needResetTokenFrom = true;\n }\n }\n\n if (tokenFrom.network !== tokenTo.network && !crosschainPossible) {\n needResetTokenFrom = true;\n }\n const enabledSrcChains = get(enabledSrcChainsAtom);\n\n if (needResetTokenFrom) {\n let firstPossibleSrcChain = tokenTo.network;\n if (!enabledSrcChains.includes(tokenTo.network)) {\n for (const srcChain of enabledSrcChains) {\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: srcChain,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n if (crosschainPossible) {\n firstPossibleSrcChain = srcChain;\n break;\n }\n }\n }\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n firstPossibleSrcChain,\n \"twap\"\n );\n const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n set(twapTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // ended up changing tokenFrom network?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n }\n);\n\nexport const syncTwapTokensAfterChainSwitch = (chainId: SupportedChainId) => {\n const enabledSrcChains = jotaiStore.get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(chainId)) return;\n\n let tokenFrom = jotaiStore.get(twapTokenFromAtom);\n\n // chains are the same? do nothing\n if (tokenFrom.network === chainId) return;\n\n // get default tokens for the new chain\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n chainId,\n \"twap\"\n );\n\n // update tokenFrom\n jotaiStore.set(twapTokenFromAtom, defaultTokenFrom);\n tokenFrom = defaultTokenFrom;\n\n let tokenTo = jotaiStore.get(twapTokenToAtom);\n\n // toChainId derives from tokenTo.network, if no tokenTo - do nothing\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get: jotaiStore.get,\n chainIdFrom: chainId,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: chainId,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: chainId,\n toChainId: tokenTo.network,\n listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n tokenTo = maybeAcrossToken;\n jotaiStore.set(twapTokenToAtom, tokenTo);\n }\n } else {\n const selectableDestChains = getSelectableDestChains(jotaiStore.get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (selectableDestChains.includes(chainId)) {\n tokenTo = defaultTokenTo;\n jotaiStore.set(twapTokenToAtom, tokenTo);\n } else {\n tokenTo = undefined;\n jotaiStore.set(twapTokenToAtom, tokenTo);\n }\n }\n};\n"],"names":["switchTwapTokensAtom","atom","get","set","tokenTo","twapTokenToAtom","enabledSrcChains","enabledSrcChainsAtom","includes","network","tokenFrom","twapTokenFromAtom","initChainFrom","selectTwapTokenToAtom","currentTokenFrom","switchChain","chainId","selectTwapTokenFromAtom","_newTokenFrom","newTokenFrom","isETH","constructWrappedNativeToken","chainConfigMap","initTokenFrom","wagmiConfig","state","crosschainPossible","isCrosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","isTokenFromAcross","token","fromChainId","toChainId","maybeAcrossToken","findFirstTokenFromAcross","listByChainId","allTokensByChainAtom","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","areTokensSame","newTokenTo","selectableDestChains","getSelectableDestChains","initTokenTo","defaultToken","wasCrosschain","needResetTokenFrom","firstPossibleSrcChain","srcChain","syncTwapTokensAfterChainSwitch","jotaiStore","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"selectedTokenActionsAtom.js","sources":["../../../../src/core/twap/state/selectedTokenActionsAtom.ts"],"sourcesContent":["import { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport { areTokensSame } from \"@/tokens/utils/areTokensSame\";\nimport { atom } from \"jotai\";\nimport { twapTokenFromAtom, twapTokenToAtom } from \"./twapTokenAtoms\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { switchChain } from \"@/lib/web3/wagmi/switchChain\";\nimport { isCrosschainPossible } from \"@/core/across/isCrosschainPossible\";\nimport {\n findFirstTokenFromAcross,\n isTokenFromAcross,\n} from \"@/core/across/utils\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport { getSelectableDestChains } from \"@/core/state/getSelectableDestChains\";\nimport { enabledSrcChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport { jotaiStore } from \"@/core/store\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const switchTwapTokensAtom = atom(null, async (get, set) => {\n const tokenTo = get(twapTokenToAtom);\n\n if (!tokenTo) return;\n\n const enabledSrcChains = get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(tokenTo.network)) return;\n\n const tokenFrom = get(twapTokenFromAtom);\n const initChainFrom = tokenFrom.network;\n\n // set tokenFrom as is\n set(twapTokenFromAtom, tokenTo);\n // set tokenTo, including running all crosschain logic inside\n set(selectTwapTokenToAtom, tokenFrom);\n\n const currentTokenFrom = get(twapTokenFromAtom);\n\n // switch a token from a different chain?\n if (currentTokenFrom.network !== initChainFrom) {\n switchChain({\n chainId: currentTokenFrom.network,\n });\n }\n});\n\nexport const selectTwapTokenFromAtom = atom(\n null,\n async (get, set, newTokenFrom: Token) => {\n let tokenFrom = get(twapTokenFromAtom);\n let tokenTo = get(twapTokenToAtom);\n const initTokenFrom = tokenFrom;\n\n // set the tokenFrom\n set(twapTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n\n // selecting a token from a different chain?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n listByChainId: get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n set(twapTokenToAtom, maybeAcrossToken);\n }\n } else {\n if (tokenFrom.network !== tokenTo.network) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenFrom.network,\n \"twap\"\n );\n\n tokenTo = areTokensSame(tokenFrom, defaultTokenTo)\n ? defaultTokenFrom\n : defaultTokenTo;\n set(twapTokenToAtom, tokenTo);\n } else {\n if (areTokensSame(tokenFrom, tokenTo)) {\n tokenTo = initTokenFrom;\n set(twapTokenToAtom, tokenTo);\n }\n }\n }\n }\n);\n\nexport const selectTwapTokenToAtom = atom(\n null,\n async (get, set, newTokenTo: Token) => {\n let tokenFrom = get(twapTokenFromAtom);\n\n const selectableDestChains = getSelectableDestChains(get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (!selectableDestChains.includes(newTokenTo.network)) return;\n\n let tokenTo = get(twapTokenToAtom);\n const initTokenTo = tokenTo;\n\n set(twapTokenToAtom, newTokenTo);\n tokenTo = newTokenTo;\n\n if (areTokensSame(tokenTo, tokenFrom)) {\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n tokenTo.network,\n \"twap\"\n );\n\n const defaultToken = areTokensSame(tokenFrom, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n const wasCrosschain =\n initTokenTo && tokenFrom.network !== initTokenTo.network;\n\n const newTokenFrom = wasCrosschain\n ? defaultToken\n : (initTokenTo ?? defaultToken);\n\n set(twapTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n let needResetTokenFrom = false;\n\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: tokenFrom.network,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: tokenFrom.network,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n needResetTokenFrom = true;\n }\n }\n\n if (tokenFrom.network !== tokenTo.network && !crosschainPossible) {\n needResetTokenFrom = true;\n }\n const enabledSrcChains = get(enabledSrcChainsAtom);\n\n if (needResetTokenFrom) {\n let firstPossibleSrcChain = tokenTo.network;\n if (!enabledSrcChains.includes(tokenTo.network)) {\n for (const srcChain of enabledSrcChains) {\n const crosschainPossible = isCrosschainPossible({\n get,\n chainIdFrom: srcChain,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n if (crosschainPossible) {\n firstPossibleSrcChain = srcChain;\n break;\n }\n }\n }\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n firstPossibleSrcChain,\n \"twap\"\n );\n const newTokenFrom = areTokensSame(tokenTo, defaultTokenFrom)\n ? defaultTokenTo\n : defaultTokenFrom;\n\n set(twapTokenFromAtom, newTokenFrom);\n tokenFrom = newTokenFrom;\n }\n\n // ended up changing tokenFrom network?\n if (tokenFrom.network !== wagmiConfig.state.chainId) {\n switchChain({\n chainId: tokenFrom.network,\n });\n }\n }\n);\n\nexport const syncTwapTokensAfterChainSwitch = (chainId: SupportedChainId) => {\n const enabledSrcChains = jotaiStore.get(enabledSrcChainsAtom);\n if (!enabledSrcChains.includes(chainId)) return;\n\n let tokenFrom = jotaiStore.get(twapTokenFromAtom);\n\n // chains are the same? do nothing\n if (tokenFrom.network === chainId) return;\n\n // get default tokens for the new chain\n const [defaultTokenFrom, defaultTokenTo] = pickDefaultTokenPair(\n chainId,\n \"twap\"\n );\n\n // update tokenFrom\n jotaiStore.set(twapTokenFromAtom, defaultTokenFrom);\n tokenFrom = defaultTokenFrom;\n\n let tokenTo = jotaiStore.get(twapTokenToAtom);\n\n // toChainId derives from tokenTo.network, if no tokenTo - do nothing\n if (!tokenTo) return;\n\n const crosschainPossible = isCrosschainPossible({\n get: jotaiStore.get,\n chainIdFrom: chainId,\n chainIdTo: tokenTo.network,\n mode: \"limit\",\n });\n\n if (crosschainPossible) {\n const isTokenToFromAcross = isTokenFromAcross({\n token: tokenTo,\n fromChainId: chainId,\n toChainId: tokenTo.network,\n mode: \"limit\",\n });\n\n if (!isTokenToFromAcross) {\n const maybeAcrossToken = findFirstTokenFromAcross({\n fromChainId: chainId,\n toChainId: tokenTo.network,\n listByChainId: jotaiStore.get(allTokensByChainAtom).listByChainId,\n mode: \"limit\",\n });\n\n tokenTo = maybeAcrossToken;\n jotaiStore.set(twapTokenToAtom, tokenTo);\n }\n } else {\n const selectableDestChains = getSelectableDestChains(jotaiStore.get, {\n fromChainId: tokenFrom.network,\n mode: \"limit\",\n });\n if (selectableDestChains.includes(chainId)) {\n tokenTo = defaultTokenTo;\n jotaiStore.set(twapTokenToAtom, tokenTo);\n } else {\n tokenTo = undefined;\n jotaiStore.set(twapTokenToAtom, tokenTo);\n }\n }\n};\n"],"names":["switchTwapTokensAtom","atom","get","set","tokenTo","twapTokenToAtom","enabledSrcChains","enabledSrcChainsAtom","includes","network","tokenFrom","twapTokenFromAtom","initChainFrom","selectTwapTokenToAtom","currentTokenFrom","switchChain","chainId","selectTwapTokenFromAtom","newTokenFrom","initTokenFrom","wagmiConfig","state","crosschainPossible","isCrosschainPossible","chainIdFrom","chainIdTo","mode","isTokenToFromAcross","isTokenFromAcross","token","fromChainId","toChainId","maybeAcrossToken","findFirstTokenFromAcross","listByChainId","allTokensByChainAtom","defaultTokenFrom","defaultTokenTo","pickDefaultTokenPair","areTokensSame","newTokenTo","selectableDestChains","getSelectableDestChains","initTokenTo","defaultToken","wasCrosschain","needResetTokenFrom","firstPossibleSrcChain","srcChain","syncTwapTokensAfterChainSwitch","jotaiStore","undefined"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"twapSideAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/state/twapSideAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,eAAO,MAAM,YAAY,qCAUvB,CAAC;AAEH,eAAO,MAAM,WAAW,qBAEvB,CAAC"}
1
+ {"version":3,"file":"twapSideAtom.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/state/twapSideAtom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKrD,eAAO,MAAM,YAAY,qCAiBvB,CAAC;AAEH,eAAO,MAAM,WAAW,qBAEvB,CAAC"}
@@ -2,9 +2,14 @@ import { twapTokenToAtom } from './twapTokenAtoms.js';
2
2
  import { currentTwapInputAtom } from './currentTwapInputAtom.js';
3
3
  import { atom } from 'jotai';
4
4
  import { useAtomValue } from '../../store.js';
5
+ import { isTwapCrossChainAtom } from './isCrosschainAtom.js';
5
6
 
6
7
  const twapSideAtom = atom((get) => {
7
8
  const tokenTo = get(twapTokenToAtom);
9
+ const isCrosschain = get(isTwapCrossChainAtom);
10
+ if (isCrosschain) {
11
+ return "SELL";
12
+ }
8
13
  if (!tokenTo) {
9
14
  return "SELL";
10
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"twapSideAtom.js","sources":["../../../../src/core/twap/state/twapSideAtom.ts"],"sourcesContent":["import { twapTokenToAtom } from \"./twapTokenAtoms\";\nimport { currentTwapInputAtom } from \"./currentTwapInputAtom\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\n\nexport const twapSideAtom = atom<SwapSideUnion>((get) => {\n const tokenTo = get(twapTokenToAtom);\n\n if (!tokenTo) {\n return \"SELL\";\n }\n\n const currentTwapInput = get(currentTwapInputAtom);\n\n return currentTwapInput === \"from\" ? \"SELL\" : \"BUY\";\n});\n\nexport const useTwapSide = () => {\n return useAtomValue(twapSideAtom);\n};\n"],"names":["twapSideAtom","atom","get","tokenTo","twapTokenToAtom","currentTwapInput","currentTwapInputAtom","useTwapSide","useAtomValue"],"mappings":";;;;;AAMO,MAAMA,YAAAA,GAAeC,KAAqBC,CAAAA,GAAAA,KAAQ;AACvD,EAAA,MAAMC,OAAAA,GAAUD,IAAIE,eAAe,CAAA;AAEnC,EAAA,IAAI,CAACD,OAAAA,EAAS;AACZ,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAME,gBAAAA,GAAmBH,IAAII,oBAAoB,CAAA;AAEjD,EAAA,OAAOD,gBAAAA,KAAqB,SAAS,MAAA,GAAS,KAAA;AAChD,CAAC;AAEM,MAAME,cAAcA,MAAA;AAAA,EAAA,OAClBC,aAAaR,YAAY,CAAA;AAAC;;;;"}
1
+ {"version":3,"file":"twapSideAtom.js","sources":["../../../../src/core/twap/state/twapSideAtom.ts"],"sourcesContent":["import { twapTokenToAtom } from \"./twapTokenAtoms\";\nimport { currentTwapInputAtom } from \"./currentTwapInputAtom\";\nimport type { SwapSideUnion } from \"@velora-dex/sdk\";\nimport { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\nimport { isTwapCrossChainAtom } from \"./isCrosschainAtom\";\n\nexport const twapSideAtom = atom<SwapSideUnion>((get) => {\n const tokenTo = get(twapTokenToAtom);\n\n const isCrosschain = get(isTwapCrossChainAtom);\n\n if (isCrosschain) {\n // @TODO revert this change when Crosschain BUY is supported for TWAP\n return \"SELL\";\n }\n\n if (!tokenTo) {\n return \"SELL\";\n }\n\n const currentTwapInput = get(currentTwapInputAtom);\n\n return currentTwapInput === \"from\" ? \"SELL\" : \"BUY\";\n});\n\nexport const useTwapSide = () => {\n return useAtomValue(twapSideAtom);\n};\n"],"names":["twapSideAtom","atom","get","tokenTo","twapTokenToAtom","isCrosschain","isTwapCrossChainAtom","currentTwapInput","currentTwapInputAtom","useTwapSide","useAtomValue"],"mappings":";;;;;;AAOO,MAAMA,YAAAA,GAAeC,KAAqBC,CAAAA,GAAAA,KAAQ;AACvD,EAAA,MAAMC,OAAAA,GAAUD,IAAIE,eAAe,CAAA;AAEnC,EAAA,MAAMC,YAAAA,GAAeH,IAAII,oBAAoB,CAAA;AAE7C,EAAA,IAAID,YAAAA,EAAc;AAEhB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAACF,OAAAA,EAAS;AACZ,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAMI,gBAAAA,GAAmBL,IAAIM,oBAAoB,CAAA;AAEjD,EAAA,OAAOD,gBAAAA,KAAqB,SAAS,MAAA,GAAS,KAAA;AAChD,CAAC;AAEM,MAAME,cAAcA,MAAA;AAAA,EAAA,OAClBC,aAAaV,YAAY,CAAA;AAAC;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { Token } from '../../../tokens/state/types';
2
- export declare const twapTokenFromAtom: import('jotai').PrimitiveAtom<Token> & {
2
+ export declare const twapTokenFromAtom: import('jotai').WritableAtom<Token, [token: Token], void> & {
3
3
  init: Token;
4
4
  };
5
5
  export declare const twapTokenToAtom: import('jotai').PrimitiveAtom<Token | undefined> & {
@@ -1 +1 @@
1
- {"version":3,"file":"twapTokenAtoms.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/state/twapTokenAtoms.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AASlD,eAAO,MAAM,iBAAiB;;CAAyB,CAAC;AACxD,eAAO,MAAM,eAAe;;CAAgB,CAAC;AAE7C,eAAO,MAAM,gBAAgB,aAAwC,CAAC;AACtE,eAAO,MAAM,cAAc,yBAAsC,CAAC"}
1
+ {"version":3,"file":"twapTokenAtoms.d.ts","sourceRoot":"","sources":["../../../../src/core/twap/state/twapTokenAtoms.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAalD,eAAO,MAAM,iBAAiB;;CAc7B,CAAC;AACF,eAAO,MAAM,eAAe;;CAAgB,CAAC;AAE7C,eAAO,MAAM,gBAAgB,aAAwC,CAAC;AACtE,eAAO,MAAM,cAAc,yBAAsC,CAAC"}
@@ -2,9 +2,21 @@ import { wagmiConfig } from '../../../lib/web3/wagmi/config.js';
2
2
  import { pickDefaultTokenPair } from '../../../tokens/defaultTokens.js';
3
3
  import { atom } from 'jotai';
4
4
  import { useAtomValue } from '../../store.js';
5
+ import { isETH } from '../../../tokens/utils/eth.js';
6
+ import { constructWrappedNativeToken } from '../../../tokens/constructor.js';
7
+ import { chainConfigMap } from '../../../lib/web3/wagmi/constants.js';
5
8
 
6
9
  const [defaultTokenFrom] = pickDefaultTokenPair(wagmiConfig.state.chainId, "twap");
7
- const twapTokenFromAtom = atom(defaultTokenFrom);
10
+ const twapTokenFromAtom = atom(
11
+ defaultTokenFrom,
12
+ // with this change it's technically possible to select WETH-WETH, but
13
+ // it's easier to change in one place here than to add extra logic to selectTokenAtoms,
14
+ // since switch tokens if tokenTo=ETH is disabled anyway.
15
+ // @TODO revert this change when ETH cancelAndWithdraw is supported for TWAP
16
+ (_, set, token) => {
17
+ set(twapTokenFromAtom, isETH(token) ? constructWrappedNativeToken(chainConfigMap[token.network]) : token);
18
+ }
19
+ );
8
20
  const twapTokenToAtom = atom();
9
21
  const useTwapTokenFrom = () => {
10
22
  return useAtomValue(twapTokenFromAtom);
@@ -1 +1 @@
1
- {"version":3,"file":"twapTokenAtoms.js","sources":["../../../../src/core/twap/state/twapTokenAtoms.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\n\nconst [defaultTokenFrom] = pickDefaultTokenPair(\n wagmiConfig.state.chainId,\n \"twap\"\n);\n\nexport const twapTokenFromAtom = atom(defaultTokenFrom);\nexport const twapTokenToAtom = atom<Token>();\n\nexport const useTwapTokenFrom = () => useAtomValue(twapTokenFromAtom);\nexport const useTwapTokenTo = () => useAtomValue(twapTokenToAtom);\n"],"names":["defaultTokenFrom","pickDefaultTokenPair","wagmiConfig","state","chainId","twapTokenFromAtom","atom","twapTokenToAtom","useTwapTokenFrom","useAtomValue","useTwapTokenTo"],"mappings":";;;;;AAMA,MAAM,CAACA,gBAAgB,CAAA,GAAIC,qBACzBC,WAAAA,CAAYC,KAAAA,CAAMC,SAClB,MACF,CAAA;AAEO,MAAMC,iBAAAA,GAAoBC,KAAKN,gBAAgB;AAC/C,MAAMO,kBAAkBD,IAAAA;AAExB,MAAME,mBAAmBA,MAAA;AAAA,EAAA,OAAMC,aAAaJ,iBAAiB,CAAA;AAAC;AAC9D,MAAMK,iBAAiBA,MAAA;AAAA,EAAA,OAAMD,aAAaF,eAAe,CAAA;AAAC;;;;"}
1
+ {"version":3,"file":"twapTokenAtoms.js","sources":["../../../../src/core/twap/state/twapTokenAtoms.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { pickDefaultTokenPair } from \"@/tokens/defaultTokens\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { atom } from \"jotai\";\nimport { useAtomValue } from \"@/core/store\";\n\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { constructWrappedNativeToken } from \"@/tokens/constructor\";\nimport { chainConfigMap } from \"@/lib/web3/wagmi/constants\";\n\nconst [defaultTokenFrom] = pickDefaultTokenPair(\n wagmiConfig.state.chainId,\n \"twap\"\n);\n\nexport const twapTokenFromAtom = atom(\n defaultTokenFrom,\n // with this change it's technically possible to select WETH-WETH, but\n // it's easier to change in one place here than to add extra logic to selectTokenAtoms,\n // since switch tokens if tokenTo=ETH is disabled anyway.\n // @TODO revert this change when ETH cancelAndWithdraw is supported for TWAP\n (_, set, token: Token) => {\n set(\n twapTokenFromAtom,\n isETH(token)\n ? constructWrappedNativeToken(chainConfigMap[token.network])\n : token\n );\n }\n);\nexport const twapTokenToAtom = atom<Token>();\n\nexport const useTwapTokenFrom = () => useAtomValue(twapTokenFromAtom);\nexport const useTwapTokenTo = () => useAtomValue(twapTokenToAtom);\n"],"names":["defaultTokenFrom","pickDefaultTokenPair","wagmiConfig","state","chainId","twapTokenFromAtom","atom","_","set","token","isETH","constructWrappedNativeToken","chainConfigMap","network","twapTokenToAtom","useTwapTokenFrom","useAtomValue","useTwapTokenTo"],"mappings":";;;;;;;;AAUA,MAAM,CAACA,gBAAgB,CAAA,GAAIC,qBACzBC,WAAAA,CAAYC,KAAAA,CAAMC,SAClB,MACF,CAAA;AAEO,MAAMC,iBAAAA,GAAoBC,IAAAA;AAAAA,EAC/BN,gBAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAKA,CAACO,CAAAA,EAAGC,GAAAA,EAAKC,KAAAA,KAAiB;AACxBD,IAAAA,GAAAA,CACEH,iBAAAA,EACAK,KAAAA,CAAMD,KAAK,CAAA,GACPE,2BAAAA,CAA4BC,eAAeH,KAAAA,CAAMI,OAAO,CAAC,CAAA,GACzDJ,KACN,CAAA;AAAA,EACF;AACF;AACO,MAAMK,kBAAkBR,IAAAA;AAExB,MAAMS,mBAAmBA,MAAA;AAAA,EAAA,OAAMC,aAAaX,iBAAiB,CAAA;AAAC;AAC9D,MAAMY,iBAAiBA,MAAA;AAAA,EAAA,OAAMD,aAAaF,eAAe,CAAA;AAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTwapTokenToInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/twap/useTwapTokenToInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAqB5E,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAoGF,eAAO,MAAM,wBAAwB,GACnC,QAAO,wBAA6B,KACnC,eAUF,CAAC"}
1
+ {"version":3,"file":"useTwapTokenToInputProps.d.ts","sourceRoot":"","sources":["../../../src/core/twap/useTwapTokenToInputProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAqB5E,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAqGF,eAAO,MAAM,wBAAwB,GACnC,QAAO,wBAA6B,KACnC,eAUF,CAAC"}
@@ -54,7 +54,7 @@ const useTokenToBalanceUnit = () => {
54
54
  return t2;
55
55
  };
56
56
  const useExtraProps = (t0) => {
57
- const $ = distExports.c(25);
57
+ const $ = distExports.c(26);
58
58
  let t1;
59
59
  if ($[0] !== t0) {
60
60
  t1 = t0 === void 0 ? {} : t0;
@@ -101,7 +101,7 @@ const useExtraProps = (t0) => {
101
101
  t3 = $[8];
102
102
  }
103
103
  const networkSwitcherProps = t3;
104
- const setCurrentInput = useSetAtom(currentTwapInputAtom);
104
+ const [currentInput, setCurrentInput] = useAtom(currentTwapInputAtom);
105
105
  const side = useTwapSide();
106
106
  const isSell = side === "SELL";
107
107
  const isLoading = isPriceLoading && isSell;
@@ -151,28 +151,31 @@ const useExtraProps = (t0) => {
151
151
  } else {
152
152
  t9 = $[17];
153
153
  }
154
- let t10;
155
- if ($[18] !== isLoading || $[19] !== networkSwitcherProps || $[20] !== t4 || $[21] !== t7 || $[22] !== t8 || $[23] !== t9) {
156
- t10 = {
154
+ const t10 = isCrosschain && currentInput === "to";
155
+ let t11;
156
+ if ($[18] !== isLoading || $[19] !== networkSwitcherProps || $[20] !== t10 || $[21] !== t4 || $[22] !== t7 || $[23] !== t8 || $[24] !== t9) {
157
+ t11 = {
157
158
  networkSwitcherProps,
158
159
  tokenType: "to",
159
160
  onFocus: t4,
160
161
  label: t7,
161
162
  isLoading,
162
163
  disabled: t8,
163
- bottomElement: t9
164
+ bottomElement: t9,
165
+ readOnly: t10
164
166
  };
165
167
  $[18] = isLoading;
166
168
  $[19] = networkSwitcherProps;
167
- $[20] = t4;
168
- $[21] = t7;
169
- $[22] = t8;
170
- $[23] = t9;
171
- $[24] = t10;
169
+ $[20] = t10;
170
+ $[21] = t4;
171
+ $[22] = t7;
172
+ $[23] = t8;
173
+ $[24] = t9;
174
+ $[25] = t11;
172
175
  } else {
173
- t10 = $[24];
176
+ t11 = $[25];
174
177
  }
175
- return t10;
178
+ return t11;
176
179
  };
177
180
  const useTokenToAmountProps = (t0) => {
178
181
  const $ = distExports.c(12);
@@ -1 +1 @@
1
- {"version":3,"file":"useTwapTokenToInputProps.js","sources":["../../../src/core/twap/useTwapTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtomValue, useSetAtom, useAtom } from \"@/core/store\";\nimport { twapReceiveInputAmountAtom } from \"./state/twapInputAmountAtom\";\nimport { useLogger } from \"../logger\";\nimport type { OnValueChange } from \"react-number-format\";\nimport type { TokenInputExtraProps } from \"../inputs/hooks/types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { selectTwapTokenToAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useTwapTokenTo } from \"./state/twapTokenAtoms\";\nimport { useChainId } from \"wagmi\";\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { twapChainToAtom } from \"../state/chainToAtom\";\nimport { currentTwapInputAtom } from \"./state/currentTwapInputAtom\";\nimport { useTwapSide } from \"./state/twapSideAtom\";\nimport { useIsTwapCrossChain } from \"./state/isCrosschainAtom\";\nimport { FetchingQuotes } from \"@/components/widget/FetchingQuotes/FetchingQuotes\";\nimport { formatUnits } from \"viem\";\n\nexport type UseTwapTokenToInputInput = {\n override?: { amountWei?: string };\n isPriceLoading?: boolean;\n};\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useTwapTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = ({\n isPriceLoading,\n}: {\n isPriceLoading?: boolean;\n} = {}): TokenInputExtraProps => {\n const appChainId = useChainId();\n\n const [chainTo, setChainTo] = useAtom(twapChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: \"limit\",\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const setCurrentInput = useSetAtom(currentTwapInputAtom);\n\n const side = useTwapSide();\n const isSell = side === \"SELL\";\n\n // SELLing and price is loading = tokenTo input will receive destAmount\n const isLoading = isPriceLoading && isSell;\n\n const isCrosschain = useIsTwapCrossChain();\n const showFetchingQuotes = isCrosschain && isPriceLoading;\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: (\n <>\n <span>Receive (estimated)</span>{\" \"}\n {showNetworkSwitcher && <span className=\"text-contrast-5\">on</span>}\n </>\n ),\n isLoading,\n disabled: selectableChains.length === 0,\n bottomElement: showFetchingQuotes ? <FetchingQuotes /> : undefined,\n };\n};\n\nconst useTokenToAmountProps = ({\n override,\n}: UseTwapTokenToInputInput): Pick<\n TokenInputProps,\n \"amount\" | \"token\" | \"onAmountChange\" | \"onTokenSelect\"\n> => {\n const logger = useLogger(\"Twap::TokenTo::AmountProps\");\n const tokenTo = useTwapTokenTo();\n\n const rawAmount = useAtomValue(twapReceiveInputAmountAtom);\n const setReceiveAmount = useSetAtom(twapReceiveInputAmountAtom);\n\n // SELL mode: override from price\n const amount =\n override?.amountWei && tokenTo\n ? formatUnits(BigInt(override.amountWei), tokenTo.decimals)\n : rawAmount;\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange::values\", values);\n setReceiveAmount(values.value);\n };\n\n const setTokenTo = useSetAtom(selectTwapTokenToAtom);\n\n return {\n amount,\n token: tokenTo,\n onAmountChange,\n onTokenSelect: setTokenTo,\n };\n};\n\nexport const useTwapTokenToInputProps = (\n input: UseTwapTokenToInputInput = {}\n): TokenInputProps => {\n const extraAmountProps = useTokenToAmountProps(input);\n const extraProps = useExtraProps({ isPriceLoading: input.isPriceLoading });\n const tokenBalanceUnit = useTokenToBalanceUnit();\n\n return {\n ...extraProps,\n ...extraAmountProps,\n tokenBalanceUnit,\n };\n};\n"],"names":["useTokenToBalanceUnit","$","_c","tokenTo","useTwapTokenTo","t0","Symbol","for","refetchInterval","MEDIUM_STALE_TIME_FOR_REACTIVENESS","t1","token","queryOptions","balanceUnit","useTokenBalance","t2","toDecimalTrimmed","useExtraProps","undefined","isPriceLoading","appChainId","useChainId","chainTo","setChainTo","useAtom","twapChainToAtom","fromChainId","mode","selectableChains","useSelectableDestChains","showNetworkSwitcher","t3","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","setCurrentInput","useSetAtom","currentTwapInputAtom","side","useTwapSide","isSell","isLoading","isCrosschain","useIsTwapCrossChain","showFetchingQuotes","t4","t5","t6","t7","t8","t9","t10","tokenType","onFocus","label","bottomElement","useTokenToAmountProps","override","logger","useLogger","rawAmount","useAtomValue","twapReceiveInputAmountAtom","setReceiveAmount","amountWei","formatUnits","BigInt","decimals","amount","values","log","value","onAmountChange","setTokenTo","selectTwapTokenToAtom","onTokenSelect","useTwapTokenToInputProps","input","extraAmountProps","extraProps","tokenBalanceUnit"],"mappings":"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"}
1
+ {"version":3,"file":"useTwapTokenToInputProps.js","sources":["../../../src/core/twap/useTwapTokenToInputProps.tsx"],"sourcesContent":["import type { TokenInputProps } from \"@/components/widget/TokenInput/types\";\nimport { useAtomValue, useSetAtom, useAtom } from \"@/core/store\";\nimport { twapReceiveInputAmountAtom } from \"./state/twapInputAmountAtom\";\nimport { useLogger } from \"../logger\";\nimport type { OnValueChange } from \"react-number-format\";\nimport type { TokenInputExtraProps } from \"../inputs/hooks/types\";\nimport { useTokenBalance } from \"@/hooks/tokens/balances/useTokenBalance\";\nimport { MEDIUM_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { toDecimalTrimmed } from \"@/lib/utils/toDecimal\";\nimport { selectTwapTokenToAtom } from \"./state/selectedTokenActionsAtom\";\nimport { useTwapTokenTo } from \"./state/twapTokenAtoms\";\nimport { useChainId } from \"wagmi\";\nimport { useSelectableDestChains } from \"@/hooks/useSelectableDestChains\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { twapChainToAtom } from \"../state/chainToAtom\";\nimport { currentTwapInputAtom } from \"./state/currentTwapInputAtom\";\nimport { useTwapSide } from \"./state/twapSideAtom\";\nimport { useIsTwapCrossChain } from \"./state/isCrosschainAtom\";\nimport { FetchingQuotes } from \"@/components/widget/FetchingQuotes/FetchingQuotes\";\nimport { formatUnits } from \"viem\";\n\nexport type UseTwapTokenToInputInput = {\n override?: { amountWei?: string };\n isPriceLoading?: boolean;\n};\n\nconst useTokenToBalanceUnit = () => {\n const tokenTo = useTwapTokenTo();\n\n const { balanceUnit } = useTokenBalance({\n token: tokenTo,\n queryOptions: { refetchInterval: MEDIUM_STALE_TIME_FOR_REACTIVENESS },\n });\n\n return toDecimalTrimmed(balanceUnit);\n};\n\nconst useExtraProps = ({\n isPriceLoading,\n}: {\n isPriceLoading?: boolean;\n} = {}): TokenInputExtraProps => {\n const appChainId = useChainId();\n\n const [chainTo, setChainTo] = useAtom(twapChainToAtom);\n\n const { selectableChains } = useSelectableDestChains({\n fromChainId: appChainId,\n mode: \"limit\",\n });\n\n const showNetworkSwitcher = chainTo !== undefined;\n\n const networkSwitcherProps = showNetworkSwitcher\n ? {\n networks: selectableChains,\n selectedNetwork: chainTo,\n allOption: false,\n onSelect: (chainId: SupportedChainId | \"all\") =>\n chainId !== \"all\" && setChainTo(chainId),\n disabled: selectableChains.length <= 1,\n }\n : undefined;\n\n const [currentInput, setCurrentInput] = useAtom(currentTwapInputAtom);\n\n const side = useTwapSide();\n const isSell = side === \"SELL\";\n\n // SELLing and price is loading = tokenTo input will receive destAmount\n const isLoading = isPriceLoading && isSell;\n\n const isCrosschain = useIsTwapCrossChain();\n const showFetchingQuotes = isCrosschain && isPriceLoading;\n\n return {\n networkSwitcherProps,\n tokenType: \"to\" as const,\n onFocus: () => setCurrentInput(\"to\"),\n label: (\n <>\n <span>Receive (estimated)</span>{\" \"}\n {showNetworkSwitcher && <span className=\"text-contrast-5\">on</span>}\n </>\n ),\n isLoading,\n disabled: selectableChains.length === 0,\n bottomElement: showFetchingQuotes ? <FetchingQuotes /> : undefined,\n readOnly: isCrosschain && currentInput === \"to\", // @TODO revert this change when Crosschain BUY is supported for TWAP\n };\n};\n\nconst useTokenToAmountProps = ({\n override,\n}: UseTwapTokenToInputInput): Pick<\n TokenInputProps,\n \"amount\" | \"token\" | \"onAmountChange\" | \"onTokenSelect\"\n> => {\n const logger = useLogger(\"Twap::TokenTo::AmountProps\");\n const tokenTo = useTwapTokenTo();\n\n const rawAmount = useAtomValue(twapReceiveInputAmountAtom);\n const setReceiveAmount = useSetAtom(twapReceiveInputAmountAtom);\n\n // SELL mode: override from price\n const amount =\n override?.amountWei && tokenTo\n ? formatUnits(BigInt(override.amountWei), tokenTo.decimals)\n : rawAmount;\n\n const onAmountChange: OnValueChange = (values) => {\n logger.log(\"onAmountChange::values\", values);\n setReceiveAmount(values.value);\n };\n\n const setTokenTo = useSetAtom(selectTwapTokenToAtom);\n\n return {\n amount,\n token: tokenTo,\n onAmountChange,\n onTokenSelect: setTokenTo,\n };\n};\n\nexport const useTwapTokenToInputProps = (\n input: UseTwapTokenToInputInput = {}\n): TokenInputProps => {\n const extraAmountProps = useTokenToAmountProps(input);\n const extraProps = useExtraProps({ isPriceLoading: input.isPriceLoading });\n const tokenBalanceUnit = useTokenToBalanceUnit();\n\n return {\n ...extraProps,\n ...extraAmountProps,\n tokenBalanceUnit,\n };\n};\n"],"names":["useTokenToBalanceUnit","$","_c","tokenTo","useTwapTokenTo","t0","Symbol","for","refetchInterval","MEDIUM_STALE_TIME_FOR_REACTIVENESS","t1","token","queryOptions","balanceUnit","useTokenBalance","t2","toDecimalTrimmed","useExtraProps","undefined","isPriceLoading","appChainId","useChainId","chainTo","setChainTo","useAtom","twapChainToAtom","fromChainId","mode","selectableChains","useSelectableDestChains","showNetworkSwitcher","t3","networks","selectedNetwork","allOption","onSelect","chainId","disabled","length","networkSwitcherProps","currentInput","setCurrentInput","currentTwapInputAtom","side","useTwapSide","isSell","isLoading","isCrosschain","useIsTwapCrossChain","showFetchingQuotes","t4","t5","t6","t7","t8","t9","t10","t11","tokenType","onFocus","label","bottomElement","readOnly","useTokenToAmountProps","override","logger","useLogger","rawAmount","useAtomValue","twapReceiveInputAmountAtom","setReceiveAmount","useSetAtom","amountWei","formatUnits","BigInt","decimals","amount","values","log","value","onAmountChange","setTokenTo","selectTwapTokenToAtom","onTokenSelect","useTwapTokenToInputProps","input","extraAmountProps","extraProps","tokenBalanceUnit"],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import { d as distExports } from '../../../_virtual/index.js';
2
+ import '../../useSDK.js';
3
+ import '@tanstack/react-pacer/debouncer';
4
+ import '@tanstack/react-query';
5
+ import 'react';
6
+ import 'ts-essentials';
7
+ import { DEGEN_MODE_MAX_IMPACT } from './constants.js';
2
8
  import { useAtomValue } from '../../../core/store.js';
3
9
  import { useAccount } from 'wagmi';
4
10
  import { useTokenTaxFee } from '../../tokens/useTokenTaxFee.js';
@@ -7,7 +13,6 @@ import { tradeModeToTokenAtoms, tradeModeToPayAmountWeiAtom, tradeModeToReceiveA
7
13
  import { useSwapReceiverAddressValue } from '../../../components/widget/ReceiverAddress/state/receiverAddressAtom.js';
8
14
  import { excludeBridgesAtom } from '../../../components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js';
9
15
  import { useDegenMode } from '../../../components/widget/TradeParameters/state/degenModeParamAtom.js';
10
- import { DEGEN_MODE_MAX_IMPACT } from './constants.js';
11
16
 
12
17
  function usePricesParams(tradeMode) {
13
18
  const $ = distExports.c(28);
@@ -1 +1 @@
1
- {"version":3,"file":"usePricesParams.js","sources":["../../../../src/hooks/swap/prices/usePricesParams.ts"],"sourcesContent":["import { type RateParamsInput } from \"./market/queries/useMarketPriceQuery\";\n\nimport { useAtomValue } from \"@/core/store\";\nimport { useAccount } from \"wagmi\";\nimport type { MarkOptional, MarkRequired } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useTokenTaxFee } from \"@/hooks/tokens/useTokenTaxFee\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport {\n tradeModeToPayAmountWeiAtom,\n tradeModeToReceiveAmountWeiAtom,\n tradeModeToSideAtom,\n tradeModeToTokenAtoms,\n} from \"@/core/inputs/state/common\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport { excludeBridgesAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom\";\nimport { useDegenMode } from \"@/components/widget/TradeParameters/state/degenModeParamAtom\";\nimport type { Address } from \"viem\";\nimport { DEGEN_MODE_MAX_IMPACT } from \"./constants\";\n\nexport type FetchPriceParams = MarkRequired<\n MarkOptional<\n Pick<\n RateParamsInput,\n | \"srcToken\"\n | \"destToken\"\n | \"amount\"\n | \"userAddress\"\n | \"side\"\n | \"srcDecimals\"\n | \"destDecimals\"\n | \"partner\"\n | \"ignoreBadUsdPrice\"\n | \"srcTokenDexTransferFee\"\n | \"destTokenDexTransferFee\"\n | \"otherExchangePrices\"\n | \"partnerFeeBps\"\n | \"maxImpact\"\n | \"degenMode\"\n >,\n \"destToken\"\n >,\n \"srcDecimals\" | \"side\"\n>;\n// @TODO add other params from options:\n// exclude* for Safe if still needed, or if we want to allow exluding DEXs like in UI\n\nexport function usePricesParams(tradeMode: TradeMode): {\n priceParams: FetchPriceParams;\n isCrossChain: boolean;\n chainId: SupportedChainId;\n destChainId?: SupportedChainId;\n} {\n const { tokenFromAtom, tokenToAtom } = tradeModeToTokenAtoms[tradeMode];\n const fromToken = useAtomValue(tokenFromAtom);\n const toToken = useAtomValue(tokenToAtom);\n\n const payAmountWeiAtom = tradeModeToPayAmountWeiAtom[tradeMode];\n const receiveAmountWeiAtom = tradeModeToReceiveAmountWeiAtom[tradeMode];\n\n const payAmountWei = useAtomValue(payAmountWeiAtom);\n const receiveAmountWei = useAtomValue(receiveAmountWeiAtom) ?? \"0\";\n\n const { data: fromTokenTaxFee } = useTokenTaxFee({\n tokenAddress: fromToken.address,\n chainId: fromToken.network,\n });\n\n const { data: toTokenTaxFee } = useTokenTaxFee({\n tokenAddress: toToken?.address,\n chainId: toToken?.network,\n });\n\n const srcTokenDexTransferFee = fromTokenTaxFee?.sellTax?.toString();\n const destTokenDexTransferFee = toTokenTaxFee?.buyTax?.toString();\n\n const { address } = useAccount();\n\n const { partner, partnerFeeBps } = usePartner();\n const degenMode = useDegenMode();\n\n const isCrossChain = !!toToken && fromToken.network !== toToken.network;\n\n const sideAtom = tradeModeToSideAtom[tradeMode];\n const side = useAtomValue(sideAtom);\n\n const amount = side === \"SELL\" ? payAmountWei : receiveAmountWei;\n\n const priceParams: FetchPriceParams = {\n srcToken: fromToken.address,\n destToken: toToken?.address,\n srcDecimals: fromToken.decimals,\n destDecimals: toToken?.decimals,\n side,\n amount,\n userAddress: address,\n partner,\n partnerFeeBps,\n srcTokenDexTransferFee,\n destTokenDexTransferFee,\n otherExchangePrices: true,\n };\n\n // Degen Mode:\n // set maxImpact=DEGEN_MODE_MAX_IMPACT to bypass ESTIMATED_LOSS_GREATER_THAN_MAX_IMPACT\n // set ignoreBadUsdPrice=true to allow tokens without USD price data\n // set degenMode=true for tracing\n if (degenMode) {\n priceParams.maxImpact = DEGEN_MODE_MAX_IMPACT;\n priceParams.ignoreBadUsdPrice = true;\n priceParams.degenMode = true;\n }\n\n return {\n priceParams,\n isCrossChain,\n chainId: fromToken.network,\n destChainId: isCrossChain ? toToken?.network : undefined,\n };\n}\n\nexport function useExtraDeltaPriceParams(): {\n excludeBridges?: string[];\n beneficiary?: Address;\n} {\n // excluded bridges from user preferences\n const excludeBridges = useAtomValue(excludeBridgesAtom);\n // receiver address from user input\n const receiverAddress = useSwapReceiverAddressValue();\n\n return {\n excludeBridges,\n beneficiary: receiverAddress,\n };\n}\n"],"names":["usePricesParams","tradeMode","$","_c","tokenFromAtom","tokenToAtom","tradeModeToTokenAtoms","fromToken","useAtomValue","toToken","payAmountWeiAtom","tradeModeToPayAmountWeiAtom","receiveAmountWeiAtom","tradeModeToReceiveAmountWeiAtom","payAmountWei","receiveAmountWei","t0","address","network","tokenAddress","chainId","data","fromTokenTaxFee","useTokenTaxFee","t1","t2","t3","toTokenTaxFee","t4","sellTax","toString","srcTokenDexTransferFee","t5","buyTax","destTokenDexTransferFee","useAccount","partner","partnerFeeBps","usePartner","degenMode","useDegenMode","isCrossChain","sideAtom","tradeModeToSideAtom","side","amount","t6","t7","decimals","priceParams","srcToken","destToken","srcDecimals","destDecimals","userAddress","otherExchangePrices","maxImpact","DEGEN_MODE_MAX_IMPACT","ignoreBadUsdPrice","t8","undefined","t9","destChainId","useExtraDeltaPriceParams","excludeBridges","excludeBridgesAtom","receiverAddress","useSwapReceiverAddressValue","beneficiary"],"mappings":";;;;;;;;;;;AAgDO,SAAAA,gBAAAC,SAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAML,EAAA,MAAA;AAAA,IAAAC,aAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAuCC,sBAAsBL,SAAS,CAAA;AACtE,EAAA,MAAAM,SAAAA,GAAkBC,aAAaJ,aAAa,CAAA;AAC5C,EAAA,MAAAK,OAAAA,GAAgBD,aAAaH,WAAW,CAAA;AAExC,EAAA,MAAAK,gBAAAA,GAAyBC,4BAA4BV,SAAS,CAAA;AAC9D,EAAA,MAAAW,oBAAAA,GAA6BC,gCAAgCZ,SAAS,CAAA;AAEtE,EAAA,MAAAa,YAAAA,GAAqBN,aAAaE,gBAAgB,CAAA;AAClD,EAAA,MAAAK,gBAAAA,GAAyBP,YAAAA,CAAaI,oBAA2B,CAAA,IAAxC,GAAA;AAA0C,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAd,CAAAA,CAAA,CAAA,CAAA,KAAAK,SAAAA,CAAAU,WAAAf,CAAAA,CAAA,CAAA,CAAA,KAAAK,SAAAA,CAAAW,OAAAA,EAAA;AAElBF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,cACjCZ,SAAAA,CAASU,OAAAA;AAAAA,MAAQG,SACtBb,SAAAA,CAASW;AAAAA,KACpB;AAAChB,IAAAA,CAAAA,CAAA,CAAA,IAAAK,SAAAA,CAAAU,OAAAA;AAAAf,IAAAA,CAAAA,CAAA,CAAA,IAAAK,SAAAA,CAAAW,OAAAA;AAAAhB,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA;AAAA,IAAAmB,IAAAA,EAAAC;AAAAA,GAAA,GAAkCC,eAAeP,EAGhD,CAAA;AAGe,EAAA,MAAAQ,KAAAf,OAAAA,EAAOQ,OAAAA;AACZ,EAAA,MAAAQ,KAAAhB,OAAAA,EAAOS,OAAAA;AAAS,EAAA,IAAAQ,EAAAA;AAAA,EAAA,IAAAxB,EAAA,CAAA,CAAA,KAAAsB,MAAAtB,CAAAA,QAAAuB,EAAAA,EAAA;AAFoBC,IAAAA,EAAAA,GAAA;AAAA,MAAAP,YAAAA,EAC/BK,EAAAA;AAAAA,MAAgBJ,OAAAA,EACrBK;AAAAA,KACX;AAACvB,IAAAA,CAAAA,MAAAsB,EAAAA;AAAAtB,IAAAA,CAAAA,MAAAuB,EAAAA;AAAAvB,IAAAA,CAAAA,MAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA;AAAA,IAAAmB,IAAAA,EAAAM;AAAAA,GAAA,GAAgCJ,eAAeG,EAG9C,CAAA;AAAE,EAAA,IAAAE,EAAAA;AAAA,EAAA,IAAA1B,CAAAA,CAAA,CAAA,CAAA,KAAAoB,eAAAA,EAAAO,OAAAA,EAAA;AAE4BD,IAAAA,EAAAA,GAAAN,eAAAA,EAAeO,SAAmBC,QAAAA,EAAC;AAAC5B,IAAAA,CAAAA,CAAA,CAAA,IAAAoB,eAAAA,EAAAO,OAAAA;AAAA3B,IAAAA,CAAAA,MAAA0B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA1B,EAAA,CAAA,CAAA;AAAA,EAAA;AAAnE,EAAA,MAAA6B,sBAAAA,GAA+BH,EAAAA;AAAqC,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAA9B,CAAAA,CAAA,CAAA,CAAA,KAAAyB,aAAAA,EAAAM,MAAAA,EAAA;AACpCD,IAAAA,EAAAA,GAAAL,aAAAA,EAAaM,QAAkBH,QAAAA,EAAC;AAAC5B,IAAAA,CAAAA,CAAA,CAAA,IAAAyB,aAAAA,EAAAM,MAAAA;AAAA/B,IAAAA,CAAAA,MAAA8B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA9B,EAAA,CAAA,CAAA;AAAA,EAAA;AAAjE,EAAA,MAAAgC,uBAAAA,GAAgCF,EAAAA;AAEhC,EAAA,MAAA;AAAA,IAAAf;AAAAA,MAAoBkB,UAAAA,EAAW;AAE/B,EAAA,MAAA;AAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,MAAmCC,UAAAA,EAAW;AAC9C,EAAA,MAAAC,YAAkBC,YAAAA,EAAa;AAE/B,EAAA,MAAAC,eAAqB,CAAC,CAAChC,OAAAA,IAAWF,SAAAA,CAASW,YAAaT,OAAAA,CAAOS,OAAAA;AAE/D,EAAA,MAAAwB,QAAAA,GAAiBC,oBAAoB1C,SAAS,CAAA;AAC9C,EAAA,MAAA2C,IAAAA,GAAapC,aAAakC,QAAQ,CAAA;AAElC,EAAA,MAAAG,MAAAA,GAAeD,IAAAA,KAAS,MAAA,GAAT9B,YAAAA,GAAAC,gBAAAA;AAIF,EAAA,MAAA+B,KAAArC,OAAAA,EAAOQ,OAAAA;AAEJ,EAAA,MAAA8B,KAAAtC,OAAAA,EAAOuC,QAAAA;AAAU,EAAA,IAAAC,WAAAA;AAAA,EAAA,IAAA/C,CAAAA,SAAAe,OAAAA,IAAAf,EAAA,EAAA,CAAA,KAAA2C,MAAAA,IAAA3C,CAAAA,CAAA,EAAA,CAAA,KAAAqC,aAAArC,CAAAA,CAAA,EAAA,MAAAgC,uBAAAA,IAAAhC,CAAAA,CAAA,EAAA,CAAA,KAAAK,SAAAA,CAAAU,OAAAA,IAAAf,CAAAA,CAAA,EAAA,CAAA,KAAAK,UAAAyC,QAAAA,IAAA9C,CAAAA,CAAA,EAAA,CAAA,KAAAkC,OAAAA,IAAAlC,EAAA,EAAA,CAAA,KAAAmC,aAAAA,IAAAnC,CAAAA,CAAA,EAAA,CAAA,KAAA0C,QAAA1C,CAAAA,CAAA,EAAA,CAAA,KAAA6B,sBAAAA,IAAA7B,CAAAA,SAAA4C,EAAAA,IAAA5C,CAAAA,CAAA,EAAA,CAAA,KAAA6C,EAAAA,EAAA;AAJjCE,IAAAA,WAAAA,GAAsC;AAAA,MAAAC,UAC1B3C,SAAAA,CAASU,OAAAA;AAAAA,MAAQkC,SAAAA,EAChBL,EAAAA;AAAAA,MAAgBM,aACd7C,SAAAA,CAASyC,QAAAA;AAAAA,MAASK,YAAAA,EACjBN,EAAAA;AAAAA,MAAiBH,IAAAA;AAAAA,MAAAC,MAAAA;AAAAA,MAAAS,WAAAA,EAGlBrC,OAAAA;AAAAA,MAAOmB,OAAAA;AAAAA,MAAAC,aAAAA;AAAAA,MAAAN,sBAAAA;AAAAA,MAAAG,uBAAAA;AAAAA,MAAAqB,mBAAAA,EAKC;AAAA,KACvB;AAMA,IAAA,IAAIhB,SAAAA,EAAS;AACXU,MAAAA,WAAAA,CAAWO,SAAAA,GAAaC,qBAAAA;AACxBR,MAAAA,WAAAA,CAAWS,iBAAAA,GAAqB,IAAA;AAChCT,MAAAA,WAAAA,CAAWV,SAAAA,GAAa,IAAA;AAAA,IAAH;AACtBrC,IAAAA,CAAAA,OAAAe,OAAAA;AAAAf,IAAAA,CAAAA,OAAA2C,MAAAA;AAAA3C,IAAAA,CAAAA,OAAAqC,SAAAA;AAAArC,IAAAA,CAAAA,OAAAgC,uBAAAA;AAAAhC,IAAAA,CAAAA,CAAA,EAAA,IAAAK,SAAAA,CAAAU,OAAAA;AAAAf,IAAAA,CAAAA,CAAA,EAAA,IAAAK,SAAAA,CAAAyC,QAAAA;AAAA9C,IAAAA,CAAAA,OAAAkC,OAAAA;AAAAlC,IAAAA,CAAAA,OAAAmC,aAAAA;AAAAnC,IAAAA,CAAAA,OAAA0C,IAAAA;AAAA1C,IAAAA,CAAAA,OAAA6B,sBAAAA;AAAA7B,IAAAA,CAAAA,OAAA4C,EAAAA;AAAA5C,IAAAA,CAAAA,OAAA6C,EAAAA;AAAA7C,IAAAA,CAAAA,OAAA+C,WAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,WAAAA,GAAA/C,EAAA,EAAA,CAAA;AAAA,EAAA;AAMc,EAAA,MAAAyD,EAAAA,GAAAlB,YAAAA,GAAehC,OAAAA,EAAOS,OAAAA,GAAtB0C,MAAAA;AAA2C,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAA3D,EAAA,EAAA,CAAA,KAAAK,SAAAA,CAAAW,OAAAA,IAAAhB,EAAA,EAAA,CAAA,KAAAuC,YAAAA,IAAAvC,CAAAA,CAAA,EAAA,CAAA,KAAA+C,WAAAA,IAAA/C,CAAAA,SAAAyD,EAAAA,EAAA;AAJnDE,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,WAAAA;AAAAA,MAAAR,YAAAA;AAAAA,MAAArB,SAGIb,SAAAA,CAASW,OAAAA;AAAAA,MAAQ4C,WAAAA,EACbH;AAAAA,KACf;AAACzD,IAAAA,CAAAA,CAAA,EAAA,IAAAK,SAAAA,CAAAW,OAAAA;AAAAhB,IAAAA,CAAAA,OAAAuC,YAAAA;AAAAvC,IAAAA,CAAAA,OAAA+C,WAAAA;AAAA/C,IAAAA,CAAAA,OAAAyD,EAAAA;AAAAzD,IAAAA,CAAAA,OAAA2D,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA3D,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OALM2D,EAAAA;AAKN;AAGI,SAAAE,wBAAAA,GAAA;AAAA,EAAA,MAAA7D,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAKL,EAAA,MAAA6D,cAAAA,GAAuBxD,aAAayD,kBAAkB,CAAA;AAEtD,EAAA,MAAAC,kBAAwBC,2BAAAA,EAA4B;AAAE,EAAA,IAAAnD,EAAAA;AAAA,EAAA,IAAAd,EAAA,CAAA,CAAA,KAAA8D,kBAAA9D,CAAAA,QAAAgE,eAAAA,EAAA;AAE/ClD,IAAAA,EAAAA,GAAA;AAAA,MAAAgD,cAAAA;AAAAA,MAAAI,WAAAA,EAEQF;AAAAA,KACf;AAAChE,IAAAA,CAAAA,MAAA8D,cAAAA;AAAA9D,IAAAA,CAAAA,MAAAgE,eAAAA;AAAAhE,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAHMc,EAAAA;AAGN;;;;"}
1
+ {"version":3,"file":"usePricesParams.js","sources":["../../../../src/hooks/swap/prices/usePricesParams.ts"],"sourcesContent":["import { type RateParamsInput } from \"./market/queries/useMarketPriceQuery\";\n\nimport { useAtomValue } from \"@/core/store\";\nimport { useAccount } from \"wagmi\";\nimport type { MarkOptional, MarkRequired } from \"ts-essentials\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useTokenTaxFee } from \"@/hooks/tokens/useTokenTaxFee\";\nimport { usePartner } from \"@/hooks/usePartner\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport {\n tradeModeToPayAmountWeiAtom,\n tradeModeToReceiveAmountWeiAtom,\n tradeModeToSideAtom,\n tradeModeToTokenAtoms,\n} from \"@/core/inputs/state/common\";\nimport { useSwapReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport { excludeBridgesAtom } from \"@/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom\";\nimport { useDegenMode } from \"@/components/widget/TradeParameters/state/degenModeParamAtom\";\nimport type { Address } from \"viem\";\nimport { DEGEN_MODE_MAX_IMPACT } from \"./constants\";\n\nexport type FetchPriceParams = MarkRequired<\n MarkOptional<\n Pick<\n RateParamsInput,\n | \"srcToken\"\n | \"destToken\"\n | \"amount\"\n | \"userAddress\"\n | \"side\"\n | \"srcDecimals\"\n | \"destDecimals\"\n | \"partner\"\n | \"ignoreBadUsdPrice\"\n | \"srcTokenDexTransferFee\"\n | \"destTokenDexTransferFee\"\n | \"otherExchangePrices\"\n | \"partnerFeeBps\"\n | \"maxImpact\"\n | \"degenMode\"\n >,\n \"destToken\"\n >,\n \"srcDecimals\" | \"side\"\n>;\n// @TODO add other params from options:\n// exclude* for Safe if still needed, or if we want to allow exluding DEXs like in UI\n\nexport function usePricesParams(tradeMode: TradeMode): {\n priceParams: FetchPriceParams;\n isCrossChain: boolean;\n chainId: SupportedChainId;\n destChainId?: SupportedChainId;\n} {\n const { tokenFromAtom, tokenToAtom } = tradeModeToTokenAtoms[tradeMode];\n const fromToken = useAtomValue(tokenFromAtom);\n const toToken = useAtomValue(tokenToAtom);\n\n const payAmountWeiAtom = tradeModeToPayAmountWeiAtom[tradeMode];\n const receiveAmountWeiAtom = tradeModeToReceiveAmountWeiAtom[tradeMode];\n\n const payAmountWei = useAtomValue(payAmountWeiAtom);\n const receiveAmountWei = useAtomValue(receiveAmountWeiAtom) ?? \"0\";\n\n const { data: fromTokenTaxFee } = useTokenTaxFee({\n tokenAddress: fromToken.address,\n chainId: fromToken.network,\n });\n\n const { data: toTokenTaxFee } = useTokenTaxFee({\n tokenAddress: toToken?.address,\n chainId: toToken?.network,\n });\n\n const srcTokenDexTransferFee = fromTokenTaxFee?.sellTax?.toString();\n const destTokenDexTransferFee = toTokenTaxFee?.buyTax?.toString();\n\n const { address } = useAccount();\n\n const { partner, partnerFeeBps } = usePartner();\n const degenMode = useDegenMode();\n\n const isCrossChain = !!toToken && fromToken.network !== toToken.network;\n\n const sideAtom = tradeModeToSideAtom[tradeMode];\n const side = useAtomValue(sideAtom);\n\n const amount = side === \"SELL\" ? payAmountWei : receiveAmountWei;\n\n const priceParams: FetchPriceParams = {\n srcToken: fromToken.address,\n destToken: toToken?.address,\n srcDecimals: fromToken.decimals,\n destDecimals: toToken?.decimals,\n side,\n amount,\n userAddress: address,\n partner,\n partnerFeeBps,\n srcTokenDexTransferFee,\n destTokenDexTransferFee,\n otherExchangePrices: true,\n };\n\n // Degen Mode:\n // set maxImpact=DEGEN_MODE_MAX_IMPACT to bypass ESTIMATED_LOSS_GREATER_THAN_MAX_IMPACT\n // set ignoreBadUsdPrice=true to allow tokens without USD price data\n // set degenMode=true for tracing\n if (degenMode) {\n priceParams.maxImpact = DEGEN_MODE_MAX_IMPACT;\n priceParams.ignoreBadUsdPrice = true;\n priceParams.degenMode = true;\n }\n\n return {\n priceParams,\n isCrossChain,\n chainId: fromToken.network,\n destChainId: isCrossChain ? toToken?.network : undefined,\n };\n}\n\nexport function useExtraDeltaPriceParams(): {\n excludeBridges?: string[];\n beneficiary?: Address;\n} {\n // excluded bridges from user preferences\n const excludeBridges = useAtomValue(excludeBridgesAtom);\n // receiver address from user input\n const receiverAddress = useSwapReceiverAddressValue();\n\n return {\n excludeBridges,\n beneficiary: receiverAddress,\n };\n}\n"],"names":["usePricesParams","tradeMode","$","_c","tokenFromAtom","tokenToAtom","tradeModeToTokenAtoms","fromToken","useAtomValue","toToken","payAmountWeiAtom","tradeModeToPayAmountWeiAtom","receiveAmountWeiAtom","tradeModeToReceiveAmountWeiAtom","payAmountWei","receiveAmountWei","t0","address","network","tokenAddress","chainId","data","fromTokenTaxFee","useTokenTaxFee","t1","t2","t3","toTokenTaxFee","t4","sellTax","toString","srcTokenDexTransferFee","t5","buyTax","destTokenDexTransferFee","useAccount","partner","partnerFeeBps","usePartner","degenMode","useDegenMode","isCrossChain","sideAtom","tradeModeToSideAtom","side","amount","t6","t7","decimals","priceParams","srcToken","destToken","srcDecimals","destDecimals","userAddress","otherExchangePrices","maxImpact","DEGEN_MODE_MAX_IMPACT","ignoreBadUsdPrice","t8","undefined","t9","destChainId","useExtraDeltaPriceParams","excludeBridges","excludeBridgesAtom","receiverAddress","useSwapReceiverAddressValue","beneficiary"],"mappings":";;;;;;;;;;;;;;;;AAgDO,SAAAA,gBAAAC,SAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAML,EAAA,MAAA;AAAA,IAAAC,aAAAA;AAAAA,IAAAC;AAAAA,GAAA,GAAuCC,sBAAsBL,SAAS,CAAA;AACtE,EAAA,MAAAM,SAAAA,GAAkBC,aAAaJ,aAAa,CAAA;AAC5C,EAAA,MAAAK,OAAAA,GAAgBD,aAAaH,WAAW,CAAA;AAExC,EAAA,MAAAK,gBAAAA,GAAyBC,4BAA4BV,SAAS,CAAA;AAC9D,EAAA,MAAAW,oBAAAA,GAA6BC,gCAAgCZ,SAAS,CAAA;AAEtE,EAAA,MAAAa,YAAAA,GAAqBN,aAAaE,gBAAgB,CAAA;AAClD,EAAA,MAAAK,gBAAAA,GAAyBP,YAAAA,CAAaI,oBAA2B,CAAA,IAAxC,GAAA;AAA0C,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAd,CAAAA,CAAA,CAAA,CAAA,KAAAK,SAAAA,CAAAU,WAAAf,CAAAA,CAAA,CAAA,CAAA,KAAAK,SAAAA,CAAAW,OAAAA,EAAA;AAElBF,IAAAA,EAAAA,GAAA;AAAA,MAAAG,cACjCZ,SAAAA,CAASU,OAAAA;AAAAA,MAAQG,SACtBb,SAAAA,CAASW;AAAAA,KACpB;AAAChB,IAAAA,CAAAA,CAAA,CAAA,IAAAK,SAAAA,CAAAU,OAAAA;AAAAf,IAAAA,CAAAA,CAAA,CAAA,IAAAK,SAAAA,CAAAW,OAAAA;AAAAhB,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA;AAAA,IAAAmB,IAAAA,EAAAC;AAAAA,GAAA,GAAkCC,eAAeP,EAGhD,CAAA;AAGe,EAAA,MAAAQ,KAAAf,OAAAA,EAAOQ,OAAAA;AACZ,EAAA,MAAAQ,KAAAhB,OAAAA,EAAOS,OAAAA;AAAS,EAAA,IAAAQ,EAAAA;AAAA,EAAA,IAAAxB,EAAA,CAAA,CAAA,KAAAsB,MAAAtB,CAAAA,QAAAuB,EAAAA,EAAA;AAFoBC,IAAAA,EAAAA,GAAA;AAAA,MAAAP,YAAAA,EAC/BK,EAAAA;AAAAA,MAAgBJ,OAAAA,EACrBK;AAAAA,KACX;AAACvB,IAAAA,CAAAA,MAAAsB,EAAAA;AAAAtB,IAAAA,CAAAA,MAAAuB,EAAAA;AAAAvB,IAAAA,CAAAA,MAAAwB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAxB,EAAA,CAAA,CAAA;AAAA,EAAA;AAHD,EAAA,MAAA;AAAA,IAAAmB,IAAAA,EAAAM;AAAAA,GAAA,GAAgCJ,eAAeG,EAG9C,CAAA;AAAE,EAAA,IAAAE,EAAAA;AAAA,EAAA,IAAA1B,CAAAA,CAAA,CAAA,CAAA,KAAAoB,eAAAA,EAAAO,OAAAA,EAAA;AAE4BD,IAAAA,EAAAA,GAAAN,eAAAA,EAAeO,SAAmBC,QAAAA,EAAC;AAAC5B,IAAAA,CAAAA,CAAA,CAAA,IAAAoB,eAAAA,EAAAO,OAAAA;AAAA3B,IAAAA,CAAAA,MAAA0B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA1B,EAAA,CAAA,CAAA;AAAA,EAAA;AAAnE,EAAA,MAAA6B,sBAAAA,GAA+BH,EAAAA;AAAqC,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAA9B,CAAAA,CAAA,CAAA,CAAA,KAAAyB,aAAAA,EAAAM,MAAAA,EAAA;AACpCD,IAAAA,EAAAA,GAAAL,aAAAA,EAAaM,QAAkBH,QAAAA,EAAC;AAAC5B,IAAAA,CAAAA,CAAA,CAAA,IAAAyB,aAAAA,EAAAM,MAAAA;AAAA/B,IAAAA,CAAAA,MAAA8B,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA9B,EAAA,CAAA,CAAA;AAAA,EAAA;AAAjE,EAAA,MAAAgC,uBAAAA,GAAgCF,EAAAA;AAEhC,EAAA,MAAA;AAAA,IAAAf;AAAAA,MAAoBkB,UAAAA,EAAW;AAE/B,EAAA,MAAA;AAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,MAAmCC,UAAAA,EAAW;AAC9C,EAAA,MAAAC,YAAkBC,YAAAA,EAAa;AAE/B,EAAA,MAAAC,eAAqB,CAAC,CAAChC,OAAAA,IAAWF,SAAAA,CAASW,YAAaT,OAAAA,CAAOS,OAAAA;AAE/D,EAAA,MAAAwB,QAAAA,GAAiBC,oBAAoB1C,SAAS,CAAA;AAC9C,EAAA,MAAA2C,IAAAA,GAAapC,aAAakC,QAAQ,CAAA;AAElC,EAAA,MAAAG,MAAAA,GAAeD,IAAAA,KAAS,MAAA,GAAT9B,YAAAA,GAAAC,gBAAAA;AAIF,EAAA,MAAA+B,KAAArC,OAAAA,EAAOQ,OAAAA;AAEJ,EAAA,MAAA8B,KAAAtC,OAAAA,EAAOuC,QAAAA;AAAU,EAAA,IAAAC,WAAAA;AAAA,EAAA,IAAA/C,CAAAA,SAAAe,OAAAA,IAAAf,EAAA,EAAA,CAAA,KAAA2C,MAAAA,IAAA3C,CAAAA,CAAA,EAAA,CAAA,KAAAqC,aAAArC,CAAAA,CAAA,EAAA,MAAAgC,uBAAAA,IAAAhC,CAAAA,CAAA,EAAA,CAAA,KAAAK,SAAAA,CAAAU,OAAAA,IAAAf,CAAAA,CAAA,EAAA,CAAA,KAAAK,UAAAyC,QAAAA,IAAA9C,CAAAA,CAAA,EAAA,CAAA,KAAAkC,OAAAA,IAAAlC,EAAA,EAAA,CAAA,KAAAmC,aAAAA,IAAAnC,CAAAA,CAAA,EAAA,CAAA,KAAA0C,QAAA1C,CAAAA,CAAA,EAAA,CAAA,KAAA6B,sBAAAA,IAAA7B,CAAAA,SAAA4C,EAAAA,IAAA5C,CAAAA,CAAA,EAAA,CAAA,KAAA6C,EAAAA,EAAA;AAJjCE,IAAAA,WAAAA,GAAsC;AAAA,MAAAC,UAC1B3C,SAAAA,CAASU,OAAAA;AAAAA,MAAQkC,SAAAA,EAChBL,EAAAA;AAAAA,MAAgBM,aACd7C,SAAAA,CAASyC,QAAAA;AAAAA,MAASK,YAAAA,EACjBN,EAAAA;AAAAA,MAAiBH,IAAAA;AAAAA,MAAAC,MAAAA;AAAAA,MAAAS,WAAAA,EAGlBrC,OAAAA;AAAAA,MAAOmB,OAAAA;AAAAA,MAAAC,aAAAA;AAAAA,MAAAN,sBAAAA;AAAAA,MAAAG,uBAAAA;AAAAA,MAAAqB,mBAAAA,EAKC;AAAA,KACvB;AAMA,IAAA,IAAIhB,SAAAA,EAAS;AACXU,MAAAA,WAAAA,CAAWO,SAAAA,GAAaC,qBAAAA;AACxBR,MAAAA,WAAAA,CAAWS,iBAAAA,GAAqB,IAAA;AAChCT,MAAAA,WAAAA,CAAWV,SAAAA,GAAa,IAAA;AAAA,IAAH;AACtBrC,IAAAA,CAAAA,OAAAe,OAAAA;AAAAf,IAAAA,CAAAA,OAAA2C,MAAAA;AAAA3C,IAAAA,CAAAA,OAAAqC,SAAAA;AAAArC,IAAAA,CAAAA,OAAAgC,uBAAAA;AAAAhC,IAAAA,CAAAA,CAAA,EAAA,IAAAK,SAAAA,CAAAU,OAAAA;AAAAf,IAAAA,CAAAA,CAAA,EAAA,IAAAK,SAAAA,CAAAyC,QAAAA;AAAA9C,IAAAA,CAAAA,OAAAkC,OAAAA;AAAAlC,IAAAA,CAAAA,OAAAmC,aAAAA;AAAAnC,IAAAA,CAAAA,OAAA0C,IAAAA;AAAA1C,IAAAA,CAAAA,OAAA6B,sBAAAA;AAAA7B,IAAAA,CAAAA,OAAA4C,EAAAA;AAAA5C,IAAAA,CAAAA,OAAA6C,EAAAA;AAAA7C,IAAAA,CAAAA,OAAA+C,WAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,WAAAA,GAAA/C,EAAA,EAAA,CAAA;AAAA,EAAA;AAMc,EAAA,MAAAyD,EAAAA,GAAAlB,YAAAA,GAAehC,OAAAA,EAAOS,OAAAA,GAAtB0C,MAAAA;AAA2C,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAA3D,EAAA,EAAA,CAAA,KAAAK,SAAAA,CAAAW,OAAAA,IAAAhB,EAAA,EAAA,CAAA,KAAAuC,YAAAA,IAAAvC,CAAAA,CAAA,EAAA,CAAA,KAAA+C,WAAAA,IAAA/C,CAAAA,SAAAyD,EAAAA,EAAA;AAJnDE,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,WAAAA;AAAAA,MAAAR,YAAAA;AAAAA,MAAArB,SAGIb,SAAAA,CAASW,OAAAA;AAAAA,MAAQ4C,WAAAA,EACbH;AAAAA,KACf;AAACzD,IAAAA,CAAAA,CAAA,EAAA,IAAAK,SAAAA,CAAAW,OAAAA;AAAAhB,IAAAA,CAAAA,OAAAuC,YAAAA;AAAAvC,IAAAA,CAAAA,OAAA+C,WAAAA;AAAA/C,IAAAA,CAAAA,OAAAyD,EAAAA;AAAAzD,IAAAA,CAAAA,OAAA2D,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA3D,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OALM2D,EAAAA;AAKN;AAGI,SAAAE,wBAAAA,GAAA;AAAA,EAAA,MAAA7D,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAKL,EAAA,MAAA6D,cAAAA,GAAuBxD,aAAayD,kBAAkB,CAAA;AAEtD,EAAA,MAAAC,kBAAwBC,2BAAAA,EAA4B;AAAE,EAAA,IAAAnD,EAAAA;AAAA,EAAA,IAAAd,EAAA,CAAA,CAAA,KAAA8D,kBAAA9D,CAAAA,QAAAgE,eAAAA,EAAA;AAE/ClD,IAAAA,EAAAA,GAAA;AAAA,MAAAgD,cAAAA;AAAAA,MAAAI,WAAAA,EAEQF;AAAAA,KACf;AAAChE,IAAAA,CAAAA,MAAA8D,cAAAA;AAAA9D,IAAAA,CAAAA,MAAAgE,eAAAA;AAAAhE,IAAAA,CAAAA,MAAAc,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAd,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAHMc,EAAAA;AAGN;;;;"}
@@ -1,4 +1,12 @@
1
1
  import { TradeMode } from '../core/state/tradeModeAtom';
2
2
  export declare const supportedTradeModes: ["swap", "limit", "otc", "twap"];
3
+ /**
4
+ * Trade modes that support cross-chain.
5
+ */
6
+ export declare const tradeModesWithCrosschain: Set<TradeMode>;
7
+ /**
8
+ * Trade modes that have a side (BUY/SELL) selection in the form.
9
+ */
10
+ export declare const tradeModesWithSide: Set<TradeMode>;
3
11
  export declare function isTradeMode(mode: string): mode is TradeMode;
4
12
  //# sourceMappingURL=tradeMode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tradeMode.d.ts","sourceRoot":"","sources":["../../src/lib/tradeMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,eAAO,MAAM,mBAAmB,kCAKa,CAAC;AAI9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D"}
1
+ {"version":3,"file":"tradeMode.d.ts","sourceRoot":"","sources":["../../src/lib/tradeMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,eAAO,MAAM,mBAAmB,kCAKa,CAAC;AAI9C;;GAEG;AACH,eAAO,MAAM,wBAAwB,gBAInC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,gBAAuC,CAAC;AAEvE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,SAAS,CAE3D"}
@@ -1,8 +1,10 @@
1
1
  const supportedTradeModes = ["swap", "limit", "otc", "twap"];
2
2
  const validTradeModes = supportedTradeModes;
3
+ const tradeModesWithCrosschain = /* @__PURE__ */ new Set(["swap", "limit", "twap"]);
4
+ const tradeModesWithSide = /* @__PURE__ */ new Set(["swap", "twap"]);
3
5
  function isTradeMode(mode) {
4
6
  return validTradeModes.includes(mode);
5
7
  }
6
8
 
7
- export { isTradeMode, supportedTradeModes };
9
+ export { isTradeMode, supportedTradeModes, tradeModesWithCrosschain, tradeModesWithSide };
8
10
  //# sourceMappingURL=tradeMode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tradeMode.js","sources":["../../src/lib/tradeMode.ts"],"sourcesContent":["import type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport type { NonEmptyArray } from \"ts-essentials\";\n\nexport const supportedTradeModes = [\n \"swap\",\n \"limit\",\n \"otc\",\n \"twap\",\n] as const satisfies NonEmptyArray<TradeMode>;\n\nconst validTradeModes: string[] = supportedTradeModes;\n\nexport function isTradeMode(mode: string): mode is TradeMode {\n return validTradeModes.includes(mode);\n}\n"],"names":["supportedTradeModes","validTradeModes","isTradeMode","mode","includes"],"mappings":"AAGO,MAAMA,mBAAAA,GAAsB,CACjC,MAAA,EACA,OAAA,EACA,OACA,MAAM;AAGR,MAAMC,eAAAA,GAA4BD,mBAAAA;AAE3B,SAASE,YAAYC,IAAAA,EAAiC;AAC3D,EAAA,OAAOF,eAAAA,CAAgBG,SAASD,IAAI,CAAA;AACtC;;;;"}
1
+ {"version":3,"file":"tradeMode.js","sources":["../../src/lib/tradeMode.ts"],"sourcesContent":["import type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport type { NonEmptyArray } from \"ts-essentials\";\n\nexport const supportedTradeModes = [\n \"swap\",\n \"limit\",\n \"otc\",\n \"twap\",\n] as const satisfies NonEmptyArray<TradeMode>;\n\nconst validTradeModes: string[] = supportedTradeModes;\n\n/**\n * Trade modes that support cross-chain.\n */\nexport const tradeModesWithCrosschain = new Set<TradeMode>([\n \"swap\",\n \"limit\",\n \"twap\",\n]);\n\n/**\n * Trade modes that have a side (BUY/SELL) selection in the form.\n */\nexport const tradeModesWithSide = new Set<TradeMode>([\"swap\", \"twap\"]);\n\nexport function isTradeMode(mode: string): mode is TradeMode {\n return validTradeModes.includes(mode);\n}\n"],"names":["supportedTradeModes","validTradeModes","tradeModesWithCrosschain","Set","tradeModesWithSide","isTradeMode","mode","includes"],"mappings":"AAGO,MAAMA,mBAAAA,GAAsB,CACjC,MAAA,EACA,OAAA,EACA,OACA,MAAM;AAGR,MAAMC,eAAAA,GAA4BD,mBAAAA;AAK3B,MAAME,2CAA2B,IAAIC,GAAAA,CAAe,CACzD,MAAA,EACA,OAAA,EACA,MAAM,CACP;AAKM,MAAMC,qCAAqB,IAAID,GAAAA,CAAe,CAAC,MAAA,EAAQ,MAAM,CAAC;AAE9D,SAASE,YAAYC,IAAAA,EAAiC;AAC3D,EAAA,OAAOL,eAAAA,CAAgBM,SAASD,IAAI,CAAA;AACtC;;;;"}
package/dist/styles.css CHANGED
@@ -1040,8 +1040,8 @@
1040
1040
  .velora-widget.velora-widget .grid-cols-2 {
1041
1041
  grid-template-columns: repeat(2, minmax(0, 1fr));
1042
1042
  }
1043
- .velora-widget.velora-widget .grid-cols-3 {
1044
- grid-template-columns: repeat(3, minmax(0, 1fr));
1043
+ .velora-widget.velora-widget .grid-cols-4 {
1044
+ grid-template-columns: repeat(4, minmax(0, 1fr));
1045
1045
  }
1046
1046
  .velora-widget.velora-widget .grid-cols-\[auto_1fr\] {
1047
1047
  grid-template-columns: auto 1fr;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velora-dex/widget",
3
- "version": "0.4.14-dev.2",
3
+ "version": "0.4.14-dev.4",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [