@paraswap/dex-lib 5.0.0-rc.0 → 5.0.1-new-dexs-encoding.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/abi/pancakeswap-infinity/cl-pool-manager.json +80 -0
- package/build/dex/fluid-dex/scripts/measure-calc-time.js +178 -0
- package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +1 -0
- package/build/dex/idex.d.ts +2 -2
- package/build/dex/metric/metric.d.ts +2 -2
- package/build/dex/metric/metric.js +5 -2
- package/build/dex/metric/metric.js.map +1 -1
- package/build/dex/simple-exchange.d.ts +1 -1
- package/build/dex/simple-exchange.js +1 -1
- package/build/dex/simple-exchange.js.map +1 -1
- package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +1 -0
- package/build/dex/uniswap-v4/api-go/compare-pricing.js +187 -0
- package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +1 -0
- package/build/dex/uniswap-v4/api-go/compare-states.d.ts +1 -0
- package/build/dex/uniswap-v4/api-go/compare-states.js +149 -0
- package/build/dex/uniswap-v4/api-go/compare-states.js.map +1 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +140 -0
- package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +1 -0
- package/build/executor/__test-utils__/snapshot-test-helpers.d.ts +10 -0
- package/build/executor/__test-utils__/snapshot-test-helpers.js +72 -0
- package/build/executor/__test-utils__/snapshot-test-helpers.js.map +1 -0
- package/build/executor/address-utils.d.ts +2 -0
- package/build/executor/address-utils.js +7 -0
- package/build/executor/address-utils.js.map +1 -0
- package/build/executor/approval.d.ts +9 -0
- package/build/executor/approval.js +29 -0
- package/build/executor/approval.js.map +1 -0
- package/build/executor/encoding-context.d.ts +4 -0
- package/build/executor/encoding-context.js +54 -0
- package/build/executor/encoding-context.js.map +1 -0
- package/build/executor/encoding-types.d.ts +75 -0
- package/build/{dex/quick-perps/types.js → executor/encoding-types.js} +1 -1
- package/build/executor/encoding-types.js.map +1 -0
- package/build/executor/factory.d.ts +4 -0
- package/build/executor/factory.js +23 -0
- package/build/executor/factory.js.map +1 -0
- package/build/executor/route-plan.d.ts +8 -0
- package/build/executor/route-plan.js +109 -0
- package/build/executor/route-plan.js.map +1 -0
- package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.d.ts +6 -0
- package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js +39 -0
- package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js.map +1 -0
- package/build/generic-swap-transaction-builder/dex-encoder/index.d.ts +4 -0
- package/build/generic-swap-transaction-builder/dex-encoder/index.js +21 -0
- package/build/generic-swap-transaction-builder/dex-encoder/index.js.map +1 -0
- package/build/generic-swap-transaction-builder/dex-encoder/ports.d.ts +26 -0
- package/build/{dex/maker-psm/types.js → generic-swap-transaction-builder/dex-encoder/ports.js} +1 -1
- package/build/generic-swap-transaction-builder/dex-encoder/ports.js.map +1 -0
- package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.d.ts +22 -0
- package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js +299 -0
- package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js.map +1 -0
- package/build/generic-swap-transaction-builder/dex-encoder/types.d.ts +207 -0
- package/build/generic-swap-transaction-builder/dex-encoder/types.js +194 -0
- package/build/generic-swap-transaction-builder/dex-encoder/types.js.map +1 -0
- package/build/generic-swap-transaction-builder/orchestration.d.ts +65 -0
- package/build/generic-swap-transaction-builder/orchestration.js +198 -0
- package/build/generic-swap-transaction-builder/orchestration.js.map +1 -0
- package/build/generic-swap-transaction-builder/resolved/build-transaction.d.ts +13 -0
- package/build/generic-swap-transaction-builder/resolved/build-transaction.js +343 -0
- package/build/generic-swap-transaction-builder/resolved/build-transaction.js.map +1 -0
- package/build/generic-swap-transaction-builder/resolved/index.d.ts +4 -0
- package/build/generic-swap-transaction-builder/resolved/index.js +21 -0
- package/build/generic-swap-transaction-builder/resolved/index.js.map +1 -0
- package/build/generic-swap-transaction-builder/resolved/route-plan.d.ts +2 -0
- package/build/generic-swap-transaction-builder/resolved/route-plan.js +11 -0
- package/build/generic-swap-transaction-builder/resolved/route-plan.js.map +1 -0
- package/build/generic-swap-transaction-builder/resolved/types.d.ts +67 -0
- package/build/generic-swap-transaction-builder/resolved/types.js.map +1 -0
- package/build/generic-swap-transaction-builder/resolved/validation.d.ts +10 -0
- package/build/generic-swap-transaction-builder/resolved/validation.js +69 -0
- package/build/generic-swap-transaction-builder/resolved/validation.js.map +1 -0
- package/build/generic-swap-transaction-builder.d.ts +6 -4
- package/build/generic-swap-transaction-builder.js +8 -6
- package/build/generic-swap-transaction-builder.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.js.map +1 -1
- package/build/types.d.ts +3 -0
- package/package.json +1 -1
- package/build/abi/BProtocol.json +0 -1155
- package/build/abi/Jarvis.json +0 -1172
- package/build/abi/MStableAsset.json +0 -1545
- package/build/abi/OneInchLp.json +0 -1304
- package/build/abi/Onebit.json +0 -736
- package/build/abi/Shell.json +0 -1294
- package/build/abi/TraderJoeV2Router.json +0 -50
- package/build/abi/idle-dao/idle-cdo-factory.json +0 -38
- package/build/abi/idle-dao/idle-cdo.json +0 -1245
- package/build/abi/infusion/InfusionFactory.json +0 -147
- package/build/abi/infusion/InfusionPair.json +0 -658
- package/build/abi/infusion/InfusionRouter.json +0 -442
- package/build/abi/maker-psm/pot.json +0 -322
- package/build/abi/maker-psm/psm.json +0 -243
- package/build/abi/maker-psm/vat.json +0 -363
- package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +0 -773
- package/build/abi/quick-perps/fast-price-events.json +0 -70
- package/build/abi/quick-perps/fast-price-feed.json +0 -741
- package/build/abi/quick-perps/reader.json +0 -313
- package/build/abi/quick-perps/vault-price-feed.json +0 -323
- package/build/abi/quick-perps/vault.json +0 -1953
- package/build/abi/uniswap-v2/excalibur-pool.json +0 -881
- package/build/abi/uniswap-v2/mdex-factory.json +0 -759
- package/build/abi/wUSDM.json +0 -757
- package/build/abi/zrx.v2.json +0 -1967
- package/build/abi/zrx.v3.json +0 -3454
- package/build/abi/zrx.v4.json +0 -2193
- package/build/dex/OneInchLp.d.ts +0 -24
- package/build/dex/OneInchLp.js +0 -43
- package/build/dex/OneInchLp.js.map +0 -1
- package/build/dex/bProtocol/bProtocol.d.ts +0 -15
- package/build/dex/bProtocol/bProtocol.js +0 -56
- package/build/dex/bProtocol/bProtocol.js.map +0 -1
- package/build/dex/bProtocol/types.d.ts +0 -11
- package/build/dex/bProtocol/types.js +0 -8
- package/build/dex/bProtocol/types.js.map +0 -1
- package/build/dex/ekubo/pools/base-pool.d.ts +0 -47
- package/build/dex/ekubo/pools/base-pool.js +0 -184
- package/build/dex/ekubo/pools/base-pool.js.map +0 -1
- package/build/dex/ekubo/pools/iface.d.ts +0 -46
- package/build/dex/ekubo/pools/iface.js +0 -75
- package/build/dex/ekubo/pools/iface.js.map +0 -1
- package/build/dex/ekubo/pools/math/price.d.ts +0 -7
- package/build/dex/ekubo/pools/math/price.js +0 -112
- package/build/dex/ekubo/pools/math/price.js.map +0 -1
- package/build/dex/ekubo/pools/oracle-pool.d.ts +0 -10
- package/build/dex/ekubo/pools/oracle-pool.js +0 -19
- package/build/dex/ekubo/pools/oracle-pool.js.map +0 -1
- package/build/dex/ekubo/pools/pool-utils.d.ts +0 -44
- package/build/dex/ekubo/pools/pool-utils.js +0 -240
- package/build/dex/ekubo/pools/pool-utils.js.map +0 -1
- package/build/dex/idle-dao/config.d.ts +0 -5
- package/build/dex/idle-dao/config.js +0 -24
- package/build/dex/idle-dao/config.js.map +0 -1
- package/build/dex/idle-dao/idle-dao.d.ts +0 -42
- package/build/dex/idle-dao/idle-dao.js +0 -279
- package/build/dex/idle-dao/idle-dao.js.map +0 -1
- package/build/dex/idle-dao/token_list.d.ts +0 -4
- package/build/dex/idle-dao/token_list.js +0 -289
- package/build/dex/idle-dao/token_list.js.map +0 -1
- package/build/dex/idle-dao/tokens.d.ts +0 -9
- package/build/dex/idle-dao/tokens.js +0 -68
- package/build/dex/idle-dao/tokens.js.map +0 -1
- package/build/dex/idle-dao/types.d.ts +0 -35
- package/build/dex/idle-dao/types.js +0 -11
- package/build/dex/idle-dao/types.js.map +0 -1
- package/build/dex/idle-dao/utils.d.ts +0 -8
- package/build/dex/idle-dao/utils.js +0 -149
- package/build/dex/idle-dao/utils.js.map +0 -1
- package/build/dex/infusion/config.d.ts +0 -3
- package/build/dex/infusion/config.js +0 -20
- package/build/dex/infusion/config.js.map +0 -1
- package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
- package/build/dex/infusion/infusion-stable-pool.js +0 -74
- package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
- package/build/dex/infusion/infusion.d.ts +0 -51
- package/build/dex/infusion/infusion.js +0 -500
- package/build/dex/infusion/infusion.js.map +0 -1
- package/build/dex/infusion/types.d.ts +0 -45
- package/build/dex/infusion/types.js.map +0 -1
- package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
- package/build/dex/infusion/utils/isStablePair.js +0 -18
- package/build/dex/infusion/utils/isStablePair.js.map +0 -1
- package/build/dex/jarvis.d.ts +0 -56
- package/build/dex/jarvis.js +0 -163
- package/build/dex/jarvis.js.map +0 -1
- package/build/dex/mStable.d.ts +0 -44
- package/build/dex/mStable.js +0 -75
- package/build/dex/mStable.js.map +0 -1
- package/build/dex/maker-psm/config.d.ts +0 -11
- package/build/dex/maker-psm/config.js +0 -53
- package/build/dex/maker-psm/config.js.map +0 -1
- package/build/dex/maker-psm/maker-psm.d.ts +0 -103
- package/build/dex/maker-psm/maker-psm.js +0 -493
- package/build/dex/maker-psm/maker-psm.js.map +0 -1
- package/build/dex/maker-psm/types.d.ts +0 -39
- package/build/dex/maker-psm/types.js.map +0 -1
- package/build/dex/onebit/onebit.d.ts +0 -16
- package/build/dex/onebit/onebit.js +0 -61
- package/build/dex/onebit/onebit.js.map +0 -1
- package/build/dex/onebit/types.d.ts +0 -14
- package/build/dex/onebit/types.js +0 -8
- package/build/dex/onebit/types.js.map +0 -1
- package/build/dex/quick-perps/config.d.ts +0 -11
- package/build/dex/quick-perps/config.js +0 -27
- package/build/dex/quick-perps/config.js.map +0 -1
- package/build/dex/quick-perps/fast-price-feed.d.ts +0 -26
- package/build/dex/quick-perps/fast-price-feed.js +0 -184
- package/build/dex/quick-perps/fast-price-feed.js.map +0 -1
- package/build/dex/quick-perps/pool.d.ts +0 -21
- package/build/dex/quick-perps/pool.js +0 -229
- package/build/dex/quick-perps/pool.js.map +0 -1
- package/build/dex/quick-perps/quick-perps.d.ts +0 -53
- package/build/dex/quick-perps/quick-perps.js +0 -247
- package/build/dex/quick-perps/quick-perps.js.map +0 -1
- package/build/dex/quick-perps/types.d.ts +0 -98
- package/build/dex/quick-perps/types.js.map +0 -1
- package/build/dex/quick-perps/usdq.d.ts +0 -15
- package/build/dex/quick-perps/usdq.js +0 -62
- package/build/dex/quick-perps/usdq.js.map +0 -1
- package/build/dex/quick-perps/vault-price-feed.d.ts +0 -43
- package/build/dex/quick-perps/vault-price-feed.js +0 -203
- package/build/dex/quick-perps/vault-price-feed.js.map +0 -1
- package/build/dex/quick-perps/vault-utils.d.ts +0 -8
- package/build/dex/quick-perps/vault-utils.js +0 -42
- package/build/dex/quick-perps/vault-utils.js.map +0 -1
- package/build/dex/quick-perps/vault.d.ts +0 -46
- package/build/dex/quick-perps/vault.js +0 -182
- package/build/dex/quick-perps/vault.js.map +0 -1
- package/build/dex/se-vlr/config.d.ts +0 -3
- package/build/dex/se-vlr/config.js +0 -24
- package/build/dex/se-vlr/config.js.map +0 -1
- package/build/dex/se-vlr/se-vlr-pool.d.ts +0 -39
- package/build/dex/se-vlr/se-vlr-pool.js +0 -70
- package/build/dex/se-vlr/se-vlr-pool.js.map +0 -1
- package/build/dex/se-vlr/se-vlr.d.ts +0 -35
- package/build/dex/se-vlr/se-vlr.js +0 -131
- package/build/dex/se-vlr/se-vlr.js.map +0 -1
- package/build/dex/se-vlr/types.d.ts +0 -6
- package/build/dex/se-vlr/types.js +0 -3
- package/build/dex/se-vlr/types.js.map +0 -1
- package/build/dex/shell.d.ts +0 -25
- package/build/dex/shell.js +0 -41
- package/build/dex/shell.js.map +0 -1
- package/build/dex/solidly/forks-override/aerodrome.d.ts +0 -14
- package/build/dex/solidly/forks-override/aerodrome.js +0 -46
- package/build/dex/solidly/forks-override/aerodrome.js.map +0 -1
- package/build/dex/solidly/forks-override/chronos.d.ts +0 -23
- package/build/dex/solidly/forks-override/chronos.js +0 -141
- package/build/dex/solidly/forks-override/chronos.js.map +0 -1
- package/build/dex/solidly/forks-override/usdfi.d.ts +0 -8
- package/build/dex/solidly/forks-override/usdfi.js +0 -15
- package/build/dex/solidly/forks-override/usdfi.js.map +0 -1
- package/build/dex/solidly/forks-override/velocimeter.d.ts +0 -23
- package/build/dex/solidly/forks-override/velocimeter.js +0 -77
- package/build/dex/solidly/forks-override/velocimeter.js.map +0 -1
- package/build/dex/tessera/types.d.ts +0 -3
- package/build/dex/tessera/types.js +0 -3
- package/build/dex/tessera/types.js.map +0 -1
- package/build/dex/trader-joe-v2.d.ts +0 -40
- package/build/dex/trader-joe-v2.js +0 -74
- package/build/dex/trader-joe-v2.js.map +0 -1
- package/build/dex/uniswap-v2/dfyn.d.ts +0 -19
- package/build/dex/uniswap-v2/dfyn.js +0 -61
- package/build/dex/uniswap-v2/dfyn.js.map +0 -1
- package/build/dex/uniswap-v2/excalibur.d.ts +0 -24
- package/build/dex/uniswap-v2/excalibur.js +0 -47
- package/build/dex/uniswap-v2/excalibur.js.map +0 -1
- package/build/dex/uniswap-v2/mdex.d.ts +0 -24
- package/build/dex/uniswap-v2/mdex.js +0 -50
- package/build/dex/uniswap-v2/mdex.js.map +0 -1
- package/build/dex/uniswap-v2/nomiswap-v2.d.ts +0 -24
- package/build/dex/uniswap-v2/nomiswap-v2.js +0 -57
- package/build/dex/uniswap-v2/nomiswap-v2.js.map +0 -1
- package/build/dex/uniswap-v3/scripts/bench-all-dexes.js +0 -160
- package/build/dex/uniswap-v3/scripts/bench-all-dexes.js.map +0 -1
- package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
- package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
- package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
- package/build/dex/uniswap-v4/contract-math/Position.d.ts +0 -3
- package/build/dex/uniswap-v4/contract-math/Position.js +0 -10
- package/build/dex/uniswap-v4/contract-math/Position.js.map +0 -1
- package/build/dex/usual-bond/config.d.ts +0 -3
- package/build/dex/usual-bond/config.js +0 -13
- package/build/dex/usual-bond/config.js.map +0 -1
- package/build/dex/usual-bond/types.d.ts +0 -7
- package/build/dex/usual-bond/types.js +0 -3
- package/build/dex/usual-bond/types.js.map +0 -1
- package/build/dex/usual-bond/usual-bond.d.ts +0 -35
- package/build/dex/usual-bond/usual-bond.js +0 -176
- package/build/dex/usual-bond/usual-bond.js.map +0 -1
- package/build/dex/wusdm/config.d.ts +0 -3
- package/build/dex/wusdm/config.js +0 -43
- package/build/dex/wusdm/config.js.map +0 -1
- package/build/dex/wusdm/constants.d.ts +0 -2
- package/build/dex/wusdm/constants.js +0 -6
- package/build/dex/wusdm/constants.js.map +0 -1
- package/build/dex/wusdm/types.d.ts +0 -18
- package/build/dex/wusdm/types.js +0 -11
- package/build/dex/wusdm/types.js.map +0 -1
- package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
- package/build/dex/wusdm/wusdm-pool.js +0 -74
- package/build/dex/wusdm/wusdm-pool.js.map +0 -1
- package/build/dex/wusdm/wusdm.d.ts +0 -46
- package/build/dex/wusdm/wusdm.js +0 -243
- package/build/dex/wusdm/wusdm.js.map +0 -1
- package/build/dex/zerox/config.d.ts +0 -2
- package/build/dex/zerox/config.js +0 -33
- package/build/dex/zerox/config.js.map +0 -1
- package/build/dex/zerox/index.d.ts +0 -22
- package/build/dex/zerox/index.js +0 -225
- package/build/dex/zerox/index.js.map +0 -1
- package/build/dex/zerox/order.d.ts +0 -88
- package/build/dex/zerox/order.js +0 -53
- package/build/dex/zerox/order.js.map +0 -1
- package/build/dex/zerox/types.d.ts +0 -73
- package/build/dex/zerox/types.js +0 -21
- package/build/dex/zerox/types.js.map +0 -1
- /package/build/dex/{uniswap-v3/scripts/bench-all-dexes.d.ts → fluid-dex/scripts/measure-calc-time.d.ts} +0 -0
- /package/build/{dex/infusion → generic-swap-transaction-builder/resolved}/types.js +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import type { SwapSide } from '@paraswap/core';
|
|
2
|
+
import type { Address } from '../../types';
|
|
3
|
+
import { SpecialDex } from '../../executor/types';
|
|
4
|
+
import type { DirectContractMethodV6 } from './direct-methods';
|
|
5
|
+
export type DecimalString = string;
|
|
6
|
+
export type HexString = `0x${string}`;
|
|
7
|
+
export type DexEncoderJsonValue = null | boolean | number | string | DexEncoderJsonValue[] | {
|
|
8
|
+
[key: string]: DexEncoderJsonValue;
|
|
9
|
+
};
|
|
10
|
+
export type DexEncoderSwapExchangeData = DexEncoderJsonValue;
|
|
11
|
+
export type NeedWrapNativeAuditDexKey = 'CurveV1Factory' | 'CurveV1StableNg';
|
|
12
|
+
export declare const AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES: readonly ["CurveV1Factory", "CurveV1StableNg"];
|
|
13
|
+
export type AddressNormalizationPolicy = 'lowercase';
|
|
14
|
+
export type AmountNormalizationPolicy = 'decimal-string';
|
|
15
|
+
export type BytesNormalizationPolicy = '0x-prefixed-hex';
|
|
16
|
+
export type UnknownFieldPolicy = 'reject';
|
|
17
|
+
export type SwapExchangeDataPolicy = 'dex-owned-pass-through';
|
|
18
|
+
export type OptionalFieldPolicy = 'omit-or-null-normalized-to-undefined';
|
|
19
|
+
export type DexEncoderDtoNormalizationPolicy = {
|
|
20
|
+
addressFields: AddressNormalizationPolicy;
|
|
21
|
+
amountFields: AmountNormalizationPolicy;
|
|
22
|
+
calldataFields: BytesNormalizationPolicy;
|
|
23
|
+
swapExchangeData: SwapExchangeDataPolicy;
|
|
24
|
+
unknownFields: UnknownFieldPolicy;
|
|
25
|
+
optionalFields: OptionalFieldPolicy;
|
|
26
|
+
};
|
|
27
|
+
export declare const DEX_ENCODER_DTO_NORMALIZATION_POLICY: DexEncoderDtoNormalizationPolicy;
|
|
28
|
+
export type DexEncoderDtoFieldContract = {
|
|
29
|
+
addressFields: readonly string[];
|
|
30
|
+
amountFields: readonly string[];
|
|
31
|
+
booleanFields: readonly string[];
|
|
32
|
+
calldataFields: readonly string[];
|
|
33
|
+
nullableInputFields: readonly string[];
|
|
34
|
+
numberFields: readonly string[];
|
|
35
|
+
passThroughFields: readonly string[];
|
|
36
|
+
strictOutputFields: readonly string[];
|
|
37
|
+
};
|
|
38
|
+
export declare const KNOWN_SPECIAL_DEX_FLAGS: readonly [SpecialDex.DEFAULT, SpecialDex.SWAP_ON_SWAAP_V2_SINGLE, SpecialDex.SWAP_ON_BALANCER_V1, SpecialDex.SWAP_ON_MAKER_PSM, SpecialDex.SEND_NATIVE, SpecialDex.SWAP_ON_BALANCER_V2, SpecialDex.SWAP_ON_UNISWAP_V2_FORK, SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK, SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK_WITH_FEE, SpecialDex.SWAP_ON_AUGUSTUS_RFQ, SpecialDex.EXECUTE_VERTICAL_BRANCHING, SpecialDex.BUY_ON_SOLIDLY_V3, SpecialDex.SWAP_ON_DEXALOT, SpecialDex.SWAP_ON_HASHFLOW];
|
|
39
|
+
export declare const SPECIAL_DEX_FLAG_RESERVED_RANGE: {
|
|
40
|
+
readonly min: 0;
|
|
41
|
+
readonly max: 255;
|
|
42
|
+
};
|
|
43
|
+
export type NeedWrapNativeRouteContext = {
|
|
44
|
+
network: number;
|
|
45
|
+
side: SwapSide;
|
|
46
|
+
routeIndex: number;
|
|
47
|
+
routePercent: number;
|
|
48
|
+
blockNumber: number;
|
|
49
|
+
srcToken: Address;
|
|
50
|
+
destToken: Address;
|
|
51
|
+
srcAmount: DecimalString;
|
|
52
|
+
destAmount: DecimalString;
|
|
53
|
+
};
|
|
54
|
+
export type NeedWrapNativeSwapContext = {
|
|
55
|
+
swapIndex: number;
|
|
56
|
+
srcToken: Address;
|
|
57
|
+
destToken: Address;
|
|
58
|
+
srcAmount: DecimalString;
|
|
59
|
+
destAmount: DecimalString;
|
|
60
|
+
};
|
|
61
|
+
export type NeedWrapNativeSwapExchangeContext = {
|
|
62
|
+
swapExchangeIndex: number;
|
|
63
|
+
exchange: string;
|
|
64
|
+
srcAmount: DecimalString;
|
|
65
|
+
destAmount: DecimalString;
|
|
66
|
+
percent: number;
|
|
67
|
+
data: DexEncoderSwapExchangeData;
|
|
68
|
+
};
|
|
69
|
+
export type NeedWrapNativeInput = {
|
|
70
|
+
route: NeedWrapNativeRouteContext;
|
|
71
|
+
swap: NeedWrapNativeSwapContext;
|
|
72
|
+
swapExchange: NeedWrapNativeSwapExchangeContext;
|
|
73
|
+
};
|
|
74
|
+
export declare const NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT: {
|
|
75
|
+
readonly addressFields: readonly ["route.srcToken", "route.destToken", "swap.srcToken", "swap.destToken"];
|
|
76
|
+
readonly amountFields: readonly ["route.srcAmount", "route.destAmount", "swap.srcAmount", "swap.destAmount", "swapExchange.srcAmount", "swapExchange.destAmount"];
|
|
77
|
+
readonly booleanFields: readonly [];
|
|
78
|
+
readonly calldataFields: readonly [];
|
|
79
|
+
readonly nullableInputFields: readonly ["swapExchange.data"];
|
|
80
|
+
readonly numberFields: readonly ["route.network", "route.routeIndex", "route.routePercent", "route.blockNumber", "swap.swapIndex", "swapExchange.swapExchangeIndex", "swapExchange.percent"];
|
|
81
|
+
readonly passThroughFields: readonly ["swapExchange.data"];
|
|
82
|
+
readonly strictOutputFields: readonly [];
|
|
83
|
+
};
|
|
84
|
+
export type DexParamInput = NeedWrapNativeInput & {
|
|
85
|
+
dexKey: string;
|
|
86
|
+
srcToken: Address;
|
|
87
|
+
destToken: Address;
|
|
88
|
+
srcAmount: DecimalString;
|
|
89
|
+
destAmount: DecimalString;
|
|
90
|
+
recipient: Address;
|
|
91
|
+
executorAddress: Address;
|
|
92
|
+
side: SwapSide;
|
|
93
|
+
data: DexEncoderSwapExchangeData;
|
|
94
|
+
};
|
|
95
|
+
export declare const DEX_PARAM_INPUT_FIELD_CONTRACT: {
|
|
96
|
+
readonly addressFields: readonly ["route.srcToken", "route.destToken", "swap.srcToken", "swap.destToken", "srcToken", "destToken", "recipient", "executorAddress"];
|
|
97
|
+
readonly amountFields: readonly ["route.srcAmount", "route.destAmount", "swap.srcAmount", "swap.destAmount", "swapExchange.srcAmount", "swapExchange.destAmount", "srcAmount", "destAmount"];
|
|
98
|
+
readonly booleanFields: readonly [];
|
|
99
|
+
readonly calldataFields: readonly [];
|
|
100
|
+
readonly nullableInputFields: readonly ["swapExchange.data", "data"];
|
|
101
|
+
readonly numberFields: readonly ["route.network", "route.routeIndex", "route.routePercent", "route.blockNumber", "swap.swapIndex", "swapExchange.swapExchangeIndex", "swapExchange.percent"];
|
|
102
|
+
readonly passThroughFields: readonly ["swapExchange.data", "data"];
|
|
103
|
+
readonly strictOutputFields: readonly [];
|
|
104
|
+
};
|
|
105
|
+
export type DexExchangeParam = {
|
|
106
|
+
needWrapNative: boolean;
|
|
107
|
+
needUnwrapNative?: boolean;
|
|
108
|
+
skipApproval?: boolean;
|
|
109
|
+
wethAddress?: Address;
|
|
110
|
+
exchangeData: HexString;
|
|
111
|
+
targetExchange: Address;
|
|
112
|
+
dexFuncHasRecipient: boolean;
|
|
113
|
+
specialDexFlag?: SpecialDex;
|
|
114
|
+
transferSrcTokenBeforeSwap?: Address;
|
|
115
|
+
spender?: Address;
|
|
116
|
+
sendEthButSupportsInsertFromAmount?: boolean;
|
|
117
|
+
specialDexSupportsInsertFromAmount?: boolean;
|
|
118
|
+
swappedAmountNotPresentInExchangeData?: boolean;
|
|
119
|
+
returnAmountPos?: number;
|
|
120
|
+
insertFromAmountPos?: number;
|
|
121
|
+
amountsPacked128?: boolean;
|
|
122
|
+
permit2Approval?: boolean;
|
|
123
|
+
};
|
|
124
|
+
export declare const DEX_EXCHANGE_PARAM_FIELD_CONTRACT: {
|
|
125
|
+
readonly addressFields: readonly ["wethAddress", "targetExchange", "transferSrcTokenBeforeSwap", "spender"];
|
|
126
|
+
readonly amountFields: readonly [];
|
|
127
|
+
readonly booleanFields: readonly ["needWrapNative", "needUnwrapNative", "skipApproval", "dexFuncHasRecipient", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "amountsPacked128", "permit2Approval"];
|
|
128
|
+
readonly calldataFields: readonly ["exchangeData"];
|
|
129
|
+
readonly nullableInputFields: readonly ["needUnwrapNative", "skipApproval", "wethAddress", "specialDexFlag", "transferSrcTokenBeforeSwap", "spender", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "returnAmountPos", "insertFromAmountPos", "amountsPacked128", "permit2Approval"];
|
|
130
|
+
readonly numberFields: readonly ["specialDexFlag", "returnAmountPos", "insertFromAmountPos"];
|
|
131
|
+
readonly passThroughFields: readonly [];
|
|
132
|
+
readonly strictOutputFields: readonly ["needWrapNative", "needUnwrapNative", "skipApproval", "wethAddress", "exchangeData", "targetExchange", "dexFuncHasRecipient", "specialDexFlag", "transferSrcTokenBeforeSwap", "spender", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "returnAmountPos", "insertFromAmountPos", "amountsPacked128", "permit2Approval"];
|
|
133
|
+
};
|
|
134
|
+
export type DirectParamInput = {
|
|
135
|
+
dexKey: string;
|
|
136
|
+
network: number;
|
|
137
|
+
contractMethod: DirectContractMethodV6;
|
|
138
|
+
srcToken: Address;
|
|
139
|
+
destToken: Address;
|
|
140
|
+
srcAmount: DecimalString;
|
|
141
|
+
destAmount: DecimalString;
|
|
142
|
+
quotedAmount: DecimalString;
|
|
143
|
+
data: DexEncoderSwapExchangeData;
|
|
144
|
+
side: SwapSide;
|
|
145
|
+
permit: HexString;
|
|
146
|
+
uuid: string;
|
|
147
|
+
partnerAndFee: DecimalString;
|
|
148
|
+
beneficiary: Address;
|
|
149
|
+
blockNumber: number;
|
|
150
|
+
};
|
|
151
|
+
export declare const DIRECT_PARAM_INPUT_FIELD_CONTRACT: {
|
|
152
|
+
readonly addressFields: readonly ["srcToken", "destToken", "beneficiary"];
|
|
153
|
+
readonly amountFields: readonly ["srcAmount", "destAmount", "quotedAmount", "partnerAndFee"];
|
|
154
|
+
readonly booleanFields: readonly [];
|
|
155
|
+
readonly calldataFields: readonly ["permit"];
|
|
156
|
+
readonly nullableInputFields: readonly ["data"];
|
|
157
|
+
readonly numberFields: readonly ["network", "blockNumber"];
|
|
158
|
+
readonly passThroughFields: readonly ["data"];
|
|
159
|
+
readonly strictOutputFields: readonly [];
|
|
160
|
+
};
|
|
161
|
+
export type DirectParamResult = {
|
|
162
|
+
params: DexEncoderJsonValue[];
|
|
163
|
+
};
|
|
164
|
+
export declare const DIRECT_PARAM_RESULT_FIELD_CONTRACT: {
|
|
165
|
+
readonly addressFields: readonly [];
|
|
166
|
+
readonly amountFields: readonly [];
|
|
167
|
+
readonly booleanFields: readonly [];
|
|
168
|
+
readonly calldataFields: readonly [];
|
|
169
|
+
readonly nullableInputFields: readonly [];
|
|
170
|
+
readonly numberFields: readonly [];
|
|
171
|
+
readonly passThroughFields: readonly ["params"];
|
|
172
|
+
readonly strictOutputFields: readonly ["params"];
|
|
173
|
+
};
|
|
174
|
+
export type WethDepositWithdrawInput = {
|
|
175
|
+
srcAmountWeth: DecimalString;
|
|
176
|
+
destAmountWeth: DecimalString;
|
|
177
|
+
side: SwapSide;
|
|
178
|
+
};
|
|
179
|
+
export type WethCallData = {
|
|
180
|
+
callee: Address;
|
|
181
|
+
calldata: HexString;
|
|
182
|
+
value: DecimalString;
|
|
183
|
+
};
|
|
184
|
+
export type WethDepositWithdrawResult = {
|
|
185
|
+
deposit?: WethCallData;
|
|
186
|
+
withdraw?: WethCallData;
|
|
187
|
+
};
|
|
188
|
+
export declare const WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT: {
|
|
189
|
+
readonly addressFields: readonly [];
|
|
190
|
+
readonly amountFields: readonly ["srcAmountWeth", "destAmountWeth"];
|
|
191
|
+
readonly booleanFields: readonly [];
|
|
192
|
+
readonly calldataFields: readonly [];
|
|
193
|
+
readonly nullableInputFields: readonly [];
|
|
194
|
+
readonly numberFields: readonly [];
|
|
195
|
+
readonly passThroughFields: readonly [];
|
|
196
|
+
readonly strictOutputFields: readonly [];
|
|
197
|
+
};
|
|
198
|
+
export declare const WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT: {
|
|
199
|
+
readonly addressFields: readonly ["deposit.callee", "withdraw.callee"];
|
|
200
|
+
readonly amountFields: readonly ["deposit.value", "withdraw.value"];
|
|
201
|
+
readonly booleanFields: readonly [];
|
|
202
|
+
readonly calldataFields: readonly ["deposit.calldata", "withdraw.calldata"];
|
|
203
|
+
readonly nullableInputFields: readonly ["deposit", "withdraw"];
|
|
204
|
+
readonly numberFields: readonly [];
|
|
205
|
+
readonly passThroughFields: readonly [];
|
|
206
|
+
readonly strictOutputFields: readonly ["deposit", "withdraw"];
|
|
207
|
+
};
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT = exports.WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT = exports.DIRECT_PARAM_RESULT_FIELD_CONTRACT = exports.DIRECT_PARAM_INPUT_FIELD_CONTRACT = exports.DEX_EXCHANGE_PARAM_FIELD_CONTRACT = exports.DEX_PARAM_INPUT_FIELD_CONTRACT = exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT = exports.SPECIAL_DEX_FLAG_RESERVED_RANGE = exports.KNOWN_SPECIAL_DEX_FLAGS = exports.DEX_ENCODER_DTO_NORMALIZATION_POLICY = exports.AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES = void 0;
|
|
4
|
+
const types_1 = require("../../executor/types");
|
|
5
|
+
// Phase 0 audit: concrete V6 DEX keys under src/dex/** whose needWrapNative
|
|
6
|
+
// member is function-shaped instead of a static boolean.
|
|
7
|
+
exports.AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES = [
|
|
8
|
+
'CurveV1Factory',
|
|
9
|
+
'CurveV1StableNg',
|
|
10
|
+
];
|
|
11
|
+
exports.DEX_ENCODER_DTO_NORMALIZATION_POLICY = {
|
|
12
|
+
addressFields: 'lowercase',
|
|
13
|
+
amountFields: 'decimal-string',
|
|
14
|
+
calldataFields: '0x-prefixed-hex',
|
|
15
|
+
swapExchangeData: 'dex-owned-pass-through',
|
|
16
|
+
unknownFields: 'reject',
|
|
17
|
+
optionalFields: 'omit-or-null-normalized-to-undefined',
|
|
18
|
+
};
|
|
19
|
+
// Keep this list in lockstep with SpecialDex until Phase 5 adds an enum/list
|
|
20
|
+
// parity test alongside the needWrapNative audit scanner.
|
|
21
|
+
exports.KNOWN_SPECIAL_DEX_FLAGS = [
|
|
22
|
+
types_1.SpecialDex.DEFAULT,
|
|
23
|
+
types_1.SpecialDex.SWAP_ON_SWAAP_V2_SINGLE,
|
|
24
|
+
types_1.SpecialDex.SWAP_ON_BALANCER_V1,
|
|
25
|
+
types_1.SpecialDex.SWAP_ON_MAKER_PSM,
|
|
26
|
+
types_1.SpecialDex.SEND_NATIVE,
|
|
27
|
+
types_1.SpecialDex.SWAP_ON_BALANCER_V2,
|
|
28
|
+
types_1.SpecialDex.SWAP_ON_UNISWAP_V2_FORK,
|
|
29
|
+
types_1.SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK,
|
|
30
|
+
types_1.SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK_WITH_FEE,
|
|
31
|
+
types_1.SpecialDex.SWAP_ON_AUGUSTUS_RFQ,
|
|
32
|
+
types_1.SpecialDex.EXECUTE_VERTICAL_BRANCHING,
|
|
33
|
+
types_1.SpecialDex.BUY_ON_SOLIDLY_V3,
|
|
34
|
+
types_1.SpecialDex.SWAP_ON_DEXALOT,
|
|
35
|
+
types_1.SpecialDex.SWAP_ON_HASHFLOW,
|
|
36
|
+
];
|
|
37
|
+
exports.SPECIAL_DEX_FLAG_RESERVED_RANGE = {
|
|
38
|
+
min: 0,
|
|
39
|
+
max: 255,
|
|
40
|
+
};
|
|
41
|
+
exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT = {
|
|
42
|
+
addressFields: [
|
|
43
|
+
'route.srcToken',
|
|
44
|
+
'route.destToken',
|
|
45
|
+
'swap.srcToken',
|
|
46
|
+
'swap.destToken',
|
|
47
|
+
],
|
|
48
|
+
amountFields: [
|
|
49
|
+
'route.srcAmount',
|
|
50
|
+
'route.destAmount',
|
|
51
|
+
'swap.srcAmount',
|
|
52
|
+
'swap.destAmount',
|
|
53
|
+
'swapExchange.srcAmount',
|
|
54
|
+
'swapExchange.destAmount',
|
|
55
|
+
],
|
|
56
|
+
booleanFields: [],
|
|
57
|
+
calldataFields: [],
|
|
58
|
+
nullableInputFields: ['swapExchange.data'],
|
|
59
|
+
numberFields: [
|
|
60
|
+
'route.network',
|
|
61
|
+
'route.routeIndex',
|
|
62
|
+
'route.routePercent',
|
|
63
|
+
'route.blockNumber',
|
|
64
|
+
'swap.swapIndex',
|
|
65
|
+
'swapExchange.swapExchangeIndex',
|
|
66
|
+
'swapExchange.percent',
|
|
67
|
+
],
|
|
68
|
+
passThroughFields: ['swapExchange.data'],
|
|
69
|
+
strictOutputFields: [],
|
|
70
|
+
};
|
|
71
|
+
exports.DEX_PARAM_INPUT_FIELD_CONTRACT = {
|
|
72
|
+
addressFields: [
|
|
73
|
+
...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.addressFields,
|
|
74
|
+
'srcToken',
|
|
75
|
+
'destToken',
|
|
76
|
+
'recipient',
|
|
77
|
+
'executorAddress',
|
|
78
|
+
],
|
|
79
|
+
amountFields: [
|
|
80
|
+
...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.amountFields,
|
|
81
|
+
'srcAmount',
|
|
82
|
+
'destAmount',
|
|
83
|
+
],
|
|
84
|
+
booleanFields: exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.booleanFields,
|
|
85
|
+
calldataFields: [],
|
|
86
|
+
nullableInputFields: [
|
|
87
|
+
...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.nullableInputFields,
|
|
88
|
+
'data',
|
|
89
|
+
],
|
|
90
|
+
numberFields: exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.numberFields,
|
|
91
|
+
passThroughFields: [
|
|
92
|
+
...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.passThroughFields,
|
|
93
|
+
'data',
|
|
94
|
+
],
|
|
95
|
+
strictOutputFields: [],
|
|
96
|
+
};
|
|
97
|
+
exports.DEX_EXCHANGE_PARAM_FIELD_CONTRACT = {
|
|
98
|
+
addressFields: [
|
|
99
|
+
'wethAddress',
|
|
100
|
+
'targetExchange',
|
|
101
|
+
'transferSrcTokenBeforeSwap',
|
|
102
|
+
'spender',
|
|
103
|
+
],
|
|
104
|
+
amountFields: [],
|
|
105
|
+
booleanFields: [
|
|
106
|
+
'needWrapNative',
|
|
107
|
+
'needUnwrapNative',
|
|
108
|
+
'skipApproval',
|
|
109
|
+
'dexFuncHasRecipient',
|
|
110
|
+
'sendEthButSupportsInsertFromAmount',
|
|
111
|
+
'specialDexSupportsInsertFromAmount',
|
|
112
|
+
'swappedAmountNotPresentInExchangeData',
|
|
113
|
+
'amountsPacked128',
|
|
114
|
+
'permit2Approval',
|
|
115
|
+
],
|
|
116
|
+
calldataFields: ['exchangeData'],
|
|
117
|
+
nullableInputFields: [
|
|
118
|
+
'needUnwrapNative',
|
|
119
|
+
'skipApproval',
|
|
120
|
+
'wethAddress',
|
|
121
|
+
'specialDexFlag',
|
|
122
|
+
'transferSrcTokenBeforeSwap',
|
|
123
|
+
'spender',
|
|
124
|
+
'sendEthButSupportsInsertFromAmount',
|
|
125
|
+
'specialDexSupportsInsertFromAmount',
|
|
126
|
+
'swappedAmountNotPresentInExchangeData',
|
|
127
|
+
'returnAmountPos',
|
|
128
|
+
'insertFromAmountPos',
|
|
129
|
+
'amountsPacked128',
|
|
130
|
+
'permit2Approval',
|
|
131
|
+
],
|
|
132
|
+
numberFields: ['specialDexFlag', 'returnAmountPos', 'insertFromAmountPos'],
|
|
133
|
+
passThroughFields: [],
|
|
134
|
+
strictOutputFields: [
|
|
135
|
+
'needWrapNative',
|
|
136
|
+
'needUnwrapNative',
|
|
137
|
+
'skipApproval',
|
|
138
|
+
'wethAddress',
|
|
139
|
+
'exchangeData',
|
|
140
|
+
'targetExchange',
|
|
141
|
+
'dexFuncHasRecipient',
|
|
142
|
+
'specialDexFlag',
|
|
143
|
+
'transferSrcTokenBeforeSwap',
|
|
144
|
+
'spender',
|
|
145
|
+
'sendEthButSupportsInsertFromAmount',
|
|
146
|
+
'specialDexSupportsInsertFromAmount',
|
|
147
|
+
'swappedAmountNotPresentInExchangeData',
|
|
148
|
+
'returnAmountPos',
|
|
149
|
+
'insertFromAmountPos',
|
|
150
|
+
'amountsPacked128',
|
|
151
|
+
'permit2Approval',
|
|
152
|
+
],
|
|
153
|
+
};
|
|
154
|
+
exports.DIRECT_PARAM_INPUT_FIELD_CONTRACT = {
|
|
155
|
+
addressFields: ['srcToken', 'destToken', 'beneficiary'],
|
|
156
|
+
amountFields: ['srcAmount', 'destAmount', 'quotedAmount', 'partnerAndFee'],
|
|
157
|
+
booleanFields: [],
|
|
158
|
+
calldataFields: ['permit'],
|
|
159
|
+
nullableInputFields: ['data'],
|
|
160
|
+
numberFields: ['network', 'blockNumber'],
|
|
161
|
+
passThroughFields: ['data'],
|
|
162
|
+
strictOutputFields: [],
|
|
163
|
+
};
|
|
164
|
+
exports.DIRECT_PARAM_RESULT_FIELD_CONTRACT = {
|
|
165
|
+
addressFields: [],
|
|
166
|
+
amountFields: [],
|
|
167
|
+
booleanFields: [],
|
|
168
|
+
calldataFields: [],
|
|
169
|
+
nullableInputFields: [],
|
|
170
|
+
numberFields: [],
|
|
171
|
+
passThroughFields: ['params'],
|
|
172
|
+
strictOutputFields: ['params'],
|
|
173
|
+
};
|
|
174
|
+
exports.WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT = {
|
|
175
|
+
addressFields: [],
|
|
176
|
+
amountFields: ['srcAmountWeth', 'destAmountWeth'],
|
|
177
|
+
booleanFields: [],
|
|
178
|
+
calldataFields: [],
|
|
179
|
+
nullableInputFields: [],
|
|
180
|
+
numberFields: [],
|
|
181
|
+
passThroughFields: [],
|
|
182
|
+
strictOutputFields: [],
|
|
183
|
+
};
|
|
184
|
+
exports.WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT = {
|
|
185
|
+
addressFields: ['deposit.callee', 'withdraw.callee'],
|
|
186
|
+
amountFields: ['deposit.value', 'withdraw.value'],
|
|
187
|
+
booleanFields: [],
|
|
188
|
+
calldataFields: ['deposit.calldata', 'withdraw.calldata'],
|
|
189
|
+
nullableInputFields: ['deposit', 'withdraw'],
|
|
190
|
+
numberFields: [],
|
|
191
|
+
passThroughFields: [],
|
|
192
|
+
strictOutputFields: ['deposit', 'withdraw'],
|
|
193
|
+
};
|
|
194
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/generic-swap-transaction-builder/dex-encoder/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { SwapSide } from '@paraswap/core';
|
|
2
|
+
import type { DepositWithdrawReturn } from '../dex/weth/types';
|
|
3
|
+
import type { ExecutorEncodingContext } from '../executor/encoding-types';
|
|
4
|
+
import type { Address, OptimalRate, OptimalSwap, OptimalSwapExchange } from '../types';
|
|
5
|
+
import type { ResolvedLeg, RoutePlan } from './resolved/types';
|
|
6
|
+
export type GenericDexCallParams = {
|
|
7
|
+
srcToken: Address;
|
|
8
|
+
destToken: Address;
|
|
9
|
+
recipient: Address;
|
|
10
|
+
srcAmount: string;
|
|
11
|
+
destAmount: string;
|
|
12
|
+
wethDeposit: bigint;
|
|
13
|
+
wethWithdraw: bigint;
|
|
14
|
+
};
|
|
15
|
+
export type WethCallDataProvider = (srcAmountWeth: string, destAmountWeth: string, side: SwapSide) => DepositWithdrawReturn | undefined | Promise<DepositWithdrawReturn | undefined>;
|
|
16
|
+
export type ResolvedLegWithWeth = {
|
|
17
|
+
resolvedLeg: ResolvedLeg;
|
|
18
|
+
wethDeposit: bigint;
|
|
19
|
+
wethWithdraw: bigint;
|
|
20
|
+
};
|
|
21
|
+
export type DexExchangeApprovalRequest = {
|
|
22
|
+
params: [token: Address, target: Address, permit2: boolean];
|
|
23
|
+
routePositionKey: string;
|
|
24
|
+
};
|
|
25
|
+
export declare function resolveQuotedAmount(priceRoute: Pick<OptimalRate, 'side' | 'srcAmount' | 'destAmount'>, quotedAmount?: string): string;
|
|
26
|
+
export declare function resolveBeneficiary(userAddress: Address, beneficiary?: Address): Address;
|
|
27
|
+
export declare function resolvePermit(permit?: string): string;
|
|
28
|
+
export declare function buildGenericDexCallParams({ priceRoute, routeIndex, swap, swapIndex, swapExchange, minMaxAmount, dexNeedWrapNative, executionContractAddress, wrappedNativeTokenAddress, augustusV6Address, }: {
|
|
29
|
+
priceRoute: OptimalRate;
|
|
30
|
+
routeIndex: number;
|
|
31
|
+
swap: OptimalSwap;
|
|
32
|
+
swapIndex: number;
|
|
33
|
+
swapExchange: OptimalSwapExchange<unknown>;
|
|
34
|
+
minMaxAmount: string;
|
|
35
|
+
dexNeedWrapNative: boolean;
|
|
36
|
+
executionContractAddress: Address;
|
|
37
|
+
wrappedNativeTokenAddress: Address;
|
|
38
|
+
augustusV6Address: Address;
|
|
39
|
+
}): GenericDexCallParams;
|
|
40
|
+
export declare function buildResolvedWethPlan({ resolvedLegsWithWeth, side, routePlan, getWethCallData, wrappedNativeTokenAddress, }: {
|
|
41
|
+
resolvedLegsWithWeth: ResolvedLegWithWeth[];
|
|
42
|
+
side: SwapSide;
|
|
43
|
+
routePlan: RoutePlan;
|
|
44
|
+
getWethCallData: WethCallDataProvider;
|
|
45
|
+
wrappedNativeTokenAddress: Address;
|
|
46
|
+
}): Promise<{
|
|
47
|
+
resolvedLegs: ResolvedLeg[];
|
|
48
|
+
wethPlan?: DepositWithdrawReturn;
|
|
49
|
+
}>;
|
|
50
|
+
export declare function hasAnyRouteWithEthAndDifferentNeedWrapNative({ routePlan, resolvedLegs, wrappedNativeTokenAddress, }: {
|
|
51
|
+
routePlan: RoutePlan;
|
|
52
|
+
resolvedLegs: ResolvedLeg[];
|
|
53
|
+
wrappedNativeTokenAddress: Address;
|
|
54
|
+
}): boolean;
|
|
55
|
+
export declare function buildDexExchangeApprovalRequests({ executorEncodingContext, priceRoute, routePlan, resolvedLegs, }: {
|
|
56
|
+
executorEncodingContext: ExecutorEncodingContext;
|
|
57
|
+
priceRoute: OptimalRate;
|
|
58
|
+
routePlan: RoutePlan;
|
|
59
|
+
resolvedLegs: ResolvedLeg[];
|
|
60
|
+
}): DexExchangeApprovalRequest[];
|
|
61
|
+
export declare function applyDexExchangeApprovalDecisions({ resolvedLegs, approvalRequests, approvalDecisions, }: {
|
|
62
|
+
resolvedLegs: ResolvedLeg[];
|
|
63
|
+
approvalRequests: DexExchangeApprovalRequest[];
|
|
64
|
+
approvalDecisions: boolean[];
|
|
65
|
+
}): ResolvedLeg[];
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveQuotedAmount = resolveQuotedAmount;
|
|
4
|
+
exports.resolveBeneficiary = resolveBeneficiary;
|
|
5
|
+
exports.resolvePermit = resolvePermit;
|
|
6
|
+
exports.buildGenericDexCallParams = buildGenericDexCallParams;
|
|
7
|
+
exports.buildResolvedWethPlan = buildResolvedWethPlan;
|
|
8
|
+
exports.hasAnyRouteWithEthAndDifferentNeedWrapNative = hasAnyRouteWithEthAndDifferentNeedWrapNative;
|
|
9
|
+
exports.buildDexExchangeApprovalRequests = buildDexExchangeApprovalRequests;
|
|
10
|
+
exports.applyDexExchangeApprovalDecisions = applyDexExchangeApprovalDecisions;
|
|
11
|
+
const core_1 = require("@paraswap/core");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
const approval_1 = require("../executor/approval");
|
|
14
|
+
const utils_1 = require("../utils");
|
|
15
|
+
const route_plan_1 = require("./resolved/route-plan");
|
|
16
|
+
function resolveQuotedAmount(priceRoute, quotedAmount) {
|
|
17
|
+
if (quotedAmount)
|
|
18
|
+
return quotedAmount;
|
|
19
|
+
return priceRoute.side === core_1.SwapSide.SELL
|
|
20
|
+
? priceRoute.destAmount
|
|
21
|
+
: priceRoute.srcAmount;
|
|
22
|
+
}
|
|
23
|
+
function resolveBeneficiary(userAddress, beneficiary = constants_1.NULL_ADDRESS) {
|
|
24
|
+
return beneficiary !== constants_1.NULL_ADDRESS &&
|
|
25
|
+
beneficiary.toLowerCase() !== userAddress.toLowerCase()
|
|
26
|
+
? beneficiary
|
|
27
|
+
: constants_1.NULL_ADDRESS;
|
|
28
|
+
}
|
|
29
|
+
function resolvePermit(permit) {
|
|
30
|
+
return permit || '0x';
|
|
31
|
+
}
|
|
32
|
+
function buildGenericDexCallParams({ priceRoute, routeIndex, swap, swapIndex, swapExchange, minMaxAmount, dexNeedWrapNative, executionContractAddress, wrappedNativeTokenAddress, augustusV6Address, }) {
|
|
33
|
+
const side = priceRoute.side;
|
|
34
|
+
const isMegaSwap = priceRoute.bestRoute.length > 1;
|
|
35
|
+
const isMultiSwap = !isMegaSwap && priceRoute.bestRoute[0].swaps.length > 1;
|
|
36
|
+
const isLastSwap = swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
|
|
37
|
+
let srcToken = swap.srcToken;
|
|
38
|
+
let destToken = swap.destToken;
|
|
39
|
+
let wethDeposit = 0n;
|
|
40
|
+
let wethWithdraw = 0n;
|
|
41
|
+
// For buys, apply slippage to the first swap srcAmount in the same
|
|
42
|
+
// proportion as the complete swap.
|
|
43
|
+
const srcAmount = swapIndex > 0 || side === core_1.SwapSide.SELL
|
|
44
|
+
? swapExchange.srcAmount
|
|
45
|
+
: ((BigInt(swapExchange.srcAmount) * BigInt(minMaxAmount)) /
|
|
46
|
+
BigInt(priceRoute.srcAmount)).toString();
|
|
47
|
+
const destAmount = side === core_1.SwapSide.SELL ? '1' : swapExchange.destAmount;
|
|
48
|
+
if ((0, utils_1.isETHAddress)(swap.srcToken) && dexNeedWrapNative) {
|
|
49
|
+
srcToken = wrappedNativeTokenAddress;
|
|
50
|
+
wethDeposit = BigInt(srcAmount);
|
|
51
|
+
}
|
|
52
|
+
const forceUnwrap = (0, utils_1.isETHAddress)(swap.destToken) &&
|
|
53
|
+
(isMultiSwap || isMegaSwap) &&
|
|
54
|
+
!dexNeedWrapNative &&
|
|
55
|
+
!isLastSwap;
|
|
56
|
+
if (((0, utils_1.isETHAddress)(swap.destToken) && dexNeedWrapNative) || forceUnwrap) {
|
|
57
|
+
destToken =
|
|
58
|
+
forceUnwrap && !dexNeedWrapNative ? destToken : wrappedNativeTokenAddress;
|
|
59
|
+
wethWithdraw = BigInt(swapExchange.destAmount);
|
|
60
|
+
}
|
|
61
|
+
const needToWithdrawAfterSwap = destToken === wrappedNativeTokenAddress && wethWithdraw > 0n;
|
|
62
|
+
return {
|
|
63
|
+
srcToken,
|
|
64
|
+
destToken,
|
|
65
|
+
recipient: needToWithdrawAfterSwap || !isLastSwap || priceRoute.side === core_1.SwapSide.BUY
|
|
66
|
+
? executionContractAddress
|
|
67
|
+
: augustusV6Address,
|
|
68
|
+
srcAmount,
|
|
69
|
+
destAmount,
|
|
70
|
+
wethDeposit,
|
|
71
|
+
wethWithdraw,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function buildResolvedWethPlan({ resolvedLegsWithWeth, side, routePlan, getWethCallData, wrappedNativeTokenAddress, }) {
|
|
75
|
+
const { resolvedLegs, srcAmountWethToDeposit, destAmountWethToWithdraw } = resolvedLegsWithWeth.reduce((acc, resolvedLegWithWeth) => {
|
|
76
|
+
acc.srcAmountWethToDeposit += BigInt(resolvedLegWithWeth.wethDeposit);
|
|
77
|
+
acc.destAmountWethToWithdraw += BigInt(resolvedLegWithWeth.wethWithdraw);
|
|
78
|
+
acc.resolvedLegs.push(resolvedLegWithWeth.resolvedLeg);
|
|
79
|
+
return acc;
|
|
80
|
+
}, {
|
|
81
|
+
resolvedLegs: [],
|
|
82
|
+
srcAmountWethToDeposit: 0n,
|
|
83
|
+
destAmountWethToWithdraw: 0n,
|
|
84
|
+
});
|
|
85
|
+
if (srcAmountWethToDeposit === 0n && destAmountWethToWithdraw === 0n) {
|
|
86
|
+
return { resolvedLegs };
|
|
87
|
+
}
|
|
88
|
+
if (srcAmountWethToDeposit === destAmountWethToWithdraw &&
|
|
89
|
+
!hasAnyRouteWithEthAndDifferentNeedWrapNative({
|
|
90
|
+
routePlan,
|
|
91
|
+
resolvedLegs,
|
|
92
|
+
wrappedNativeTokenAddress,
|
|
93
|
+
})) {
|
|
94
|
+
return { resolvedLegs };
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
resolvedLegs,
|
|
98
|
+
wethPlan: await getWethCallData(srcAmountWethToDeposit.toString(), destAmountWethToWithdraw.toString(), side),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function hasAnyRouteWithEthAndDifferentNeedWrapNative({ routePlan, resolvedLegs, wrappedNativeTokenAddress, }) {
|
|
102
|
+
const eth = constants_1.ETHER_ADDRESS.toLowerCase();
|
|
103
|
+
const weth = wrappedNativeTokenAddress.toLowerCase();
|
|
104
|
+
const resolvedLegByKey = buildResolvedLegMap(resolvedLegs);
|
|
105
|
+
return !routePlan.routes.every((route, routeIndex) => {
|
|
106
|
+
const swapExchangeParams = [];
|
|
107
|
+
route.swaps.forEach((swap, swapIndex) => {
|
|
108
|
+
swap.swapExchanges.forEach((_swapExchange, swapExchangeIndex) => {
|
|
109
|
+
const key = (0, route_plan_1.routePositionKey)({
|
|
110
|
+
routeIndex,
|
|
111
|
+
swapIndex,
|
|
112
|
+
swapExchangeIndex,
|
|
113
|
+
});
|
|
114
|
+
const curResolvedLeg = resolvedLegByKey.get(key);
|
|
115
|
+
if (!curResolvedLeg) {
|
|
116
|
+
throw new Error(`missing resolved leg for route position ${key}`);
|
|
117
|
+
}
|
|
118
|
+
if (swap.destToken.toLowerCase() === weth ||
|
|
119
|
+
swap.destToken.toLowerCase() === eth ||
|
|
120
|
+
swap.srcToken.toLowerCase() === weth ||
|
|
121
|
+
swap.srcToken.toLowerCase() === eth) {
|
|
122
|
+
swapExchangeParams.push(curResolvedLeg.exchangeParam);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
return (swapExchangeParams.every(p => p.needWrapNative === true) ||
|
|
127
|
+
swapExchangeParams.every(p => p.needWrapNative === false));
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function buildDexExchangeApprovalRequests({ executorEncodingContext, priceRoute, routePlan, resolvedLegs, }) {
|
|
131
|
+
const resolvedLegByKey = buildResolvedLegMap(resolvedLegs);
|
|
132
|
+
const approvalRequests = [];
|
|
133
|
+
(0, route_plan_1.walkRoutePlan)(routePlan).forEach(routePosition => {
|
|
134
|
+
const key = (0, route_plan_1.routePositionKey)(routePosition);
|
|
135
|
+
const curResolvedLeg = resolvedLegByKey.get(key);
|
|
136
|
+
if (!curResolvedLeg) {
|
|
137
|
+
throw new Error(`missing resolved leg for route position ${key}`);
|
|
138
|
+
}
|
|
139
|
+
const swap = priceRoute.bestRoute[routePosition.routeIndex].swaps[routePosition.swapIndex];
|
|
140
|
+
const curExchangeParam = curResolvedLeg.exchangeParam;
|
|
141
|
+
const approveParams = (0, approval_1.getApprovalTokenAndTarget)(swap, curExchangeParam, executorEncodingContext);
|
|
142
|
+
if (approveParams) {
|
|
143
|
+
approvalRequests.push({
|
|
144
|
+
params: [
|
|
145
|
+
approveParams.token,
|
|
146
|
+
approveParams.target,
|
|
147
|
+
!!curExchangeParam.permit2Approval,
|
|
148
|
+
],
|
|
149
|
+
routePositionKey: key,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
return approvalRequests;
|
|
154
|
+
}
|
|
155
|
+
function applyDexExchangeApprovalDecisions({ resolvedLegs, approvalRequests, approvalDecisions, }) {
|
|
156
|
+
if (approvalDecisions.length !== approvalRequests.length) {
|
|
157
|
+
throw new Error('approval decision length must match approval request count');
|
|
158
|
+
}
|
|
159
|
+
const resolvedLegByKey = buildResolvedLegMap(resolvedLegs);
|
|
160
|
+
approvalDecisions.forEach((alreadyApproved, index) => {
|
|
161
|
+
if (alreadyApproved)
|
|
162
|
+
return;
|
|
163
|
+
const [token, target] = approvalRequests[index].params;
|
|
164
|
+
const key = approvalRequests[index].routePositionKey;
|
|
165
|
+
const curResolvedLeg = resolvedLegByKey.get(key);
|
|
166
|
+
if (!curResolvedLeg) {
|
|
167
|
+
throw new Error(`missing resolved leg for route position ${key}`);
|
|
168
|
+
}
|
|
169
|
+
resolvedLegByKey.set(key, {
|
|
170
|
+
...curResolvedLeg,
|
|
171
|
+
exchangeParam: {
|
|
172
|
+
...curResolvedLeg.exchangeParam,
|
|
173
|
+
approveData: {
|
|
174
|
+
token: normalizeAddress(token),
|
|
175
|
+
target: normalizeAddress(target),
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
return resolvedLegs.map(resolvedLeg => {
|
|
181
|
+
const key = (0, route_plan_1.routePositionKey)(resolvedLeg);
|
|
182
|
+
const curResolvedLeg = resolvedLegByKey.get(key);
|
|
183
|
+
if (!curResolvedLeg) {
|
|
184
|
+
throw new Error(`missing resolved leg for route position ${key}`);
|
|
185
|
+
}
|
|
186
|
+
return curResolvedLeg;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
function buildResolvedLegMap(resolvedLegs) {
|
|
190
|
+
return new Map(resolvedLegs.map(resolvedLeg => [
|
|
191
|
+
(0, route_plan_1.routePositionKey)(resolvedLeg),
|
|
192
|
+
resolvedLeg,
|
|
193
|
+
]));
|
|
194
|
+
}
|
|
195
|
+
function normalizeAddress(address) {
|
|
196
|
+
return address.toLowerCase();
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=orchestration.js.map
|