import type { SwapSide } from '@paraswap/core'; import type { Address } from '../../types'; import { SpecialDex } from '../../executor/types'; import type { DirectContractMethodV6 } from './direct-methods'; export type DecimalString = string; export type HexString = `0x${string}`; export type DexEncoderJsonValue = null | boolean | number | string | DexEncoderJsonValue[] | { [key: string]: DexEncoderJsonValue; }; export type DexEncoderSwapExchangeData = DexEncoderJsonValue; export type NeedWrapNativeAuditDexKey = 'CurveV1Factory' | 'CurveV1StableNg'; export declare const AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES: readonly ["CurveV1Factory", "CurveV1StableNg"]; export type AddressNormalizationPolicy = 'lowercase'; export type AmountNormalizationPolicy = 'decimal-string'; export type BytesNormalizationPolicy = '0x-prefixed-hex'; export type UnknownFieldPolicy = 'reject'; export type SwapExchangeDataPolicy = 'dex-owned-pass-through'; export type OptionalFieldPolicy = 'omit-or-null-normalized-to-undefined'; export type DexEncoderDtoNormalizationPolicy = { addressFields: AddressNormalizationPolicy; amountFields: AmountNormalizationPolicy; calldataFields: BytesNormalizationPolicy; swapExchangeData: SwapExchangeDataPolicy; unknownFields: UnknownFieldPolicy; optionalFields: OptionalFieldPolicy; }; export declare const DEX_ENCODER_DTO_NORMALIZATION_POLICY: DexEncoderDtoNormalizationPolicy; export type DexEncoderDtoFieldContract = { addressFields: readonly string[]; amountFields: readonly string[]; booleanFields: readonly string[]; calldataFields: readonly string[]; nullableInputFields: readonly string[]; numberFields: readonly string[]; passThroughFields: readonly string[]; strictOutputFields: readonly string[]; }; 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]; export declare const SPECIAL_DEX_FLAG_RESERVED_RANGE: { readonly min: 0; readonly max: 255; }; export type NeedWrapNativeRouteContext = { network: number; side: SwapSide; routeIndex: number; routePercent: number; blockNumber: number; srcToken: Address; destToken: Address; srcAmount: DecimalString; destAmount: DecimalString; }; export type NeedWrapNativeSwapContext = { swapIndex: number; srcToken: Address; destToken: Address; srcAmount: DecimalString; destAmount: DecimalString; }; export type NeedWrapNativeSwapExchangeContext = { swapExchangeIndex: number; exchange: string; srcAmount: DecimalString; destAmount: DecimalString; percent: number; data: DexEncoderSwapExchangeData; }; export type NeedWrapNativeInput = { route: NeedWrapNativeRouteContext; swap: NeedWrapNativeSwapContext; swapExchange: NeedWrapNativeSwapExchangeContext; }; export declare const NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT: { readonly addressFields: readonly ["route.srcToken", "route.destToken", "swap.srcToken", "swap.destToken"]; readonly amountFields: readonly ["route.srcAmount", "route.destAmount", "swap.srcAmount", "swap.destAmount", "swapExchange.srcAmount", "swapExchange.destAmount"]; readonly booleanFields: readonly []; readonly calldataFields: readonly []; readonly nullableInputFields: readonly ["swapExchange.data"]; readonly numberFields: readonly ["route.network", "route.routeIndex", "route.routePercent", "route.blockNumber", "swap.swapIndex", "swapExchange.swapExchangeIndex", "swapExchange.percent"]; readonly passThroughFields: readonly ["swapExchange.data"]; readonly strictOutputFields: readonly []; }; export type DexParamInput = NeedWrapNativeInput & { dexKey: string; srcToken: Address; destToken: Address; srcAmount: DecimalString; destAmount: DecimalString; recipient: Address; executorAddress: Address; side: SwapSide; data: DexEncoderSwapExchangeData; }; export declare const DEX_PARAM_INPUT_FIELD_CONTRACT: { readonly addressFields: readonly ["route.srcToken", "route.destToken", "swap.srcToken", "swap.destToken", "srcToken", "destToken", "recipient", "executorAddress"]; readonly amountFields: readonly ["route.srcAmount", "route.destAmount", "swap.srcAmount", "swap.destAmount", "swapExchange.srcAmount", "swapExchange.destAmount", "srcAmount", "destAmount"]; readonly booleanFields: readonly []; readonly calldataFields: readonly []; readonly nullableInputFields: readonly ["swapExchange.data", "data"]; readonly numberFields: readonly ["route.network", "route.routeIndex", "route.routePercent", "route.blockNumber", "swap.swapIndex", "swapExchange.swapExchangeIndex", "swapExchange.percent"]; readonly passThroughFields: readonly ["swapExchange.data", "data"]; readonly strictOutputFields: readonly []; }; export type DexExchangeParam = { needWrapNative: boolean; needUnwrapNative?: boolean; skipApproval?: boolean; wethAddress?: Address; exchangeData: HexString; targetExchange: Address; dexFuncHasRecipient: boolean; specialDexFlag?: SpecialDex; transferSrcTokenBeforeSwap?: Address; spender?: Address; sendEthButSupportsInsertFromAmount?: boolean; specialDexSupportsInsertFromAmount?: boolean; swappedAmountNotPresentInExchangeData?: boolean; returnAmountPos?: number; insertFromAmountPos?: number; amountsPacked128?: boolean; permit2Approval?: boolean; }; export declare const DEX_EXCHANGE_PARAM_FIELD_CONTRACT: { readonly addressFields: readonly ["wethAddress", "targetExchange", "transferSrcTokenBeforeSwap", "spender"]; readonly amountFields: readonly []; readonly booleanFields: readonly ["needWrapNative", "needUnwrapNative", "skipApproval", "dexFuncHasRecipient", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "amountsPacked128", "permit2Approval"]; readonly calldataFields: readonly ["exchangeData"]; readonly nullableInputFields: readonly ["needUnwrapNative", "skipApproval", "wethAddress", "specialDexFlag", "transferSrcTokenBeforeSwap", "spender", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "returnAmountPos", "insertFromAmountPos", "amountsPacked128", "permit2Approval"]; readonly numberFields: readonly ["specialDexFlag", "returnAmountPos", "insertFromAmountPos"]; readonly passThroughFields: readonly []; readonly strictOutputFields: readonly ["needWrapNative", "needUnwrapNative", "skipApproval", "wethAddress", "exchangeData", "targetExchange", "dexFuncHasRecipient", "specialDexFlag", "transferSrcTokenBeforeSwap", "spender", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "returnAmountPos", "insertFromAmountPos", "amountsPacked128", "permit2Approval"]; }; export type DirectParamInput = { dexKey: string; network: number; contractMethod: DirectContractMethodV6; srcToken: Address; destToken: Address; srcAmount: DecimalString; destAmount: DecimalString; quotedAmount: DecimalString; data: DexEncoderSwapExchangeData; side: SwapSide; permit: HexString; uuid: string; partnerAndFee: DecimalString; beneficiary: Address; blockNumber: number; }; export declare const DIRECT_PARAM_INPUT_FIELD_CONTRACT: { readonly addressFields: readonly ["srcToken", "destToken", "beneficiary"]; readonly amountFields: readonly ["srcAmount", "destAmount", "quotedAmount", "partnerAndFee"]; readonly booleanFields: readonly []; readonly calldataFields: readonly ["permit"]; readonly nullableInputFields: readonly ["data"]; readonly numberFields: readonly ["network", "blockNumber"]; readonly passThroughFields: readonly ["data"]; readonly strictOutputFields: readonly []; }; export type DirectParamResult = { params: DexEncoderJsonValue[]; }; export declare const DIRECT_PARAM_RESULT_FIELD_CONTRACT: { readonly addressFields: readonly []; readonly amountFields: readonly []; readonly booleanFields: readonly []; readonly calldataFields: readonly []; readonly nullableInputFields: readonly []; readonly numberFields: readonly []; readonly passThroughFields: readonly ["params"]; readonly strictOutputFields: readonly ["params"]; }; export type WethDepositWithdrawInput = { srcAmountWeth: DecimalString; destAmountWeth: DecimalString; side: SwapSide; }; export type WethCallData = { callee: Address; calldata: HexString; value: DecimalString; }; export type WethDepositWithdrawResult = { deposit?: WethCallData; withdraw?: WethCallData; }; export declare const WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT: { readonly addressFields: readonly []; readonly amountFields: readonly ["srcAmountWeth", "destAmountWeth"]; readonly booleanFields: readonly []; readonly calldataFields: readonly []; readonly nullableInputFields: readonly []; readonly numberFields: readonly []; readonly passThroughFields: readonly []; readonly strictOutputFields: readonly []; }; export declare const WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT: { readonly addressFields: readonly ["deposit.callee", "withdraw.callee"]; readonly amountFields: readonly ["deposit.value", "withdraw.value"]; readonly booleanFields: readonly []; readonly calldataFields: readonly ["deposit.calldata", "withdraw.calldata"]; readonly nullableInputFields: readonly ["deposit", "withdraw"]; readonly numberFields: readonly []; readonly passThroughFields: readonly []; readonly strictOutputFields: readonly ["deposit", "withdraw"]; };